diff --git a/src/StackAdmin/Azs.Subscriptions.Admin/Module/Azs.Subscriptions.Admin/Generated.PowerShell.Commands/SwaggerPathCommands/Get-AzsDirectoryTenant.ps1 b/src/StackAdmin/Azs.Subscriptions.Admin/Module/Azs.Subscriptions.Admin/Generated.PowerShell.Commands/SwaggerPathCommands/Get-AzsDirectoryTenant.ps1
index b855e14764c5..7fd8dd231324 100644
--- a/src/StackAdmin/Azs.Subscriptions.Admin/Module/Azs.Subscriptions.Admin/Generated.PowerShell.Commands/SwaggerPathCommands/Get-AzsDirectoryTenant.ps1
+++ b/src/StackAdmin/Azs.Subscriptions.Admin/Module/Azs.Subscriptions.Admin/Generated.PowerShell.Commands/SwaggerPathCommands/Get-AzsDirectoryTenant.ps1
@@ -50,9 +50,8 @@ function Get-AzsDirectoryTenant
[System.String]
$ResourceId,
- [Parameter(Mandatory = $true, ParameterSetName = 'ResourceId_DirectoryTenants_Get')]
- [Parameter(Mandatory = $true, ParameterSetName = 'DirectoryTenants_List')]
- [Parameter(Mandatory = $true, ParameterSetName = 'DirectoryTenants_Get')]
+ [Parameter(Mandatory = $false, ParameterSetName = 'DirectoryTenants_List')]
+ [Parameter(Mandatory = $false, ParameterSetName = 'DirectoryTenants_Get')]
[System.String]
$ResourceGroupName,
@@ -97,6 +96,11 @@ function Get-AzsDirectoryTenant
$Tenant = $Name
+ if (-not $PSBoundParameters.ContainsKey('ResourceGroupName'))
+ {
+ $ResourceGroupName = "System." + (Get-AzureRMLocation).Location
+ $PSBoundParameters.Add("ResourceGroupName", $ResourceGroupName)
+ }
if('ResourceId_DirectoryTenants_Get' -eq $PsCmdlet.ParameterSetName) {
$GetArmResourceIdParameterValue_params = @{
diff --git a/src/StackAdmin/Azs.Update.Admin/Tests/Azs.Update.Admin.Tests.csproj b/src/StackAdmin/Azs.Update.Admin/Tests/Azs.Update.Admin.Tests.csproj
index 4e6aff626290..f5fcb23557e6 100644
--- a/src/StackAdmin/Azs.Update.Admin/Tests/Azs.Update.Admin.Tests.csproj
+++ b/src/StackAdmin/Azs.Update.Admin/Tests/Azs.Update.Admin.Tests.csproj
@@ -63,6 +63,12 @@
Designer
+
+
+
+
+
+
diff --git a/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestGetUpdate.json b/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestGetUpdate.json
new file mode 100644
index 000000000000..16b6d251d877
--- /dev/null
+++ b/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestGetUpdate.json
@@ -0,0 +1,200 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy8/YXBpLXZlcnNpb249MjAxNi0wNS0wMQ==",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "a0eac0bd-f7e7-4e86-bdec-29ff567ed958"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourceGroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond\",\r\n \"name\": \"redmond\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"currentVersion\": \"1.0.180302.1\",\r\n \"currentOemVersion\": \"1.0.1709.3\",\r\n \"lastUpdated\": \"2018-03-03T08:09:12.8824552Z\",\r\n \"state\": \"AppliedSuccessfully\"\r\n }\r\n }\r\n ]\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "410"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:46:39 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRvkyV6m4/bE0NkpUw+8igWjWdtuz9Cz5tCdxdU8rGRBpNBjOgmyJgeAhDeAEa0b+dc6wnvIxKHFBfpZvAJMlPWDE4UxHOlEv6AAAitYbg5tI2RPCd0eUQntiqS+1OAjEK1gF4uh73ehgeANxl0SLw2"
+ ],
+ "x-ms-correlation-request-id": [
+ "911691ac-911d-4b0c-91e4-2bd776493399"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12861"
+ ],
+ "x-ms-request-id": [
+ "911691ac-911d-4b0c-91e4-2bd776493399"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194639Z:911691ac-911d-4b0c-91e4-2bd776493399"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ },
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy9yZWRtb25kL3VwZGF0ZXM/YXBpLXZlcnNpb249MjAxNi0wNS0wMQ==",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "815ca6e9-e686-4515-b31e-95175b2940a0"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourceGroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates/Microsoft1.0.180302.1\",\r\n \"name\": \"Microsoft1.0.180302.1\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations/updates\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"dateAvailable\": \"0001-01-01T00:00:00\",\r\n \"installedDate\": \"2018-03-03T08:09:12.8824552Z\",\r\n \"description\": \"MAS Update 1.0.180302.1\",\r\n \"state\": \"Installed\",\r\n \"kbLink\": \"https://aka.ms/azurestackupdate\",\r\n \"minVersionRequired\": \"1.0.180103.2\",\r\n \"packagePath\": \"\\\\\\\\SU1FileServer\\\\SU1_Infrastructure_2\\\\Updates\\\\Packages\\\\Microsoft1.0.180302.1\",\r\n \"packageSizeInMb\": 2144,\r\n \"updateName\": \"MAS - 1.0.180302.1\",\r\n \"version\": \"1.0.180302.1\",\r\n \"updateOemFile\": \"\",\r\n \"publisher\": \"Microsoft\",\r\n \"packageType\": \"Microsoft\"\r\n }\r\n }\r\n ]\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "795"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:46:39 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRvl1bC7HKHgSr0ceqOL7pbkHXXGUrgtrDg/bw8uRQ4ukEyF73DBdYST0PElWbedqwWIK2pzN0RsMmh3319xL9SyxMy4RVVHyIv7hsNlv6k16BoCPAoOQamIDrbzI2hn7yq48v+A6uATLhqxwa7Ck9+"
+ ],
+ "x-ms-correlation-request-id": [
+ "ac1de53e-133a-4668-86b8-12cc5fa7430e"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12860"
+ ],
+ "x-ms-request-id": [
+ "ac1de53e-133a-4668-86b8-12cc5fa7430e"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194640Z:ac1de53e-133a-4668-86b8-12cc5fa7430e"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ },
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates/Microsoft1.0.180302.1?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy9yZWRtb25kL3VwZGF0ZXMvTWljcm9zb2Z0MS4wLjE4MDMwMi4xP2FwaS12ZXJzaW9uPTIwMTYtMDUtMDE=",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "2817a7c5-cec5-4e19-b2bd-34fb8c6d7721"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates/Microsoft1.0.180302.1\",\r\n \"name\": \"Microsoft1.0.180302.1\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations/updates\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"dateAvailable\": \"0001-01-01T00:00:00\",\r\n \"installedDate\": \"2018-03-03T08:09:12.8824552Z\",\r\n \"description\": \"MAS Update 1.0.180302.1\",\r\n \"state\": \"Installed\",\r\n \"kbLink\": \"https://aka.ms/azurestackupdate\",\r\n \"minVersionRequired\": \"1.0.180103.2\",\r\n \"packagePath\": \"\\\\\\\\SU1FileServer\\\\SU1_Infrastructure_2\\\\Updates\\\\Packages\\\\Microsoft1.0.180302.1\",\r\n \"packageSizeInMb\": 2144,\r\n \"updateName\": \"MAS - 1.0.180302.1\",\r\n \"version\": \"1.0.180302.1\",\r\n \"updateOemFile\": \"\",\r\n \"publisher\": \"Microsoft\",\r\n \"packageType\": \"Microsoft\"\r\n }\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "783"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:46:50 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRveq7kXAR2JWP3tqQ6XbamnsHlf/HigJyQmzY6IJ/zERf/lo849mlGd40qJ7l1UTB8vxOWJQRMzFSp/cf0ckkYUvLFMA/yq3Qsn/f8Su2v6VGMVjnVxzt0B596UMfWFjaQtX6em3YxjoqnQQXnMN1/"
+ ],
+ "x-ms-correlation-request-id": [
+ "deccf1c3-684a-4e09-a1c5-bb24c7454ff8"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12859"
+ ],
+ "x-ms-request-id": [
+ "deccf1c3-684a-4e09-a1c5-bb24c7454ff8"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194650Z:deccf1c3-684a-4e09-a1c5-bb24c7454ff8"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ }
+ ],
+ "Names": {},
+ "Variables": {
+ "SubscriptionId": "23d66fd1-4743-42ff-b391-e29dc51d799e"
+ }
+}
\ No newline at end of file
diff --git a/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestGetUpdateLocation.json b/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestGetUpdateLocation.json
new file mode 100644
index 000000000000..2e349cee3414
--- /dev/null
+++ b/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestGetUpdateLocation.json
@@ -0,0 +1,136 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy8/YXBpLXZlcnNpb249MjAxNi0wNS0wMQ==",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "5434b094-951e-4d21-9c63-594914625d9e"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourceGroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond\",\r\n \"name\": \"redmond\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"currentVersion\": \"1.0.180302.1\",\r\n \"currentOemVersion\": \"1.0.1709.3\",\r\n \"lastUpdated\": \"2018-03-03T08:09:12.8824552Z\",\r\n \"state\": \"AppliedSuccessfully\"\r\n }\r\n }\r\n ]\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "410"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:49:41 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRvF6whX5Lt94p0C4QueGeMCIfBGF6cfecGCN4fiDCJZ7x7ttz3EJSgG0IDVXKXL2/5id7HkJuVxB6qfXf1jh3ECVW96Q36PhwMHOXkWuLDIddflrQ2C1AmHZl2EZ18CiGVt3F4Yvz0hJwhg+8pFD5E"
+ ],
+ "x-ms-correlation-request-id": [
+ "caa79df2-5de5-473d-863c-23378b95661f"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12843"
+ ],
+ "x-ms-request-id": [
+ "caa79df2-5de5-473d-863c-23378b95661f"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194941Z:caa79df2-5de5-473d-863c-23378b95661f"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ },
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy9yZWRtb25kP2FwaS12ZXJzaW9uPTIwMTYtMDUtMDE=",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "00ec8ef4-2112-4db6-b99e-ce9fd14fb1fb"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond\",\r\n \"name\": \"redmond\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"currentVersion\": \"1.0.180302.1\",\r\n \"currentOemVersion\": \"1.0.1709.3\",\r\n \"lastUpdated\": \"2018-03-03T08:09:12.8824552Z\",\r\n \"state\": \"AppliedSuccessfully\"\r\n }\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "398"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:49:41 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRv6KqwObp1KeZ+qXNeJRPjQ9g+YU2Ur8YoBIhzQpGZ4Kd7b6Z67aP3tfKp12Nb3kRGAX98u7apx1xlGvHhHk+1aaDqFKL6N3CP88F22G6xUYAN3JvDgLPmjzW91YVPPaHnkE/+8GSI4MzYX7+sn1Q6"
+ ],
+ "x-ms-correlation-request-id": [
+ "6ca3e2ec-cc0c-4378-9058-9b4134d9bbdf"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12842"
+ ],
+ "x-ms-request-id": [
+ "6ca3e2ec-cc0c-4378-9058-9b4134d9bbdf"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194941Z:6ca3e2ec-cc0c-4378-9058-9b4134d9bbdf"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ }
+ ],
+ "Names": {},
+ "Variables": {
+ "SubscriptionId": "23d66fd1-4743-42ff-b391-e29dc51d799e"
+ }
+}
\ No newline at end of file
diff --git a/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestGetUpdateRun.json b/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestGetUpdateRun.json
new file mode 100644
index 000000000000..a16cabe07d6b
--- /dev/null
+++ b/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestGetUpdateRun.json
@@ -0,0 +1,264 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy8/YXBpLXZlcnNpb249MjAxNi0wNS0wMQ==",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "000146de-c6e0-4b4d-acf0-e460f60665c9"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourceGroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond\",\r\n \"name\": \"redmond\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"currentVersion\": \"1.0.180302.1\",\r\n \"currentOemVersion\": \"1.0.1709.3\",\r\n \"lastUpdated\": \"2018-03-03T08:09:12.8824552Z\",\r\n \"state\": \"AppliedSuccessfully\"\r\n }\r\n }\r\n ]\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "410"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:46:26 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRvgu2ToNX72o1OOEenQX+N5ux1+A0uS7JNAi4eXEBuqNVJ3+lp2Wkj/6B9xz4FuMDnSJj2efJaK+6/u6fiBQeqgwvqingDcoSyxp6WDbT5H4cjpUwi0G3l1julEJgLIsxYknmkMXUxkn950Bk/P3kf"
+ ],
+ "x-ms-correlation-request-id": [
+ "808165c8-dd1f-430d-9f0a-0f3d0df8cdd2"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12865"
+ ],
+ "x-ms-request-id": [
+ "808165c8-dd1f-430d-9f0a-0f3d0df8cdd2"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194627Z:808165c8-dd1f-430d-9f0a-0f3d0df8cdd2"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ },
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy9yZWRtb25kL3VwZGF0ZXM/YXBpLXZlcnNpb249MjAxNi0wNS0wMQ==",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "a283e5e0-d028-417a-8e08-04520d61800b"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourceGroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates/Microsoft1.0.180302.1\",\r\n \"name\": \"Microsoft1.0.180302.1\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations/updates\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"dateAvailable\": \"0001-01-01T00:00:00\",\r\n \"installedDate\": \"2018-03-03T08:09:12.8824552Z\",\r\n \"description\": \"MAS Update 1.0.180302.1\",\r\n \"state\": \"Installed\",\r\n \"kbLink\": \"https://aka.ms/azurestackupdate\",\r\n \"minVersionRequired\": \"1.0.180103.2\",\r\n \"packagePath\": \"\\\\\\\\SU1FileServer\\\\SU1_Infrastructure_2\\\\Updates\\\\Packages\\\\Microsoft1.0.180302.1\",\r\n \"packageSizeInMb\": 2144,\r\n \"updateName\": \"MAS - 1.0.180302.1\",\r\n \"version\": \"1.0.180302.1\",\r\n \"updateOemFile\": \"\",\r\n \"publisher\": \"Microsoft\",\r\n \"packageType\": \"Microsoft\"\r\n }\r\n }\r\n ]\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "795"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:46:26 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRvg2NhAF3hydDw9nebHCy/+7pMfee/abRziAqNqbZ/JTsMBHtHyQkUi6Fw4PrOaG7v+ZqgujsGWKuEMLk/P4DlEbGRU+Vro+T0oq+ZfSsmw2TquV3vzfOQxAvDNhOiOjTvamx8tNX4NXYC4qBvA4yh"
+ ],
+ "x-ms-correlation-request-id": [
+ "369ff2e9-79c2-49fe-b58b-4265899e83c3"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12864"
+ ],
+ "x-ms-request-id": [
+ "369ff2e9-79c2-49fe-b58b-4265899e83c3"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194627Z:369ff2e9-79c2-49fe-b58b-4265899e83c3"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ },
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates/Microsoft1.0.180302.1/updateRuns?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy9yZWRtb25kL3VwZGF0ZXMvTWljcm9zb2Z0MS4wLjE4MDMwMi4xL3VwZGF0ZVJ1bnM/YXBpLXZlcnNpb249MjAxNi0wNS0wMQ==",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "aed62717-d75f-4205-a328-360a2f6c3598"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourceGroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates/Microsoft1.0.180302.1/updateRuns/407d9b8f-debf-4058-b374-a94a1bb4de30\",\r\n \"name\": \"407d9b8f-debf-4058-b374-a94a1bb4de30\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations/updates/updateRuns\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"progress\": {\r\n \"name\": \"Unnamed step\",\r\n \"description\": \"Update Azure Stack.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T09:25:37.4173123-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:09:04.9913191-08:00\",\r\n \"steps\": [\r\n {\r\n \"name\": \"Pre-engine Update\",\r\n \"description\": \"Perform pre-engine update.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T09:25:37.4798089-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:28:55.8289013-08:00\",\r\n \"steps\": [\r\n {\r\n \"name\": \"PreUpdate Cloud\",\r\n \"description\": \"Copy packages to NugetStore.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T09:25:41.9019404-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T09:57:50.1318779-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing SF Runtime\",\r\n \"description\": \"Update SeedRing SF Runtime.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T09:57:50.1475043-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:17:07.8319178-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing ECE\",\r\n \"description\": \"Update SeedRing ECE.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:17:07.8631688-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:28:55.7507724-08:00\",\r\n \"steps\": []\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Engine Update\",\r\n \"description\": \"Perform engine update.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:28:55.8601531-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:37:44.0480253-08:00\",\r\n \"steps\": [\r\n {\r\n \"name\": \"PreUpdate Cloud\",\r\n \"description\": \"Copy packages to NugetStore.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:28:59.500983-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:35:43.2198256-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing SF Runtime\",\r\n \"description\": \"Update SeedRing SF Runtime.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:35:43.2354458-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:36:14.5629258-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing ECE\",\r\n \"description\": \"Update SeedRing ECE.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:36:14.5941782-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:37:43.9698965-08:00\",\r\n \"steps\": []\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Cloud Update\",\r\n \"description\": \"Perform cloud update.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:37:44.079278-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:09:04.960067-08:00\",\r\n \"steps\": [\r\n {\r\n \"name\": \"Update Domain\",\r\n \"description\": \"Live Update on Domain.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:37:48.3763886-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:41:20.0340798-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Check Cloud Health\",\r\n \"description\": \"Check the health of all roles in parallel before beginning update.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:41:20.0653266-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:56:10.4396313-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"PreUpdate OEM.\",\r\n \"description\": \"Copy OEM content to CloudMedia.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:56:10.4708828-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:56:16.1459718-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"(DEP) Generate Code Integrity Policy\",\r\n \"description\": \"Generates the Code Integrity Policy\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:56:16.1807685-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:57:07.0682796-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update OEM S2D whitelist.\",\r\n \"description\": \"Update S2D health service from StorageDisks.xml.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:57:07.0995306-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:57:14.7249566-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"(FBI) Create new Storage Accounts\",\r\n \"description\": \"Create newly introduced storage accounts to be used by different providers.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:57:14.7562105-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:58:34.4194385-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"NC Auto Update Disable\",\r\n \"description\": \"Disable EnableAutomaticUpdates flag on NC fabriccluster\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:58:34.4506838-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T11:00:13.6332139-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Install Update.\",\r\n \"description\": \"Install Update on Hosts and Infra VMs.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T11:00:13.6644452-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:19:16.6339385-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"(DEP) Generate base images for hosts and virtual machines.\",\r\n \"description\": \"Creates and updates the base images needed by hosts and virtual machines.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:19:16.7901987-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:38:55.3959294-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"(DEP) Generate host image.\",\r\n \"description\": \"Build VHDs for the host at runtime and the backup WinPE for servicing.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:38:55.4115607-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:43:15.272197-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update PrivilegedEndpoint whitelist\",\r\n \"description\": \"Update PrivilegedEndpoint whitelist on SeedRing nodes.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:43:15.3034455-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:47:22.3519764-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update Defender\",\r\n \"description\": \"Update Defender signatures.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:47:22.3832322-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:48:07.0983871-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update Node Sets\",\r\n \"description\": \"Live Update all nodes in a node set.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:48:07.129639-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T13:51:45.6581291-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing IBC\",\r\n \"description\": \"Update SeedRing IBC.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T13:51:45.6934194-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T14:02:32.5586541-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart Storage Hosts\",\r\n \"description\": \"Restart Storage Hosts.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T14:02:32.5899091-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T18:53:35.1617531-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart CA.\",\r\n \"description\": \"Restart CA to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T18:53:35.1993965-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T19:00:23.0498989-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart NC.\",\r\n \"description\": \"Restart NC VMs to finish applying OS updates and Update the NC ring app.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T19:00:23.1436539-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T20:53:58.2467744-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart SQL.\",\r\n \"description\": \"Restart SQL VMs to finish applying OS updates and Update SQL servers.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T20:53:58.3717999-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T21:08:54.2948193-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart SLB.\",\r\n \"description\": \"Restart SLB to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T21:08:54.3260706-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T21:28:05.8095784-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart ACSFabric and Gateway\",\r\n \"description\": \"Restart ACSFabric and Gateway to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T21:28:05.8408311-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T22:27:56.0854925-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart WAS\",\r\n \"description\": \"Restart WAS to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T22:27:56.1479976-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T22:46:02.7735634-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart WASPUBLIC\",\r\n \"description\": \"Restart WASPUBLIC to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T22:46:02.8048171-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T23:15:02.30254-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart XRP FabricRing, PXE and ADFS, and SQL.\",\r\n \"description\": \"Restart XRP FabricRing, PXE, ADFS, and SQL to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T23:15:02.3337871-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T23:47:21.7605287-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update OEM manifest.\",\r\n \"description\": \"Update ECE manifest from OEM manifests.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T23:47:21.7917861-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T23:47:35.5958946-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update Active Version on Node Sets\",\r\n \"description\": \"Live Update all nodes active version.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T23:47:35.6271478-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:05:12.3530683-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Post Update Trace Collector.\",\r\n \"description\": \"Switch Trace Collector to post update and validate the service is running.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:05:12.5405827-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:06:19.9796654-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Enable StartComponentCleanup on NC VMs\",\r\n \"description\": \"Enable WU StartComponentCleanup on NC VMs\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:06:20.0265482-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:07:37.297809-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update Cloud Security\",\r\n \"description\": \"Update cloud security\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:07:37.3446716-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:07:56.664821-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"PostUpdate Cloud.\",\r\n \"description\": \"Update Azure Stack Version.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:07:56.6960734-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:08:19.7703032-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update ExternalDNS\",\r\n \"description\": \"Disable DNS Recursion on WASP VMs\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:08:19.8015565-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:08:28.0283394-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Close Active Alerts After LiveUdpate\",\r\n \"description\": \"Query HRP service and close all existing active alerts\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:08:28.0595832-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:09:04.8819362-08:00\",\r\n \"steps\": []\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n \"timeStarted\": \"2018-03-02T17:25:22.818Z\",\r\n \"duration\": \"PT14H43M50.0644552S\",\r\n \"state\": \"Succeeded\"\r\n }\r\n }\r\n ]\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "10329"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:46:39 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRvAYghjspMULSxS8GbtEPsgXszTt6aTB4KasWcCZdfv8D8m4Ca0e2iIZnMP6K5ovDrFKxIHA3PaLQeo02FMiT8nLF0vSdFMLHsq2lGoxLbOStZenyYMKqgJH/eBqFspy47kpq/3FTcUiGygI3GuL6f"
+ ],
+ "x-ms-correlation-request-id": [
+ "636f4b62-1c6b-4d41-84c6-db40bcd4b60c"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12863"
+ ],
+ "x-ms-request-id": [
+ "636f4b62-1c6b-4d41-84c6-db40bcd4b60c"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194639Z:636f4b62-1c6b-4d41-84c6-db40bcd4b60c"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ },
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates/Microsoft1.0.180302.1/updateRuns/407d9b8f-debf-4058-b374-a94a1bb4de30?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy9yZWRtb25kL3VwZGF0ZXMvTWljcm9zb2Z0MS4wLjE4MDMwMi4xL3VwZGF0ZVJ1bnMvNDA3ZDliOGYtZGViZi00MDU4LWIzNzQtYTk0YTFiYjRkZTMwP2FwaS12ZXJzaW9uPTIwMTYtMDUtMDE=",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "d636b4fd-1dc1-4428-ba0e-9468a2a43529"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates/Microsoft1.0.180302.1/updateRuns/407d9b8f-debf-4058-b374-a94a1bb4de30\",\r\n \"name\": \"407d9b8f-debf-4058-b374-a94a1bb4de30\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations/updates/updateRuns\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"progress\": {\r\n \"name\": \"Unnamed step\",\r\n \"description\": \"Update Azure Stack.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T09:25:37.4173123-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:09:04.9913191-08:00\",\r\n \"steps\": [\r\n {\r\n \"name\": \"Pre-engine Update\",\r\n \"description\": \"Perform pre-engine update.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T09:25:37.4798089-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:28:55.8289013-08:00\",\r\n \"steps\": [\r\n {\r\n \"name\": \"PreUpdate Cloud\",\r\n \"description\": \"Copy packages to NugetStore.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T09:25:41.9019404-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T09:57:50.1318779-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing SF Runtime\",\r\n \"description\": \"Update SeedRing SF Runtime.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T09:57:50.1475043-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:17:07.8319178-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing ECE\",\r\n \"description\": \"Update SeedRing ECE.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:17:07.8631688-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:28:55.7507724-08:00\",\r\n \"steps\": []\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Engine Update\",\r\n \"description\": \"Perform engine update.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:28:55.8601531-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:37:44.0480253-08:00\",\r\n \"steps\": [\r\n {\r\n \"name\": \"PreUpdate Cloud\",\r\n \"description\": \"Copy packages to NugetStore.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:28:59.500983-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:35:43.2198256-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing SF Runtime\",\r\n \"description\": \"Update SeedRing SF Runtime.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:35:43.2354458-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:36:14.5629258-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing ECE\",\r\n \"description\": \"Update SeedRing ECE.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:36:14.5941782-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:37:43.9698965-08:00\",\r\n \"steps\": []\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Cloud Update\",\r\n \"description\": \"Perform cloud update.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:37:44.079278-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:09:04.960067-08:00\",\r\n \"steps\": [\r\n {\r\n \"name\": \"Update Domain\",\r\n \"description\": \"Live Update on Domain.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:37:48.3763886-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:41:20.0340798-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Check Cloud Health\",\r\n \"description\": \"Check the health of all roles in parallel before beginning update.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:41:20.0653266-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:56:10.4396313-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"PreUpdate OEM.\",\r\n \"description\": \"Copy OEM content to CloudMedia.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:56:10.4708828-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:56:16.1459718-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"(DEP) Generate Code Integrity Policy\",\r\n \"description\": \"Generates the Code Integrity Policy\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:56:16.1807685-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:57:07.0682796-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update OEM S2D whitelist.\",\r\n \"description\": \"Update S2D health service from StorageDisks.xml.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:57:07.0995306-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:57:14.7249566-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"(FBI) Create new Storage Accounts\",\r\n \"description\": \"Create newly introduced storage accounts to be used by different providers.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:57:14.7562105-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:58:34.4194385-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"NC Auto Update Disable\",\r\n \"description\": \"Disable EnableAutomaticUpdates flag on NC fabriccluster\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:58:34.4506838-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T11:00:13.6332139-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Install Update.\",\r\n \"description\": \"Install Update on Hosts and Infra VMs.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T11:00:13.6644452-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:19:16.6339385-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"(DEP) Generate base images for hosts and virtual machines.\",\r\n \"description\": \"Creates and updates the base images needed by hosts and virtual machines.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:19:16.7901987-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:38:55.3959294-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"(DEP) Generate host image.\",\r\n \"description\": \"Build VHDs for the host at runtime and the backup WinPE for servicing.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:38:55.4115607-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:43:15.272197-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update PrivilegedEndpoint whitelist\",\r\n \"description\": \"Update PrivilegedEndpoint whitelist on SeedRing nodes.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:43:15.3034455-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:47:22.3519764-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update Defender\",\r\n \"description\": \"Update Defender signatures.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:47:22.3832322-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:48:07.0983871-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update Node Sets\",\r\n \"description\": \"Live Update all nodes in a node set.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:48:07.129639-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T13:51:45.6581291-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing IBC\",\r\n \"description\": \"Update SeedRing IBC.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T13:51:45.6934194-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T14:02:32.5586541-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart Storage Hosts\",\r\n \"description\": \"Restart Storage Hosts.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T14:02:32.5899091-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T18:53:35.1617531-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart CA.\",\r\n \"description\": \"Restart CA to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T18:53:35.1993965-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T19:00:23.0498989-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart NC.\",\r\n \"description\": \"Restart NC VMs to finish applying OS updates and Update the NC ring app.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T19:00:23.1436539-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T20:53:58.2467744-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart SQL.\",\r\n \"description\": \"Restart SQL VMs to finish applying OS updates and Update SQL servers.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T20:53:58.3717999-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T21:08:54.2948193-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart SLB.\",\r\n \"description\": \"Restart SLB to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T21:08:54.3260706-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T21:28:05.8095784-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart ACSFabric and Gateway\",\r\n \"description\": \"Restart ACSFabric and Gateway to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T21:28:05.8408311-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T22:27:56.0854925-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart WAS\",\r\n \"description\": \"Restart WAS to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T22:27:56.1479976-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T22:46:02.7735634-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart WASPUBLIC\",\r\n \"description\": \"Restart WASPUBLIC to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T22:46:02.8048171-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T23:15:02.30254-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart XRP FabricRing, PXE and ADFS, and SQL.\",\r\n \"description\": \"Restart XRP FabricRing, PXE, ADFS, and SQL to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T23:15:02.3337871-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T23:47:21.7605287-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update OEM manifest.\",\r\n \"description\": \"Update ECE manifest from OEM manifests.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T23:47:21.7917861-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T23:47:35.5958946-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update Active Version on Node Sets\",\r\n \"description\": \"Live Update all nodes active version.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T23:47:35.6271478-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:05:12.3530683-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Post Update Trace Collector.\",\r\n \"description\": \"Switch Trace Collector to post update and validate the service is running.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:05:12.5405827-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:06:19.9796654-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Enable StartComponentCleanup on NC VMs\",\r\n \"description\": \"Enable WU StartComponentCleanup on NC VMs\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:06:20.0265482-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:07:37.297809-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update Cloud Security\",\r\n \"description\": \"Update cloud security\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:07:37.3446716-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:07:56.664821-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"PostUpdate Cloud.\",\r\n \"description\": \"Update Azure Stack Version.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:07:56.6960734-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:08:19.7703032-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update ExternalDNS\",\r\n \"description\": \"Disable DNS Recursion on WASP VMs\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:08:19.8015565-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:08:28.0283394-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Close Active Alerts After LiveUdpate\",\r\n \"description\": \"Query HRP service and close all existing active alerts\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:08:28.0595832-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:09:04.8819362-08:00\",\r\n \"steps\": []\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n \"timeStarted\": \"2018-03-02T17:25:22.818Z\",\r\n \"duration\": \"PT14H43M50.0644552S\",\r\n \"state\": \"Succeeded\"\r\n }\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "10317"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:46:39 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRv3hOqGXnaAWsB4j283H9qqLEpIMgONIfS1aRY/qfT9xalaDj00yrbU4RDi4BAZCAgcaitRw/1yeqREqqsRMHQLSU3sutkC6L8sZp9XQxgPGqg6Lg+Yydw1fj/DAkqkkWVN57LBGZh2EBPFbqjq/lD"
+ ],
+ "x-ms-correlation-request-id": [
+ "795e7395-0d86-4433-b208-6b27e2766d3c"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12862"
+ ],
+ "x-ms-request-id": [
+ "795e7395-0d86-4433-b208-6b27e2766d3c"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194639Z:795e7395-0d86-4433-b208-6b27e2766d3c"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ }
+ ],
+ "Names": {},
+ "Variables": {
+ "SubscriptionId": "23d66fd1-4743-42ff-b391-e29dc51d799e"
+ }
+}
\ No newline at end of file
diff --git a/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestListUpdateLocations.json b/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestListUpdateLocations.json
new file mode 100644
index 000000000000..53dbf011f64d
--- /dev/null
+++ b/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestListUpdateLocations.json
@@ -0,0 +1,72 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy8/YXBpLXZlcnNpb249MjAxNi0wNS0wMQ==",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "154955cc-3526-4e3f-8e6c-bf6af2543b50"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourceGroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond\",\r\n \"name\": \"redmond\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"currentVersion\": \"1.0.180302.1\",\r\n \"currentOemVersion\": \"1.0.1709.3\",\r\n \"lastUpdated\": \"2018-03-03T08:09:12.8824552Z\",\r\n \"state\": \"AppliedSuccessfully\"\r\n }\r\n }\r\n ]\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "410"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:49:41 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRvd9FxBQkWwRX/RzjXpOJahTT44sUYodaKt3oYdL7kcGVnzRdkMivAYdY/WfYnbxI7ZZ4FYZ0Ib9Sz62l+gTIjoZMdpUdtlj9bGCT9B+f5cwGHelWn+VJkVdGrGdkXzm+j19XKzrLGo+5KJHIZxHJq"
+ ],
+ "x-ms-correlation-request-id": [
+ "72daa2a6-ad6b-4ee5-af63-6b834eb9503c"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12841"
+ ],
+ "x-ms-request-id": [
+ "72daa2a6-ad6b-4ee5-af63-6b834eb9503c"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194941Z:72daa2a6-ad6b-4ee5-af63-6b834eb9503c"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ }
+ ],
+ "Names": {},
+ "Variables": {
+ "SubscriptionId": "23d66fd1-4743-42ff-b391-e29dc51d799e"
+ }
+}
\ No newline at end of file
diff --git a/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestListUpdateRuns.json b/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestListUpdateRuns.json
new file mode 100644
index 000000000000..3829a6cfafef
--- /dev/null
+++ b/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestListUpdateRuns.json
@@ -0,0 +1,200 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy8/YXBpLXZlcnNpb249MjAxNi0wNS0wMQ==",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "9db7bed8-a457-4a4d-9b39-7782cb0bbe5f"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourceGroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond\",\r\n \"name\": \"redmond\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"currentVersion\": \"1.0.180302.1\",\r\n \"currentOemVersion\": \"1.0.1709.3\",\r\n \"lastUpdated\": \"2018-03-03T08:09:12.8824552Z\",\r\n \"state\": \"AppliedSuccessfully\"\r\n }\r\n }\r\n ]\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "410"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:45:44 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRvEygUYLAXfHtposf7obN/iLhez0PGiOrZSIp9gfe3ll7qFM5dA/+c5rzz3LtKlwHqCmCuYsurqZCL2kY08Va08bejo2pcPKiU2zlpxwlwcepqH77zdMafX2YI6Rb969TxM6Wa0AeamookuVEwfhq3"
+ ],
+ "x-ms-correlation-request-id": [
+ "0c36bb0b-67ff-4ca0-b114-f8af1377305e"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12869"
+ ],
+ "x-ms-request-id": [
+ "0c36bb0b-67ff-4ca0-b114-f8af1377305e"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194544Z:0c36bb0b-67ff-4ca0-b114-f8af1377305e"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ },
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy9yZWRtb25kL3VwZGF0ZXM/YXBpLXZlcnNpb249MjAxNi0wNS0wMQ==",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "74845f8a-dc3e-4087-9b9f-79b881b3d870"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourceGroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates/Microsoft1.0.180302.1\",\r\n \"name\": \"Microsoft1.0.180302.1\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations/updates\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"dateAvailable\": \"0001-01-01T00:00:00\",\r\n \"installedDate\": \"2018-03-03T08:09:12.8824552Z\",\r\n \"description\": \"MAS Update 1.0.180302.1\",\r\n \"state\": \"Installed\",\r\n \"kbLink\": \"https://aka.ms/azurestackupdate\",\r\n \"minVersionRequired\": \"1.0.180103.2\",\r\n \"packagePath\": \"\\\\\\\\SU1FileServer\\\\SU1_Infrastructure_2\\\\Updates\\\\Packages\\\\Microsoft1.0.180302.1\",\r\n \"packageSizeInMb\": 2144,\r\n \"updateName\": \"MAS - 1.0.180302.1\",\r\n \"version\": \"1.0.180302.1\",\r\n \"updateOemFile\": \"\",\r\n \"publisher\": \"Microsoft\",\r\n \"packageType\": \"Microsoft\"\r\n }\r\n }\r\n ]\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "795"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:46:00 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRvu+Y6cc+TeMz2d5wNfyfQIr/Ji+Ll5+/NJmaYY0iSXRgu4DKY/QmrRif6VEK03c3CZDzSs8FgNbAubIqPTi6T/FQIVDnnQ8L//hU5QsyH+x6d7r0pm7byc4hN+YDL4uY1FnyRe8Pv/X+MppCzc0hs"
+ ],
+ "x-ms-correlation-request-id": [
+ "197c5fd0-b3c3-4bd6-8167-e77bc351e65f"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12868"
+ ],
+ "x-ms-request-id": [
+ "197c5fd0-b3c3-4bd6-8167-e77bc351e65f"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194600Z:197c5fd0-b3c3-4bd6-8167-e77bc351e65f"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ },
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates/Microsoft1.0.180302.1/updateRuns?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy9yZWRtb25kL3VwZGF0ZXMvTWljcm9zb2Z0MS4wLjE4MDMwMi4xL3VwZGF0ZVJ1bnM/YXBpLXZlcnNpb249MjAxNi0wNS0wMQ==",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "33889bc3-4951-49bd-93ab-f0aa6ec4cde0"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourceGroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates/Microsoft1.0.180302.1/updateRuns/407d9b8f-debf-4058-b374-a94a1bb4de30\",\r\n \"name\": \"407d9b8f-debf-4058-b374-a94a1bb4de30\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations/updates/updateRuns\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"progress\": {\r\n \"name\": \"Unnamed step\",\r\n \"description\": \"Update Azure Stack.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T09:25:37.4173123-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:09:04.9913191-08:00\",\r\n \"steps\": [\r\n {\r\n \"name\": \"Pre-engine Update\",\r\n \"description\": \"Perform pre-engine update.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T09:25:37.4798089-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:28:55.8289013-08:00\",\r\n \"steps\": [\r\n {\r\n \"name\": \"PreUpdate Cloud\",\r\n \"description\": \"Copy packages to NugetStore.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T09:25:41.9019404-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T09:57:50.1318779-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing SF Runtime\",\r\n \"description\": \"Update SeedRing SF Runtime.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T09:57:50.1475043-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:17:07.8319178-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing ECE\",\r\n \"description\": \"Update SeedRing ECE.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:17:07.8631688-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:28:55.7507724-08:00\",\r\n \"steps\": []\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Engine Update\",\r\n \"description\": \"Perform engine update.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:28:55.8601531-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:37:44.0480253-08:00\",\r\n \"steps\": [\r\n {\r\n \"name\": \"PreUpdate Cloud\",\r\n \"description\": \"Copy packages to NugetStore.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:28:59.500983-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:35:43.2198256-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing SF Runtime\",\r\n \"description\": \"Update SeedRing SF Runtime.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:35:43.2354458-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:36:14.5629258-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing ECE\",\r\n \"description\": \"Update SeedRing ECE.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:36:14.5941782-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:37:43.9698965-08:00\",\r\n \"steps\": []\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"Cloud Update\",\r\n \"description\": \"Perform cloud update.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:37:44.079278-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:09:04.960067-08:00\",\r\n \"steps\": [\r\n {\r\n \"name\": \"Update Domain\",\r\n \"description\": \"Live Update on Domain.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:37:48.3763886-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:41:20.0340798-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Check Cloud Health\",\r\n \"description\": \"Check the health of all roles in parallel before beginning update.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:41:20.0653266-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:56:10.4396313-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"PreUpdate OEM.\",\r\n \"description\": \"Copy OEM content to CloudMedia.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:56:10.4708828-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:56:16.1459718-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"(DEP) Generate Code Integrity Policy\",\r\n \"description\": \"Generates the Code Integrity Policy\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:56:16.1807685-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:57:07.0682796-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update OEM S2D whitelist.\",\r\n \"description\": \"Update S2D health service from StorageDisks.xml.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:57:07.0995306-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:57:14.7249566-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"(FBI) Create new Storage Accounts\",\r\n \"description\": \"Create newly introduced storage accounts to be used by different providers.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:57:14.7562105-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T10:58:34.4194385-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"NC Auto Update Disable\",\r\n \"description\": \"Disable EnableAutomaticUpdates flag on NC fabriccluster\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T10:58:34.4506838-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T11:00:13.6332139-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Install Update.\",\r\n \"description\": \"Install Update on Hosts and Infra VMs.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T11:00:13.6644452-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:19:16.6339385-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"(DEP) Generate base images for hosts and virtual machines.\",\r\n \"description\": \"Creates and updates the base images needed by hosts and virtual machines.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:19:16.7901987-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:38:55.3959294-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"(DEP) Generate host image.\",\r\n \"description\": \"Build VHDs for the host at runtime and the backup WinPE for servicing.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:38:55.4115607-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:43:15.272197-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update PrivilegedEndpoint whitelist\",\r\n \"description\": \"Update PrivilegedEndpoint whitelist on SeedRing nodes.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:43:15.3034455-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:47:22.3519764-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update Defender\",\r\n \"description\": \"Update Defender signatures.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:47:22.3832322-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T12:48:07.0983871-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update Node Sets\",\r\n \"description\": \"Live Update all nodes in a node set.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T12:48:07.129639-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T13:51:45.6581291-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update SeedRing IBC\",\r\n \"description\": \"Update SeedRing IBC.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T13:51:45.6934194-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T14:02:32.5586541-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart Storage Hosts\",\r\n \"description\": \"Restart Storage Hosts.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T14:02:32.5899091-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T18:53:35.1617531-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart CA.\",\r\n \"description\": \"Restart CA to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T18:53:35.1993965-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T19:00:23.0498989-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart NC.\",\r\n \"description\": \"Restart NC VMs to finish applying OS updates and Update the NC ring app.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T19:00:23.1436539-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T20:53:58.2467744-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart SQL.\",\r\n \"description\": \"Restart SQL VMs to finish applying OS updates and Update SQL servers.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T20:53:58.3717999-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T21:08:54.2948193-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart SLB.\",\r\n \"description\": \"Restart SLB to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T21:08:54.3260706-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T21:28:05.8095784-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart ACSFabric and Gateway\",\r\n \"description\": \"Restart ACSFabric and Gateway to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T21:28:05.8408311-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T22:27:56.0854925-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart WAS\",\r\n \"description\": \"Restart WAS to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T22:27:56.1479976-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T22:46:02.7735634-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart WASPUBLIC\",\r\n \"description\": \"Restart WASPUBLIC to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T22:46:02.8048171-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T23:15:02.30254-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Restart XRP FabricRing, PXE and ADFS, and SQL.\",\r\n \"description\": \"Restart XRP FabricRing, PXE, ADFS, and SQL to finish applying OS updates.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T23:15:02.3337871-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T23:47:21.7605287-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update OEM manifest.\",\r\n \"description\": \"Update ECE manifest from OEM manifests.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T23:47:21.7917861-08:00\",\r\n \"endTimeUtc\": \"2018-03-02T23:47:35.5958946-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update Active Version on Node Sets\",\r\n \"description\": \"Live Update all nodes active version.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-02T23:47:35.6271478-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:05:12.3530683-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Post Update Trace Collector.\",\r\n \"description\": \"Switch Trace Collector to post update and validate the service is running.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:05:12.5405827-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:06:19.9796654-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Enable StartComponentCleanup on NC VMs\",\r\n \"description\": \"Enable WU StartComponentCleanup on NC VMs\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:06:20.0265482-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:07:37.297809-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update Cloud Security\",\r\n \"description\": \"Update cloud security\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:07:37.3446716-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:07:56.664821-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"PostUpdate Cloud.\",\r\n \"description\": \"Update Azure Stack Version.\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:07:56.6960734-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:08:19.7703032-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Update ExternalDNS\",\r\n \"description\": \"Disable DNS Recursion on WASP VMs\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:08:19.8015565-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:08:28.0283394-08:00\",\r\n \"steps\": []\r\n },\r\n {\r\n \"name\": \"Close Active Alerts After LiveUdpate\",\r\n \"description\": \"Query HRP service and close all existing active alerts\",\r\n \"errorMessage\": \"\",\r\n \"status\": \"Success\",\r\n \"startTimeUtc\": \"2018-03-03T00:08:28.0595832-08:00\",\r\n \"endTimeUtc\": \"2018-03-03T00:09:04.8819362-08:00\",\r\n \"steps\": []\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n \"timeStarted\": \"2018-03-02T17:25:22.818Z\",\r\n \"duration\": \"PT14H43M50.0644552S\",\r\n \"state\": \"Succeeded\"\r\n }\r\n }\r\n ]\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "10329"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:46:00 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRv//jTUcbuI56WWPFPpz1vp/DuPR4zsB8w5S553CLS/0AqoFIpyqP3Yo3KaRyMkJM4kdYyQC/Szk4u5PN4a/d8cBo7i4wr8rCOYf8sXEXWmtfQQRcZv/VnUh0M8Hl+y1XIQUkUHHl9KA3aYtiwmdxp"
+ ],
+ "x-ms-correlation-request-id": [
+ "ba4f492c-eec2-46e6-8276-03ed14195b4e"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12867"
+ ],
+ "x-ms-request-id": [
+ "ba4f492c-eec2-46e6-8276-03ed14195b4e"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194600Z:ba4f492c-eec2-46e6-8276-03ed14195b4e"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ }
+ ],
+ "Names": {},
+ "Variables": {
+ "SubscriptionId": "23d66fd1-4743-42ff-b391-e29dc51d799e"
+ }
+}
\ No newline at end of file
diff --git a/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestListUpdates.json b/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestListUpdates.json
new file mode 100644
index 000000000000..5c214783905b
--- /dev/null
+++ b/src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestListUpdates.json
@@ -0,0 +1,136 @@
+{
+ "Entries": [
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy8/YXBpLXZlcnNpb249MjAxNi0wNS0wMQ==",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "4bcc5056-ff72-44b8-99f8-6b225322d6c3"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourceGroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond\",\r\n \"name\": \"redmond\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"currentVersion\": \"1.0.180302.1\",\r\n \"currentOemVersion\": \"1.0.1709.3\",\r\n \"lastUpdated\": \"2018-03-03T08:09:12.8824552Z\",\r\n \"state\": \"AppliedSuccessfully\"\r\n }\r\n }\r\n ]\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "410"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:46:53 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRvBZyHOfPKxYZgUnwK10Gct7PVZFBgXLTrTUwCzQSfp7KvQwe4O0lIIRpQz3M5qd9BAxs2oPlF8L7o8NDu0lXhi2snV154PMtMx3oHj4hS3Jx+YTcxBjZVvHcy0vptsAOvyS0lOlabAWtKKoOoNjUR"
+ ],
+ "x-ms-correlation-request-id": [
+ "9c64da95-4077-4ce3-b72f-9ffe65a1ef23"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12858"
+ ],
+ "x-ms-request-id": [
+ "9c64da95-4077-4ce3-b72f-9ffe65a1ef23"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194653Z:9c64da95-4077-4ce3-b72f-9ffe65a1ef23"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ },
+ {
+ "RequestUri": "/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourcegroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates?api-version=2016-05-01",
+ "EncodedRequestUri": "L3N1YnNjcmlwdGlvbnMvMjNkNjZmZDEtNDc0My00MmZmLWIzOTEtZTI5ZGM1MWQ3OTllL3Jlc291cmNlZ3JvdXBzL1N5c3RlbS5SZWRtb25kL3Byb3ZpZGVycy9NaWNyb3NvZnQuVXBkYXRlLkFkbWluL3VwZGF0ZUxvY2F0aW9ucy9yZWRtb25kL3VwZGF0ZXM/YXBpLXZlcnNpb249MjAxNi0wNS0wMQ==",
+ "RequestMethod": "GET",
+ "RequestBody": "",
+ "RequestHeaders": {
+ "x-ms-client-request-id": [
+ "5326c0db-0b36-49f9-95db-910828a110ec"
+ ],
+ "accept-language": [
+ "en-US"
+ ],
+ "User-Agent": [
+ "FxVersion/4.6.26011.01",
+ "Microsoft.AzureStack.Management.Update.Admin.UpdateAdminClient/0.1.0.0"
+ ]
+ },
+ "ResponseBody": "{\r\n \"value\": [\r\n {\r\n \"id\": \"/subscriptions/23d66fd1-4743-42ff-b391-e29dc51d799e/resourceGroups/System.Redmond/providers/Microsoft.Update.Admin/updateLocations/redmond/updates/Microsoft1.0.180302.1\",\r\n \"name\": \"Microsoft1.0.180302.1\",\r\n \"type\": \"Microsoft.Update.Admin/updateLocations/updates\",\r\n \"location\": \"redmond\",\r\n \"tags\": {},\r\n \"properties\": {\r\n \"dateAvailable\": \"0001-01-01T00:00:00\",\r\n \"installedDate\": \"2018-03-03T08:09:12.8824552Z\",\r\n \"description\": \"MAS Update 1.0.180302.1\",\r\n \"state\": \"Installed\",\r\n \"kbLink\": \"https://aka.ms/azurestackupdate\",\r\n \"minVersionRequired\": \"1.0.180103.2\",\r\n \"packagePath\": \"\\\\\\\\SU1FileServer\\\\SU1_Infrastructure_2\\\\Updates\\\\Packages\\\\Microsoft1.0.180302.1\",\r\n \"packageSizeInMb\": 2144,\r\n \"updateName\": \"MAS - 1.0.180302.1\",\r\n \"version\": \"1.0.180302.1\",\r\n \"updateOemFile\": \"\",\r\n \"publisher\": \"Microsoft\",\r\n \"packageType\": \"Microsoft\"\r\n }\r\n }\r\n ]\r\n}",
+ "ResponseHeaders": {
+ "Content-Length": [
+ "795"
+ ],
+ "Content-Type": [
+ "application/json; charset=utf-8"
+ ],
+ "Expires": [
+ "-1"
+ ],
+ "Cache-Control": [
+ "no-cache"
+ ],
+ "Date": [
+ "Mon, 05 Mar 2018 19:47:24 GMT"
+ ],
+ "Pragma": [
+ "no-cache"
+ ],
+ "Server": [
+ "Microsoft-HTTPAPI/2.0"
+ ],
+ "WWW-Authenticate": [
+ "oYG3MIG0oAMKAQChCwYJKoZIgvcSAQICooGfBIGcYIGZBgkqhkiG9xIBAgICAG+BiTCBhqADAgEFoQMCAQ+iejB4oAMCARKicQRvlEtW6do8hwEdsHGizDRsWv3FLc7FqNeX2040tL7jHrlyQkThbad8cLTskTDk927Ofz9bsswI6QC1TBERrxTZGy5iNWYPZ9t9JtMJMVIHG3OJwbru9KExnNYq3LwdDMMUchaArZPNG0HSd2RK3pYv"
+ ],
+ "x-ms-correlation-request-id": [
+ "966d64a2-50cf-42d0-942a-0cce1361241d"
+ ],
+ "x-ms-ratelimit-remaining-subscription-reads": [
+ "12856"
+ ],
+ "x-ms-request-id": [
+ "966d64a2-50cf-42d0-942a-0cce1361241d"
+ ],
+ "x-ms-routing-request-id": [
+ "REDMOND:20180305T194725Z:966d64a2-50cf-42d0-942a-0cce1361241d"
+ ],
+ "Strict-Transport-Security": [
+ "max-age=31536000; includeSubDomains"
+ ],
+ "X-Content-Type-Options": [
+ "nosniff"
+ ]
+ },
+ "StatusCode": 200
+ }
+ ],
+ "Names": {},
+ "Variables": {
+ "SubscriptionId": "23d66fd1-4743-42ff-b391-e29dc51d799e"
+ }
+}
\ No newline at end of file
diff --git a/src/StackAdmin/Azs.Update.Admin/Tests/src/CommonModules.ps1 b/src/StackAdmin/Azs.Update.Admin/Tests/src/CommonModules.ps1
index ce242d31c2e2..9405bfc1c96c 100644
--- a/src/StackAdmin/Azs.Update.Admin/Tests/src/CommonModules.ps1
+++ b/src/StackAdmin/Azs.Update.Admin/Tests/src/CommonModules.ps1
@@ -14,7 +14,9 @@
$ModuleName = "Azs.Update.Admin"
-Import-Module "..\..\..\Stack\Debug\ResourceManager\AzureResourceManager\AzureRM.Profile"
+if (!(Get-Module -ListAvailable -Name AzureRM.Profile)) {
+ Import-Module "..\..\..\Stack\Debug\ResourceManager\AzureResourceManager\AzureRM.Profile"
+}
Import-Module ..\Module\$ModuleName
if(Test-Path bin\Debug) {
diff --git a/src/StackAdmin/Azs.Update.Admin/Tests/src/UpdateAdmin.Tests.ps1 b/src/StackAdmin/Azs.Update.Admin/Tests/src/UpdateAdmin.Tests.ps1
new file mode 100644
index 000000000000..5253b2a88ccb
--- /dev/null
+++ b/src/StackAdmin/Azs.Update.Admin/Tests/src/UpdateAdmin.Tests.ps1
@@ -0,0 +1,239 @@
+# ----------------------------------------------------------------------------------
+#
+# 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.
+# ----------------------------------------------------------------------------------
+
+<#
+.SYNOPSIS
+ Run AzureStack Update admin tests.
+
+.DESCRIPTION
+ Run AzureStack Update admin tests using either mock client or our client.
+ The mock client allows for recording and playback. This allows for offline tests.
+
+.PARAMETER RunRaw
+ Run using our client creation path.
+
+.EXAMPLE
+ PS C:\> .\src\UpdateAdmin.Tests.ps1
+
+ Describing UpdateAdminTests
+ [+] TestListUpdateLocation 3.72s
+ [+] TestGetUpdateLocation 1.2s
+ [+] TestListUpdate 4.12s
+ [+] TestGetUdate 4.51s
+ [+] TestListUpdateRun 3.96s
+ [+] TestGetUpdateRun 4.97s
+
+.NOTES
+ Author: Mike Giesler
+ Copyright: Microsoft
+ Date: March 15, 2018
+#>
+param(
+ [bool]$RunRaw = $false
+)
+
+$global:RunRaw = $RunRaw
+
+. $PSScriptRoot\CommonModules.ps1
+
+$global:TestName = ""
+
+InModuleScope Azs.Update.Admin {
+
+ Describe "UpdateAdminTests" -Tags @('UpdateAdminTests', 'Azs.Update.Admin') {
+
+ BeforeEach {
+
+ . $PSScriptRoot\Common.ps1
+
+ function ValidateUpdateLocation {
+ param(
+ [Parameter(Mandatory=$true)]
+ $location
+ )
+
+ $location | Should Not Be $null
+ $location.Id | Should Not Be $null
+ $location.CurrentOemVersion | Should Not Be $null
+ $location.CurrentVersion | Should Not Be $null
+ $location.State | Should Not Be $null
+ }
+
+ function ValidateSameUpdateLocation {
+ param(
+ [Parameter(Mandatory=$true)]
+ $location1,
+ [Parameter(Mandatory=$true)]
+ $location2
+ )
+
+ $location1 | Should Not Be $null
+ $location2 | Should Not Be $null
+ $location1.Id | Should Be $location2.Id
+ $location1.CurrentOemVersion | Should Be $location2.CurrentOemVersion
+ $location1.CurrentVersion | Should Be $location2.CurrentVersion
+ $location1.State | Should Be $location2.State
+ }
+
+ function ValidateUpdate {
+ param(
+ [Parameter(Mandatory=$true)]
+ $update
+ )
+
+ $update | Should Not Be $null
+ $update.Id | Should Not Be $null
+ $update.DateAvailable | Should Not Be $null
+ $update.Description | Should Not Be $null
+ $update.KbLink | Should Not Be $null
+ $update.MinVersionRequired | Should Not Be $null
+ $update.PackagePath | Should Not Be $null
+ $update.PackageSizeInMb | Should Not Be $null
+ $update.PackageType | Should Not Be $null
+ $update.Publisher | Should Not Be $null
+ $update.State | Should Not Be $null
+ $update.UpdateName | Should Not Be $null
+ $update.UpdateOemFile | Should Not Be $null
+ $update.Version | Should Not Be $null
+ }
+
+ function ValidateSameUpdate {
+ param(
+ [Parameter(Mandatory=$true)]
+ $update1,
+ [Parameter(Mandatory=$true)]
+ $update2
+ )
+
+ $update1 | Should Not Be $null
+ $update2 | Should Not Be $null
+ $update1.Id | Should Be $update2.Id
+ $update1.DateAvailable | Should Be $update2.DateAvailable
+ $update1.Description | Should Be $update2.Description
+ $update1.KbLink | Should Be $update2.KbLink
+ $update1.MinVersionRequired | Should Be $update2.MinVersionRequired
+ $update1.PackagePath | Should Be $update2.PackagePath
+ $update1.PackageSizeInMb | Should Be $update2.PackageSizeInMb
+ $update1.PackageType | Should Be $update2.PackageType
+ $update1.Publisher | Should Be $update2.Publisher
+ $update1.State | Should Be $update2.State
+ $update1.UpdateName | Should Be $update2.UpdateName
+ $update1.UpdateOemFile | Should Be $update2.UpdateOemFile
+ $update1.Version | Should Be $update2.Version
+ }
+
+ function ValidateUpdateRun {
+ param(
+ [Parameter(Mandatory=$true)]
+ $run
+ )
+
+ $run | Should Not Be $null
+ $run.Id | Should Not Be $null
+ $run.Duration | Should Not Be $null
+ $run.State | Should Not Be $null
+ $run.TimeStarted | Should Not Be $null
+ $run.Location | Should Not Be $null
+ }
+
+ function ValidateSameUpdateRun {
+ param(
+ [Parameter(Mandatory=$true)]
+ $run1,
+ [Parameter(Mandatory=$true)]
+ $run2
+ )
+
+ $run1 | Should Not Be $null
+ $run2 | Should Not Be $null
+ $run1.Id | Should Be $run2.Id
+ $run1.Duration | Should Be $run2.Duration
+ $run1.State | Should Be $run2.State
+ $run1.TimeStarted | Should Be $run2.TimeStarted
+ $run1.Location | Should Be $run2.Location
+ }
+ }
+
+ It "TestListUpdateLocations" {
+ $global:TestName = "TestListUpdateLocations"
+
+ $list = Get-AzsUpdateLocation -ResourceGroup System.Redmond
+ $list | Should Not Be $null
+ foreach ($location in $list) {
+ ValidateUpdateLocation $location
+ }
+ }
+
+ It "TestGetUpdateLocation" {
+ $global:TestName = "TestGetUpdateLocation"
+
+ $list = Get-AzsUpdateLocation -ResourceGroup System.Redmond
+ foreach ($location in $list) {
+ $location1 = Get-AzsUpdateLocation -Location $location.Name -ResourceGroup System.Redmond
+ ValidateSameUpdateLocation $location $location1
+ }
+ }
+
+ It "TestListUpdates" {
+ $global:TestName = "TestListUpdates"
+
+ $list = Get-AzsUpdate -ResourceGroup System.Redmond -Location redmond
+ $list | Should Not Be $null
+ foreach ($update in $list) {
+ ValidateUpdate $update
+ }
+ }
+
+ It "TestGetUdate" {
+ $global:TestName = "TestGetUpdate"
+
+ $list = Get-AzsUpdate -ResourceGroup System.Redmond -Location redmond
+ foreach ($update in $list)
+ {
+ $update1 = Get-AzsUpdate -Name $update.Name -ResourceGroup System.Redmond -Location redmond
+ ValidateSameUpdate $update $update1
+ }
+ }
+
+ It "TestListUpdateRuns" {
+ $global:TestName = "TestListUpdateRuns"
+
+ $list = Get-AzsUpdate -ResourceGroup System.Redmond -Location redmond
+ foreach ($update in $list)
+ {
+ $runList = Get-AzsUpdateRun -UpdateName $update.Name -ResourceGroup System.Redmond -Location redmond
+ foreach ($run in $runList)
+ {
+ ValidateUpdateRun $run
+ }
+ }
+ }
+
+ It "TestGetUpdateRun" {
+ $global:TestName = "TestGetUpdateRun"
+
+ $list = Get-AzsUpdate -ResourceGroup System.Redmond -Location redmond
+ foreach ($update in $list)
+ {
+ $update | fl
+ $runList = Get-AzsUpdateRun -UpdateName $update.Name -ResourceGroup System.Redmond -Location redmond
+ foreach ($run in $runList)
+ {
+ $run1 = Get-AzsUpdateRun -Name $run.Name -ResourceGroup System.Redmond -Location redmond -UpdateName $update.Name
+ ValidateSameUpdateRun $run $run1
+ }
+ }
+ }
+ }
+}
diff --git a/src/StackAdmin/Azs.Update.Admin/Tests/src/UsageAggregate.Tests.ps1 b/src/StackAdmin/Azs.Update.Admin/Tests/src/UsageAggregate.Tests.ps1
deleted file mode 100644
index 468d1c97fe74..000000000000
--- a/src/StackAdmin/Azs.Update.Admin/Tests/src/UsageAggregate.Tests.ps1
+++ /dev/null
@@ -1,109 +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.
-# ----------------------------------------------------------------------------------
-
-<#
-.SYNOPSIS
- Run AzureStack Update admin edge gateway tests.
-
-.DESCRIPTION
- Run AzureStack Update admin edge gateway tests using either mock client or our client.
- The mock client allows for recording and playback. This allows for offline tests.
-
-.PARAMETER RunRaw
- Run using our client creation path.
-
-.EXAMPLE
- PS C:\> .\src\SubscriberUsageAggregate.Tests.ps1
- Describing SubscriberUsageAggregates
- [+] TestListSubscriberUsageAggregates 81ms
- [+] TestGetSubscriberUsageAggregate 73ms
- [+] TestGetAllSubscriberUsageAggregates 66ms
-
-.NOTES
- Author: Jeffrey Robinson
- Copyright: Microsoft
- Date: August 24, 2017
-#>
-param(
- [bool]$RunRaw = $false
-)
-
-$global:RunRaw = $RunRaw
-
-. $PSScriptRoot\CommonModules.ps1
-
-$global:TestName = ""
-
-InModuleScope Azs.Update.Admin {
-
- Describe "SubscriberUsageAggregates" -Tags @('SubscriberUsageAggregate', 'Azs.Update.Admin') {
-
- BeforeEach {
-
- . $PSScriptRoot\Common.ps1
-
- function ValidateSubscriberUsageAggregate {
- param(
- [Parameter(Mandatory=$true)]
- $SubscriberUsageAggregate
- )
-
- $SubscriberUsageAggregate | Should Not Be $null
-
- # Resource
- $SubscriberUsageAggregate.Id | Should Not Be $null
- $SubscriberUsageAggregate.Name | Should Not Be $null
- $SubscriberUsageAggregate.Type | Should Not Be $null
-
- # Subscriber Usage Aggregate
- $SubscriberUsageAggregate.InstanceData | Should Not Be $null
- $SubscriberUsageAggregate.MeterId | Should Not Be $null
- $SubscriberUsageAggregate.Quantity | Should Not Be $null
- $SubscriberUsageAggregate.SubscriptionId | Should Not Be $null
- $SubscriberUsageAggregate.UsageEndTime | Should Not Be $null
- $SubscriberUsageAggregate.UsageStartTime | Should Not Be $null
-
- }
-
- function Floor-DateTime {
- param(
- [System.DateTime]$DateTime
- )
-
- $ts = [System.TimeSpan]::FromDays(1)
- $dto = New-Object -TypeName System.DateTimeOffset -ArgumentList $DateTime
- $diff = $dto.UtcTicks - ($dto.UtcTicks % $ts.Ticks)
- $tmp = New-Object -TypeName System.DateTime -ArgumentList $diff
- $tmp.DateTime
- }
- }
-
-
- It "TestListSubscriberUsageAggregatesFromLastTwoDays" {
- $global:TestName = 'TestListSubscriberUsageAggregatesFromLastTwoDays'
-
-
- [DateTime]$start = "2017-09-06T00:00:00Z"
- [DateTime]$end = "2017-09-07T00:00:00Z"
-
- $usageAggregates = Get-AzsSubscriberUsageAggregate -ReportedStartTime $start -ReportedEndTime $end
- $usageAggregates | Should Not Be $null
- foreach($usageAggregate in $usageAggregates) {
- ValidateSubscriberUsageAggregate -SubscriberUsageAggregate $usageAggregate
- }
- }
-
-
- }
-}
diff --git a/src/StackAdmin/Azs.Update.Admin/Update.sln b/src/StackAdmin/Azs.Update.Admin/Update.sln
index 35026138a948..b04c5cbaede7 100644
--- a/src/StackAdmin/Azs.Update.Admin/Update.sln
+++ b/src/StackAdmin/Azs.Update.Admin/Update.sln
@@ -3,9 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26430.13
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azs.Update.Admin", "Module\Azs.Update.Admin.csproj", "{B092AFF8-1BEE-4F42-880C-ADD69CADB77D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azs.Update.Admin", "Module\Azs.Update.Admin.csproj", "{0149CEE0-EE2D-4BA2-90E0-CAEE2DB24F9A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azs.Update.Admin.Tests", "Tests\Azs.Update.Admin.Tests.csproj", "{06B6D2CF-7B0B-40BC-857B-E89001B5FABB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azs.Update.Admin.Tests", "Tests\Azs.Update.Admin.Tests.csproj", "{E3F4FE4B-108C-4369-8237-0EDBD9DDA369}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Files", "Solution Files", "{060D6F31-AF9F-459B-A01B-F7B18726A72D}"
ProjectSection(SolutionItems) = preProject
@@ -18,16 +18,19 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {B092AFF8-1BEE-4F42-880C-ADD69CADB77D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B092AFF8-1BEE-4F42-880C-ADD69CADB77D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B092AFF8-1BEE-4F42-880C-ADD69CADB77D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B092AFF8-1BEE-4F42-880C-ADD69CADB77D}.Release|Any CPU.Build.0 = Release|Any CPU
- {06B6D2CF-7B0B-40BC-857B-E89001B5FABB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {06B6D2CF-7B0B-40BC-857B-E89001B5FABB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {06B6D2CF-7B0B-40BC-857B-E89001B5FABB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {06B6D2CF-7B0B-40BC-857B-E89001B5FABB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0149CEE0-EE2D-4BA2-90E0-CAEE2DB24F9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0149CEE0-EE2D-4BA2-90E0-CAEE2DB24F9A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0149CEE0-EE2D-4BA2-90E0-CAEE2DB24F9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0149CEE0-EE2D-4BA2-90E0-CAEE2DB24F9A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E3F4FE4B-108C-4369-8237-0EDBD9DDA369}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E3F4FE4B-108C-4369-8237-0EDBD9DDA369}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E3F4FE4B-108C-4369-8237-0EDBD9DDA369}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E3F4FE4B-108C-4369-8237-0EDBD9DDA369}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {4558B3E1-2A78-42BB-A5AF-73B58ED6DBF6}
+ EndGlobalSection
EndGlobal