From 0835b99bbda2c518460f14e31021ce2277df89fe Mon Sep 17 00:00:00 2001 From: Mike Giesler Date: Thu, 15 Mar 2018 12:32:03 -0700 Subject: [PATCH 1/2] Update admin - add powershell tests --- .../Tests/Azs.Update.Admin.Tests.csproj | 6 + .../UpdateAdminClient/TestGetUpdate.json | 200 +++++++++++++ .../TestGetUpdateLocation.json | 136 +++++++++ .../UpdateAdminClient/TestGetUpdateRun.json | 264 ++++++++++++++++++ .../TestListUpdateLocations.json | 72 +++++ .../UpdateAdminClient/TestListUpdateRuns.json | 200 +++++++++++++ .../UpdateAdminClient/TestListUpdates.json | 136 +++++++++ .../Tests/src/CommonModules.ps1 | 4 +- .../Tests/src/UpdateAdmin.Tests.ps1 | 239 ++++++++++++++++ .../Tests/src/UsageAggregate.Tests.ps1 | 109 -------- src/StackAdmin/Azs.Update.Admin/Update.sln | 23 +- 11 files changed, 1269 insertions(+), 120 deletions(-) create mode 100644 src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestGetUpdate.json create mode 100644 src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestGetUpdateLocation.json create mode 100644 src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestGetUpdateRun.json create mode 100644 src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestListUpdateLocations.json create mode 100644 src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestListUpdateRuns.json create mode 100644 src/StackAdmin/Azs.Update.Admin/Tests/SessionRecords/UpdateAdminClient/TestListUpdates.json create mode 100644 src/StackAdmin/Azs.Update.Admin/Tests/src/UpdateAdmin.Tests.ps1 delete mode 100644 src/StackAdmin/Azs.Update.Admin/Tests/src/UsageAggregate.Tests.ps1 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 From aa7941ce9938058dd419aaab889800a0f7c85ab1 Mon Sep 17 00:00:00 2001 From: Mike Giesler Date: Thu, 15 Mar 2018 13:34:31 -0700 Subject: [PATCH 2/2] 2203530 - [ Get-AzsDirectoryTenant] Provide default value for the ResourceGroupName --- .../SwaggerPathCommands/Get-AzsDirectoryTenant.ps1 | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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 = @{