diff --git a/src/Subscription/Subscription.Test/ScenarioTests/SubscriptionTests.cs b/src/Subscription/Subscription.Test/ScenarioTests/SubscriptionTests.cs index 29a2daa973b9..73921cd24bf1 100644 --- a/src/Subscription/Subscription.Test/ScenarioTests/SubscriptionTests.cs +++ b/src/Subscription/Subscription.Test/ScenarioTests/SubscriptionTests.cs @@ -34,13 +34,6 @@ public SubscriptionTests(Xunit.Abstractions.ITestOutputHelper output) XunitTracingInterceptor.AddToContext(_logger); TestExecutionHelpers.SetUpSessionAndProfile(); } - - [Fact] - [Trait(Category.AcceptanceType, Category.CheckIn)] - public void TestNewSubscription() - { - TestController.NewInstance.RunPowerShellTest(_logger, "Test-NewSubscription"); - } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] @@ -55,5 +48,26 @@ public void TestUpdateCancelSubscription() { TestController.NewInstance.RunPowerShellTest(_logger, "Test-UpdateCancelSubscription"); } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void TestNewSubscriptionAlias() + { + TestController.NewInstance.RunPowerShellTest(_logger, "Test-NewSubscriptionAlias"); + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void TestGetSubscriptionAlias() + { + TestController.NewInstance.RunPowerShellTest(_logger, "Test-GetSubscriptionAlias"); + } + + [Fact] + [Trait(Category.AcceptanceType, Category.CheckIn)] + public void TestRemoveSubscriptionAlias() + { + TestController.NewInstance.RunPowerShellTest(_logger, "Test-RemoveSubscriptionAlias"); + } } } diff --git a/src/Subscription/Subscription.Test/ScenarioTests/SubscriptionTests.ps1 b/src/Subscription/Subscription.Test/ScenarioTests/SubscriptionTests.ps1 index 2ca1936b9eb5..3ece0fd33123 100644 --- a/src/Subscription/Subscription.Test/ScenarioTests/SubscriptionTests.ps1 +++ b/src/Subscription/Subscription.Test/ScenarioTests/SubscriptionTests.ps1 @@ -16,25 +16,9 @@ .SYNOPSIS Create subscription #> -function Test-NewSubscription -{ - # $accounts = Get-AzEnrollmentAccount - $accounts = @(@{ ObjectId = "455fd0a7-b04e-4a92-9e1b-d0650c8ba276" }) - - # Verify the caller has at least one enrollment account. - Assert-True { $accounts.Count -gt 0 } - - $myNewSubName = GetAssetName - - $newSub = New-AzSubscription -EnrollmentAccountObjectId $accounts[0].ObjectId -Name $myNewSubName -OfferType MS-AZR-0017P - - Assert-AreEqual $myNewSubName $newSub.Name - Assert-NotNull $newSub.SubscriptionId -} - function Test-UpdateRenameSubscription { - $subId = "21cba39d-cbbc-487f-9749-43c5c960f269" + $subId = "bc085fce-1a23-4734-b588-7c36b622317e" $updateSub = Update-AzSubscription -SubscriptionId $subId -Action "Rename" -Name "RenameFromPowershell" @@ -43,9 +27,39 @@ function Test-UpdateRenameSubscription function Test-UpdateCancelSubscription { - $subId = "21cba39d-cbbc-487f-9749-43c5c960f269" + $subId = "bc085fce-1a23-4734-b588-7c36b622317e" $updateSub = Update-AzSubscription -SubscriptionId $subId -Action "Cancel" Assert-NotNull updateSub.SubscriptionId } + +function Test-NewSubscriptionAlias +{ + $aliasName = "navyprod1" + $displayName = "testSub1" + $billingScope ="billingScope" + $workload = "Production" + + $newsub = New-AzSubscriptionAlias -AliasName $aliasName -SubscriptionName $displayName -BillingScope $billingScope -Workload $workload + + Assert-NotNull newsub +} + +function Test-GetSubscriptionAlias +{ + $aliasName = "navyprod1" + + $newsub = Get-AzSubscriptionAlias -AliasName $aliasName + + Assert-NotNull newsub +} + +function Test-RemoveSubscriptionAlias +{ + $aliasName = "navyprod1" + + $newsub = Remove-AzSubscriptionAlias -AliasName $aliasName + + Assert-NotNull newsub +} diff --git a/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestGetSubscriptionAlias.json b/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestGetSubscriptionAlias.json new file mode 100644 index 000000000000..3cadc064b49f --- /dev/null +++ b/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestGetSubscriptionAlias.json @@ -0,0 +1,86 @@ +{ + "Entries": [ + { + "RequestUri": "/providers/Microsoft.Subscription/aliases/navyprod1?api-version=2020-09-01", + "EncodedRequestUri": "L3Byb3ZpZGVycy9NaWNyb3NvZnQuU3Vic2NyaXB0aW9uL2FsaWFzZXMvbmF2eXByb2QxP2FwaS12ZXJzaW9uPTIwMjAtMDktMDE=", + "RequestMethod": "GET", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "39c471c0-9fd7-434d-8947-38ed4d2be60f" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29130.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Subscription.SubscriptionClient/1.1.5.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "Vary": [ + "Accept-Encoding" + ], + "x-ms-ratelimit-remaining-tenant-reads": [ + "11999" + ], + "x-ms-correlation-request-id": [ + "68f53ee5-2184-430d-90ff-f0afcf2d9b69" + ], + "request-id": [ + "68f53ee5-2184-430d-90ff-f0afcf2d9b69" + ], + "x-gsm": [ + "1.0.0.0" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-request-id": [ + "68f53ee5-2184-430d-90ff-f0afcf2d9b69" + ], + "x-ms-routing-request-id": [ + "WESTUS:20200901T220819Z:68f53ee5-2184-430d-90ff-f0afcf2d9b69" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Date": [ + "Tue, 01 Sep 2020 22:08:18 GMT" + ], + "Content-Length": [ + "222" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/providers/Microsoft.Subscription/aliases/navyprod1\",\r\n \"name\": \"navyprod1\",\r\n \"type\": \"Microsoft.Subscription/aliases\",\r\n \"properties\": {\r\n \"subscriptionId\": \"cef41c82-c4f0-48ae-a336-2ec44ec4375a\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "StatusCode": 200 + } + ], + "Names": {}, + "Variables": { + "SubscriptionId": "5b47c35e-863f-4c66-ba9f-52b9d0ced037" + } +} \ No newline at end of file diff --git a/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestNewSubscription.json b/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestNewSubscription.json deleted file mode 100644 index 99d679ffe71e..000000000000 --- a/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestNewSubscription.json +++ /dev/null @@ -1,243 +0,0 @@ -{ - "Entries": [ - { - "RequestUri": "/providers/Microsoft.Billing/enrollmentAccounts/455fd0a7-b04e-4a92-9e1b-d0650c8ba276/providers/Microsoft.Subscription/createSubscription?api-version=2019-10-01-preview", - "EncodedRequestUri": "L3Byb3ZpZGVycy9NaWNyb3NvZnQuQmlsbGluZy9lbnJvbGxtZW50QWNjb3VudHMvNDU1ZmQwYTctYjA0ZS00YTkyLTllMWItZDA2NTBjOGJhMjc2L3Byb3ZpZGVycy9NaWNyb3NvZnQuU3Vic2NyaXB0aW9uL2NyZWF0ZVN1YnNjcmlwdGlvbj9hcGktdmVyc2lvbj0yMDE5LTEwLTAxLXByZXZpZXc=", - "RequestMethod": "POST", - "RequestBody": "{\r\n \"displayName\": \"ps3132\",\r\n \"owners\": [],\r\n \"offerType\": \"MS-AZR-0017P\"\r\n}", - "RequestHeaders": { - "x-ms-client-request-id": [ - "3c3a8825-cfb3-40b5-9b5c-27080125a78d" - ], - "Accept-Language": [ - "en-US" - ], - "User-Agent": [ - "FxVersion/4.6.27817.03", - "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Subscription.SubscriptionClient/1.1.4.0" - ], - "Content-Type": [ - "application/json; charset=utf-8" - ], - "Content-Length": [ - "80" - ] - }, - "ResponseHeaders": { - "Cache-Control": [ - "no-cache" - ], - "Pragma": [ - "no-cache" - ], - "Location": [ - "https://management.azure.com/providers/Microsoft.Subscription/subscriptionOperations/ZWYzZGRkOWUtNDljMy00MWI2LWE2MjEtZDM4YTQ0ZjA3NzU1?api-version=2019-10-01-preview" - ], - "Retry-After": [ - "30" - ], - "x-ms-correlation-request-id": [ - "7b8de195-e00a-498a-ae44-8d73cd574b67" - ], - "request-id": [ - "7b8de195-e00a-498a-ae44-8d73cd574b67" - ], - "x-gsm": [ - "1.0.0.0" - ], - "X-Content-Type-Options": [ - "nosniff" - ], - "Server": [ - "Microsoft-IIS/10.0" - ], - "X-AspNet-Version": [ - "4.0.30319" - ], - "X-Powered-By": [ - "ASP.NET" - ], - "x-ms-ratelimit-remaining-tenant-resource-requests": [ - "499" - ], - "x-ms-request-id": [ - "7b8de195-e00a-498a-ae44-8d73cd574b67" - ], - "x-ms-routing-request-id": [ - "WESTUS:20200622T192222Z:7b8de195-e00a-498a-ae44-8d73cd574b67" - ], - "Strict-Transport-Security": [ - "max-age=31536000; includeSubDomains" - ], - "Date": [ - "Mon, 22 Jun 2020 19:22:21 GMT" - ], - "Content-Length": [ - "2" - ], - "Content-Type": [ - "application/json; charset=utf-8" - ], - "Expires": [ - "-1" - ] - }, - "ResponseBody": "{}", - "StatusCode": 202 - }, - { - "RequestUri": "/providers/Microsoft.Subscription/subscriptionOperations/ZWYzZGRkOWUtNDljMy00MWI2LWE2MjEtZDM4YTQ0ZjA3NzU1?api-version=2019-10-01-preview", - "EncodedRequestUri": "L3Byb3ZpZGVycy9NaWNyb3NvZnQuU3Vic2NyaXB0aW9uL3N1YnNjcmlwdGlvbk9wZXJhdGlvbnMvWldZelpHUmtPV1V0TkRsak15MDBNV0kyTFdFMk1qRXRaRE00WVRRMFpqQTNOelUxP2FwaS12ZXJzaW9uPTIwMTktMTAtMDEtcHJldmlldw==", - "RequestMethod": "GET", - "RequestBody": "", - "RequestHeaders": { - "User-Agent": [ - "FxVersion/4.6.27817.03", - "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Subscription.SubscriptionClient/1.1.4.0" - ] - }, - "ResponseHeaders": { - "Cache-Control": [ - "no-cache" - ], - "Pragma": [ - "no-cache" - ], - "Vary": [ - "Accept-Encoding" - ], - "x-ms-ratelimit-remaining-tenant-reads": [ - "11999" - ], - "x-ms-correlation-request-id": [ - "098ee31c-ad4b-40af-a9ca-ba18c58ff94b" - ], - "request-id": [ - "098ee31c-ad4b-40af-a9ca-ba18c58ff94b" - ], - "x-gsm": [ - "1.0.0.0" - ], - "X-Content-Type-Options": [ - "nosniff" - ], - "Server": [ - "Microsoft-IIS/10.0" - ], - "X-AspNet-Version": [ - "4.0.30319" - ], - "X-Powered-By": [ - "ASP.NET" - ], - "x-ms-request-id": [ - "098ee31c-ad4b-40af-a9ca-ba18c58ff94b" - ], - "x-ms-routing-request-id": [ - "WESTUS:20200622T192252Z:098ee31c-ad4b-40af-a9ca-ba18c58ff94b" - ], - "Strict-Transport-Security": [ - "max-age=31536000; includeSubDomains" - ], - "Date": [ - "Mon, 22 Jun 2020 19:22:52 GMT" - ], - "Content-Length": [ - "74" - ], - "Content-Type": [ - "application/json; charset=utf-8" - ], - "Expires": [ - "-1" - ] - }, - "ResponseBody": "{\r\n \"subscriptionLink\": \"/subscriptions/ef3ddd9e-49c3-41b6-a621-d38a44f07755\"\r\n}", - "StatusCode": 200 - }, - { - "RequestUri": "/providers/Microsoft.Subscription/subscriptionOperations/ZWYzZGRkOWUtNDljMy00MWI2LWE2MjEtZDM4YTQ0ZjA3NzU1?api-version=2019-10-01-preview", - "EncodedRequestUri": "L3Byb3ZpZGVycy9NaWNyb3NvZnQuU3Vic2NyaXB0aW9uL3N1YnNjcmlwdGlvbk9wZXJhdGlvbnMvWldZelpHUmtPV1V0TkRsak15MDBNV0kyTFdFMk1qRXRaRE00WVRRMFpqQTNOelUxP2FwaS12ZXJzaW9uPTIwMTktMTAtMDEtcHJldmlldw==", - "RequestMethod": "GET", - "RequestBody": "", - "RequestHeaders": { - "User-Agent": [ - "FxVersion/4.6.27817.03", - "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Subscription.SubscriptionClient/1.1.4.0" - ] - }, - "ResponseHeaders": { - "Cache-Control": [ - "no-cache" - ], - "Pragma": [ - "no-cache" - ], - "Vary": [ - "Accept-Encoding" - ], - "x-ms-ratelimit-remaining-tenant-reads": [ - "11998" - ], - "x-ms-correlation-request-id": [ - "b81e5f48-9d6d-4b7e-969e-8a764b0ad84a" - ], - "request-id": [ - "b81e5f48-9d6d-4b7e-969e-8a764b0ad84a" - ], - "x-gsm": [ - "1.0.0.0" - ], - "X-Content-Type-Options": [ - "nosniff" - ], - "Server": [ - "Microsoft-IIS/10.0" - ], - "X-AspNet-Version": [ - "4.0.30319" - ], - "X-Powered-By": [ - "ASP.NET" - ], - "x-ms-request-id": [ - "b81e5f48-9d6d-4b7e-969e-8a764b0ad84a" - ], - "x-ms-routing-request-id": [ - "WESTUS:20200622T192253Z:b81e5f48-9d6d-4b7e-969e-8a764b0ad84a" - ], - "Strict-Transport-Security": [ - "max-age=31536000; includeSubDomains" - ], - "Date": [ - "Mon, 22 Jun 2020 19:22:52 GMT" - ], - "Content-Length": [ - "74" - ], - "Content-Type": [ - "application/json; charset=utf-8" - ], - "Expires": [ - "-1" - ] - }, - "ResponseBody": "{\r\n \"subscriptionLink\": \"/subscriptions/ef3ddd9e-49c3-41b6-a621-d38a44f07755\"\r\n}", - "StatusCode": 200 - } - ], - "Names": { - "Test-NewSubscription": [ - "ps3132" - ] - }, - "Variables": { - "SubscriptionId": "21cba39d-cbbc-487f-9749-43c5c960f269" - } -} \ No newline at end of file diff --git a/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestNewSubscriptionAlias.json b/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestNewSubscriptionAlias.json new file mode 100644 index 000000000000..577e56c14d85 --- /dev/null +++ b/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestNewSubscriptionAlias.json @@ -0,0 +1,92 @@ +{ + "Entries": [ + { + "RequestUri": "/providers/Microsoft.Subscription/aliases/navyprod1?api-version=2020-09-01", + "EncodedRequestUri": "L3Byb3ZpZGVycy9NaWNyb3NvZnQuU3Vic2NyaXB0aW9uL2FsaWFzZXMvbmF2eXByb2QxP2FwaS12ZXJzaW9uPTIwMjAtMDktMDE=", + "RequestMethod": "PUT", + "RequestBody": "{\r\n \"properties\": {\r\n \"displayName\": \"testSub1\",\r\n \"workload\": \"Production\",\r\n \"billingScope\": \"billingScope\"\r\n }\r\n}", + "RequestHeaders": { + "x-ms-client-request-id": [ + "754fdc06-4e5e-4331-bfb1-8a699ac22fe0" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29130.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Subscription.SubscriptionClient/1.1.5.0" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Content-Length": [ + "127" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "Vary": [ + "Accept-Encoding" + ], + "x-ms-ratelimit-remaining-tenant-writes": [ + "1199" + ], + "x-ms-correlation-request-id": [ + "ad1c5637-1edc-4f54-80af-b26289a4502a" + ], + "request-id": [ + "ad1c5637-1edc-4f54-80af-b26289a4502a" + ], + "x-gsm": [ + "1.0.0.0" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-request-id": [ + "ad1c5637-1edc-4f54-80af-b26289a4502a" + ], + "x-ms-routing-request-id": [ + "WESTUS:20200901T212110Z:ad1c5637-1edc-4f54-80af-b26289a4502a" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Date": [ + "Tue, 01 Sep 2020 21:21:10 GMT" + ], + "Content-Length": [ + "222" + ], + "Content-Type": [ + "application/json; charset=utf-8" + ], + "Expires": [ + "-1" + ] + }, + "ResponseBody": "{\r\n \"id\": \"/providers/Microsoft.Subscription/aliases/navyprod1\",\r\n \"name\": \"navyprod1\",\r\n \"type\": \"Microsoft.Subscription/aliases\",\r\n \"properties\": {\r\n \"subscriptionId\": \"cef41c82-c4f0-48ae-a336-2ec44ec4375a\",\r\n \"provisioningState\": \"Succeeded\"\r\n }\r\n}", + "StatusCode": 200 + } + ], + "Names": {}, + "Variables": { + "SubscriptionId": "5b47c35e-863f-4c66-ba9f-52b9d0ced037" + } +} \ No newline at end of file diff --git a/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestRemoveSubscriptionAlias.json b/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestRemoveSubscriptionAlias.json new file mode 100644 index 000000000000..8920d763e60c --- /dev/null +++ b/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestRemoveSubscriptionAlias.json @@ -0,0 +1,80 @@ +{ + "Entries": [ + { + "RequestUri": "/providers/Microsoft.Subscription/aliases/navyprod1?api-version=2020-09-01", + "EncodedRequestUri": "L3Byb3ZpZGVycy9NaWNyb3NvZnQuU3Vic2NyaXB0aW9uL2FsaWFzZXMvbmF2eXByb2QxP2FwaS12ZXJzaW9uPTIwMjAtMDktMDE=", + "RequestMethod": "DELETE", + "RequestBody": "", + "RequestHeaders": { + "x-ms-client-request-id": [ + "7877be7d-8890-43d9-9828-8ffb4f941e76" + ], + "Accept-Language": [ + "en-US" + ], + "User-Agent": [ + "FxVersion/4.6.29130.01", + "OSName/Windows", + "OSVersion/Microsoft.Windows.10.0.19041.", + "Microsoft.Azure.Management.Subscription.SubscriptionClient/1.1.5.0" + ] + }, + "ResponseHeaders": { + "Cache-Control": [ + "no-cache" + ], + "Pragma": [ + "no-cache" + ], + "x-ms-correlation-request-id": [ + "eb016bf5-6e93-468d-9408-a05245da5f3f" + ], + "request-id": [ + "eb016bf5-6e93-468d-9408-a05245da5f3f" + ], + "x-gsm": [ + "1.0.0.0" + ], + "X-Content-Type-Options": [ + "nosniff" + ], + "Server": [ + "Microsoft-IIS/10.0" + ], + "X-AspNet-Version": [ + "4.0.30319" + ], + "X-Powered-By": [ + "ASP.NET" + ], + "x-ms-ratelimit-remaining-tenant-deletes": [ + "14999" + ], + "x-ms-request-id": [ + "eb016bf5-6e93-468d-9408-a05245da5f3f" + ], + "x-ms-routing-request-id": [ + "WESTUS:20200901T220831Z:eb016bf5-6e93-468d-9408-a05245da5f3f" + ], + "Strict-Transport-Security": [ + "max-age=31536000; includeSubDomains" + ], + "Date": [ + "Tue, 01 Sep 2020 22:08:31 GMT" + ], + "Expires": [ + "-1" + ], + "Content-Length": [ + "0" + ] + }, + "ResponseBody": "", + "StatusCode": 200 + } + ], + "Names": {}, + "Variables": { + "SubscriptionId": "5b47c35e-863f-4c66-ba9f-52b9d0ced037" + } +} \ No newline at end of file diff --git a/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestUpdateCancelSubscription.json b/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestUpdateCancelSubscription.json index 51795c6a7ec3..924e701eddd0 100644 --- a/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestUpdateCancelSubscription.json +++ b/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestUpdateCancelSubscription.json @@ -1,22 +1,22 @@ { "Entries": [ { - "RequestUri": "/subscriptions/21cba39d-cbbc-487f-9749-43c5c960f269/providers/Microsoft.Subscription/cancel?api-version=2019-10-01-preview", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjFjYmEzOWQtY2JiYy00ODdmLTk3NDktNDNjNWM5NjBmMjY5L3Byb3ZpZGVycy9NaWNyb3NvZnQuU3Vic2NyaXB0aW9uL2NhbmNlbD9hcGktdmVyc2lvbj0yMDE5LTEwLTAxLXByZXZpZXc=", + "RequestUri": "/subscriptions/bc085fce-1a23-4734-b588-7c36b622317e/providers/Microsoft.Subscription/cancel?api-version=2020-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYmMwODVmY2UtMWEyMy00NzM0LWI1ODgtN2MzNmI2MjIzMTdlL3Byb3ZpZGVycy9NaWNyb3NvZnQuU3Vic2NyaXB0aW9uL2NhbmNlbD9hcGktdmVyc2lvbj0yMDIwLTA5LTAx", "RequestMethod": "POST", "RequestBody": "", "RequestHeaders": { "x-ms-client-request-id": [ - "2dfb692e-f389-4264-ae26-bb79e7c64574" + "2fb37549-1be1-434a-9594-552fc7be902f" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.27817.03", + "FxVersion/4.6.29220.03", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Subscription.SubscriptionClient/1.1.4.0" + "OSVersion/Microsoft.Windows.10.0.19042.", + "Microsoft.Azure.Management.Subscription.SubscriptionClient/1.1.5.0" ] }, "ResponseHeaders": { @@ -33,10 +33,10 @@ "1199" ], "x-ms-correlation-request-id": [ - "0b8fdd49-96e1-424b-a0d1-725451e072bc" + "e83a70af-9a8d-4dce-9d99-8d85594e2d00" ], "request-id": [ - "0b8fdd49-96e1-424b-a0d1-725451e072bc" + "e83a70af-9a8d-4dce-9d99-8d85594e2d00" ], "x-gsm": [ "1.0.0.0" @@ -54,16 +54,16 @@ "ASP.NET" ], "x-ms-request-id": [ - "0b8fdd49-96e1-424b-a0d1-725451e072bc" + "e83a70af-9a8d-4dce-9d99-8d85594e2d00" ], "x-ms-routing-request-id": [ - "WESTUS:20200619T225218Z:0b8fdd49-96e1-424b-a0d1-725451e072bc" + "WESTUS:20201009T184351Z:e83a70af-9a8d-4dce-9d99-8d85594e2d00" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" ], "Date": [ - "Fri, 19 Jun 2020 22:52:17 GMT" + "Fri, 09 Oct 2020 18:43:50 GMT" ], "Content-Length": [ "57" @@ -75,12 +75,12 @@ "-1" ] }, - "ResponseBody": "{\r\n \"subscriptionId\": \"21cba39d-cbbc-487f-9749-43c5c960f269\"\r\n}", + "ResponseBody": "{\r\n \"subscriptionId\": \"bc085fce-1a23-4734-b588-7c36b622317e\"\r\n}", "StatusCode": 200 } ], "Names": {}, "Variables": { - "SubscriptionId": "21cba39d-cbbc-487f-9749-43c5c960f269" + "SubscriptionId": "5b47c35e-863f-4c66-ba9f-52b9d0ced037" } } \ No newline at end of file diff --git a/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestUpdateRenameSubscription.json b/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestUpdateRenameSubscription.json index 9e14f81bdcc5..f1037752619f 100644 --- a/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestUpdateRenameSubscription.json +++ b/src/Subscription/Subscription.Test/SessionRecords/Subscription.Test.ScenarioTests.SubscriptionTests/TestUpdateRenameSubscription.json @@ -1,22 +1,22 @@ { "Entries": [ { - "RequestUri": "/subscriptions/21cba39d-cbbc-487f-9749-43c5c960f269/providers/Microsoft.Subscription/rename?api-version=2019-10-01-preview", - "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjFjYmEzOWQtY2JiYy00ODdmLTk3NDktNDNjNWM5NjBmMjY5L3Byb3ZpZGVycy9NaWNyb3NvZnQuU3Vic2NyaXB0aW9uL3JlbmFtZT9hcGktdmVyc2lvbj0yMDE5LTEwLTAxLXByZXZpZXc=", + "RequestUri": "/subscriptions/bc085fce-1a23-4734-b588-7c36b622317e/providers/Microsoft.Subscription/rename?api-version=2020-09-01", + "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvYmMwODVmY2UtMWEyMy00NzM0LWI1ODgtN2MzNmI2MjIzMTdlL3Byb3ZpZGVycy9NaWNyb3NvZnQuU3Vic2NyaXB0aW9uL3JlbmFtZT9hcGktdmVyc2lvbj0yMDIwLTA5LTAx", "RequestMethod": "POST", "RequestBody": "{\r\n \"subscriptionName\": \"RenameFromPowershell\"\r\n}", "RequestHeaders": { "x-ms-client-request-id": [ - "07b39a23-6005-465f-adf2-c088d0ab601d" + "c3d532bd-3477-4778-8a2b-3827dbf61523" ], "Accept-Language": [ "en-US" ], "User-Agent": [ - "FxVersion/4.6.27817.03", + "FxVersion/4.6.29220.03", "OSName/Windows", - "OSVersion/Microsoft.Windows.10.0.18363.", - "Microsoft.Azure.Management.Subscription.SubscriptionClient/1.1.4.0" + "OSVersion/Microsoft.Windows.10.0.19042.", + "Microsoft.Azure.Management.Subscription.SubscriptionClient/1.1.5.0" ], "Content-Type": [ "application/json; charset=utf-8" @@ -39,10 +39,10 @@ "1199" ], "x-ms-correlation-request-id": [ - "aa0d95c5-3b21-4ee4-97d0-91fb5a735293" + "dffdc6a0-eee5-4bb2-850a-fd49f6d343fd" ], "request-id": [ - "aa0d95c5-3b21-4ee4-97d0-91fb5a735293" + "dffdc6a0-eee5-4bb2-850a-fd49f6d343fd" ], "x-gsm": [ "1.0.0.0" @@ -60,16 +60,16 @@ "ASP.NET" ], "x-ms-request-id": [ - "aa0d95c5-3b21-4ee4-97d0-91fb5a735293" + "dffdc6a0-eee5-4bb2-850a-fd49f6d343fd" ], "x-ms-routing-request-id": [ - "WESTUS:20200619T224730Z:aa0d95c5-3b21-4ee4-97d0-91fb5a735293" + "WESTUS:20201009T184326Z:dffdc6a0-eee5-4bb2-850a-fd49f6d343fd" ], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains" ], "Date": [ - "Fri, 19 Jun 2020 22:47:29 GMT" + "Fri, 09 Oct 2020 18:43:25 GMT" ], "Content-Length": [ "57" @@ -81,12 +81,12 @@ "-1" ] }, - "ResponseBody": "{\r\n \"subscriptionId\": \"21cba39d-cbbc-487f-9749-43c5c960f269\"\r\n}", + "ResponseBody": "{\r\n \"subscriptionId\": \"bc085fce-1a23-4734-b588-7c36b622317e\"\r\n}", "StatusCode": 200 } ], "Names": {}, "Variables": { - "SubscriptionId": "21cba39d-cbbc-487f-9749-43c5c960f269" + "SubscriptionId": "5b47c35e-863f-4c66-ba9f-52b9d0ced037" } } \ No newline at end of file diff --git a/src/Subscription/Subscription.Test/Subscription.Test.csproj b/src/Subscription/Subscription.Test/Subscription.Test.csproj index 89fa3267df76..36ef0fcc029b 100644 --- a/src/Subscription/Subscription.Test/Subscription.Test.csproj +++ b/src/Subscription/Subscription.Test/Subscription.Test.csproj @@ -11,7 +11,7 @@ - + \ No newline at end of file diff --git a/src/Subscription/Subscription/Az.Subscription.psd1 b/src/Subscription/Subscription/Az.Subscription.psd1 index a9dc6d4ee802..24f9a1bd37a9 100644 --- a/src/Subscription/Subscription/Az.Subscription.psd1 +++ b/src/Subscription/Subscription/Az.Subscription.psd1 @@ -72,7 +72,7 @@ NestedModules = @('Microsoft.Azure.PowerShell.Cmdlets.Subscription.dll') FunctionsToExport = @() # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. -CmdletsToExport = 'New-AzSubscription', 'Update-AzSubscription' +CmdletsToExport = 'Update-AzSubscription','New-AzSubscriptionAlias','Get-AzSubscriptionAlias','Remove-AzSubscriptionAlias' # Variables to export from this module # VariablesToExport = @() diff --git a/src/Subscription/Subscription/ChangeLog.md b/src/Subscription/Subscription/ChangeLog.md index 27cc514aab82..90a034b869dd 100644 --- a/src/Subscription/Subscription/ChangeLog.md +++ b/src/Subscription/Subscription/ChangeLog.md @@ -18,6 +18,7 @@ - Additional information about change #1 --> ## Upcoming Release +* Added new cmdlets `New-AzSubscriptionAlias`,`Get-AzSubscriptionAlias`,`Remove-AzSubscriptionAlias` and Removed cmdlet `New-AzSubscription` ## Version 0.7.3 * Added new cmdlet `Update-AzSubscription` diff --git a/src/Subscription/Subscription/Cmdlets/GetAzureRmSubscriptionAlias.cs b/src/Subscription/Subscription/Cmdlets/GetAzureRmSubscriptionAlias.cs new file mode 100644 index 000000000000..d3a780081ea5 --- /dev/null +++ b/src/Subscription/Subscription/Cmdlets/GetAzureRmSubscriptionAlias.cs @@ -0,0 +1,72 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using System.Management.Automation; +using Microsoft.Azure.Commands.Common.Authentication; +using Microsoft.Azure.Commands.Common.Authentication.Abstractions; +using Microsoft.Azure.Commands.ResourceManager.Common; +using Microsoft.Azure.Commands.Subscription.Models; +using Microsoft.Azure.Management.Subscription; +using Microsoft.Azure.Management.Subscription.Models; + +namespace Microsoft.Azure.Commands.Subscription.Cmdlets +{ + [Cmdlet("Get", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "SubscriptionAlias", SupportsShouldProcess = + true), OutputType(typeof(PSAzureSubscription))] + public class GetAzureRmSubscriptionAlias : AzureRmLongRunningCmdlet + { + private ISubscriptionClient _subscriptionClient; + + /// + /// Gets or sets the subscription client. + /// + public ISubscriptionClient SubscriptionClient + { + get + { + return _subscriptionClient ?? + (_subscriptionClient = + AzureSession.Instance.ClientFactory.CreateArmClient(DefaultContext, + AzureEnvironment.Endpoint.ResourceManager)); + } + set { _subscriptionClient = value; } + } + + [Parameter(Mandatory = false, HelpMessage = "Alias for the subscription")] + public string AliasName { get; set; } + + public override void ExecuteCmdlet() + { + if (this.ShouldProcess(target: this.AliasName, action: "Get subscription Alias")) + { + if (AliasName != null) + { + PutAliasResponse result = new PutAliasResponse(); + + result = this.SubscriptionClient.Alias.Get(AliasName); + + WriteObject(result); + } + else + { + PutAliasListResult result = new PutAliasListResult(); + + result = this.SubscriptionClient.Alias.List(); + + WriteObject(result); + } + } + } + } +} diff --git a/src/Subscription/Subscription/Cmdlets/NewAzureRmSubscription.cs b/src/Subscription/Subscription/Cmdlets/NewAzureRmSubscription.cs deleted file mode 100644 index 27764e87bee7..000000000000 --- a/src/Subscription/Subscription/Cmdlets/NewAzureRmSubscription.cs +++ /dev/null @@ -1,159 +0,0 @@ -// ---------------------------------------------------------------------------------- -// -// Copyright Microsoft Corporation -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ---------------------------------------------------------------------------------- - -using Microsoft.Azure.Commands.Common.Authentication; -using Microsoft.Azure.Commands.Common.Authentication.Abstractions; -using Microsoft.Azure.Commands.ResourceManager.Common; -using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; -using Microsoft.Azure.Commands.Subscription.Models; -using Microsoft.Azure.Graph.RBAC.Version1_6; -using Microsoft.Azure.Graph.RBAC.Version1_6.ActiveDirectory; -using Microsoft.Azure.Graph.RBAC.Version1_6.Models; -using Microsoft.Azure.Management.Subscription; -using Microsoft.Azure.Management.Subscription.Models; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Management.Automation; - -namespace Microsoft.Azure.Commands.Subscription.Cmdlets -{ - [Cmdlet("New", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "Subscription", SupportsShouldProcess = true), OutputType(typeof(PSAzureSubscription))] - public class NewAzureRmSubscription : AzureRmLongRunningCmdlet - { - private ActiveDirectoryClient _activeDirectoryClient; - private ISubscriptionClient _subscriptionClient; - - public ActiveDirectoryClient ActiveDirectoryClient - { - get - { - if (_activeDirectoryClient == null) - { - _activeDirectoryClient = new ActiveDirectoryClient(DefaultContext); - } - return this._activeDirectoryClient; - } - - set { this._activeDirectoryClient = value; } - } - - /// - /// Gets or sets the subscription client. - /// - public ISubscriptionClient SubscriptionClient - { - get - { - return _subscriptionClient ?? - (_subscriptionClient = - AzureSession.Instance.ClientFactory.CreateArmClient(DefaultContext, - AzureEnvironment.Endpoint.ResourceManager)); - } - set { _subscriptionClient = value; } - } - - [Parameter(Mandatory = true, HelpMessage = "Name of the enrollment account to use when creating the subscription.")] - public string EnrollmentAccountObjectId { get; set; } - - [Parameter(Mandatory = false, Position = 0, HelpMessage = "Name of the subscription. When not specified, a name will be generated based on the specified offer type.")] - public string Name { get; set; } - - [Parameter(Mandatory = true, HelpMessage = "Offer type of the subscription.")] - [PSArgumentCompleter("MS-AZR-0017P", "MS-AZR-0148P")] - public string OfferType { get; set; } - - [Parameter(Mandatory = false, HelpMessage = "The user(s) or group object(s) id(s) to be granted Owner access to the subscription.")] - [Alias("OwnerId", "OwnerPrincipalId")] - public string[] OwnerObjectId { get; set; } - - [Parameter(Mandatory = false, HelpMessage = "The user(s) to be granted Owner access to the subscription.")] - [Alias("OwnerEmail", "OwnerUserPrincipalName")] - public string[] OwnerSignInName { get; set; } - - [Parameter(Mandatory = false, HelpMessage = "The app SPN(s) to be granted Owner access to the subscription.")] - [Alias("OwnerSPN", "OwnerServicePrincipalName")] - public string[] OwnerApplicationId { get; set; } - - public override void ExecuteCmdlet() - { - if (this.ShouldProcess(target: this.Name, action: "Create subscription")) - { - SubscriptionCreationResult result = new SubscriptionCreationResult(); - - var owners = this - .ResolveObjectIds(this.OwnerObjectId, this.OwnerApplicationId, this.OwnerSignInName) - .Select(id => new AdPrincipal() { ObjectId = id }).ToArray(); - - // Create the subscription. - result = this.SubscriptionClient.Subscription.CreateSubscriptionInEnrollmentAccount( - EnrollmentAccountObjectId, new SubscriptionCreationParameters() - { - DisplayName = this.Name, - OfferType = this.OfferType, - Owners = owners - }); - - // Write output. - var createdSubscription = new AzureSubscription() - { - // SubscriptionLink format is: "/subscriptions/{subscriptionid}" - Id = result.SubscriptionLink.Split('/')[2], - Name = this.Name, - // By definition, a new subscription is always in the enabled state. - State = "Enabled", - }; - createdSubscription.SetTenant(DefaultContext.Tenant.Id); - WriteObject(new PSAzureSubscription(createdSubscription)); - } - } - - private string[] ResolveObjectIds(string[] objectIds, string[] servicePrincipalNames, string[] userPrincipalNames) - { - var uniqueObjectIds = new HashSet(objectIds?.Select(id => Guid.Parse(id)) ?? new Guid[0]); - - if (servicePrincipalNames != null) - { - foreach (string spn in servicePrincipalNames) - { - uniqueObjectIds.Add(ActiveDirectoryClient.GetObjectIdFromSPN(spn)); - } - } - - if (userPrincipalNames != null) - { - foreach (string upn in userPrincipalNames) - { - // TODO: Revert once available: uniqueObjectIds.Add(Guid.Parse(ActiveDirectoryClient.GetObjectIdFromUPN(upn))); - uniqueObjectIds.Add(Guid.Parse(GetObjectIdFromUPN(ActiveDirectoryClient, upn))); - } - } - - return uniqueObjectIds.Select(id => id.ToString()).ToArray(); - } - - // Temporary until this code has moved into ActiveDirectoryClient. - private static string GetObjectIdFromUPN(ActiveDirectoryClient activeDirectoryClient, string upn) - { - var odataQueryFilter = new Rest.Azure.OData.ODataQuery(s => s.UserPrincipalName == upn); - var user = activeDirectoryClient.GraphClient.Users.List(odataQueryFilter.ToString()).SingleOrDefault(); - if (user == null) - { - throw new InvalidOperationException(String.Format("User with UPN '{0}' does not exist.", upn)); - } - - return user.ObjectId; - } - } -} diff --git a/src/Subscription/Subscription/Cmdlets/NewAzureRmSubscriptionAlias.cs b/src/Subscription/Subscription/Cmdlets/NewAzureRmSubscriptionAlias.cs new file mode 100644 index 000000000000..85bbe4a3f599 --- /dev/null +++ b/src/Subscription/Subscription/Cmdlets/NewAzureRmSubscriptionAlias.cs @@ -0,0 +1,90 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using System.Management.Automation; +using Microsoft.Azure.Commands.Common.Authentication; +using Microsoft.Azure.Commands.Common.Authentication.Abstractions; +using Microsoft.Azure.Commands.ResourceManager.Common; +using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters; +using Microsoft.Azure.Commands.Subscription.Models; +using Microsoft.Azure.Management.Subscription; +using Microsoft.Azure.Management.Subscription.Models; + +namespace Microsoft.Azure.Commands.Subscription.Cmdlets +{ + [Cmdlet("New", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "SubscriptionAlias", SupportsShouldProcess = + true), OutputType(typeof(PSAzureSubscription))] + public class NewAzureRmSubscriptionAlias : AzureRmLongRunningCmdlet + { + private ISubscriptionClient _subscriptionClient; + + /// + /// Gets or sets the subscription client. + /// + public ISubscriptionClient SubscriptionClient + { + get + { + return _subscriptionClient ?? + (_subscriptionClient = + AzureSession.Instance.ClientFactory.CreateArmClient(DefaultContext, + AzureEnvironment.Endpoint.ResourceManager)); + } + set { _subscriptionClient = value; } + } + + [Parameter(Mandatory = true, HelpMessage = "Alias for the subscription")] + public string AliasName { get; set; } + + [Parameter(Mandatory = false, HelpMessage = "Billing Scope")] + public string BillingScope { get; set; } + + [Parameter(Mandatory = false, HelpMessage = "Type of Workload")] + [PSArgumentCompleter("Production", "DevTest")] + public string Workload { get; set; } + + [Parameter(Mandatory = false, HelpMessage = "Name of the subscription")] + public string SubscriptionName { get; set; } + + [Parameter(Mandatory = false, HelpMessage = "Reseller Id")] + public string ResellerId { get; set; } + + [Parameter(Mandatory = false, HelpMessage = "Existing Subscription Id")] + public string SubscriptionId { get; set; } + + public override void ExecuteCmdlet() + { + if (this.ShouldProcess(target: this.AliasName, action: "New subscription Alias")) + { + PutAliasResponse result = new PutAliasResponse(); + + // Create the subscription. + result = this.SubscriptionClient.Alias.Create( + AliasName, new PutAliasRequest() + { + Properties = new PutAliasRequestProperties() + { + BillingScope = BillingScope, + Workload = Workload, + DisplayName = SubscriptionName, + SubscriptionId = SubscriptionId, + ResellerId = ResellerId + } + }); + + WriteObject(result); + } + } + } +} diff --git a/src/Subscription/Subscription/Cmdlets/RemoveAzureRmSubscriptionAlias.cs b/src/Subscription/Subscription/Cmdlets/RemoveAzureRmSubscriptionAlias.cs new file mode 100644 index 000000000000..12fb15739bfe --- /dev/null +++ b/src/Subscription/Subscription/Cmdlets/RemoveAzureRmSubscriptionAlias.cs @@ -0,0 +1,58 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using System.Management.Automation; +using Microsoft.Azure.Commands.Common.Authentication; +using Microsoft.Azure.Commands.Common.Authentication.Abstractions; +using Microsoft.Azure.Commands.ResourceManager.Common; +using Microsoft.Azure.Commands.Subscription.Models; +using Microsoft.Azure.Management.Subscription; + +namespace Microsoft.Azure.Commands.Subscription.Cmdlets +{ + [Cmdlet("Remove", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "SubscriptionAlias", SupportsShouldProcess = + true), OutputType(typeof(PSAzureSubscription))] + public class RemoveAzureRmSubscriptionAlias : AzureRmLongRunningCmdlet + { + private ISubscriptionClient _subscriptionClient; + + /// + /// Gets or sets the subscription client. + /// + public ISubscriptionClient SubscriptionClient + { + get + { + return _subscriptionClient ?? + (_subscriptionClient = + AzureSession.Instance.ClientFactory.CreateArmClient(DefaultContext, + AzureEnvironment.Endpoint.ResourceManager)); + } + set { _subscriptionClient = value; } + } + + [Parameter(Mandatory = true, HelpMessage = "Alias for the subscription")] + public string AliasName { get; set; } + + public override void ExecuteCmdlet() + { + if (this.ShouldProcess(target: this.AliasName, action: "Delete subscription Alias")) + { + this.SubscriptionClient.Alias.Delete(AliasName); + string result = "Alias Deleted"; + WriteObject(result); + } + } + } +} diff --git a/src/Subscription/Subscription/StartupScripts/AzureRmSubscriptionStartup.ps1 b/src/Subscription/Subscription/StartupScripts/AzureRmSubscriptionStartup.ps1 index bb1fd42b6502..cbe8b0f44e11 100644 --- a/src/Subscription/Subscription/StartupScripts/AzureRmSubscriptionStartup.ps1 +++ b/src/Subscription/Subscription/StartupScripts/AzureRmSubscriptionStartup.ps1 @@ -1,14 +1,4 @@ -Register-ArgumentCompleter -CommandName New-AzSubscription -ParameterName OfferType -ScriptBlock { - param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter) - - $values = "MS-AZR-0017P", "MS-AZR-0148P" - $values | - ForEach-Object { - [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) - } -} - -Register-ArgumentCompleter -CommandName Update-AzSubscription -ParameterName Action -ScriptBlock { +Register-ArgumentCompleter -CommandName Update-AzSubscription -ParameterName Action -ScriptBlock { param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter) $values = "Cancel", "Rename", "Enable" diff --git a/src/Subscription/Subscription/Subscription.csproj b/src/Subscription/Subscription/Subscription.csproj index 55c5e1a448fb..ed379c9cbbc0 100644 --- a/src/Subscription/Subscription/Subscription.csproj +++ b/src/Subscription/Subscription/Subscription.csproj @@ -11,7 +11,7 @@ - + \ No newline at end of file diff --git a/src/Subscription/Subscription/help/Az.Subscription.md b/src/Subscription/Subscription/help/Az.Subscription.md index eecaf681bd34..3f6fc48e889b 100644 --- a/src/Subscription/Subscription/help/Az.Subscription.md +++ b/src/Subscription/Subscription/help/Az.Subscription.md @@ -11,9 +11,15 @@ Locale: en-US The topics in this section document the Azure PowerShell cmdlets for Azure Subscription in the Azure Resource Manager (ARM) framework. The cmdlets exist in the Microsoft.Azure.Commands.Subscription namespace. ## Az.Subscription Cmdlets -### [New-AzSubscription](New-AzSubscription.md) -Creates an Azure subscription. +### [Get-AzSubscriptionAlias](Get-AzSubscriptionAlias.md) +Gets subscription alias details + +### [New-AzSubscriptionAlias](New-AzSubscriptionAlias.md) +Creates new alias and subscription + +### [Remove-AzSubscriptionAlias](Remove-AzSubscriptionAlias.md) +Deletes the subscription alias ### [Update-AzSubscription](Update-AzSubscription.md) -Updates the Azure subscription +Updates an Azure Subscription diff --git a/src/Subscription/Subscription/help/Get-AzSubscriptionAlias.md b/src/Subscription/Subscription/help/Get-AzSubscriptionAlias.md new file mode 100644 index 000000000000..8edd46d34c47 --- /dev/null +++ b/src/Subscription/Subscription/help/Get-AzSubscriptionAlias.md @@ -0,0 +1,123 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.Subscription.dll-Help.xml +Module Name: Az.Subscription +online version:https://docs.microsoft.com/en-us/powershell/module/az.subscription/get-azsubscriptionalias +schema: 2.0.0 +--- + +# Get-AzSubscriptionAlias + +## SYNOPSIS +Gets subscription alias details + +## SYNTAX + +``` +Get-AzSubscriptionAlias [-AliasName ] [-AsJob] [-DefaultProfile ] [-WhatIf] + [-Confirm] [] +``` + +## DESCRIPTION +The **Get-AzSubscriptionAlias** cmdlet gets subscription alias details. + +## EXAMPLES + +### Example 1 +```powershell +PS C:\> Get-AzSubscriptionAlias -AliasName "ExistingAliasName" +``` + +Gets subscription alias details + +## PARAMETERS + +### -AliasName +Alias for the subscription + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AsJob +Run cmdlet in the background + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### None + +## OUTPUTS + +### Microsoft.Azure.Commands.Subscription.Models.PSAzureSubscription + +## NOTES + +## RELATED LINKS diff --git a/src/Subscription/Subscription/help/New-AzSubscription.md b/src/Subscription/Subscription/help/New-AzSubscriptionAlias.md similarity index 60% rename from src/Subscription/Subscription/help/New-AzSubscription.md rename to src/Subscription/Subscription/help/New-AzSubscriptionAlias.md index 79fca2c01aba..a186be20d0cd 100644 --- a/src/Subscription/Subscription/help/New-AzSubscription.md +++ b/src/Subscription/Subscription/help/New-AzSubscriptionAlias.md @@ -1,64 +1,59 @@ ---- +--- external help file: Microsoft.Azure.PowerShell.Cmdlets.Subscription.dll-Help.xml Module Name: Az.Subscription -online version: https://docs.microsoft.com/en-us/powershell/module/az.subscription/new-azsubscription +online version:https://docs.microsoft.com/en-us/powershell/module/az.subscription/new-azsubscriptionalias schema: 2.0.0 --- -# New-AzSubscription +# New-AzSubscriptionAlias ## SYNOPSIS -Creates an Azure subscription. +Creates new alias and subscription ## SYNTAX ``` -New-AzSubscription -EnrollmentAccountObjectId [[-Name] ] -OfferType - [-OwnerObjectId ] [-OwnerSignInName ] [-OwnerApplicationId ] [-AsJob] +New-AzSubscriptionAlias -AliasName [-BillingScope ] [-Workload ] + [-SubscriptionName ] [-ResellerId ] [-SubscriptionId ] [-AsJob] [-DefaultProfile ] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION -The **New-AzSubscription** cmdlet creates an Azure subscription. +The **New-AzSubscriptionAlias** cmdlet creates new alias and subscription ## EXAMPLES ### Example 1 -``` -PS C:\> New-AzSubscription -Name "My Subscription" -EnrollmentAccountObjectId ((Get-AzEnrollmentAccount)[0].ObjectId) -OfferType MS-AZR-0017P - -Name : My Subscription -Id : 86869d42-1782-4337-98b0-c905fb937d46 -TenantId : a5dcb057-fd83-4384-9d49-5198004d33a5 -State : Enabled +```powershell +PS C:\> New-AzSubscriptionAlias -AliasName "NewAliasName" -SubscriptionName "SubscriptionName" -BillingScope "BillingScope" -Workload "WorkloadType" ``` -Creates an Azure subscription under the specified enrollment account with the specified offer type. +Creates new alias and subscription ## PARAMETERS -### -AsJob -Run cmdlet in the background +### -AliasName +Alias for the subscription ```yaml -Type: System.Management.Automation.SwitchParameter +Type: System.String Parameter Sets: (All) Aliases: -Required: False +Required: True Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -DefaultProfile -The credentials, account, tenant, and subscription used for communication with Azure. +### -AsJob +Run cmdlet in the background ```yaml -Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Type: System.Management.Automation.SwitchParameter Parameter Sets: (All) -Aliases: AzContext, AzureRmContext, AzureCredential +Aliases: Required: False Position: Named @@ -67,92 +62,92 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -EnrollmentAccountObjectId -Name of the enrollment account to use when creating the subscription. +### -BillingScope +Billing Scope ```yaml Type: System.String Parameter Sets: (All) Aliases: -Required: True +Required: False Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -Name -The name of the subscription to create. +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. ```yaml -Type: System.String +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer Parameter Sets: (All) -Aliases: +Aliases: AzContext, AzureRmContext, AzureCredential Required: False -Position: 0 +Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -OfferType -The type of offer to use when creating the subscription. +### -ResellerId +Reseller Id ```yaml Type: System.String Parameter Sets: (All) Aliases: -Required: True +Required: False Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -OwnerApplicationId -The app SPN(s) to be granted Owner access to the subscription. +### -SubscriptionId +Existing Subscription Id ```yaml -Type: System.String[] +Type: System.String Parameter Sets: (All) -Aliases: OwnerSPN, OwnerServicePrincipalName +Aliases: Required: False Position: Named -Default value: Name +Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -OwnerObjectId -The user(s) or group object(s) id(s) to be granted Owner access to the subscription. +### -SubscriptionName +Name of the subscription ```yaml -Type: System.String[] +Type: System.String Parameter Sets: (All) -Aliases: OwnerId, OwnerPrincipalId +Aliases: Required: False Position: Named -Default value: Name +Default value: None Accept pipeline input: False Accept wildcard characters: False ``` -### -OwnerSignInName -The user(s) to be granted Owner access to the subscription. +### -Workload +Type of Workload ```yaml -Type: System.String[] +Type: System.String Parameter Sets: (All) -Aliases: OwnerEmail, OwnerUserPrincipalName +Aliases: Required: False Position: Named -Default value: Name +Default value: None Accept pipeline input: False Accept wildcard characters: False ``` @@ -173,7 +168,8 @@ Accept wildcard characters: False ``` ### -WhatIf -Shows what would happen if the cmdlet runs. The cmdlet is not run. +Shows what would happen if the cmdlet runs. +The cmdlet is not run. ```yaml Type: System.Management.Automation.SwitchParameter @@ -188,7 +184,7 @@ Accept wildcard characters: False ``` ### CommonParameters -This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216). +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). ## INPUTS diff --git a/src/Subscription/Subscription/help/Remove-AzSubscriptionAlias.md b/src/Subscription/Subscription/help/Remove-AzSubscriptionAlias.md new file mode 100644 index 000000000000..b1737fce3457 --- /dev/null +++ b/src/Subscription/Subscription/help/Remove-AzSubscriptionAlias.md @@ -0,0 +1,123 @@ +--- +external help file: Microsoft.Azure.PowerShell.Cmdlets.Subscription.dll-Help.xml +Module Name: Az.Subscription +online version:https://docs.microsoft.com/en-us/powershell/module/az.subscription/remove-azsubscriptionalias +schema: 2.0.0 +--- + +# Remove-AzSubscriptionAlias + +## SYNOPSIS +Deletes the subscription alias + +## SYNTAX + +``` +Remove-AzSubscriptionAlias -AliasName [-AsJob] [-DefaultProfile ] [-WhatIf] + [-Confirm] [] +``` + +## DESCRIPTION +The **Remove-AzSubscriptionAlias** cmdlet removes the subscription alias + +## EXAMPLES + +### Example 1 +```powershell +PS C:\> Remove-AzSubscriptionAlias -AliasName "ExistingAliasName" +``` + +Deletes the subscription alias + +## PARAMETERS + +### -AliasName +Alias for the subscription + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -AsJob +Run cmdlet in the background + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer +Parameter Sets: (All) +Aliases: AzContext, AzureRmContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### None + +## OUTPUTS + +### Microsoft.Azure.Commands.Subscription.Models.PSAzureSubscription + +## NOTES + +## RELATED LINKS diff --git a/src/Subscription/Subscription/help/Update-AzSubscription.md b/src/Subscription/Subscription/help/Update-AzSubscription.md index 617946a92219..fdcfa0ba6a19 100644 --- a/src/Subscription/Subscription/help/Update-AzSubscription.md +++ b/src/Subscription/Subscription/help/Update-AzSubscription.md @@ -1,7 +1,7 @@ --- external help file: Microsoft.Azure.PowerShell.Cmdlets.Subscription.dll-Help.xml Module Name: Az.Subscription -online version:https://docs.microsoft.com/en-us/powershell/module/az.subscription/update-azsubscription +online version: https://docs.microsoft.com/en-us/powershell/module/az.subscription/update-azsubscription schema: 2.0.0 --- @@ -30,8 +30,8 @@ Name : My Subscription Id : 86869d42-1782-4337-98b0-c905fb937d46 TenantId : a5dcb057-fd83-4384-9d49-5198004d33a5 State : Enabled - ``` + Updates the subscription ## PARAMETERS