Skip to content

Commit

Permalink
Merge branch 'master' into fix/duplicate-parameter-names
Browse files Browse the repository at this point in the history
  • Loading branch information
matthchr authored Jun 24, 2021
2 parents 0d08954 + 3d5e5a3 commit 3a9e234
Show file tree
Hide file tree
Showing 48 changed files with 4,486 additions and 1,890 deletions.
2 changes: 1 addition & 1 deletion Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ tasks:
deps: [controller:generate-crds, cleanup-azure-resources]
cmds:
# -race fails at the moment in controller-runtime
- RECORD_REPLAY=0 go test -timeout {{.LIVE_TEST_TIMEOUT}} -covermode atomic -coverprofile=coverage-integration-envtest-live.out -coverpkg="./..." -v -run '{{default ".*" .TEST_FILTER}}' ./...
- RECORD_REPLAY=0 go test -timeout {{.LIVE_TEST_TIMEOUT}} -covermode atomic -coverprofile=coverage-integration-envtest-live.out -coverpkg="./..." -run '{{default ".*" .TEST_FILTER}}' ./...

controller:generate-types:
desc: Run {{.GENERATOR_APP}} to generate input files for controller-gen for {{.CONTROLLER_APP}}.
Expand Down
1,331 changes: 654 additions & 677 deletions hack/generated/controllers/recordings/Test_CosmosDB_CRUD.yaml

Large diffs are not rendered by default.

485 changes: 282 additions & 203 deletions hack/generated/controllers/recordings/Test_Disk_CRUD.yaml

Large diffs are not rendered by default.

853 changes: 730 additions & 123 deletions hack/generated/controllers/recordings/Test_LoadBalancer_CRUD.yaml

Large diffs are not rendered by default.

484 changes: 283 additions & 201 deletions hack/generated/controllers/recordings/Test_PublicIP_CRUD.yaml

Large diffs are not rendered by default.

62 changes: 31 additions & 31 deletions hack/generated/controllers/recordings/Test_ResourceGroup_CRUD.yaml

Large diffs are not rendered by default.

800 changes: 687 additions & 113 deletions hack/generated/controllers/recordings/Test_ServiceBus_Basic_CRUD.yaml

Large diffs are not rendered by default.

674 changes: 393 additions & 281 deletions hack/generated/controllers/recordings/Test_ServiceBus_Standard_CRUD.yaml

Large diffs are not rendered by default.

412 changes: 328 additions & 84 deletions hack/generated/controllers/recordings/Test_StorageAccount_CRUD.yaml

Large diffs are not rendered by default.

723 changes: 683 additions & 40 deletions hack/generated/controllers/recordings/Test_VirtualNetwork_CRUD.yaml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
version: 1
interactions:
- request:
body: '{"name":"asotest-deployment-cbdeue","location":"westus","Properties":{"Error":null,"debugSetting":{"detailLevel":"requestContent,responseContent"},"mode":"Incremental","template":{"$schema":"https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#","contentVersion":"1.0.0.0","resources":[{"apiVersion":"2020-06-01","name":"asotest-rg-neasns","location":"westus","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"type":"Microsoft.Resources/resourceGroups"}]}}}'
body: '{"name":"asotest-deployment-cbdeue","location":"westus2","Properties":{"Error":null,"debugSetting":{"detailLevel":"requestContent,responseContent"},"mode":"Incremental","template":{"$schema":"https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#","contentVersion":"1.0.0.0","resources":[{"apiVersion":"2020-06-01","name":"asotest-rg-neasns","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"type":"Microsoft.Resources/resourceGroups"}]}}}'
form: {}
headers:
Content-Type:
Expand All @@ -12,15 +12,15 @@ interactions:
url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Resources/deployments/asotest-deployment-cbdeue?api-version=2019-10-01
method: PUT
response:
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Resources/deployments/asotest-deployment-cbdeue","name":"asotest-deployment-cbdeue","type":"Microsoft.Resources/deployments","location":"westus","properties":{"templateHash":"9393614785102673689","mode":"Incremental","debugSetting":{"detailLevel":"RequestContent,
ResponseContent"},"provisioningState":"Accepted","timestamp":"2001-02-03T04:05:06Z","duration":"PT3.5399473S","correlationId":"594c6efc-1611-4f50-8055-e14e8f3015d0","providers":[{"namespace":"Microsoft.Resources","resourceTypes":[{"resourceType":"resourceGroups","locations":["westus"]}]}],"dependencies":[]}}'
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Resources/deployments/asotest-deployment-cbdeue","name":"asotest-deployment-cbdeue","type":"Microsoft.Resources/deployments","location":"westus2","properties":{"templateHash":"11359521659481238682","mode":"Incremental","debugSetting":{"detailLevel":"RequestContent,
ResponseContent"},"provisioningState":"Accepted","timestamp":"2001-02-03T04:05:06Z","duration":"PT0.7380745S","correlationId":"ca31d472-e01d-42c1-ad63-1daafa0ce094","providers":[{"namespace":"Microsoft.Resources","resourceTypes":[{"resourceType":"resourceGroups","locations":["westus2"]}]}],"dependencies":[]}}'
headers:
Azure-Asyncoperation:
- https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Resources/deployments/asotest-deployment-cbdeue/operationStatuses/08585795366330570053?api-version=2019-10-01
- https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Resources/deployments/asotest-deployment-cbdeue/operationStatuses/08585771259225949431?api-version=2019-10-01
Cache-Control:
- no-cache
Content-Length:
- "660"
- "663"
Content-Type:
- application/json; charset=utf-8
Expires:
Expand All @@ -45,8 +45,8 @@ interactions:
url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Resources/deployments/asotest-deployment-cbdeue?api-version=2019-10-01
method: GET
response:
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Resources/deployments/asotest-deployment-cbdeue","name":"asotest-deployment-cbdeue","type":"Microsoft.Resources/deployments","location":"westus","properties":{"templateHash":"9393614785102673689","mode":"Incremental","debugSetting":{"detailLevel":"RequestContent,
ResponseContent"},"provisioningState":"Running","timestamp":"2001-02-03T04:05:06Z","duration":"PT4.6506378S","correlationId":"594c6efc-1611-4f50-8055-e14e8f3015d0","providers":[{"namespace":"Microsoft.Resources","resourceTypes":[{"resourceType":"resourceGroups","locations":["westus"]}]}],"dependencies":[]}}'
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Resources/deployments/asotest-deployment-cbdeue","name":"asotest-deployment-cbdeue","type":"Microsoft.Resources/deployments","location":"westus2","properties":{"templateHash":"11359521659481238682","mode":"Incremental","debugSetting":{"detailLevel":"RequestContent,
ResponseContent"},"provisioningState":"Accepted","timestamp":"2001-02-03T04:05:06Z","duration":"PT0.7380745S","correlationId":"ca31d472-e01d-42c1-ad63-1daafa0ce094","providers":[{"namespace":"Microsoft.Resources","resourceTypes":[{"resourceType":"resourceGroups","locations":["westus2"]}]}],"dependencies":[]}}'
headers:
Cache-Control:
- no-cache
Expand Down Expand Up @@ -78,8 +78,8 @@ interactions:
url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Resources/deployments/asotest-deployment-cbdeue?api-version=2019-10-01
method: GET
response:
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Resources/deployments/asotest-deployment-cbdeue","name":"asotest-deployment-cbdeue","type":"Microsoft.Resources/deployments","location":"westus","properties":{"templateHash":"9393614785102673689","mode":"Incremental","debugSetting":{"detailLevel":"RequestContent,
ResponseContent"},"provisioningState":"Succeeded","timestamp":"2001-02-03T04:05:06Z","duration":"PT8.5297733S","correlationId":"594c6efc-1611-4f50-8055-e14e8f3015d0","providers":[{"namespace":"Microsoft.Resources","resourceTypes":[{"resourceType":"resourceGroups","locations":["westus"]}]}],"dependencies":[],"outputResources":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns"}]}}'
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Resources/deployments/asotest-deployment-cbdeue","name":"asotest-deployment-cbdeue","type":"Microsoft.Resources/deployments","location":"westus2","properties":{"templateHash":"11359521659481238682","mode":"Incremental","debugSetting":{"detailLevel":"RequestContent,
ResponseContent"},"provisioningState":"Succeeded","timestamp":"2001-02-03T04:05:06Z","duration":"PT1.9637145S","correlationId":"ca31d472-e01d-42c1-ad63-1daafa0ce094","providers":[{"namespace":"Microsoft.Resources","resourceTypes":[{"resourceType":"resourceGroups","locations":["westus2"]}]}],"dependencies":[],"outputResources":[{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns"}]}}'
headers:
Cache-Control:
- no-cache
Expand All @@ -106,7 +106,7 @@ interactions:
- application/json
Test-Request-Attempt:
- "0"
url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns?api-version=2020-06-01
url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Resources/deployments/asotest-deployment-cbdeue?api-version=2019-10-01
method: DELETE
response:
body: ""
Expand All @@ -118,7 +118,7 @@ interactions:
Expires:
- "-1"
Location:
- https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRORUFTTlMtV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2020-06-01
- https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IkRlcGxveW1lbnREZWxldGlvbkpvYi1HTlMtLUFTT1RFU1Q6MkRERVBMT1lNRU5UOjJEQ0JERVVFLSIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2019-10-01
Pragma:
- no-cache
Retry-After:
Expand All @@ -132,6 +132,40 @@ interactions:
status: 202 Accepted
code: 202
duration: ""
- request:
body: ""
form: {}
headers:
Content-Type:
- application/json
Test-Request-Attempt:
- "0"
url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns?api-version=2020-06-01
method: DELETE
response:
body: ""
headers:
Cache-Control:
- no-cache
Content-Length:
- "0"
Expires:
- "-1"
Location:
- https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRORUFTTlMtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01
Pragma:
- no-cache
Retry-After:
- "15"
Strict-Transport-Security:
- max-age=31536000; includeSubDomains
X-Content-Type-Options:
- nosniff
X-Ms-Ratelimit-Remaining-Subscription-Deletes:
- "14998"
status: 202 Accepted
code: 202
duration: ""
- request:
body: ""
form: {}
Expand All @@ -143,7 +177,7 @@ interactions:
url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns?api-version=2020-06-01
method: GET
response:
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
headers:
Cache-Control:
- no-cache
Expand Down Expand Up @@ -173,7 +207,7 @@ interactions:
url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns?api-version=2020-06-01
method: GET
response:
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
headers:
Cache-Control:
- no-cache
Expand Down Expand Up @@ -203,7 +237,7 @@ interactions:
url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns?api-version=2020-06-01
method: GET
response:
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
headers:
Cache-Control:
- no-cache
Expand Down Expand Up @@ -233,7 +267,7 @@ interactions:
url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns?api-version=2020-06-01
method: GET
response:
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
headers:
Cache-Control:
- no-cache
Expand Down Expand Up @@ -263,7 +297,7 @@ interactions:
url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns?api-version=2020-06-01
method: GET
response:
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
headers:
Cache-Control:
- no-cache
Expand Down Expand Up @@ -293,7 +327,7 @@ interactions:
url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns?api-version=2020-06-01
method: GET
response:
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
headers:
Cache-Control:
- no-cache
Expand Down Expand Up @@ -323,7 +357,7 @@ interactions:
url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns?api-version=2020-06-01
method: GET
response:
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-neasns","name":"asotest-rg-neasns","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Deleting"}}'
headers:
Cache-Control:
- no-cache
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
version: 1
interactions:
- request:
body: '{"name":"asotest-deployment-mzojax","location":"westus","Properties":{"Error":null,"debugSetting":{"detailLevel":"requestContent,responseContent"},"mode":"Incremental","template":{"$schema":"https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#","contentVersion":"1.0.0.0","resources":[{"apiVersion":"2020-06-01","name":"asotest-rg-kheqhf","location":"BadLocation","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"type":"Microsoft.Resources/resourceGroups"}]}}}'
body: '{"name":"asotest-deployment-mzojax","location":"westus2","Properties":{"Error":null,"debugSetting":{"detailLevel":"requestContent,responseContent"},"mode":"Incremental","template":{"$schema":"https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#","contentVersion":"1.0.0.0","resources":[{"apiVersion":"2020-06-01","name":"asotest-rg-kheqhf","location":"BadLocation","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"type":"Microsoft.Resources/resourceGroups"}]}}}'
form: {}
headers:
Content-Type:
Expand All @@ -14,12 +14,12 @@ interactions:
response:
body: '{"error":{"code":"LocationNotAvailableForResourceGroup","message":"The
provided location ''BadLocation'' is not available for resource group. List
of available regions is ''centralus,eastasia,southeastasia,eastus,eastus2,westus,westus2,northcentralus,southcentralus,westcentralus,northeurope,westeurope,japaneast,japanwest,brazilsouth,australiasoutheast,australiaeast,westindia,southindia,centralindia,canadacentral,canadaeast,uksouth,ukwest,koreacentral,koreasouth,francecentral,southafricanorth,uaenorth,australiacentral,switzerlandnorth,germanywestcentral,norwayeast,jioindiawest''."}}'
of available regions is ''centralus,eastasia,southeastasia,eastus,eastus2,westus,westus2,northcentralus,southcentralus,westcentralus,northeurope,westeurope,japaneast,japanwest,brazilsouth,australiasoutheast,australiaeast,westindia,southindia,centralindia,canadacentral,canadaeast,uksouth,ukwest,koreacentral,koreasouth,francecentral,southafricanorth,uaenorth,australiacentral,switzerlandnorth,germanywestcentral,norwayeast,jioindiawest,westus3''."}}'
headers:
Cache-Control:
- no-cache
Content-Length:
- "584"
- "592"
Content-Type:
- application/json; charset=utf-8
Expires:
Expand Down
4 changes: 4 additions & 0 deletions hack/generated/pkg/armclient/template_client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ func Test_NewResourceGroupDeployment(t *testing.T) {

log.Printf("Created resource: %s\n", id)

// Delete the deployment
_, err = testContext.AzureClient.DeleteDeployment(ctx, deployment.ID)
g.Expect(err).ToNot(HaveOccurred())

// Delete the RG
_, err = testContext.AzureClient.BeginDeleteResource(ctx, id, typedResourceGroupSpec.APIVersion, nil)
g.Expect(err).ToNot(HaveOccurred())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,20 +76,20 @@ func (w errorTranslation) RoundTrip(req *http.Request) (*http.Response, error) {
matchingBodies := w.findMatchingBodies(req)

if len(matchingBodies) == 0 {
w.t.Logf("\n*** Cannot find go-vcr recording for request (no responses recorded for this method/URL): %s %s (attempt: %s)\n\n", req.Method, req.URL.String(), req.Header.Get(COUNT_HEADER))
w.t.Fatalf("\n*** Cannot find go-vcr recording for request (no responses recorded for this method/URL): %s %s (attempt: %s)\n\n", req.Method, req.URL.String(), req.Header.Get(COUNT_HEADER))
return nil, originalErr
}

// locate the request body with the shortest diff from the sent body
shortestDiff := ""
for i, bodyString := range matchingBodies {
diff := cmp.Diff(sentBodyString, bodyString)
diff := cmp.Diff(bodyString, sentBodyString)
if i == 0 || len(diff) < len(shortestDiff) {
shortestDiff = diff
}
}

w.t.Logf("\n*** Cannot find go-vcr recording for request (body mismatch): %s %s\nShortest body diff: %s\n\n", req.Method, req.URL.String(), shortestDiff)
w.t.Fatalf("\n*** Cannot find go-vcr recording for request (body mismatch): %s %s\nShortest body diff: %s\n\n", req.Method, req.URL.String(), shortestDiff)
return nil, originalErr
}

Expand Down
Loading

0 comments on commit 3a9e234

Please sign in to comment.