alan-turing-institute / data-safe-haven

https://data-safe-haven.readthedocs.io
BSD 3-Clause "New" or "Revised" License
61 stars 15 forks source link

Fix deployment logging output #1952

Closed jemrobinson closed 4 months ago

jemrobinson commented 4 months ago

:white_check_mark: Checklist

:strawberry: Suggested change

Since the recent logging changes in #1936, the output from Pulumi is (a) extremely verbose and (b) full of unescaped ANSI codes. This should be fixed.

<details

Abridged log output
Refreshing stack shm-green.
Previewing changes for stack shm-green.
[38;5;13m[1mPreviewing update (shm-green):[0m
[0mdebug: [0m[0mregistering resource: ty=pulumi:pulumi:Stack, name=data-safe-haven-shm-green, custom=False, remote=False[0m
[0mdebug: [0m[0mregistering resource: ty=dsh:shm:NetworkingComponent, name=shm_networking, custom=False, remote=False[0m
[0mdebug: [0m[0mregistering resource: ty=azure-native:resources:ResourceGroup, name=shm_networking_resource_group, custom=True, remote=False[0m
[0mdebug: [0m[0mregistering resource: ty=azure-native:network:Zone, name=shm_networking_dns_zone, custom=True, remote=False[0m
[0mdebug: [0m[0mregistering resource: ty=azure-native:network:RecordSet, name=shm_networking_caa_record, custom=True, remote=False[0m
[0mdebug: [0m[0mregistering resource: ty=azure-native:network:RecordSet, name=shm_networking_domain_verification_record, custom=True, remote=False[0m
[0mdebug: [0m[0mWaiting for outstanding RPCs to complete[0m
[0mdebug: [0m[0mRPCs successfully completed[0m
[0mdebug: [0m[0mbeginning rpc register resource[0m
[0mdebug: [0m[0mbeginning rpc register resource[0m
[0mdebug: [0m[0mbeginning rpc register resource[0m
[0mdebug: [0m[0mbeginning rpc register resource[0m
[0mdebug: [0m[0mbeginning rpc register resource[0m
[0mdebug: [0m[0mbeginning rpc register resource[0m
[0mdebug: [0m[0mbeginning rpc register resource outputs[0m
[0mdebug: [0m[0mwaiting for quiescence; 289 outputs outstanding[0m
[0mdebug: [0m[0mresource registration prepared: ty=pulumi:pulumi:Stack, name=data-safe-haven-shm-green[0m
[0mdebug: [0m[0mwaiting for quiescence; 216 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 210 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 208 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 208 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 166 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 418 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 332 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 332 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
[0m  pulumi:pulumi:Stack: (same)
[0m
[0m[0m[0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
[0mdebug: [0m[0mresource registration successful: ty=pulumi:pulumi:Stack, urn=urn:pulumi:shm-green::data-safe-haven::pulumi:pulumi:Stack::data-safe-haven-shm-green[0m
[0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
[0mdebug: [0m[0mresource registration prepared: ty=dsh:shm:NetworkingComponent, name=shm_networking[0m
[0mdebug: [0m[0mwaiting for quiescence; 337 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 335 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 332 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 332 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 332 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
[0mdebug: [0m[0mresource registration successful: ty=dsh:shm:NetworkingComponent, urn=urn:pulumi:shm-green::data-safe-haven::dsh:shm:NetworkingComponent::shm_networking[0m
[0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 329 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 301 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 301 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 302 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 301 outputs outstanding[0m
...
<snip several 1000 lines>
...
[0mI0620 14:02:52.292040   33837 rpc.go:292] Unmarshaling property for RPC: version={5.0.0}
[0m
[0mI0620 14:02:52.292044   33837 rpc.go:292] Unmarshaling property for RPC: tags={map}
[0m
[0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
[0mdebug: [0m[0mresource registration successful: ty=azure-native:resources:ResourceGroup, urn=urn:pulumi:shm-green::data-safe-haven::dsh:shm:NetworkingComponent$azure-native:resources:ResourceGroup::shm_networking_resource_group[0m
[0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 152 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 153 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
[0mdebug: [0m[0mresource registration prepared: ty=azure-native:network:Zone, name=shm_networking_dns_zone[0m
[0mdebug: [0m[0mwaiting for quiescence; 157 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 155 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 153 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 153 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 153 outputs outstanding[0m
[0mdebug: [0m[0mwaiting for quiescence; 153 outputs outstanding[0m
...
<snip several 1000 lines>
...
 [1m[0m  [0m pulumi:pulumi:Stack data-safe-haven-shm-green running [0mdebug: [0m[0mwaiting for quiescence; 2 RPCs outstanding[0m
 [1m[0m  [0m pulumi:pulumi:Stack data-safe-haven-shm-green running [0mdebug: [0m[0mwaiting for quiescence; 1 RPCs outstanding[0m
 [1m[0m  [0m pulumi:pulumi:Stack data-safe-haven-shm-green running [0mdebug: [0m[0mRPCs successfully completed[0m
 [1m[0m  [0m pulumi:pulumi:Stack data-safe-haven-shm-green running [0mdebug: [0m[0mAll outstanding outputs completed.[0m
 [1m[0m  [0m pulumi:pulumi:Stack data-safe-haven-shm-green running [0mdebug: [0m[0mrun_pulumi_func completed[0m
 [1m[0m  [0m pulumi:pulumi:Stack data-safe-haven-shm-green running [0mdebug: [0m[0mCancelling 0 tasks.[0m
 [0m  [0m dsh:shm:NetworkingComponent shm_networking [0m[0m
 [0m  [0m pulumi:pulumi:Stack data-safe-haven-shm-green [0m[0m 251 [38;5;5mmessages[0m; 3493 [0mdebugs[0m
[38;5;13m[1mDiagnostics:[0m
  [38;5;12mpulumi:pulumi:Stack (data-safe-haven-shm-green):[0m
    [0mdebug: [0m[0mregistering resource: ty=pulumi:pulumi:Stack, name=data-safe-haven-shm-green, custom=False, remote=False[0m
    [0mdebug: [0m[0mregistering resource: ty=dsh:shm:NetworkingComponent, name=shm_networking, custom=False, remote=False[0m
    [0mdebug: [0m[0mregistering resource: ty=azure-native:resources:ResourceGroup, name=shm_networking_resource_group, custom=True, remote=False[0m
    [0mdebug: [0m[0mregistering resource: ty=azure-native:network:Zone, name=shm_networking_dns_zone, custom=True, remote=False[0m
    [0mdebug: [0m[0mregistering resource: ty=azure-native:network:RecordSet, name=shm_networking_caa_record, custom=True, remote=False[0m
    [0mdebug: [0m[0mregistering resource: ty=azure-native:network:RecordSet, name=shm_networking_domain_verification_record, custom=True, remote=False[0m
    [0mdebug: [0m[0mWaiting for outstanding RPCs to complete[0m
    [0mdebug: [0m[0mRPCs successfully completed[0m
    [0mdebug: [0m[0mbeginning rpc register resource[0m
    [0mdebug: [0m[0mbeginning rpc register resource[0m
    [0mdebug: [0m[0mbeginning rpc register resource[0m
    [0mdebug: [0m[0mbeginning rpc register resource[0m
    [0mdebug: [0m[0mbeginning rpc register resource[0m
    [0mdebug: [0m[0mbeginning rpc register resource[0m
    [0mdebug: [0m[0mbeginning rpc register resource outputs[0m
    [0mdebug: [0m[0mwaiting for quiescence; 289 outputs outstanding[0m
    [0mdebug: [0m[0mresource registration prepared: ty=pulumi:pulumi:Stack, name=data-safe-haven-shm-green[0m
    [0mdebug: [0m[0mwaiting for quiescence; 216 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 210 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 208 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 208 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 166 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 418 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 332 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 332 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
    [0mdebug: [0m[0mresource registration successful: ty=pulumi:pulumi:Stack, urn=urn:pulumi:shm-green::data-safe-haven::pulumi:pulumi:Stack::data-safe-haven-shm-green[0m
    [0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
    [0mdebug: [0m[0mresource registration prepared: ty=dsh:shm:NetworkingComponent, name=shm_networking[0m
    [0mdebug: [0m[0mwaiting for quiescence; 337 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 335 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 333 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 332 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 332 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 332 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 331 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
    [0mdebug: [0m[0mresource registration successful: ty=dsh:shm:NetworkingComponent, urn=urn:pulumi:shm-green::data-safe-haven::dsh:shm:NetworkingComponent::shm_networking[0m
    [0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 329 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 301 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 330 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 301 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 302 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 301 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 302 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 273 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 274 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 273 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 246 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 245 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 218 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 217 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 218 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 217 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 190 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 189 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 190 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 189 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 162 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 162 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 162 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 162 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 162 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 162 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 162 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 162 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 162 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 162 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 162 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0mresource registration prepared: ty=azure-native:resources:ResourceGroup, name=shm_networking_resource_group[0m
    [0mdebug: [0m[0mwaiting for quiescence; 168 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 166 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 164 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 164 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 164 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 164 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 163 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 163 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 163 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 162 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 162 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    ...
    <snip 950 lines>
    ...
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0m2024/06/20 14:03:02 Testing if Service Principal / Client Certificate is applicable for Authentication..[0m
    [0mdebug: [0m[0m2024/06/20 14:03:02 Testing if Multi Tenant Service Principal / Client Secret is applicable for Authentication..[0m
    [0mdebug: [0m[0m2024/06/20 14:03:02 Testing if Service Principal / Client Secret is applicable for Authentication..[0m
    [0mdebug: [0m[0m2024/06/20 14:03:02 Testing if OIDC is applicable for Authentication..[0m
    [0mdebug: [0m[0m2024/06/20 14:03:02 Testing if Managed Service Identity is applicable for Authentication..[0m
    [0mdebug: [0m[0m2024/06/20 14:03:02 Testing if Obtaining a Multi-tenant token from the Azure CLI is applicable for Authentication..[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0m2024/06/20 14:03:02 Testing if Obtaining a token from the Azure CLI is applicable for Authentication..[0m
    [0mdebug: [0m[0m2024/06/20 14:03:02 Using Obtaining a token from the Azure CLI for Authentication[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    ...
    <snip 1452 lines>
    ...
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0m2024/06/20 14:03:03 Getting OAuth config for endpoint https://login.microsoftonline.com/ with  tenant 4395f4a7-e455-4f95-8a9f-1fbaef6384f9[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    ...
    <snip 864 lines>
    ...
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0mresource registration successful: ty=azure-native:resources:ResourceGroup, urn=urn:pulumi:shm-green::data-safe-haven::dsh:shm:NetworkingComponent$azure-native:resources:ResourceGroup::shm_networking_resource_group[0m
    [0mdebug: [0m[0mwaiting for quiescence; 161 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 152 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 153 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mresource registration prepared: ty=azure-native:network:Zone, name=shm_networking_dns_zone[0m
    [0mdebug: [0m[0mwaiting for quiescence; 157 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 155 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 153 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 153 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 153 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 153 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 152 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 152 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 152 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 151 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mresource registration successful: ty=azure-native:network:Zone, urn=urn:pulumi:shm-green::data-safe-haven::dsh:shm:NetworkingComponent$azure-native:network:Zone::shm_networking_dns_zone[0m
    [0mdebug: [0m[0mwaiting for quiescence; 150 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 134 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 134 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 118 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 132 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 118 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 118 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 118 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 118 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 104 outputs outstanding[0m
    [0mdebug: [0m[0mregister resource outputs prepared: urn=urn:pulumi:shm-green::data-safe-haven::pulumi:pulumi:Stack::data-safe-haven-shm-green, props=fields {
      key: "networking"
      value {
        struct_value {
          fields {
            key: "resource_group_name"
            value {
              string_value: "shm-green-rg-networking"
            }
          }
          fields {
            key: "fqdn"
            value {
              string_value: "green.develop.turingsafehaven.ac.uk"
            }
          }
          fields {
            key: "fqdn_nameservers"
            value {
              list_value {
                values {
                  string_value: "ns1-37.azure-dns.com."
                }
                values {
                  string_value: "ns2-37.azure-dns.net."
                }
                values {
                  string_value: "ns3-37.azure-dns.org."
                }
                values {
                  string_value: "ns4-37.azure-dns.info."
                }
              }
            }
          }
        }
      }
    }
    [0mdebug: [0m[0mwaiting for quiescence; 106 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 104 outputs outstanding[0m
    [0mdebug: [0m[0mresource registration successful: urn=urn:pulumi:shm-green::data-safe-haven::pulumi:pulumi:Stack::data-safe-haven-shm-green, props=fields {
      key: "networking"
      value {
        struct_value {
          fields {
            key: "resource_group_name"
            value {
              string_value: "shm-green-rg-networking"
            }
          }
          fields {
            key: "fqdn"
            value {
              string_value: "green.develop.turingsafehaven.ac.uk"
            }
          }
          fields {
            key: "fqdn_nameservers"
            value {
              list_value {
                values {
                  string_value: "ns1-37.azure-dns.com."
                }
                values {
                  string_value: "ns2-37.azure-dns.net."
                }
                values {
                  string_value: "ns3-37.azure-dns.org."
                }
                values {
                  string_value: "ns4-37.azure-dns.info."
                }
              }
            }
          }
        }
      }
    }
    [0mdebug: [0m[0mwaiting for quiescence; 92 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 90 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 78 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 76 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 78 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 76 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 64 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 62 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 64 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 62 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 50 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 48 outputs outstanding[0m
    [0mdebug: [0m[0mresource registration prepared: ty=azure-native:network:RecordSet, name=shm_networking_caa_record[0m
    [0mdebug: [0m[0mresource registration prepared: ty=azure-native:network:RecordSet, name=shm_networking_domain_verification_record[0m
    [0mdebug: [0m[0mwaiting for quiescence; 62 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 58 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 54 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 54 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 54 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 54 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 52 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 52 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 52 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 50 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 50 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 48 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 48 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 48 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 48 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 48 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 48 outputs outstanding[0m
    [0mdebug: [0m[0mresource registration successful: ty=azure-native:network:RecordSet,
urn=urn:pulumi:shm-green::data-safe-haven::dsh:shm:NetworkingComponent$azure-native:network:Zone$azure-native:network:RecordSet::shm_networking_caa_record[0m
    [0mdebug: [0m[0mwaiting for quiescence; 48 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 24 outputs outstanding[0m
    [0mdebug: [0m[0mresource registration successful: ty=azure-native:network:RecordSet,
urn=urn:pulumi:shm-green::data-safe-haven::dsh:shm:NetworkingComponent$azure-native:network:Zone$azure-native:network:RecordSet::shm_networking_domain_verification_record[0m
    [0mdebug: [0m[0mwaiting for quiescence; 24 outputs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 0 outputs outstanding[0m
    [0mdebug: [0m[0mAll outstanding outputs completed.[0m
    [0mdebug: [0m[0mwaiting for quiescence; 7 RPCs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 6 RPCs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 5 RPCs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 4 RPCs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 3 RPCs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 2 RPCs outstanding[0m
    [0mdebug: [0m[0mwaiting for quiescence; 1 RPCs outstanding[0m
    [0mdebug: [0m[0mRPCs successfully completed[0m
    [0mdebug: [0m[0mAll outstanding outputs completed.[0m
    [0mdebug: [0m[0mrun_pulumi_func completed[0m
    [0mdebug: [0m[0mCancelling 0 tasks.[0m

    [0mI0620 14:03:01.692940   33942 azure.go:32] AzureNative User Agent: Go/go1.22.2 (arm64-darwin) go-autorest/v14.2.1 pulumi-azure-native/2.39.0 pid-a90539d8-a7a6-5826-95c4-1fbef22d4b22
    [0m[0mI0620 14:03:03.376535   33942 auth.go:244] Getting ADAL token for https://management.azure.com/
    [0m[0mI0620 14:03:04.162361   33942 auth.go:249] Getting ADAL bearer auth callback for https://management.azure.com/
    [0m[0mI0620 14:03:04.162403   33942 auth.go:249] Getting ADAL bearer auth callback for https://management.azure.com/
    [0m[0mI0620 14:03:04.162415   33942 azure.go:32] AzureNative User Agent: Go/go1.22.2 (arm64-darwin) go-autorest/v14.2.1 pulumi-azure-native/2.39.0 pid-a90539d8-a7a6-5826-95c4-1fbef22d4b22
    [0m[0mI0620 14:03:04.163171   33942 provider.go:359] azure-native.Check(urn:pulumi:shm-green::data-safe-haven::dsh:shm:NetworkingComponent$azure-native:resources:ResourceGroup::shm_networking_resource_group) executing
    [0m[0mI0620 14:03:04.163200   33942 rpc.go:292] Unmarshaling property for RPC: location={uksouth}
    [0m[0mI0620 14:03:04.163212   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.163235   33942 rpc.go:292] Unmarshaling property for RPC: deployed by={Python}
    [0m[0mI0620 14:03:04.163238   33942 rpc.go:292] Unmarshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.163240   33942 rpc.go:292] Unmarshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.163262   33942 rpc.go:292] Unmarshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.163278   33942 rpc.go:292] Unmarshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.163281   33942 rpc.go:292] Unmarshaling property for RPC: location={uksouth}
    [0m[0mI0620 14:03:04.163283   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.163285   33942 rpc.go:292] Unmarshaling property for RPC: deployed by={Python}
    [0m[0mI0620 14:03:04.163287   33942 rpc.go:292] Unmarshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.163289   33942 rpc.go:292] Unmarshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.163291   33942 rpc.go:292] Unmarshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.163326   33942 rpc.go:292] Unmarshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.163582   33942 rpc.go:77] Marshaling property for RPC: location={uksouth}
    [0m[0mI0620 14:03:04.163590   33942 rpc.go:77] Marshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.163602   33942 rpc.go:77] Marshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.163609   33942 rpc.go:77] Marshaling property for RPC: deployed by={Python}
    [0m[0mI0620 14:03:04.163613   33942 rpc.go:77] Marshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.163615   33942 rpc.go:77] Marshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.163617   33942 rpc.go:77] Marshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.164274   33942 rpc.go:292] Unmarshaling property for RPC: location={uksouth}
    [0m[0mI0620 14:03:04.164284   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.164287   33942 rpc.go:292] Unmarshaling property for RPC: deployed by={Python}
    [0m[0mI0620 14:03:04.164289   33942 rpc.go:292] Unmarshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.164292   33942 rpc.go:292] Unmarshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.164295   33942 rpc.go:292] Unmarshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.164307   33942 rpc.go:292] Unmarshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.164316   33942 rpc.go:292] Unmarshaling property for RPC: __inputs={map[location:{uksouth} resourceGroupName:{shm-green-rg-networking} tags:{map}]}
    [0m[0mI0620 14:03:04.164320   33942 rpc.go:292] Unmarshaling property for RPC: id={/subscriptions/3f1a8e26-eae2-4539-952a-0a6184ec248a/resourceGroups/shm-green-rg-networking}
    [0m[0mI0620 14:03:04.164322   33942 rpc.go:292] Unmarshaling property for RPC: location={uksouth}
    [0m[0mI0620 14:03:04.164324   33942 rpc.go:292] Unmarshaling property for RPC: name={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.164326   33942 rpc.go:292] Unmarshaling property for RPC: provisioningState={Succeeded}
    [0m[0mI0620 14:03:04.164330   33942 rpc.go:292] Unmarshaling property for RPC: properties={map}
    [0m[0mI0620 14:03:04.164337   33942 rpc.go:292] Unmarshaling property for RPC: deployed by={Python}
    [0m[0mI0620 14:03:04.164342   33942 rpc.go:292] Unmarshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.164344   33942 rpc.go:292] Unmarshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.164345   33942 rpc.go:292] Unmarshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.164350   33942 rpc.go:292] Unmarshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.164353   33942 rpc.go:292] Unmarshaling property for RPC: type={Microsoft.Resources/resourceGroups}
    [0m[0mI0620 14:03:04.164355   33942 rpc.go:292] Unmarshaling property for RPC: location={uksouth}
    [0m[0mI0620 14:03:04.164358   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.164360   33942 rpc.go:292] Unmarshaling property for RPC: deployed by={Python}
    [0m[0mI0620 14:03:04.164362   33942 rpc.go:292] Unmarshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.164364   33942 rpc.go:292] Unmarshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.164366   33942 rpc.go:292] Unmarshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.164387   33942 rpc.go:292] Unmarshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.164395   33942 rpc.go:292] Unmarshaling property for RPC: location={uksouth}
    [0m[0mI0620 14:03:04.164400   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.164403   33942 rpc.go:292] Unmarshaling property for RPC: deployed by={Python}
    [0m[0mI0620 14:03:04.164408   33942 rpc.go:292] Unmarshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.164409   33942 rpc.go:292] Unmarshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.164411   33942 rpc.go:292] Unmarshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.164415   33942 rpc.go:292] Unmarshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.232096   33942 provider.go:359] azure-native.Check(urn:pulumi:shm-green::data-safe-haven::dsh:shm:NetworkingComponent$azure-native:network:Zone::shm_networking_dns_zone) executing
    [0m[0mI0620 14:03:04.232113   33942 rpc.go:292] Unmarshaling property for RPC: location={Global}
    [0m[0mI0620 14:03:04.232125   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.232140   33942 rpc.go:292] Unmarshaling property for RPC: deployed by={Python}
    [0m[0mI0620 14:03:04.232145   33942 rpc.go:292] Unmarshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.232148   33942 rpc.go:292] Unmarshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.232150   33942 rpc.go:292] Unmarshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.232159   33942 rpc.go:292] Unmarshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.232163   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.232165   33942 rpc.go:292] Unmarshaling property for RPC: zoneType={Public}
    [0m[0mI0620 14:03:04.232167   33942 rpc.go:292] Unmarshaling property for RPC: location={Global}
    [0m[0mI0620 14:03:04.232175   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.232178   33942 rpc.go:292] Unmarshaling property for RPC: deployed by={Python}
    [0m[0mI0620 14:03:04.232180   33942 rpc.go:292] Unmarshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.232181   33942 rpc.go:292] Unmarshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.232183   33942 rpc.go:292] Unmarshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.232187   33942 rpc.go:292] Unmarshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.232189   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.232191   33942 rpc.go:292] Unmarshaling property for RPC: zoneType={Public}
    [0m[0mI0620 14:03:04.232226   33942 rpc.go:77] Marshaling property for RPC: location={Global}
    [0m[0mI0620 14:03:04.232282   33942 rpc.go:77] Marshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.232293   33942 rpc.go:77] Marshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.232299   33942 rpc.go:77] Marshaling property for RPC: deployed by={Python}
    [0m[0mI0620 14:03:04.232301   33942 rpc.go:77] Marshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.232303   33942 rpc.go:77] Marshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.232307   33942 rpc.go:77] Marshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.232310   33942 rpc.go:77] Marshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.232311   33942 rpc.go:77] Marshaling property for RPC: zoneType={Public}
    [0m[0mI0620 14:03:04.233184   33942 rpc.go:292] Unmarshaling property for RPC: location={Global}
    [0m[0mI0620 14:03:04.233196   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.233203   33942 rpc.go:292] Unmarshaling property for RPC: deployed by={Python}
    [0m[0mI0620 14:03:04.233205   33942 rpc.go:292] Unmarshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.233207   33942 rpc.go:292] Unmarshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.233222   33942 rpc.go:292] Unmarshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.233238   33942 rpc.go:292] Unmarshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.233240   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.233243   33942 rpc.go:292] Unmarshaling property for RPC: zoneType={Public}
    [0m[0mI0620 14:03:04.233258   33942 rpc.go:292] Unmarshaling property for RPC: __inputs={map[location:{Global} resourceGroupName:{shm-green-rg-networking} tags:{map} zoneName:{green.develop.turingsafehaven.ac.uk} zoneType:{Public}]}
    [0m[0mI0620 14:03:04.233262   33942 rpc.go:292] Unmarshaling property for RPC: etag={0cbfed8a-2c3c-485f-b8f0-967312366da1}
    [0m[0mI0620 14:03:04.233266   33942 rpc.go:292] Unmarshaling property for RPC:
id={/subscriptions/3f1a8e26-eae2-4539-952a-0a6184ec248a/resourceGroups/shm-green-rg-networking/providers/Microsoft.Network/dnszones/green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.233268   33942 rpc.go:292] Unmarshaling property for RPC: location={global}
    [0m[0mI0620 14:03:04.233301   33942 rpc.go:292] Unmarshaling property for RPC: maxNumberOfRecordSets={10000}
    [0m[0mI0620 14:03:04.233308   33942 rpc.go:292] Unmarshaling property for RPC: name={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.233321   33942 rpc.go:292] Unmarshaling property for RPC: nameServers={[{ns1-37.azure-dns.com.} {ns2-37.azure-dns.net.} {ns3-37.azure-dns.org.} {ns4-37.azure-dns.info.}]}
    [0m[0mI0620 14:03:04.233324   33942 rpc.go:292] Unmarshaling property for RPC: numberOfRecordSets={6}
    [0m[0mI0620 14:03:04.233327   33942 rpc.go:292] Unmarshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.233332   33942 rpc.go:292] Unmarshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.233341   33942 rpc.go:292] Unmarshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.233350   33942 rpc.go:292] Unmarshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.233353   33942 rpc.go:292] Unmarshaling property for RPC: type={Microsoft.Network/dnszones}
    [0m[0mI0620 14:03:04.233354   33942 rpc.go:292] Unmarshaling property for RPC: zoneType={Public}
    [0m[0mI0620 14:03:04.233358   33942 rpc.go:292] Unmarshaling property for RPC: location={Global}
    [0m[0mI0620 14:03:04.233361   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.233363   33942 rpc.go:292] Unmarshaling property for RPC: deployed by={Python}
    [0m[0mI0620 14:03:04.233365   33942 rpc.go:292] Unmarshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.233366   33942 rpc.go:292] Unmarshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.233370   33942 rpc.go:292] Unmarshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.233374   33942 rpc.go:292] Unmarshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.233377   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.233379   33942 rpc.go:292] Unmarshaling property for RPC: zoneType={Public}
    [0m[0mI0620 14:03:04.233381   33942 rpc.go:292] Unmarshaling property for RPC: location={Global}
    [0m[0mI0620 14:03:04.233383   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.233385   33942 rpc.go:292] Unmarshaling property for RPC: deployed by={Python}
    [0m[0mI0620 14:03:04.233386   33942 rpc.go:292] Unmarshaling property for RPC: deployment={green}
    [0m[0mI0620 14:03:04.233388   33942 rpc.go:292] Unmarshaling property for RPC: project={Data Safe Haven}
    [0m[0mI0620 14:03:04.233389   33942 rpc.go:292] Unmarshaling property for RPC: version={5.0.0}
    [0m[0mI0620 14:03:04.233393   33942 rpc.go:292] Unmarshaling property for RPC: tags={map}
    [0m[0mI0620 14:03:04.233394   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.233396   33942 rpc.go:292] Unmarshaling property for RPC: zoneType={Public}
    [0m[0mI0620 14:03:04.318192   33942 provider.go:359] azure-native.Check(urn:pulumi:shm-green::data-safe-haven::dsh:shm:NetworkingComponent$azure-native:network:Zone$azure-native:network:RecordSet::shm_networking_caa_record) executing
    [0m[0mI0620 14:03:04.318216   33942 rpc.go:292] Unmarshaling property for RPC: flags={0}
    [0m[0mI0620 14:03:04.318222   33942 rpc.go:292] Unmarshaling property for RPC: tag={issue}
    [0m[0mI0620 14:03:04.318225   33942 rpc.go:292] Unmarshaling property for RPC: value={letsencrypt.org}
    [0m[0mI0620 14:03:04.318240   33942 rpc.go:292] Unmarshaling property for RPC: caaRecords={[{map}]}
    [0m[0mI0620 14:03:04.318244   33942 rpc.go:292] Unmarshaling property for RPC: recordType={CAA}
    [0m[0mI0620 14:03:04.318247   33942 rpc.go:292] Unmarshaling property for RPC: relativeRecordSetName={@}
    [0m[0mI0620 14:03:04.318250   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.318253   33942 rpc.go:292] Unmarshaling property for RPC: ttl={30}
    [0m[0mI0620 14:03:04.318255   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.318258   33942 rpc.go:292] Unmarshaling property for RPC: flags={0}
    [0m[0mI0620 14:03:04.318260   33942 rpc.go:292] Unmarshaling property for RPC: tag={issue}
    [0m[0mI0620 14:03:04.318263   33942 rpc.go:292] Unmarshaling property for RPC: value={letsencrypt.org}
    [0m[0mI0620 14:03:04.318267   33942 rpc.go:292] Unmarshaling property for RPC: caaRecords={[{map}]}
    [0m[0mI0620 14:03:04.318269   33942 rpc.go:292] Unmarshaling property for RPC: recordType={CAA}
    [0m[0mI0620 14:03:04.318272   33942 rpc.go:292] Unmarshaling property for RPC: relativeRecordSetName={@}
    [0m[0mI0620 14:03:04.318273   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.318275   33942 rpc.go:292] Unmarshaling property for RPC: ttl={30}
    [0m[0mI0620 14:03:04.318277   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.318333   33942 rpc.go:77] Marshaling property for RPC: caaRecords={[{map}]}
    [0m[0mI0620 14:03:04.318345   33942 rpc.go:77] Marshaling property for RPC: flags={0}
    [0m[0mI0620 14:03:04.318347   33942 rpc.go:77] Marshaling property for RPC: tag={issue}
    [0m[0mI0620 14:03:04.318349   33942 rpc.go:77] Marshaling property for RPC: value={letsencrypt.org}
    [0m[0mI0620 14:03:04.318355   33942 rpc.go:77] Marshaling property for RPC: recordType={CAA}
    [0m[0mI0620 14:03:04.318358   33942 rpc.go:77] Marshaling property for RPC: relativeRecordSetName={@}
    [0m[0mI0620 14:03:04.318359   33942 rpc.go:77] Marshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.318361   33942 rpc.go:77] Marshaling property for RPC: ttl={30}
    [0m[0mI0620 14:03:04.318375   33942 rpc.go:77] Marshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.319369   33942 rpc.go:292] Unmarshaling property for RPC: flags={0}
    [0m[0mI0620 14:03:04.319383   33942 rpc.go:292] Unmarshaling property for RPC: tag={issue}
    [0m[0mI0620 14:03:04.319387   33942 rpc.go:292] Unmarshaling property for RPC: value={letsencrypt.org}
    [0m[0mI0620 14:03:04.319395   33942 rpc.go:292] Unmarshaling property for RPC: caaRecords={[{map}]}
    [0m[0mI0620 14:03:04.319402   33942 rpc.go:292] Unmarshaling property for RPC: recordType={CAA}
    [0m[0mI0620 14:03:04.319407   33942 rpc.go:292] Unmarshaling property for RPC: relativeRecordSetName={@}
    [0m[0mI0620 14:03:04.319410   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.319414   33942 rpc.go:292] Unmarshaling property for RPC: ttl={30}
    [0m[0mI0620 14:03:04.319418   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.319433   33942 rpc.go:292] Unmarshaling property for RPC: __inputs={map[caaRecords:{[{map}]} recordType:{CAA} relativeRecordSetName:{@} resourceGroupName:{shm-green-rg-networking} ttl:{30}
zoneName:{green.develop.turingsafehaven.ac.uk}]}
    [0m[0mI0620 14:03:04.319440   33942 rpc.go:292] Unmarshaling property for RPC: flags={0}
    [0m[0mI0620 14:03:04.319441   33942 rpc.go:292] Unmarshaling property for RPC: tag={issue}
    [0m[0mI0620 14:03:04.319443   33942 rpc.go:292] Unmarshaling property for RPC: value={letsencrypt.org}
    [0m[0mI0620 14:03:04.319447   33942 rpc.go:292] Unmarshaling property for RPC: caaRecords={[{map}]}
    [0m[0mI0620 14:03:04.319452   33942 rpc.go:292] Unmarshaling property for RPC: etag={7ff3ccd8-ac74-4db8-8129-3e6da8a5e4e2}
    [0m[0mI0620 14:03:04.319457   33942 rpc.go:292] Unmarshaling property for RPC: fqdn={green.develop.turingsafehaven.ac.uk.}
    [0m[0mI0620 14:03:04.319459   33942 rpc.go:292] Unmarshaling property for RPC:
id={/subscriptions/3f1a8e26-eae2-4539-952a-0a6184ec248a/resourceGroups/shm-green-rg-networking/providers/Microsoft.Network/dnszones/green.develop.turingsafehaven.ac.uk/CAA/@}
    [0m[0mI0620 14:03:04.319460   33942 rpc.go:292] Unmarshaling property for RPC: name={@}
    [0m[0mI0620 14:03:04.319462   33942 rpc.go:292] Unmarshaling property for RPC: provisioningState={Succeeded}
    [0m[0mI0620 14:03:04.319465   33942 rpc.go:292] Unmarshaling property for RPC: targetResource={map[]}
    [0m[0mI0620 14:03:04.319470   33942 rpc.go:292] Unmarshaling property for RPC: ttl={30}
    [0m[0mI0620 14:03:04.319472   33942 rpc.go:292] Unmarshaling property for RPC: type={Microsoft.Network/dnszones/CAA}
    [0m[0mI0620 14:03:04.319475   33942 rpc.go:292] Unmarshaling property for RPC: flags={0}
    [0m[0mI0620 14:03:04.319478   33942 rpc.go:292] Unmarshaling property for RPC: tag={issue}
    [0m[0mI0620 14:03:04.319480   33942 rpc.go:292] Unmarshaling property for RPC: value={letsencrypt.org}
    [0m[0mI0620 14:03:04.319496   33942 rpc.go:292] Unmarshaling property for RPC: caaRecords={[{map}]}
    [0m[0mI0620 14:03:04.319501   33942 rpc.go:292] Unmarshaling property for RPC: recordType={CAA}
    [0m[0mI0620 14:03:04.319503   33942 rpc.go:292] Unmarshaling property for RPC: relativeRecordSetName={@}
    [0m[0mI0620 14:03:04.319506   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.319508   33942 rpc.go:292] Unmarshaling property for RPC: ttl={30}
    [0m[0mI0620 14:03:04.319509   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.319520   33942 rpc.go:292] Unmarshaling property for RPC: flags={0}
    [0m[0mI0620 14:03:04.319531   33942 rpc.go:292] Unmarshaling property for RPC: tag={issue}
    [0m[0mI0620 14:03:04.319533   33942 rpc.go:292] Unmarshaling property for RPC: value={letsencrypt.org}
    [0m[0mI0620 14:03:04.319537   33942 rpc.go:292] Unmarshaling property for RPC: caaRecords={[{map}]}
    [0m[0mI0620 14:03:04.319542   33942 rpc.go:292] Unmarshaling property for RPC: recordType={CAA}
    [0m[0mI0620 14:03:04.319544   33942 rpc.go:292] Unmarshaling property for RPC: relativeRecordSetName={@}
    [0m[0mI0620 14:03:04.319546   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.319552   33942 rpc.go:292] Unmarshaling property for RPC: ttl={30}
    [0m[0mI0620 14:03:04.319555   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.321694   33942 provider.go:359] azure-native.Check(urn:pulumi:shm-green::data-safe-haven::dsh:shm:NetworkingComponent$azure-native:network:Zone$azure-native:network:RecordSet::shm_networking_domain_verification_record)
executing
    [0m[0mI0620 14:03:04.321707   33942 rpc.go:292] Unmarshaling property for RPC: recordType={TXT}
    [0m[0mI0620 14:03:04.321711   33942 rpc.go:292] Unmarshaling property for RPC: relativeRecordSetName={@}
    [0m[0mI0620 14:03:04.321713   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.321730   33942 rpc.go:292] Unmarshaling property for RPC: ttl={3600}
    [0m[0mI0620 14:03:04.321733   33942 rpc.go:292] Unmarshaling property for RPC: value={[{MS=ms91927389}]}
    [0m[0mI0620 14:03:04.321739   33942 rpc.go:292] Unmarshaling property for RPC: txtRecords={[{map[value:{[{MS=ms91927389}]}]}]}
    [0m[0mI0620 14:03:04.321741   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.321748   33942 rpc.go:292] Unmarshaling property for RPC: recordType={TXT}
    [0m[0mI0620 14:03:04.321750   33942 rpc.go:292] Unmarshaling property for RPC: relativeRecordSetName={@}
    [0m[0mI0620 14:03:04.321752   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.321754   33942 rpc.go:292] Unmarshaling property for RPC: ttl={3600}
    [0m[0mI0620 14:03:04.321756   33942 rpc.go:292] Unmarshaling property for RPC: value={[{MS=ms91927389}]}
    [0m[0mI0620 14:03:04.321759   33942 rpc.go:292] Unmarshaling property for RPC: txtRecords={[{map[value:{[{MS=ms91927389}]}]}]}
    [0m[0mI0620 14:03:04.321761   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.321806   33942 rpc.go:77] Marshaling property for RPC: recordType={TXT}
    [0m[0mI0620 14:03:04.321809   33942 rpc.go:77] Marshaling property for RPC: relativeRecordSetName={@}
    [0m[0mI0620 14:03:04.321811   33942 rpc.go:77] Marshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.321813   33942 rpc.go:77] Marshaling property for RPC: ttl={3600}
    [0m[0mI0620 14:03:04.321816   33942 rpc.go:77] Marshaling property for RPC: txtRecords={[{map[value:{[{MS=ms91927389}]}]}]}
    [0m[0mI0620 14:03:04.321818   33942 rpc.go:77] Marshaling property for RPC: value={[{MS=ms91927389}]}
    [0m[0mI0620 14:03:04.321820   33942 rpc.go:77] Marshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.322457   33942 rpc.go:292] Unmarshaling property for RPC: recordType={TXT}
    [0m[0mI0620 14:03:04.322464   33942 rpc.go:292] Unmarshaling property for RPC: relativeRecordSetName={@}
    [0m[0mI0620 14:03:04.322467   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.322488   33942 rpc.go:292] Unmarshaling property for RPC: ttl={3600}
    [0m[0mI0620 14:03:04.322492   33942 rpc.go:292] Unmarshaling property for RPC: value={[{MS=ms91927389}]}
    [0m[0mI0620 14:03:04.322521   33942 rpc.go:292] Unmarshaling property for RPC: txtRecords={[{map[value:{[{MS=ms91927389}]}]}]}
    [0m[0mI0620 14:03:04.322523   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.322534   33942 rpc.go:292] Unmarshaling property for RPC: __inputs={map[recordType:{TXT} relativeRecordSetName:{@} resourceGroupName:{shm-green-rg-networking} ttl:{3600} txtRecords:{[{map[value:{[{MS=ms91927389}]}]}]}
zoneName:{green.develop.turingsafehaven.ac.uk}]}
    [0m[0mI0620 14:03:04.322537   33942 rpc.go:292] Unmarshaling property for RPC: etag={9b677e0c-0aad-4dcb-b153-1f6e8d602035}
    [0m[0mI0620 14:03:04.322539   33942 rpc.go:292] Unmarshaling property for RPC: fqdn={green.develop.turingsafehaven.ac.uk.}
    [0m[0mI0620 14:03:04.322588   33942 rpc.go:292] Unmarshaling property for RPC:
id={/subscriptions/3f1a8e26-eae2-4539-952a-0a6184ec248a/resourceGroups/shm-green-rg-networking/providers/Microsoft.Network/dnszones/green.develop.turingsafehaven.ac.uk/TXT/@}
    [0m[0mI0620 14:03:04.322591   33942 rpc.go:292] Unmarshaling property for RPC: name={@}
    [0m[0mI0620 14:03:04.322593   33942 rpc.go:292] Unmarshaling property for RPC: provisioningState={Succeeded}
    [0m[0mI0620 14:03:04.322596   33942 rpc.go:292] Unmarshaling property for RPC: targetResource={map[]}
    [0m[0mI0620 14:03:04.322598   33942 rpc.go:292] Unmarshaling property for RPC: ttl={3600}
    [0m[0mI0620 14:03:04.322601   33942 rpc.go:292] Unmarshaling property for RPC: value={[{MS=ms91927389}]}
    [0m[0mI0620 14:03:04.322604   33942 rpc.go:292] Unmarshaling property for RPC: txtRecords={[{map[value:{[{MS=ms91927389}]}]}]}
    [0m[0mI0620 14:03:04.322612   33942 rpc.go:292] Unmarshaling property for RPC: type={Microsoft.Network/dnszones/TXT}
    [0m[0mI0620 14:03:04.322615   33942 rpc.go:292] Unmarshaling property for RPC: recordType={TXT}
    [0m[0mI0620 14:03:04.322617   33942 rpc.go:292] Unmarshaling property for RPC: relativeRecordSetName={@}
    [0m[0mI0620 14:03:04.322619   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.322620   33942 rpc.go:292] Unmarshaling property for RPC: ttl={3600}
    [0m[0mI0620 14:03:04.322622   33942 rpc.go:292] Unmarshaling property for RPC: value={[{MS=ms91927389}]}
    [0m[0mI0620 14:03:04.322632   33942 rpc.go:292] Unmarshaling property for RPC: txtRecords={[{map[value:{[{MS=ms91927389}]}]}]}
    [0m[0mI0620 14:03:04.322634   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}
    [0m[0mI0620 14:03:04.322636   33942 rpc.go:292] Unmarshaling property for RPC: recordType={TXT}
    [0m[0mI0620 14:03:04.322638   33942 rpc.go:292] Unmarshaling property for RPC: relativeRecordSetName={@}
    [0m[0mI0620 14:03:04.322639   33942 rpc.go:292] Unmarshaling property for RPC: resourceGroupName={shm-green-rg-networking}
    [0m[0mI0620 14:03:04.322641   33942 rpc.go:292] Unmarshaling property for RPC: ttl={3600}
    [0m[0mI0620 14:03:04.322643   33942 rpc.go:292] Unmarshaling property for RPC: value={[{MS=ms91927389}]}
    [0m[0mI0620 14:03:04.322647   33942 rpc.go:292] Unmarshaling property for RPC: txtRecords={[{map[value:{[{MS=ms91927389}]}]}]}
    [0m[0mI0620 14:03:04.322654   33942 rpc.go:292] Unmarshaling property for RPC: zoneName={green.develop.turingsafehaven.ac.uk}

[38;5;13m[1mOutputs:[0m
[0m    networking: [0m[0m{
[0m[0m        fqdn               : [0m[0m"green.develop.turingsafehaven.ac.uk"[0m[0m
[0m[0m        fqdn_nameservers   : [0m[0m[
[0m[0m            [0]: [0m[0m"ns1-37.azure-dns.com."[0m[0m
[0m[0m            [1]: [0m[0m"ns2-37.azure-dns.net."[0m[0m
[0m[0m            [2]: [0m[0m"ns3-37.azure-dns.org."[0m[0m
[0m[0m            [3]: [0m[0m"ns4-37.azure-dns.info."[0m[0m
[0m[0m        ][0m[0m
[0m[0m        resource_group_name: [0m[0m"shm-green-rg-networking"[0m[0m
[0m[0m    }[0m[0m
[0m
[38;5;13m[1mResources:[0m
    6 unchanged

[38;5;13m[1mDuration:[0m 3s

Pulumi operation succeeded.
Verified that domain green.develop.turingsafehaven.ac.uk is delegated to Azure.

:steam_locomotive: How could this be done?

JimMadge commented 4 months ago

@jemrobinson I'll take a look.

Do you know how this happens? The Pulumi output is being routed through our logger?

jemrobinson commented 4 months ago

In ProjectManager there are a couple of configurable things:

  1. in pulumi_extra_args we make Pulumi really verbose if DEBUG logging is enabled
  2. in the destroy, update etc. commands we set on_output=self.logger.info and color="always": we may not want these settings
JimMadge commented 4 months ago

That makes sense, I think I might understand what is happening now.

Changing those should give us some options. We could,

I suppose the questions are,

jemrobinson commented 4 months ago

I recommend against sending the Pulumi output to debug. I know it can be quite verbose, but it's also the only output that we produce for quite a long time (maybe 20-30 mins) and if there's nothing being printed to screen during that time I worry that users will think that the code has failed. Unless you can think of another way to indicate progress without using the Pulumi output?

Verbose Pulumi output

This is happening because our default log level is NOTSET. Changing it to INFO or WARNING will reduce the verbosity.

Hatch

IIRC, if you run with -vvv then you see the pip output in the hatch logs

Colourising output

Pulumi output already contains ANSI escape sequences. We may need to pre-process to get Rich to handle these correctly. Should be possible to do by changing the call to self.logger.info to self.logger.process_pulumi or some similar function.

Summary

I think we should send the default Pulumi output to INFO and the verbose output to DEBUG. If we can't separate the streams like this then do what we previously did (at default log-level send to INFO and at verbose log-level send to DEBUG).