Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x/tools/gopls: invalidate file "unloadability" when name/imports change #40312

Closed
mjyeaney opened this issue Jul 15, 2020 · 24 comments
Closed

x/tools/gopls: invalidate file "unloadability" when name/imports change #40312

mjyeaney opened this issue Jul 15, 2020 · 24 comments
Labels
FrozenDueToAge gopls Issues related to the Go language server, gopls. Tools This label describes issues relating to any tools in the x/tools repository.
Milestone

Comments

@mjyeaney
Copy link

See previous report in golang/vscode-go#325 ; Issue is no better on Windows / WSL (see screenshot below). Switching to OSX to continue dev work (rest of team has no issues). Note that memory will NOT climb above this, and at this point autocomplete is non-functioning and will spin CPU with a VS Code message of Loading...

image

@hyangah
Copy link
Contributor

hyangah commented Jul 15, 2020

Interesting that this is not an issue on OSX but on Windows/WSL. @stamblerre @heshik

@mjyeaney Is it possible to get the memory and cpu profiles of gopls?

"go.languageServerFlags": [
  "serve",
  "-rpc.trace",
  "--debug=localhost:6060",
],

And then, run go tool pprof http://localhost:6060/debug/pprof/heap and go tool pprof http://localhost:6060/debug/pprof/profile. (See the documentation in https://golang.org/pkg/net/http/pprof/)

@heshik - if you have more specific instructions for capturing profiles, please let us know.
(Will probably need to update the gopls troubleshooting guide to include this instruction)

@mjyeaney
Copy link
Author

@hyangah
Copy link
Contributor

hyangah commented Jul 15, 2020

@mjyeaney Thanks! Unfortunately, the cpu profile is empty - looks like gopls isn't doing any work. If you are seeing autocomplete doesn't respond, maybe we should get the trace instead. Do you see the trace in the output channel (View: Toggle Output -> choose gopls (server) from the dropdown menu)?

@mjyeaney
Copy link
Author

There's lots of trace output, but after uninstalling last night and re-installing, autocomplete hasn't stalled yet (just LOTS of memory use for a very small code base). I'll keep coding with this on and wait for it to stall (doesn't seem to take long with lots of editing). Do you want to entire trace window here?

@stamblerre
Copy link
Contributor

The full trace would be most helpful, yes.
How many files/packages are in the codebase?

@mjyeaney
Copy link
Author

9 total files (!!), only a single go.mod file.

@stamblerre
Copy link
Contributor

Ok, so that indicates that there's a bug here. Please share the gopls logs if you can.

@mjyeaney
Copy link
Author

Will do - few meetings, should be able to this evening (EDT). Standby.

@mjyeaney
Copy link
Author

mjyeaney commented Jul 15, 2020

While I'm getting back to things, I've noticed when autosuggest fails there is line after line of these types of messages in the output window:

[Error - 6:37:20 PM] 2020/07/15 18:37:20 DocumentSymbols failed: getting file for DocumentSymbols: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go
	URI=file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go

The only way I found to get thigs working is to kill the gopls process (which restarts it). I've noticed this especially after I'm away for a while and then come back to files that have been open.

Still waiting for a good capture of CPU activity now that I've restarted.

Was able to switch to the console during a laptop fan ramp-up, caught this message:

[Info  - 6:38:16 PM] 2020/07/15 18:38:16 background imports cache refresh starting
[Info  - 6:38:21 PM] 2020/07/15 18:38:21 background refresh finished after 4.9244132s

During this time (at least 5 seconds), the process list showed > 90% CPU...note that the rest of the background refreshes are ~150 - 200 msec.

@stamblerre
Copy link
Contributor

It really does sound like there's a bug here, but we will need a complete log to understand what's going on. Even if you don't notice unusual activity as you're working, it will still be helpful to see a log.

@mjyeaney
Copy link
Author

Here's what I have so far - this is from the VS Code output window for gopls (server). Please let me know if there is additional traces / logs you would like me to capture:

[Info  - 6:37:40 PM] Connection to server got closed. Server will restart.
[Info  - 6:37:40 PM] 2020/07/15 18:37:40 Build info
----------
golang.org/x/tools/gopls 0.4.3
    golang.org/x/tools/gopls@v0.4.3 h1:irz7Q+XdHNECamFKbNWKvMV2Ak6zBbwdwbZndG4545I=
    github.com/BurntSushi/toml@v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
    github.com/sergi/go-diff@v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
    golang.org/x/mod@v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=
    golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=
    golang.org/x/tools@v0.0.0-20200708181441-6004c8539734 h1:Vc0Vx98oU/O3+qPQ36fnTT5UduS55KLh2uSGbL7mqEo=
    golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
    honnef.co/go/tools@v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8=
    mvdan.cc/xurls/v2@v2.2.0 h1:NSZPykBXJFCetGZykLAxaL6SIpvbVy/UFEniIfHAa8A=

Go info
-------
go version go1.14.4 linux/amd64



[Info  - 6:37:41 PM] 2020/07/15 18:37:41 go env for /mnt/c/Projects/IL6-Core/test
(valid build configuration = true)
(build flags: [])
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/mjyeaney/.cache/go-build"
GOENV="/home/mjyeaney/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/mjyeaney/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/mnt/c/Projects/IL6-Core/test/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build481279778=/tmp/go-build -gno-record-gcc-switches"


[Info  - 6:37:42 PM] 2020/07/15 18:37:42 go/packages.Load
	snapshot=0
	directory=/mnt/c/Projects/IL6-Core/test
	query=[./... builtin]
	packages=4

[Info  - 6:37:45 PM] 2020/07/15 18:37:45 go/packages.Load
	snapshot=1
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]
	packages=1

[Info  - 6:37:45 PM] 2020/07/15 18:37:45 go/packages.Load
	snapshot=1
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]

[Info  - 6:37:47 PM] 2020/07/15 18:37:47 go/packages.Load
	snapshot=1
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]
	packages=1

[Info  - 6:37:47 PM] 2020/07/15 18:37:47 go/packages.Load
	snapshot=1
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]

[Info  - 6:38:16 PM] 2020/07/15 18:38:16 background imports cache refresh starting

[Info  - 6:38:21 PM] 2020/07/15 18:38:21 background refresh finished after 4.9244132s

[Info  - 6:43:28 PM] 2020/07/15 18:43:28 go/packages.Load
	snapshot=16
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/01_storage_integration_test.go]
	packages=1

[Info  - 6:43:28 PM] 2020/07/15 18:43:28 go/packages.Load
	snapshot=16
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/01_storage_integration_test.go]

[Info  - 6:43:29 PM] 2020/07/15 18:43:29 go/packages.Load
	snapshot=16
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/01_storage_integration_test.go file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]
	packages=1

[Info  - 6:43:29 PM] 2020/07/15 18:43:29 go/packages.Load
	snapshot=16
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/01_storage_integration_test.go]

[Info  - 6:43:30 PM] 2020/07/15 18:43:30 go/packages.Load
	snapshot=16
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]
	packages=1

[Info  - 6:43:30 PM] 2020/07/15 18:43:30 go/packages.Load
	snapshot=16
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]

[Error - 6:43:37 PM] 2020/07/15 18:43:37 DocumentSymbols failed: getting file for DocumentSymbols: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go
	URI=file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go

[Error - 6:43:38 PM] 2020/07/15 18:43:38 DocumentSymbols failed: getting file for DocumentSymbols: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go
	URI=file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go

[Info  - 6:43:50 PM] 2020/07/15 18:43:50 background imports cache refresh starting

[Info  - 6:43:50 PM] 2020/07/15 18:43:50 background refresh finished after 166.8891ms

[Error - 7:54:17 PM] 2020/07/15 19:54:17 no highlight: getting file for Highlight: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go
	URI=file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go

[Error - 7:54:22 PM] Request textDocument/definition failed.
  Message: getting file for Identifier: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go
  Code: 0 
[Info  - 7:54:47 PM] 2020/07/15 19:54:47 background imports cache refresh starting

[Info  - 7:54:47 PM] 2020/07/15 19:54:47 background refresh finished after 89.6016ms

[Error - 7:55:08 PM] Request textDocument/definition failed.
  Message: getting file for Identifier: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go
  Code: 0 
[Info  - 7:55:37 PM] 2020/07/15 19:55:37 background imports cache refresh starting

[Info  - 7:55:37 PM] 2020/07/15 19:55:37 background refresh finished after 92.9926ms

[Info  - 7:55:38 PM] 2020/07/15 19:55:38 go/packages.Load
	snapshot=18
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go]
	packages=1

[Info  - 7:55:38 PM] 2020/07/15 19:55:38 go/packages.Load
	snapshot=18
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go]

[Info  - 7:55:40 PM] 2020/07/15 19:55:40 go/packages.Load
	snapshot=18
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/01_storage_integration_test.go file=/mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]
	packages=1

[Info  - 7:55:40 PM] 2020/07/15 19:55:40 go/packages.Load
	snapshot=18
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/01_storage_integration_test.go]

[Info  - 7:55:42 PM] 2020/07/15 19:55:42 go/packages.Load
	snapshot=18
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]
	packages=1

[Info  - 7:55:42 PM] 2020/07/15 19:55:42 go/packages.Load
	snapshot=18
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]

[Info  - 7:56:08 PM] 2020/07/15 19:56:08 background imports cache refresh starting

[Info  - 7:56:08 PM] 2020/07/15 19:56:08 background refresh finished after 118.4734ms

[Error - 7:56:19 PM] 2020/07/15 19:56:19 DocumentSymbols failed: getting file for DocumentSymbols: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/01_storage_integration_test.go
	URI=file:///mnt/c/Projects/IL6-Core/test/terraform/01_storage_integration_test.go

[Error - 7:56:19 PM] 2020/07/15 19:56:19 DocumentSymbols failed: getting file for DocumentSymbols: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/01_storage_integration_test.go
	URI=file:///mnt/c/Projects/IL6-Core/test/terraform/01_storage_integration_test.go

@stamblerre
Copy link
Contributor

Can you please increase the verbosity of the logging? https://github.com/golang/tools/blob/master/gopls/doc/troubleshooting.md#vs-code has the information on how to do this.

@mjyeaney
Copy link
Author

Done - lots here, but almost immediately I lost intellisense / autocomplete (see repeated Result: null near bottom):

[Trace - 21:24:17.772 PM] Sending request 'initialize - (0)'.
Params: {"processId":14441,"clientInfo":{"name":"vscode","version":"1.47.1"},"rootPath":"/mnt/c/Projects/IL6-Core/test","rootUri":"file:///mnt/c/Projects/IL6-Core/test","capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"resourceOperations":["create","rename","delete"],"failureHandling":"textOnlyTransactional"},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"executeCommand":{"dynamicRegistration":true},"configuration":true,"workspaceFolders":true},"textDocument":{"publishDiagnostics":{"relatedInformation":true,"versionSupport":false,"tagSupport":{"valueSet":[1,2]}},"synchronization":{"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":true,"contextSupport":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["markdown","plaintext"],"deprecatedSupport":true,"preselectSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}},"hover":{"dynamicRegistration":true,"contentFormat":["markdown","plaintext"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}},"contextSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"hierarchicalDocumentSymbolSupport":true},"codeAction":{"dynamicRegistration":true,"isPreferredSupport":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}}},"codeLens":{"dynamicRegistration":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"colorProvider":{"dynamicRegistration":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":5000,"lineFoldingOnly":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"selectionRange":{"dynamicRegistration":true}},"window":{"workDoneProgress":true}},"initializationOptions":{},"trace":"off","workspaceFolders":[{"uri":"file:///mnt/c/Projects/IL6-Core/test","name":"test"}]}


[Trace - 21:24:17.789 PM] Received response 'initialize - (0)' in 17ms.
Result: {"capabilities":{"textDocumentSync":{"openClose":true,"change":2,"save":{}},"completionProvider":{"triggerCharacters":["."]},"hoverProvider":true,"signatureHelpProvider":{"triggerCharacters":["(",","]},"definitionProvider":true,"typeDefinitionProvider":true,"implementationProvider":true,"referencesProvider":true,"documentHighlightProvider":true,"documentSymbolProvider":true,"codeActionProvider":{"codeActionKinds":["quickfix","refactor.rewrite","source.fixAll","source.organizeImports"]},"codeLensProvider":{},"documentLinkProvider":{},"workspaceSymbolProvider":true,"documentFormattingProvider":true,"documentOnTypeFormattingProvider":{"firstTriggerCharacter":""},"renameProvider":{"prepareProvider":true},"foldingRangeProvider":true,"executeCommandProvider":{"commands":["test","tidy","upgrade_dependency","generate","regenerate_cgo"]},"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":"workspace/didChangeWorkspaceFolders"}}},"serverInfo":{"name":"gopls","version":"Build info\n----------\ngolang.org/x/tools/gopls 0.4.3\n    golang.org/x/tools/gopls@v0.4.3 h1:irz7Q+XdHNECamFKbNWKvMV2Ak6zBbwdwbZndG4545I=\n    github.com/BurntSushi/toml@v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=\n    github.com/sergi/go-diff@v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=\n    golang.org/x/mod@v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=\n    golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=\n    golang.org/x/tools@v0.0.0-20200708181441-6004c8539734 h1:Vc0Vx98oU/O3+qPQ36fnTT5UduS55KLh2uSGbL7mqEo=\n    golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=\n    honnef.co/go/tools@v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8=\n    mvdan.cc/xurls/v2@v2.2.0 h1:NSZPykBXJFCetGZykLAxaL6SIpvbVy/UFEniIfHAa8A=\n\nGo info\n-------\ngo version go1.14.4 linux/amd64\n\n"}}


[Trace - 21:24:17.790 PM] Sending notification 'initialized'.
Params: {}


[Trace - 21:24:17.790 PM] Received request 'client/registerCapability - (1)'.
Params: {"registrations":[{"id":"workspace/didChangeConfiguration","method":"workspace/didChangeConfiguration"},{"id":"workspace/didChangeWorkspaceFolders","method":"workspace/didChangeWorkspaceFolders"},{"id":"workspace/didChangeWatchedFiles","method":"workspace/didChangeWatchedFiles","registerOptions":{"watchers":[{"globPattern":"**/*.go","kind":7}]}}]}


[Trace - 21:24:17.791 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go","languageId":"go","version":1,"text":"package helper\r\n\r\nimport (\r\n\t\"context\"\r\n\t\"fmt\"\r\n\t\"io/ioutil\"\r\n\t\"log\"\r\n\t\"net/url\"\r\n\t\"os\"\r\n\t\"reflect\"\r\n\t\"sort\"\r\n\t\"strings\"\r\n\r\n\t\"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2020-06-01/compute\"\r\n\t\"github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2020-02-01/containerservice\"\r\n\tkvauth \"github.com/Azure/azure-sdk-for-go/services/keyvault/auth\"\r\n\t\"github.com/Azure/azure-sdk-for-go/services/keyvault/v7.0/keyvault\"\r\n\t\"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network\"\r\n\t\"github.com/Azure/azure-sdk-for-go/services/postgresql/mgmt/2017-12-01/postgresql\"\r\n\t\"github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage\"\r\n\t\"github.com/Azure/azure-storage-file-go/azfile\"\r\n\t\"github.com/Azure/go-autorest/autorest\"\r\n\t\"github.com/Azure/go-autorest/autorest/azure/auth\"\r\n)\r\n\r\nconst (\r\n\t// SubscriptionIDEnvName azure sub name\r\n\tSubscriptionIDEnvName = \"ARM_SUBSCRIPTION_ID\"\r\n)\r\n\r\n// GetNetworkInterfaceE gets a specific NIC resource\r\nfunc GetNetworkInterfaceE(resourceGroupName string, nicName string) (*network.Interface, error) {\r\n\tclient, err := GetNetworkInterfaceClient(os.Getenv(SubscriptionIDEnvName))\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\r\n\tnic, err := client.Get(context.Background(), resourceGroupName, nicName, \"\")\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\r\n\treturn &nic, nil\r\n}\r\n\r\n// GetNetworkInterfaceClient gets a NIC client\r\nfunc GetNetworkInterfaceClient(subscriptionID string) (*network.InterfacesClient, error) {\r\n\tnicClient := network.NewInterfacesClient(subscriptionID)\r\n\tauthorizer, err := NewAuthorizer()\r\n\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\r\n\tnicClient.Authorizer = *authorizer\r\n\treturn &nicClient, nil\r\n}\r\n\r\n// GetVirtualMachinesE gets all virtual machines in the specified resource group\r\nfunc GetVirtualMachinesE(resourceGroupName string) (*map[string]compute.VirtualMachineProperties, error) {\r\n\tclient, err := GetVirtualMachinesClient(os.Getenv(SubscriptionIDEnvName))\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\r\n\tvms, err := client.List(context.Background(), resourceGroupName)\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\r\n\tvmDetails := make(map[string]compute.VirtualMachineProperties)\r\n\tfor _, v := range vms.Values() {\r\n\t\tmachineName := v.Name\r\n\t\tvmProperties := v.VirtualMachineProperties\r\n\t\tvmDetails[*machineName] = *vmProperties\r\n\t}\r\n\treturn &vmDetails, nil\r\n}\r\n\r\n// GetVirtualMachinesClient creates a new VirtualMachines client\r\nfunc GetVirtualMachinesClient(subscriptionID string) (*compute.VirtualMachinesClient, error) {\r\n\tvmClient := compute.NewVirtualMachinesClient(subscriptionID)\r\n\tauthorizer, err := NewAuthorizer()\r\n\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\r\n\tvmClient.Authorizer = *authorizer\r\n\treturn &vmClient, nil\r\n}\r\n\r\n//GetAllSubClientsE gets all virtual network subclients name, and address prefix\r\nfunc GetAllSubClientsE(resourceGroupName, virtualNetworkName string) (*map[string]string, error) {\r\n\tclient, err := GetSubNetClient(os.Getenv(SubscriptionIDEnvName))\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\r\n\tsubnets, err := client.List(context.Background(), resourceGroupName, virtualNetworkName)\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\r\n\tsubNetDetails := make(map[string]string)\r\n\tfor _, v := range subnets.Values() {\r\n\t\tsubnetName := v.Name\r\n\t\tsubNetAddressPrefix := v.AddressPrefix\r\n\r\n\t\tsubNetDetails[*subnetName] = *subNetAddressPrefix\r\n\t}\r\n\treturn &subNetDetails, nil\r\n}\r\n\r\n// GetSubNetClient creates a virtual network subnet client\r\nfunc GetSubNetClient(subscriptionID string) (*network.SubnetsClient, error) {\r\n\tsubNetClient := network.NewSubnetsClient(subscriptionID)\r\n\tauthorizer, err := NewAuthorizer()\r\n\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\r\n\tsubNetClient.Authorizer = *authorizer\r\n\treturn &subNetClient, nil\r\n}\r\n\r\n// GetVirtualNetworkE gets virtual network object\r\nfunc GetVirtualNetworkE(resourceGroupName, virtualNetworkName string) (*network.VirtualNetwork, error) {\r\n\r\n\tclient, err := GetVirtualNetworksClient(os.Getenv(SubscriptionIDEnvName))\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\tvirtualNetwork, err := client.Get(context.Background(), resourceGroupName, virtualNetworkName, \"\")\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\treturn &virtualNetwork, nil\r\n}\r\n\r\n// GetVirtualNetworksClient creates a virtual network client\r\nfunc GetVirtualNetworksClient(subscriptionID string) (*network.VirtualNetworksClient, error) {\r\n\tvnClient := network.NewVirtualNetworksClient(subscriptionID)\r\n\tauthorizer, err := NewAuthorizer()\r\n\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\r\n\tvnClient.Authorizer = *authorizer\r\n\treturn &vnClient, nil\r\n}\r\n\r\n// GetStorageAccountClient creates a storage account client.\r\nfunc GetStorageAccountClient(subscriptionID string) (*storage.AccountsClient, error) {\r\n\tstorageAccountClient := storage.NewAccountsClient(subscriptionID)\r\n\tauthorizer, err := NewAuthorizer()\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\tstorageAccountClient.Authorizer = *authorizer\r\n\treturn &storageAccountClient, nil\r\n}\r\n\r\n// GetStorageAccountProperty return StorageAccount that matches the parameter.\r\nfunc GetStorageAccountProperty(resourceGroupName, storageAccountName string) (*storage.Account, error) {\r\n\tclient, err := GetStorageAccountClient(os.Getenv(SubscriptionIDEnvName))\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\taccount, err := client.GetProperties(context.Background(), resourceGroupName, storageAccountName, \"\")\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\treturn &account, nil\r\n}\r\n\r\n// GetBlobContainersClient creates a storage container client.\r\nfunc GetBlobContainersClient(subscriptionID string) (*storage.BlobContainersClient, error) {\r\n\tblobContainerClient := storage.NewBlobContainersClient(subscriptionID)\r\n\tauthorizer, err := NewAuthorizer()\r\n\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\tblobContainerClient.Authorizer = *authorizer\r\n\treturn &blobContainerClient, nil\r\n}\r\n\r\n// GetBlobContainer returns Blob container client\r\nfunc GetBlobContainer(resourceGroupName, storageAccountName, containerName string) (*storage.BlobContainer, error) {\r\n\tclient, err := GetBlobContainersClient(os.Getenv(SubscriptionIDEnvName))\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\tcontainer, err := client.Get(context.Background(), resourceGroupName, storageAccountName, containerName)\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\treturn &container, nil\r\n}\r\n\r\n// AzureFileShareClient is store credentials and metadata.\r\ntype AzureFileShareClient struct {\r\n\tCredential         *azfile.SharedKeyCredential\r\n\tStorageAccountName string\r\n\tFileShareName      string\r\n}\r\n\r\n// GetAzureFileShareClientE returns a client of Azure File Share.\r\nfunc GetAzureFileShareClientE(accountName, fileShare, accountKey string) (*AzureFileShareClient, error) {\r\n\tcredential, err := azfile.NewSharedKeyCredential(accountName, accountKey)\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\treturn &AzureFileShareClient{\r\n\t\tCredential:         credential,\r\n\t\tStorageAccountName: accountName,\r\n\t\tFileShareName:      fileShare,\r\n\t}, nil\r\n}\r\n\r\nfunc (c *AzureFileShareClient) getAzureFileURL(azureFileName string) azfile.FileURL {\r\n\turl, _ := url.Parse(fmt.Sprintf(\"https://%s.file.core.windows.net/%s/%s\", c.StorageAccountName, c.FileShareName, azureFileName))\r\n\treturn azfile.NewFileURL(*url, azfile.NewPipeline(c.Credential, azfile.PipelineOptions{}))\r\n}\r\n\r\n// DownloadAzureFileToFile download file to the local file system.\r\nfunc (c *AzureFileShareClient) DownloadAzureFileToFile(azureFileName, localFileName string) error {\r\n\tfileURL := c.getAzureFileURL(azureFileName)\r\n\tlocalFile, err := os.Create(localFileName)\r\n\tif err != nil {\r\n\t\treturn err\r\n\t}\r\n\tdefer localFile.Close()\r\n\tdownloadResponse, err := azfile.DownloadAzureFileToFile(context.Background(), fileURL, localFile,\r\n\t\tazfile.DownloadFromAzureFileOptions{\r\n\t\t\tParallelism:              3,\r\n\t\t\tMaxRetryRequestsPerRange: 2,\r\n\t\t\tProgress: func(bytesTransferred int64) {\r\n\t\t\t\tfmt.Printf(\"Downloaded %d bytes.\\n\", bytesTransferred)\r\n\t\t\t},\r\n\t\t})\r\n\tif err != nil {\r\n\t\treturn err\r\n\t}\r\n\r\n\tlastModified := downloadResponse.LastModified() // Check if the propery download the file\r\n\t_ = lastModified                                // Avoid compiler complains.\r\n\treturn nil\r\n}\r\n\r\n// GetStorageAccountCredentialE will create Credential for accessing Storage account\r\nfunc GetStorageAccountCredentialE(accountName, accountKey string) (*azfile.SharedKeyCredential, error) {\r\n\treturn azfile.NewSharedKeyCredential(accountName, accountKey)\r\n}\r\n\r\n// NewAuthorizer will return Authorizer\r\nfunc NewAuthorizer() (*autorest.Authorizer, error) {\r\n\tauthorizer, err := auth.NewAuthorizerFromCLI()\r\n\treturn &authorizer, err\r\n}\r\n\r\n// NewKeyVaultAuthorizer witll return Authorizer for KeyVault\r\nfunc NewKeyVaultAuthorizer() (*autorest.Authorizer, error) {\r\n\tauthorizer, err := kvauth.NewAuthorizerFromCLI()\r\n\treturn &authorizer, err\r\n}\r\n\r\n// GetKeyVaultClient creates a KeyVault client\r\nfunc GetKeyVaultClient() (*keyvault.BaseClient, error) {\r\n\tkvClient := keyvault.New()\r\n\tauthorizer, err := NewKeyVaultAuthorizer()\r\n\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\r\n\tkvClient.Authorizer = *authorizer\r\n\treturn &kvClient, nil\r\n}\r\n\r\n// GetKeyVaultSecretCurrentVersion gets the current version of the KeyVault\r\n// e.g. https://foo.vault.azure.net/secrets/BAR/194bd7da9aa54944ab316faebd9120d0 -> 194bd7da9aa54944ab316faebd9120d0\r\nfunc GetKeyVaultSecretCurrentVersion(keyVaultName, secretName string) (string, error) {\r\n\tclient, err := GetKeyVaultClient()\r\n\tif err != nil {\r\n\t\treturn \"\", err\r\n\t}\r\n\tvar maxVersionsCount int32 = 25\r\n\tversions, err := client.GetSecretVersions(context.Background(),\r\n\t\tfmt.Sprintf(\"https://%s.vault.azure.net/\", keyVaultName),\r\n\t\tsecretName,\r\n\t\t&maxVersionsCount)\r\n\tif err != nil {\r\n\t\treturn \"\", err\r\n\t}\r\n\titems := versions.Values()\r\n\tsort.Slice(items, func(i, j int) bool {\r\n\t\treturn (*items[i].Attributes.Updated).Duration().Milliseconds() > (*items[j].Attributes.Updated).Duration().Milliseconds()\r\n\t})\r\n\tnonVersion := fmt.Sprintf(\"https://%s.vault.azure.net/secrets/%s/\", keyVaultName, secretName)\r\n\treturn strings.Replace(*items[0].ID, nonVersion, \"\", 1), nil\r\n}\r\n\r\n// GetSecret is get secret from the specific key vault.\r\nfunc GetSecret(keyVaultName, secretName, version string) (string, error) {\r\n\tclient, err := GetKeyVaultClient()\r\n\tif err != nil {\r\n\t\treturn \"\", err\r\n\t}\r\n\tsecret, err := client.GetSecret(context.Background(), fmt.Sprintf(\"https://%s.vault.azure.net/\", keyVaultName), secretName, version)\r\n\tif err != nil {\r\n\t\treturn \"\", err\r\n\t}\r\n\treturn *secret.Value, err\r\n}\r\n\r\n// GetCurrentSecret returns current secret\r\nfunc GetCurrentSecret(keyVaultName, secretName string) (string, error) {\r\n\tversion, err := GetKeyVaultSecretCurrentVersion(keyVaultName, secretName)\r\n\tif err != nil {\r\n\t\treturn \"\", err\r\n\t}\r\n\tsecret, err := GetSecret(keyVaultName, secretName, version)\r\n\tif err != nil {\r\n\t\treturn \"\", err\r\n\t}\r\n\treturn secret, nil\r\n}\r\n\r\n// FetchKeyVaultSecretE fill the value from keyvault\r\nfunc FetchKeyVaultSecretE(s interface{}) (interface{}, error) {\r\n\tkeyVaultName, err := getKeyVaultName(s)\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\r\n\tfields := reflect.ValueOf(s).Elem()\r\n\tfor i := 0; i < fields.NumField(); i++ {\r\n\t\ttypeField := fields.Type().Field(i)\r\n\t\tif typeField.Tag.Get(\"kv\") != \"\" {\r\n\t\t\tsecretName := typeField.Tag.Get(\"kv\")\r\n\t\t\tif fields.Field(i).Kind() == reflect.String {\r\n\t\t\t\tfmt.Printf(\"KeyVaultName: %s Secret: %s \\n\", keyVaultName, secretName)\r\n\t\t\t\tsecret, err := GetCurrentSecret(keyVaultName, secretName)\r\n\t\t\t\tif err != nil {\r\n\t\t\t\t\treturn nil, err\r\n\t\t\t\t}\r\n\t\t\t\tfields.Field(i).SetString(secret)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\treturn s, nil\r\n}\r\n\r\nfunc getKeyVaultName(s interface{}) (string, error) {\r\n\tstructName := reflect.TypeOf(s)\r\n\tfields := reflect.ValueOf(s).Elem()\r\n\tfor i := 0; i < fields.NumField(); i++ {\r\n\t\ttypeField := fields.Type().Field(i)\r\n\t\tif len(typeField.Tag.Get(\"kvname\")) != 0 {\r\n\t\t\tif fields.Field(i).Kind() == reflect.String {\r\n\t\t\t\tkvname := fields.Field(i).String()\r\n\t\t\t\tkvNameField := fields.Type().Field(i).Name\r\n\t\t\t\tif len(kvname) == 0 {\r\n\t\t\t\t\treturn \"\", fmt.Errorf(\"Empty KeyVault name is not allowed. Please add `kvname` on your struct %s.%s\", structName, kvNameField)\r\n\t\t\t\t}\r\n\t\t\t\treturn fields.Field(i).String(), nil\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn \"\", fmt.Errorf(\"Can not find kvname filed on your struct %s\", structName)\r\n}\r\n\r\n// GetPostgreSQLServersClient returns postgresql server client.\r\nfunc GetPostgreSQLServersClient() (*postgresql.ServersClient, error) {\r\n\tclient := postgresql.NewServersClient(os.Getenv(SubscriptionIDEnvName))\r\n\tauthorizer, err := NewAuthorizer()\r\n\tclient.Authorizer = *authorizer\r\n\treturn &client, err\r\n}\r\n\r\n// FetchDatabaseServerNameE get ServerName. It assume the servername that match is only one.\r\n// If there are multiple servers hits, it assume the first one is the one with warning message output.\r\nfunc FetchDatabaseServerNameE(serverNamePrefix string) (string, error) {\r\n\tclient, err := GetPostgreSQLServersClient()\r\n\tif err != nil {\r\n\t\treturn \"\", err\r\n\t}\r\n\tresult, err := client.List(context.Background())\r\n\tif err != nil {\r\n\t\treturn \"\", err\r\n\t}\r\n\r\n\tvar matchServers []string\r\n\r\n\tfor _, s := range *result.Value {\r\n\t\tif strings.Index(*s.Name, serverNamePrefix) != -1 {\r\n\t\t\tmatchServers = append(matchServers, *s.Name)\r\n\t\t}\r\n\t}\r\n\r\n\tif len(matchServers) == 0 {\r\n\t\treturn \"\", fmt.Errorf(\"Can not find the server name. ServerNamePrefix: %s\", serverNamePrefix)\r\n\t}\r\n\tif len(matchServers) != 1 {\r\n\t\tfor index, name := range matchServers {\r\n\t\t\tlog.Printf(\"Warning: Detect more than 1 server hit against serverNamePrefix: %s Hit: [%d] %s\\n\", serverNamePrefix, index, name)\r\n\t\t}\r\n\t}\r\n\treturn matchServers[0], nil\r\n}\r\n\r\n// GetApplicationGatewayE will return ApplicationGateway object and an error object\r\nfunc GetApplicationGatewayE(resourceGroupName, applicationGatewayName string) (*network.ApplicationGateway, error) {\r\n\tclient, err := GetApplicationGatewayClientE(os.Getenv(SubscriptionIDEnvName))\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\tapplicationGateway, err := client.Get(context.Background(), resourceGroupName, applicationGatewayName)\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\treturn &applicationGateway, nil\r\n}\r\n\r\n// GetPublicIPAddressE will return ApplicationGateway object and an error object\r\nfunc GetPublicIPAddressE(resourceGroupName, publicIPAddressName string) (*network.PublicIPAddress, error) {\r\n\tclient, err := GetPublicIPAddressClientE(os.Getenv(SubscriptionIDEnvName))\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\tpublicIPAddress, err := client.Get(context.Background(), resourceGroupName, publicIPAddressName, \"\")\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\treturn &publicIPAddress, nil\r\n}\r\n\r\n// GetApplicationGatewayClientE creates a ApplicationGatewaysClient client\r\nfunc GetApplicationGatewayClientE(subscriptionID string) (*network.ApplicationGatewaysClient, error) {\r\n\tclient := network.NewApplicationGatewaysClient(subscriptionID)\r\n\tauthorizer, err := NewAuthorizer()\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\tclient.Authorizer = *authorizer\r\n\treturn &client, nil\r\n}\r\n\r\n// GetPublicIPAddressClientE creates a PublicIPAddresses client\r\nfunc GetPublicIPAddressClientE(subscriptionID string) (*network.PublicIPAddressesClient, error) {\r\n\tclient := network.NewPublicIPAddressesClient(subscriptionID)\r\n\tauthorizer, err := NewAuthorizer()\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\tclient.Authorizer = *authorizer\r\n\treturn &client, nil\r\n}\r\n\r\n// GetClusterAdminCredentialsE returns credential information includes kubeconfig\r\nfunc GetClusterAdminCredentialsE(resourceGroupName, clusterName string) (*containerservice.CredentialResults, error) {\r\n\tclient, err := GetManagedClustersClientE(os.Getenv(SubscriptionIDEnvName))\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\r\n\tcredentials, err := client.ListClusterAdminCredentials(context.Background(), resourceGroupName, clusterName)\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\treturn &credentials, nil\r\n}\r\n\r\n// WriteKubeconfigFromCredentialsE writes a kubeconfig file\r\nfunc WriteKubeconfigFromCredentialsE(credentialResults *containerservice.CredentialResults, filePath string) error {\r\n\tkubeconfig := (*(*credentialResults.Kubeconfigs)[0].Value)\r\n\treturn ioutil.WriteFile(filePath, kubeconfig, os.ModePerm)\r\n}\r\n\r\n// GetManagedClusterE will return ManagedCluster object and an error object\r\nfunc GetManagedClusterE(resourceGroupName, clusterName string) (*containerservice.ManagedCluster, error) {\r\n\tclient, err := GetManagedClustersClientE(os.Getenv(SubscriptionIDEnvName))\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\tmanagedCluster, err := client.Get(context.Background(), resourceGroupName, clusterName)\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\treturn &managedCluster, nil\r\n}\r\n\r\n// GetManagedClustersClientE creates a ManagedClusters client\r\nfunc GetManagedClustersClientE(subscriptionID string) (*containerservice.ManagedClustersClient, error) {\r\n\tclient := containerservice.NewManagedClustersClient(subscriptionID)\r\n\tauthorizer, err := NewAuthorizer()\r\n\tif err != nil {\r\n\t\treturn nil, err\r\n\t}\r\n\tclient.Authorizer = *authorizer\r\n\treturn &client, nil\r\n}\r\n"}}


[Trace - 21:24:17.791 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go","languageId":"go","version":1,"text":"// +build 04\n\npackage terraform\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"dev.azure.com/csedevops/public-terraform-template/test/helper\"\n\t\"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2020-06-01/compute\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\ntype MgmtVmConfig struct {\n\tResourceGroupName     string `env:\"TF_VAR_COR_RESOURCE_GROUP\"`\n\tMgmtVm01Name          string `env:\"TF_VAR_MGMTVM_NAME_01\"`\n\tMgmtVm01AdminUsername string `env:\"TF_VAR_GLAUSERNAME\"`\n\tMgmtVm01PrivateIP     string `env:\"TF_VAR_MGMT01_PRIVATE_IP\"`\n\tMgmtVm02Name          string `env:\"TF_VAR_MGMTVM_NAME_02\"`\n\tMgmtVm02AdminUsername string `env:\"TF_VAR_GLAUSERNAME\"`\n\tMgmtVm02PrivateIP     string `env:\"TF_VAR_MGMT02_PRIVATE_IP\"`\n}\n\nfunc Test04_vms_mgmt_vm_01_test(t *testing.T) {\n\thelper.LoadEnvFile(t)\n\tconfig := helper.DeserializeVariablesStruct(&MgmtVmConfig{}).(*MgmtVmConfig)\n\tassert.True(t, helper.ValidateVariablesStruct(config, true))\n\n\t// Read the vms (should be 2)\n\tvmList, err := helper.GetVirtualMachinesE(config.ResourceGroupName)\n\n\t// Assert no err\n\trequire.NoError(t, err)\n\n\t// Make sure the VM was found\n\tassert.True(t, len(*vmList) > 0)\n\n\t// For each VM, check: SKU, Name, disk count...??\n\ttheVm := (*vmList)[config.MgmtVm01Name]\n\t\n\t// Check properties\n\t// NOTE: This needs moved to a TF VAR\n\tassert.Equal(t, theVm.HardwareProfile.VMSize, compute.VirtualMachineSizeTypes(\"Standard_DS1_v2\"))\n\tassert.Equal(t, *theVm.OsProfile.ComputerName, config.MgmtVm01Name)\n\tassert.Equal(t, *theVm.OsProfile.AdminUsername, config.MgmtVm01AdminUsername)\n\n\t// Get the primary NIC\n\tprimaryNicID := (*theVm.NetworkProfile.NetworkInterfaces)[0].ID\n\t\n\t// NOTE: Splittling the resource ID to get the actual NIC name, since the compute API\n\t// gives us the entire resource ID. Would love to clean this up\n\tnic_parts := strings.Split(*primaryNicID, \"/\")\n\tnic_name := nic_parts[8]\n\t\n\t// Now read the nic\n\ttheNic, err := helper.GetNetworkInterfaceE(config.ResourceGroupName, nic_name)\n\trequire.NoError(t, err)\n\tassert.Equal(t, *(*theNic.IPConfigurations)[0].PrivateIPAddress, config.MgmtVm01PrivateIP)\n}\n\nfunc Test04_vms_mgmt_vm_02_test(t *testing.T) {\n\thelper.LoadEnvFile(t)\n\tconfig := helper.DeserializeVariablesStruct(&MgmtVmConfig{}).(*MgmtVmConfig)\n\tassert.True(t, helper.ValidateVariablesStruct(config, true))\n\n\t// Read the vms (should be 2)\n\tvmList, err := helper.GetVirtualMachinesE(config.ResourceGroupName)\n\n\t// Assert no err\n\trequire.NoError(t, err)\n\n\t// Make sure the VM was found\n\tassert.True(t, len(*vmList) > 0)\n\n\t// For each VM, check: SKU, Name, disk count...??\n\ttheVm := (*vmList)[config.MgmtVm02Name]\n\n\t// Check rest of properties\n\t// NOTE: This needs moved to a TF VAR\n\tassert.Equal(t, theVm.HardwareProfile.VMSize, compute.VirtualMachineSizeTypes(\"Standard_DS1_v2\"))\n\tassert.Equal(t, *theVm.InstanceView.ComputerName, config.MgmtVm02Name)\n\tassert.Equal(t, *theVm.OsProfile.AdminUsername, config.MgmtVm02AdminUsername)\n\n\t// Get the primary NIC\n\tprimaryNicID := (*theVm.NetworkProfile.NetworkInterfaces)[0].ID\n\t\n\t// NOTE: Splittling the resource ID to get the actual NIC name, since the compute API\n\t// gives us the entire resource ID. Would love to clean this up\n\tnic_parts := strings.Split(*primaryNicID, \"/\")\n\tnic_name := nic_parts[8]\n\t\n\t// Now read the nic\n\ttheNic, err := helper.GetNetworkInterfaceE(config.ResourceGroupName, nic_name)\n\trequire.NoError(t, err)\n\tassert.Equal(t, *(*theNic.IPConfigurations)[0].PrivateIPAddress, config.MgmtVm02PrivateIP)\n}\n"}}


[Trace - 21:24:17.793 PM] Sending response 'client/registerCapability - (1)' in 2ms.
Result: 


[Trace - 21:24:17.811 PM] Received request 'workspace/configuration - (2)'.
Params: {"items":[{"scopeUri":"file:///mnt/c/Projects/IL6-Core/test","section":"gopls"},{"scopeUri":"file:///mnt/c/Projects/IL6-Core/test","section":"gopls-test"}]}


[Trace - 21:24:17.812 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:17 Build info\n----------\ngolang.org/x/tools/gopls 0.4.3\n    golang.org/x/tools/gopls@v0.4.3 h1:irz7Q+XdHNECamFKbNWKvMV2Ak6zBbwdwbZndG4545I=\n    github.com/BurntSushi/toml@v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=\n    github.com/sergi/go-diff@v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=\n    golang.org/x/mod@v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=\n    golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=\n    golang.org/x/tools@v0.0.0-20200708181441-6004c8539734 h1:Vc0Vx98oU/O3+qPQ36fnTT5UduS55KLh2uSGbL7mqEo=\n    golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=\n    honnef.co/go/tools@v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8=\n    mvdan.cc/xurls/v2@v2.2.0 h1:NSZPykBXJFCetGZykLAxaL6SIpvbVy/UFEniIfHAa8A=\n\nGo info\n-------\ngo version go1.14.4 linux/amd64\n\n\n"}


[Info  - 9:24:17 PM] 2020/07/15 21:24:17 Build info
----------
golang.org/x/tools/gopls 0.4.3
    golang.org/x/tools/gopls@v0.4.3 h1:irz7Q+XdHNECamFKbNWKvMV2Ak6zBbwdwbZndG4545I=
    github.com/BurntSushi/toml@v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
    github.com/sergi/go-diff@v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
    golang.org/x/mod@v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=
    golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=
    golang.org/x/tools@v0.0.0-20200708181441-6004c8539734 h1:Vc0Vx98oU/O3+qPQ36fnTT5UduS55KLh2uSGbL7mqEo=
    golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
    honnef.co/go/tools@v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8=
    mvdan.cc/xurls/v2@v2.2.0 h1:NSZPykBXJFCetGZykLAxaL6SIpvbVy/UFEniIfHAa8A=

Go info
-------
go version go1.14.4 linux/amd64



[Trace - 21:24:17.813 PM] Sending response 'workspace/configuration - (2)' in 1ms.
Result: [null,null]


[Trace - 21:24:18.120 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:18 go env for /mnt/c/Projects/IL6-Core/test\n(valid build configuration = true)\n(build flags: [])\nGO111MODULE=\"\"\nGOARCH=\"amd64\"\nGOBIN=\"\"\nGOCACHE=\"/home/mjyeaney/.cache/go-build\"\nGOENV=\"/home/mjyeaney/.config/go/env\"\nGOEXE=\"\"\nGOFLAGS=\"\"\nGOHOSTARCH=\"amd64\"\nGOHOSTOS=\"linux\"\nGOINSECURE=\"\"\nGONOPROXY=\"\"\nGONOSUMDB=\"\"\nGOOS=\"linux\"\nGOPATH=\"/home/mjyeaney/go\"\nGOPRIVATE=\"\"\nGOPROXY=\"https://proxy.golang.org,direct\"\nGOROOT=\"/usr/local/go\"\nGOSUMDB=\"sum.golang.org\"\nGOTMPDIR=\"\"\nGOTOOLDIR=\"/usr/local/go/pkg/tool/linux_amd64\"\nGCCGO=\"gccgo\"\nAR=\"ar\"\nCC=\"gcc\"\nCXX=\"g++\"\nCGO_ENABLED=\"1\"\nGOMOD=\"/mnt/c/Projects/IL6-Core/test/go.mod\"\nCGO_CFLAGS=\"-g -O2\"\nCGO_CPPFLAGS=\"\"\nCGO_CXXFLAGS=\"-g -O2\"\nCGO_FFLAGS=\"-g -O2\"\nCGO_LDFLAGS=\"-g -O2\"\nPKG_CONFIG=\"pkg-config\"\nGOGCCFLAGS=\"-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build070529537=/tmp/go-build -gno-record-gcc-switches\"\n\n"}


[Info  - 9:24:18 PM] 2020/07/15 21:24:18 go env for /mnt/c/Projects/IL6-Core/test
(valid build configuration = true)
(build flags: [])
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/mjyeaney/.cache/go-build"
GOENV="/home/mjyeaney/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/mjyeaney/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/mnt/c/Projects/IL6-Core/test/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build070529537=/tmp/go-build -gno-record-gcc-switches"


[Trace - 21:24:19.071 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:19 go/packages.Load\n\tsnapshot=0\n\tdirectory=/mnt/c/Projects/IL6-Core/test\n\tquery=[./... builtin]\n\tpackages=4\n"}


[Info  - 9:24:19 PM] 2020/07/15 21:24:19 go/packages.Load
	snapshot=0
	directory=/mnt/c/Projects/IL6-Core/test
	query=[./... builtin]
	packages=4

[Trace - 21:24:19.921 PM] Sending request 'textDocument/documentLink - (1)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"}}


[Trace - 21:24:19.923 PM] Sending request 'textDocument/codeAction - (2)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}


[Trace - 21:24:19.926 PM] Sending request 'textDocument/documentSymbol - (3)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"}}


[Trace - 21:24:20.275 PM] Sending request 'textDocument/foldingRange - (4)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"}}


[Trace - 21:24:20.942 PM] Sending request 'textDocument/codeLens - (5)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"}}


[Trace - 21:24:20.942 PM] Sending request 'textDocument/codeAction - (6)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"range":{"start":{"line":26,"character":41},"end":{"line":26,"character":41}},"context":{"diagnostics":[]}}


[Trace - 21:24:20.942 PM] Sending notification '$/cancelRequest'.
Params: {"id":2}


[Trace - 21:24:23.065 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:23 go/packages.Load\n\tsnapshot=2\n\tdirectory=/mnt/c/Projects/IL6-Core/test\n\tquery=[file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]\n\tpackages=1\n"}


[Trace - 21:24:23.066 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:23 go/packages.Load\n\tsnapshot=2\n\tpackage_path=\"command-line-arguments\"\n\tfiles=[/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]\n"}


[Info  - 9:24:23 PM] 2020/07/15 21:24:23 go/packages.Load
	snapshot=2
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]
	packages=1

[Info  - 9:24:23 PM] 2020/07/15 21:24:23 go/packages.Load
	snapshot=2
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]

[Trace - 21:24:23.074 PM] Received response 'textDocument/documentLink - (1)' in 3152ms.
Result: [{"range":{"start":{"line":5,"character":2},"end":{"line":5,"character":9}},"target":"https://pkg.go.dev/strings"},{"range":{"start":{"line":6,"character":2},"end":{"line":6,"character":9}},"target":"https://pkg.go.dev/testing"},{"range":{"start":{"line":8,"character":2},"end":{"line":8,"character":63}},"target":"https://pkg.go.dev/dev.azure.com/csedevops/public-terraform-template/test/helper"},{"range":{"start":{"line":9,"character":2},"end":{"line":9,"character":76}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/compute/mgmt/2020-06-01/compute"},{"range":{"start":{"line":10,"character":2},"end":{"line":10,"character":36}},"target":"https://pkg.go.dev/github.com/stretchr/testify@v1.5.1/assert"},{"range":{"start":{"line":11,"character":2},"end":{"line":11,"character":37}},"target":"https://pkg.go.dev/github.com/stretchr/testify@v1.5.1/require"}]


[Error - Received] 21:24:23.074 PM golang/vscode-go#2 JSON RPC cancelled


[Trace - 21:24:23.074 PM] Received response 'textDocument/documentSymbol - (3)' in 3147ms.
Result: [{"name":"MgmtVmConfig","detail":"struct{...}","kind":23,"range":{"start":{"line":14,"character":5},"end":{"line":22,"character":1}},"selectionRange":{"start":{"line":14,"character":5},"end":{"line":14,"character":17}},"children":[{"name":"ResourceGroupName","detail":"string","kind":8,"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":63}},"selectionRange":{"start":{"line":15,"character":1},"end":{"line":15,"character":18}}},{"name":"MgmtVm01Name","detail":"string","kind":8,"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":59}},"selectionRange":{"start":{"line":16,"character":1},"end":{"line":16,"character":13}}},{"name":"MgmtVm01AdminUsername","detail":"string","kind":8,"range":{"start":{"line":17,"character":1},"end":{"line":17,"character":56}},"selectionRange":{"start":{"line":17,"character":1},"end":{"line":17,"character":22}}},{"name":"MgmtVm01PrivateIP","detail":"string","kind":8,"range":{"start":{"line":18,"character":1},"end":{"line":18,"character":62}},"selectionRange":{"start":{"line":18,"character":1},"end":{"line":18,"character":18}}},{"name":"MgmtVm02Name","detail":"string","kind":8,"range":{"start":{"line":19,"character":1},"end":{"line":19,"character":59}},"selectionRange":{"start":{"line":19,"character":1},"end":{"line":19,"character":13}}},{"name":"MgmtVm02AdminUsername","detail":"string","kind":8,"range":{"start":{"line":20,"character":1},"end":{"line":20,"character":56}},"selectionRange":{"start":{"line":20,"character":1},"end":{"line":20,"character":22}}},{"name":"MgmtVm02PrivateIP","detail":"string","kind":8,"range":{"start":{"line":21,"character":1},"end":{"line":21,"character":62}},"selectionRange":{"start":{"line":21,"character":1},"end":{"line":21,"character":18}}}]},{"name":"Test04_vms_mgmt_vm_01_test","detail":"(t *testing.T)","kind":12,"range":{"start":{"line":24,"character":0},"end":{"line":59,"character":1}},"selectionRange":{"start":{"line":24,"character":5},"end":{"line":24,"character":31}}},{"name":"Test04_vms_mgmt_vm_02_test","detail":"(t *testing.T)","kind":12,"range":{"start":{"line":61,"character":0},"end":{"line":96,"character":1}},"selectionRange":{"start":{"line":61,"character":5},"end":{"line":61,"character":31}}}]


[Trace - 21:24:23.075 PM] Received response 'textDocument/foldingRange - (4)' in 2800ms.
Result: [{"startLine":4,"startCharacter":8,"endLine":11,"endCharacter":38,"kind":"imports"},{"startLine":14,"startCharacter":26,"endLine":21,"endCharacter":62},{"startLine":24,"startCharacter":47,"endLine":58,"endCharacter":91},{"startLine":41,"startCharacter":20,"endLine":42,"endCharacter":38,"kind":"comment"},{"startLine":50,"startCharacter":86,"endLine":51,"endCharacter":64,"kind":"comment"},{"startLine":61,"startCharacter":47,"endLine":95,"endCharacter":91},{"startLine":78,"startCharacter":28,"endLine":79,"endCharacter":38,"kind":"comment"},{"startLine":87,"startCharacter":86,"endLine":88,"endCharacter":64,"kind":"comment"}]


[Trace - 21:24:23.075 PM] Received response 'textDocument/codeLens - (5)' in 2133ms.
Result: null


[Trace - 21:24:23.709 PM] Received response 'textDocument/codeAction - (6)' in 2766ms.
Result: null


[Trace - 21:24:24.172 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:24 go/packages.Load\n\tsnapshot=2\n\tdirectory=/mnt/c/Projects/IL6-Core/test\n\tquery=[file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]\n\tpackages=1\n"}


[Trace - 21:24:24.172 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:24 go/packages.Load\n\tsnapshot=2\n\tpackage_path=\"command-line-arguments\"\n\tfiles=[/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]\n"}


[Info  - 9:24:24 PM] 2020/07/15 21:24:24 go/packages.Load
	snapshot=2
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]
	packages=1

[Info  - 9:24:24 PM] 2020/07/15 21:24:24 go/packages.Load
	snapshot=2
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]

[Trace - 21:24:30.644 PM] Sending request 'textDocument/codeAction - (7)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"range":{"start":{"line":26,"character":77},"end":{"line":26,"character":77}},"context":{"diagnostics":[]}}


[Trace - 21:24:30.656 PM] Received response 'textDocument/codeAction - (7)' in 12ms.
Result: null


[Trace - 21:24:31.166 PM] Sending request 'textDocument/hover - (8)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":26,"character":23}}


[Trace - 21:24:31.168 PM] Received response 'textDocument/hover - (8)' in 2ms.
Result: {"contents":{"kind":"markdown","value":"```go\nfunc helper.DeserializeVariablesStruct(s interface{}) interface{}\n```\n\n[`helper.DeserializeVariablesStruct` on pkg.go.dev](https://pkg.go.dev/dev.azure.com/csedevops/public-terraform-template/test/helper#DeserializeVariablesStruct)\n\nDeserializeVariablesStruct fill the value from environment variables\\.\n"},"range":{"start":{"line":26,"character":18},"end":{"line":26,"character":44}}}


[Trace - 21:24:31.441 PM] Sending request 'textDocument/hover - (9)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":26,"character":24}}


[Trace - 21:24:31.443 PM] Received response 'textDocument/hover - (9)' in 2ms.
Result: {"contents":{"kind":"markdown","value":"```go\nfunc helper.DeserializeVariablesStruct(s interface{}) interface{}\n```\n\n[`helper.DeserializeVariablesStruct` on pkg.go.dev](https://pkg.go.dev/dev.azure.com/csedevops/public-terraform-template/test/helper#DeserializeVariablesStruct)\n\nDeserializeVariablesStruct fill the value from environment variables\\.\n"},"range":{"start":{"line":26,"character":18},"end":{"line":26,"character":44}}}


[Trace - 21:24:39.265 PM] Sending request 'textDocument/hover - (10)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":27,"character":35}}


[Trace - 21:24:39.266 PM] Received response 'textDocument/hover - (10)' in 0ms.
Result: {"contents":{"kind":"markdown","value":"```go\nfunc helper.ValidateVariablesStruct(s interface{}, isSkipGenerated bool) bool\n```\n\n[`helper.ValidateVariablesStruct` on pkg.go.dev](https://pkg.go.dev/dev.azure.com/csedevops/public-terraform-template/test/helper#ValidateVariablesStruct)\n\nValidateVariablesStruct validate if the all parameters has the value\\. isSkipGenerated allows ignore a field that has the \\`generated\\:\\\"true\\\"\\` tag\\.\n"},"range":{"start":{"line":27,"character":23},"end":{"line":27,"character":46}}}


[Trace - 21:24:39.482 PM] Sending request 'textDocument/hover - (11)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":27,"character":36}}


[Trace - 21:24:39.485 PM] Received response 'textDocument/hover - (11)' in 2ms.
Result: {"contents":{"kind":"markdown","value":"```go\nfunc helper.ValidateVariablesStruct(s interface{}, isSkipGenerated bool) bool\n```\n\n[`helper.ValidateVariablesStruct` on pkg.go.dev](https://pkg.go.dev/dev.azure.com/csedevops/public-terraform-template/test/helper#ValidateVariablesStruct)\n\nValidateVariablesStruct validate if the all parameters has the value\\. isSkipGenerated allows ignore a field that has the \\`generated\\:\\\"true\\\"\\` tag\\.\n"},"range":{"start":{"line":27,"character":23},"end":{"line":27,"character":46}}}


[Trace - 21:24:41.199 PM] Sending request 'textDocument/hover - (12)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":26,"character":25}}


[Trace - 21:24:41.200 PM] Received response 'textDocument/hover - (12)' in 1ms.
Result: {"contents":{"kind":"markdown","value":"```go\nfunc helper.DeserializeVariablesStruct(s interface{}) interface{}\n```\n\n[`helper.DeserializeVariablesStruct` on pkg.go.dev](https://pkg.go.dev/dev.azure.com/csedevops/public-terraform-template/test/helper#DeserializeVariablesStruct)\n\nDeserializeVariablesStruct fill the value from environment variables\\.\n"},"range":{"start":{"line":26,"character":18},"end":{"line":26,"character":44}}}


[Trace - 21:24:43.857 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go","languageId":"go","version":1,"text":"// +build 03\n\npackage terraform\n\nimport (\n\t\"testing\"\n\n\t\"dev.azure.com/csedevops/public-terraform-template/test/helper\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\ntype SubnetConfig struct {\n\tResourceGroupName string `env:\"TF_VAR_NET_RESOURCE_GROUP\"`\n\tSubnetName        string `env:\"TF_VAR_MGMT_NAME\"`\n\tVnetName          string `env:\"TF_VAR_HUB_VIRTUAL_NETWORK\"`\n\tSubnetPrefix      string `env:\"TF_VAR_MGMT_PREFIX\"`\n}\n\nfunc Test03_networking_mgmt_subnet_test(t *testing.T) {\n\thelper.LoadEnvFile(t)\n\tconfig := helper.DeserializeVariablesStruct(&SubnetConfig{}).(*SubnetConfig)\n\tassert.True(t, helper.ValidateVariablesStruct(config, true))\n\n\t// Read the subnet information\n\tsubnetInfo, err := helper.GetAllSubClientsE(config.ResourceGroupName, config.VnetName)\n\n\t// Assert no err\n\trequire.NoError(t, err)\n\n\t// Assert the name matches\n\tassert.NotNil(t, (*subnetInfo)[config.SubnetName])\n\n\t// Assert the subnet prefix matches\n\tassert.Equal(t, (*subnetInfo)[config.SubnetName], config.SubnetPrefix)\n}\n"}}


[Trace - 21:24:43.859 PM] Sending request 'textDocument/documentLink - (13)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go"}}


[Trace - 21:24:43.860 PM] Sending request 'textDocument/codeAction - (14)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}


[Trace - 21:24:43.861 PM] Sending request 'textDocument/documentSymbol - (15)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go"}}


[Trace - 21:24:44.008 PM] Sending notification '$/cancelRequest'.
Params: {"id":15}


[Trace - 21:24:44.008 PM] Sending request 'textDocument/documentSymbol - (16)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go"}}


[Trace - 21:24:44.009 PM] Sending notification '$/cancelRequest'.
Params: {"id":16}


[Trace - 21:24:44.010 PM] Sending request 'textDocument/documentSymbol - (17)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go"}}


[Trace - 21:24:44.053 PM] Sending request 'textDocument/foldingRange - (18)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go"}}


[Trace - 21:24:44.117 PM] Sending request 'textDocument/codeLens - (19)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go"}}


[Trace - 21:24:44.972 PM] Sending request 'textDocument/hover - (20)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go"},"position":{"line":25,"character":33}}


[Trace - 21:24:45.820 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:45 go/packages.Load\n\tsnapshot=3\n\tdirectory=/mnt/c/Projects/IL6-Core/test\n\tquery=[file=/mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go]\n\tpackages=1\n"}


[Info  - 9:24:45 PM] 2020/07/15 21:24:45 go/packages.Load
	snapshot=3
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go]
	packages=1

[Trace - 21:24:45.820 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:45 go/packages.Load\n\tsnapshot=3\n\tpackage_path=\"command-line-arguments\"\n\tfiles=[/mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go]\n"}


[Info  - 9:24:45 PM] 2020/07/15 21:24:45 go/packages.Load
	snapshot=3
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go]

[Trace - 21:24:45.823 PM] Received response 'textDocument/documentLink - (13)' in 1963ms.
Result: [{"range":{"start":{"line":5,"character":2},"end":{"line":5,"character":9}},"target":"https://pkg.go.dev/testing"},{"range":{"start":{"line":7,"character":2},"end":{"line":7,"character":63}},"target":"https://pkg.go.dev/dev.azure.com/csedevops/public-terraform-template/test/helper"},{"range":{"start":{"line":8,"character":2},"end":{"line":8,"character":36}},"target":"https://pkg.go.dev/github.com/stretchr/testify@v1.5.1/assert"},{"range":{"start":{"line":9,"character":2},"end":{"line":9,"character":37}},"target":"https://pkg.go.dev/github.com/stretchr/testify@v1.5.1/require"}]


[Trace - 21:24:45.826 PM] Sending notification '$/cancelRequest'.
Params: {"id":20}


[Trace - 21:24:45.830 PM] Received response 'textDocument/codeAction - (14)' in 1970ms.
Result: null


[Error - Received] 21:24:45.830 PM golang/vscode-go#15 JSON RPC cancelled


[Error - Received] 21:24:45.830 PM golang/vscode-go#16 JSON RPC cancelled


[Trace - 21:24:45.831 PM] Received response 'textDocument/documentSymbol - (17)' in 1820ms.
Result: [{"name":"SubnetConfig","detail":"struct{...}","kind":23,"range":{"start":{"line":12,"character":5},"end":{"line":17,"character":1}},"selectionRange":{"start":{"line":12,"character":5},"end":{"line":12,"character":17}},"children":[{"name":"ResourceGroupName","detail":"string","kind":8,"range":{"start":{"line":13,"character":1},"end":{"line":13,"character":59}},"selectionRange":{"start":{"line":13,"character":1},"end":{"line":13,"character":18}}},{"name":"SubnetName","detail":"string","kind":8,"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":50}},"selectionRange":{"start":{"line":14,"character":1},"end":{"line":14,"character":11}}},{"name":"VnetName","detail":"string","kind":8,"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":60}},"selectionRange":{"start":{"line":15,"character":1},"end":{"line":15,"character":9}}},{"name":"SubnetPrefix","detail":"string","kind":8,"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":52}},"selectionRange":{"start":{"line":16,"character":1},"end":{"line":16,"character":13}}}]},{"name":"Test03_networking_mgmt_subnet_test","detail":"(t *testing.T)","kind":12,"range":{"start":{"line":19,"character":0},"end":{"line":35,"character":1}},"selectionRange":{"start":{"line":19,"character":5},"end":{"line":19,"character":39}}}]


[Trace - 21:24:45.831 PM] Received response 'textDocument/foldingRange - (18)' in 1778ms.
Result: [{"startLine":4,"startCharacter":8,"endLine":9,"endCharacter":38,"kind":"imports"},{"startLine":12,"startCharacter":26,"endLine":16,"endCharacter":52},{"startLine":19,"startCharacter":55,"endLine":34,"endCharacter":71}]


[Trace - 21:24:45.831 PM] Received response 'textDocument/codeLens - (19)' in 1713ms.
Result: null


[Error - Received] 21:24:45.831 PM golang/vscode-go#20 JSON RPC cancelled


[Trace - 21:24:45.993 PM] Sending request 'textDocument/hover - (21)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go"},"position":{"line":25,"character":33}}


[Trace - 21:24:45.994 PM] Received response 'textDocument/hover - (21)' in 0ms.
Result: {"contents":{"kind":"markdown","value":"```go\nfunc helper.GetAllSubClientsE(resourceGroupName string, virtualNetworkName string) (*map[string]string, error)\n```\n\n[`helper.GetAllSubClientsE` on pkg.go.dev](https://pkg.go.dev/dev.azure.com/csedevops/public-terraform-template/test/helper#GetAllSubClientsE)\n\nGetAllSubClientsE gets all virtual network subclients name, and address prefix\n"},"range":{"start":{"line":25,"character":27},"end":{"line":25,"character":44}}}


[Trace - 21:24:46.914 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:46 go/packages.Load\n\tsnapshot=3\n\tdirectory=/mnt/c/Projects/IL6-Core/test\n\tquery=[file=/mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]\n\tpackages=1\n"}


[Trace - 21:24:46.914 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:46 go/packages.Load\n\tsnapshot=3\n\tpackage_path=\"command-line-arguments\"\n\tfiles=[/mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go]\n"}


[Info  - 9:24:46 PM] 2020/07/15 21:24:46 go/packages.Load
	snapshot=3
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]
	packages=1

[Info  - 9:24:46 PM] 2020/07/15 21:24:46 go/packages.Load
	snapshot=3
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go]

[Trace - 21:24:47.900 PM] Sending request 'textDocument/hover - (22)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go"},"position":{"line":22,"character":30}}


[Trace - 21:24:47.900 PM] Received response 'textDocument/hover - (22)' in 0ms.
Result: {"contents":{"kind":"markdown","value":"```go\nfunc helper.ValidateVariablesStruct(s interface{}, isSkipGenerated bool) bool\n```\n\n[`helper.ValidateVariablesStruct` on pkg.go.dev](https://pkg.go.dev/dev.azure.com/csedevops/public-terraform-template/test/helper#ValidateVariablesStruct)\n\nValidateVariablesStruct validate if the all parameters has the value\\. isSkipGenerated allows ignore a field that has the \\`generated\\:\\\"true\\\"\\` tag\\.\n"},"range":{"start":{"line":22,"character":23},"end":{"line":22,"character":46}}}


[Trace - 21:24:48.277 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:48 go/packages.Load\n\tsnapshot=3\n\tdirectory=/mnt/c/Projects/IL6-Core/test\n\tquery=[file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]\n\tpackages=1\n"}


[Trace - 21:24:48.277 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:48 go/packages.Load\n\tsnapshot=3\n\tpackage_path=\"command-line-arguments\"\n\tfiles=[/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]\n"}


[Info  - 9:24:48 PM] 2020/07/15 21:24:48 go/packages.Load
	snapshot=3
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]
	packages=1

[Info  - 9:24:48 PM] 2020/07/15 21:24:48 go/packages.Load
	snapshot=3
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]

[Trace - 21:24:49.451 PM] Sending request 'textDocument/hover - (23)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go"},"position":{"line":20,"character":21}}


[Trace - 21:24:49.452 PM] Received response 'textDocument/hover - (23)' in 0ms.
Result: {"contents":{"kind":"markdown","value":"```go\nvar t *testing.T\n```"},"range":{"start":{"line":20,"character":20},"end":{"line":20,"character":21}}}


[Trace - 21:24:49.794 PM] Sending request 'textDocument/hover - (24)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go"},"position":{"line":21,"character":20}}


[Trace - 21:24:49.796 PM] Received response 'textDocument/hover - (24)' in 1ms.
Result: {"contents":{"kind":"markdown","value":"```go\nfunc helper.DeserializeVariablesStruct(s interface{}) interface{}\n```\n\n[`helper.DeserializeVariablesStruct` on pkg.go.dev](https://pkg.go.dev/dev.azure.com/csedevops/public-terraform-template/test/helper#DeserializeVariablesStruct)\n\nDeserializeVariablesStruct fill the value from environment variables\\.\n"},"range":{"start":{"line":21,"character":18},"end":{"line":21,"character":44}}}


[Trace - 21:24:51.310 PM] Sending request 'textDocument/documentLink - (25)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"}}


[Trace - 21:24:51.310 PM] Sending request 'textDocument/codeAction - (26)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}


[Trace - 21:24:51.312 PM] Sending request 'textDocument/documentSymbol - (27)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"}}


[Trace - 21:24:51.323 PM] Received response 'textDocument/documentLink - (25)' in 13ms.
Result: [{"range":{"start":{"line":3,"character":2},"end":{"line":3,"character":9}},"target":"https://pkg.go.dev/context"},{"range":{"start":{"line":4,"character":2},"end":{"line":4,"character":5}},"target":"https://pkg.go.dev/fmt"},{"range":{"start":{"line":5,"character":2},"end":{"line":5,"character":11}},"target":"https://pkg.go.dev/io/ioutil"},{"range":{"start":{"line":6,"character":2},"end":{"line":6,"character":5}},"target":"https://pkg.go.dev/log"},{"range":{"start":{"line":7,"character":2},"end":{"line":7,"character":9}},"target":"https://pkg.go.dev/net/url"},{"range":{"start":{"line":8,"character":2},"end":{"line":8,"character":4}},"target":"https://pkg.go.dev/os"},{"range":{"start":{"line":9,"character":2},"end":{"line":9,"character":9}},"target":"https://pkg.go.dev/reflect"},{"range":{"start":{"line":10,"character":2},"end":{"line":10,"character":6}},"target":"https://pkg.go.dev/sort"},{"range":{"start":{"line":11,"character":2},"end":{"line":11,"character":9}},"target":"https://pkg.go.dev/strings"},{"range":{"start":{"line":13,"character":2},"end":{"line":13,"character":76}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/compute/mgmt/2020-06-01/compute"},{"range":{"start":{"line":14,"character":2},"end":{"line":14,"character":94}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/containerservice/mgmt/2020-02-01/containerservice"},{"range":{"start":{"line":15,"character":9},"end":{"line":15,"character":65}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/keyvault/auth"},{"range":{"start":{"line":16,"character":2},"end":{"line":16,"character":67}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/keyvault/v7.0/keyvault"},{"range":{"start":{"line":17,"character":2},"end":{"line":17,"character":76}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/network/mgmt/2019-09-01/network"},{"range":{"start":{"line":18,"character":2},"end":{"line":18,"character":82}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/postgresql/mgmt/2017-12-01/postgresql"},{"range":{"start":{"line":19,"character":2},"end":{"line":19,"character":76}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/storage/mgmt/2019-06-01/storage"},{"range":{"start":{"line":20,"character":2},"end":{"line":20,"character":47}},"target":"https://pkg.go.dev/github.com/Azure/azure-storage-file-go@v0.6.0/azfile"},{"range":{"start":{"line":21,"character":2},"end":{"line":21,"character":39}},"target":"https://pkg.go.dev/github.com/Azure/go-autorest/autorest@v0.10.0"},{"range":{"start":{"line":22,"character":2},"end":{"line":22,"character":50}},"target":"https://pkg.go.dev/github.com/Azure/go-autorest/autorest/azure/auth@v0.4.2"},{"range":{"start":{"line":284,"character":8},"end":{"line":284,"character":80}},"target":"https://foo.vault.azure.net/secrets/BAR/194bd7da9aa54944ab316faebd9120d0"}]


[Trace - 21:24:51.329 PM] Received response 'textDocument/codeAction - (26)' in 19ms.
Result: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"documentChanges":[{"textDocument":{"version":1,"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"},"edits":[{"range":{"start":{"line":0,"character":14},"end":{"line":0,"character":15}},"newText":""},{"range":{"start":{"line":1,"character":0},"end":{"line":1,"character":1}},"newText":""},{"range":{"start":{"line":2,"character":8},"end":{"line":2,"character":9}},"newText":""},{"range":{"start":{"line":3,"character":10},"end":{"line":3,"character":11}},"newText":""},{"range":{"start":{"line":4,"character":6},"end":{"line":4,"character":7}},"newText":""},{"range":{"start":{"line":5,"character":12},"end":{"line":5,"character":13}},"newText":""},{"range":{"start":{"line":6,"character":6},"end":{"line":6,"character":7}},"newText":""},{"range":{"start":{"line":7,"character":10},"end":{"line":7,"character":11}},"newText":""},{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":""},{"range":{"start":{"line":9,"character":10},"end":{"line":9,"character":11}},"newText":""},{"range":{"start":{"line":10,"character":7},"end":{"line":10,"character":8}},"newText":""},{"range":{"start":{"line":11,"character":10},"end":{"line":11,"character":11}},"newText":""},{"range":{"start":{"line":12,"character":0},"end":{"line":12,"character":1}},"newText":""},{"range":{"start":{"line":13,"character":77},"end":{"line":13,"character":78}},"newText":""},{"range":{"start":{"line":14,"character":95},"end":{"line":14,"character":96}},"newText":""},{"range":{"start":{"line":15,"character":66},"end":{"line":15,"character":67}},"newText":""},{"range":{"start":{"line":16,"character":68},"end":{"line":16,"character":69}},"newText":""},{"range":{"start":{"line":17,"character":77},"end":{"line":17,"character":78}},"newText":""},{"range":{"start":{"line":18,"character":83},"end":{"line":18,"character":84}},"newText":""},{"range":{"start":{"line":19,"character":77},"end":{"line":19,"character":78}},"newText":""},{"range":{"start":{"line":20,"character":48},"end":{"line":20,"character":49}},"newText":""},{"range":{"start":{"line":21,"character":40},"end":{"line":21,"character":41}},"newText":""},{"range":{"start":{"line":22,"character":51},"end":{"line":22,"character":52}},"newText":""}]}]}}]


[Trace - 21:24:51.330 PM] Received response 'textDocument/documentSymbol - (27)' in 18ms.
Result: [{"name":"SubscriptionIDEnvName","detail":"untyped string","kind":14,"range":{"start":{"line":25,"character":0},"end":{"line":28,"character":1}},"selectionRange":{"start":{"line":27,"character":1},"end":{"line":27,"character":22}}},{"name":"GetNetworkInterfaceE","detail":"(resourceGroupName string, nicName string)","kind":12,"range":{"start":{"line":31,"character":0},"end":{"line":43,"character":1}},"selectionRange":{"start":{"line":31,"character":5},"end":{"line":31,"character":25}}},{"name":"GetNetworkInterfaceClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":46,"character":0},"end":{"line":56,"character":1}},"selectionRange":{"start":{"line":46,"character":5},"end":{"line":46,"character":30}}},{"name":"GetVirtualMachinesE","detail":"(resourceGroupName string)","kind":12,"range":{"start":{"line":59,"character":0},"end":{"line":77,"character":1}},"selectionRange":{"start":{"line":59,"character":5},"end":{"line":59,"character":24}}},{"name":"GetVirtualMachinesClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":80,"character":0},"end":{"line":90,"character":1}},"selectionRange":{"start":{"line":80,"character":5},"end":{"line":80,"character":29}}},{"name":"GetAllSubClientsE","detail":"(resourceGroupName string, virtualNetworkName string)","kind":12,"range":{"start":{"line":93,"character":0},"end":{"line":112,"character":1}},"selectionRange":{"start":{"line":93,"character":5},"end":{"line":93,"character":22}}},{"name":"GetSubNetClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":115,"character":0},"end":{"line":125,"character":1}},"selectionRange":{"start":{"line":115,"character":5},"end":{"line":115,"character":20}}},{"name":"GetVirtualNetworkE","detail":"(resourceGroupName string, virtualNetworkName string)","kind":12,"range":{"start":{"line":128,"character":0},"end":{"line":139,"character":1}},"selectionRange":{"start":{"line":128,"character":5},"end":{"line":128,"character":23}}},{"name":"GetVirtualNetworksClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":142,"character":0},"end":{"line":152,"character":1}},"selectionRange":{"start":{"line":142,"character":5},"end":{"line":142,"character":29}}},{"name":"GetStorageAccountClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":155,"character":0},"end":{"line":163,"character":1}},"selectionRange":{"start":{"line":155,"character":5},"end":{"line":155,"character":28}}},{"name":"GetStorageAccountProperty","detail":"(resourceGroupName string, storageAccountName string)","kind":12,"range":{"start":{"line":166,"character":0},"end":{"line":176,"character":1}},"selectionRange":{"start":{"line":166,"character":5},"end":{"line":166,"character":30}}},{"name":"GetBlobContainersClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":179,"character":0},"end":{"line":188,"character":1}},"selectionRange":{"start":{"line":179,"character":5},"end":{"line":179,"character":28}}},{"name":"GetBlobContainer","detail":"(resourceGroupName string, storageAccountName string, containerName string)","kind":12,"range":{"start":{"line":191,"character":0},"end":{"line":201,"character":1}},"selectionRange":{"start":{"line":191,"character":5},"end":{"line":191,"character":21}}},{"name":"AzureFileShareClient","detail":"struct{...}","kind":23,"range":{"start":{"line":204,"character":5},"end":{"line":208,"character":1}},"selectionRange":{"start":{"line":204,"character":5},"end":{"line":204,"character":25}},"children":[{"name":"Credential","detail":"*azfile.SharedKeyCredential","kind":8,"range":{"start":{"line":205,"character":1},"end":{"line":205,"character":47}},"selectionRange":{"start":{"line":205,"character":1},"end":{"line":205,"character":11}}},{"name":"StorageAccountName","detail":"string","kind":8,"range":{"start":{"line":206,"character":1},"end":{"line":206,"character":26}},"selectionRange":{"start":{"line":206,"character":1},"end":{"line":206,"character":19}}},{"name":"FileShareName","detail":"string","kind":8,"range":{"start":{"line":207,"character":1},"end":{"line":207,"character":26}},"selectionRange":{"start":{"line":207,"character":1},"end":{"line":207,"character":14}}}]},{"name":"GetAzureFileShareClientE","detail":"(accountName string, fileShare string, accountKey string)","kind":12,"range":{"start":{"line":211,"character":0},"end":{"line":221,"character":1}},"selectionRange":{"start":{"line":211,"character":5},"end":{"line":211,"character":29}}},{"name":"(*AzureFileShareClient).getAzureFileURL","detail":"(azureFileName string)","kind":6,"range":{"start":{"line":223,"character":0},"end":{"line":226,"character":1}},"selectionRange":{"start":{"line":223,"character":31},"end":{"line":223,"character":46}}},{"name":"(*AzureFileShareClient).DownloadAzureFileToFile","detail":"(azureFileName string, localFileName string)","kind":6,"range":{"start":{"line":229,"character":0},"end":{"line":251,"character":1}},"selectionRange":{"start":{"line":229,"character":31},"end":{"line":229,"character":54}}},{"name":"GetStorageAccountCredentialE","detail":"(accountName string, accountKey string)","kind":12,"range":{"start":{"line":254,"character":0},"end":{"line":256,"character":1}},"selectionRange":{"start":{"line":254,"character":5},"end":{"line":254,"character":33}}},{"name":"NewAuthorizer","detail":"()","kind":12,"range":{"start":{"line":259,"character":0},"end":{"line":262,"character":1}},"selectionRange":{"start":{"line":259,"character":5},"end":{"line":259,"character":18}}},{"name":"NewKeyVaultAuthorizer","detail":"()","kind":12,"range":{"start":{"line":265,"character":0},"end":{"line":268,"character":1}},"selectionRange":{"start":{"line":265,"character":5},"end":{"line":265,"character":26}}},{"name":"GetKeyVaultClient","detail":"()","kind":12,"range":{"start":{"line":271,"character":0},"end":{"line":281,"character":1}},"selectionRange":{"start":{"line":271,"character":5},"end":{"line":271,"character":22}}},{"name":"GetKeyVaultSecretCurrentVersion","detail":"(keyVaultName string, secretName string)","kind":12,"range":{"start":{"line":285,"character":0},"end":{"line":304,"character":1}},"selectionRange":{"start":{"line":285,"character":5},"end":{"line":285,"character":36}}},{"name":"GetSecret","detail":"(keyVaultName string, secretName string, version string)","kind":12,"range":{"start":{"line":307,"character":0},"end":{"line":317,"character":1}},"selectionRange":{"start":{"line":307,"character":5},"end":{"line":307,"character":14}}},{"name":"GetCurrentSecret","detail":"(keyVaultName string, secretName string)","kind":12,"range":{"start":{"line":320,"character":0},"end":{"line":330,"character":1}},"selectionRange":{"start":{"line":320,"character":5},"end":{"line":320,"character":21}}},{"name":"FetchKeyVaultSecretE","detail":"(s interface{})","kind":12,"range":{"start":{"line":333,"character":0},"end":{"line":356,"character":1}},"selectionRange":{"start":{"line":333,"character":5},"end":{"line":333,"character":25}}},{"name":"getKeyVaultName","detail":"(s interface{})","kind":12,"range":{"start":{"line":358,"character":0},"end":{"line":375,"character":1}},"selectionRange":{"start":{"line":358,"character":5},"end":{"line":358,"character":20}}},{"name":"GetPostgreSQLServersClient","detail":"()","kind":12,"range":{"start":{"line":378,"character":0},"end":{"line":383,"character":1}},"selectionRange":{"start":{"line":378,"character":5},"end":{"line":378,"character":31}}},{"name":"FetchDatabaseServerNameE","detail":"(serverNamePrefix string)","kind":12,"range":{"start":{"line":387,"character":0},"end":{"line":414,"character":1}},"selectionRange":{"start":{"line":387,"character":5},"end":{"line":387,"character":29}}},{"name":"GetApplicationGatewayE","detail":"(resourceGroupName string, applicationGatewayName string)","kind":12,"range":{"start":{"line":417,"character":0},"end":{"line":427,"character":1}},"selectionRange":{"start":{"line":417,"character":5},"end":{"line":417,"character":27}}},{"name":"GetPublicIPAddressE","detail":"(resourceGroupName string, publicIPAddressName string)","kind":12,"range":{"start":{"line":430,"character":0},"end":{"line":440,"character":1}},"selectionRange":{"start":{"line":430,"character":5},"end":{"line":430,"character":24}}},{"name":"GetApplicationGatewayClientE","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":443,"character":0},"end":{"line":451,"character":1}},"selectionRange":{"start":{"line":443,"character":5},"end":{"line":443,"character":33}}},{"name":"GetPublicIPAddressClientE","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":454,"character":0},"end":{"line":462,"character":1}},"selectionRange":{"start":{"line":454,"character":5},"end":{"line":454,"character":30}}},{"name":"GetClusterAdminCredentialsE","detail":"(resourceGroupName string, clusterName string)","kind":12,"range":{"start":{"line":465,"character":0},"end":{"line":476,"character":1}},"selectionRange":{"start":{"line":465,"character":5},"end":{"line":465,"character":32}}},{"name":"WriteKubeconfigFromCredentialsE","detail":"(credentialResults *containerservice.CredentialResults, filePath string)","kind":12,"range":{"start":{"line":479,"character":0},"end":{"line":482,"character":1}},"selectionRange":{"start":{"line":479,"character":5},"end":{"line":479,"character":36}}},{"name":"GetManagedClusterE","detail":"(resourceGroupName string, clusterName string)","kind":12,"range":{"start":{"line":485,"character":0},"end":{"line":495,"character":1}},"selectionRange":{"start":{"line":485,"character":5},"end":{"line":485,"character":23}}},{"name":"GetManagedClustersClientE","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":498,"character":0},"end":{"line":506,"character":1}},"selectionRange":{"start":{"line":498,"character":5},"end":{"line":498,"character":30}}}]


[Trace - 21:24:51.428 PM] Sending request 'textDocument/documentSymbol - (28)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"}}


[Trace - 21:24:51.428 PM] Sending notification '$/cancelRequest'.
Params: {"id":28}


[Trace - 21:24:51.429 PM] Sending request 'textDocument/documentSymbol - (29)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"}}


[Error - Received] 21:24:51.429 PM golang/vscode-go#28 JSON RPC cancelled


[Trace - 21:24:51.429 PM] Received response 'textDocument/documentSymbol - (29)' in 0ms.
Result: [{"name":"SubscriptionIDEnvName","detail":"untyped string","kind":14,"range":{"start":{"line":25,"character":0},"end":{"line":28,"character":1}},"selectionRange":{"start":{"line":27,"character":1},"end":{"line":27,"character":22}}},{"name":"GetNetworkInterfaceE","detail":"(resourceGroupName string, nicName string)","kind":12,"range":{"start":{"line":31,"character":0},"end":{"line":43,"character":1}},"selectionRange":{"start":{"line":31,"character":5},"end":{"line":31,"character":25}}},{"name":"GetNetworkInterfaceClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":46,"character":0},"end":{"line":56,"character":1}},"selectionRange":{"start":{"line":46,"character":5},"end":{"line":46,"character":30}}},{"name":"GetVirtualMachinesE","detail":"(resourceGroupName string)","kind":12,"range":{"start":{"line":59,"character":0},"end":{"line":77,"character":1}},"selectionRange":{"start":{"line":59,"character":5},"end":{"line":59,"character":24}}},{"name":"GetVirtualMachinesClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":80,"character":0},"end":{"line":90,"character":1}},"selectionRange":{"start":{"line":80,"character":5},"end":{"line":80,"character":29}}},{"name":"GetAllSubClientsE","detail":"(resourceGroupName string, virtualNetworkName string)","kind":12,"range":{"start":{"line":93,"character":0},"end":{"line":112,"character":1}},"selectionRange":{"start":{"line":93,"character":5},"end":{"line":93,"character":22}}},{"name":"GetSubNetClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":115,"character":0},"end":{"line":125,"character":1}},"selectionRange":{"start":{"line":115,"character":5},"end":{"line":115,"character":20}}},{"name":"GetVirtualNetworkE","detail":"(resourceGroupName string, virtualNetworkName string)","kind":12,"range":{"start":{"line":128,"character":0},"end":{"line":139,"character":1}},"selectionRange":{"start":{"line":128,"character":5},"end":{"line":128,"character":23}}},{"name":"GetVirtualNetworksClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":142,"character":0},"end":{"line":152,"character":1}},"selectionRange":{"start":{"line":142,"character":5},"end":{"line":142,"character":29}}},{"name":"GetStorageAccountClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":155,"character":0},"end":{"line":163,"character":1}},"selectionRange":{"start":{"line":155,"character":5},"end":{"line":155,"character":28}}},{"name":"GetStorageAccountProperty","detail":"(resourceGroupName string, storageAccountName string)","kind":12,"range":{"start":{"line":166,"character":0},"end":{"line":176,"character":1}},"selectionRange":{"start":{"line":166,"character":5},"end":{"line":166,"character":30}}},{"name":"GetBlobContainersClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":179,"character":0},"end":{"line":188,"character":1}},"selectionRange":{"start":{"line":179,"character":5},"end":{"line":179,"character":28}}},{"name":"GetBlobContainer","detail":"(resourceGroupName string, storageAccountName string, containerName string)","kind":12,"range":{"start":{"line":191,"character":0},"end":{"line":201,"character":1}},"selectionRange":{"start":{"line":191,"character":5},"end":{"line":191,"character":21}}},{"name":"AzureFileShareClient","detail":"struct{...}","kind":23,"range":{"start":{"line":204,"character":5},"end":{"line":208,"character":1}},"selectionRange":{"start":{"line":204,"character":5},"end":{"line":204,"character":25}},"children":[{"name":"Credential","detail":"*azfile.SharedKeyCredential","kind":8,"range":{"start":{"line":205,"character":1},"end":{"line":205,"character":47}},"selectionRange":{"start":{"line":205,"character":1},"end":{"line":205,"character":11}}},{"name":"StorageAccountName","detail":"string","kind":8,"range":{"start":{"line":206,"character":1},"end":{"line":206,"character":26}},"selectionRange":{"start":{"line":206,"character":1},"end":{"line":206,"character":19}}},{"name":"FileShareName","detail":"string","kind":8,"range":{"start":{"line":207,"character":1},"end":{"line":207,"character":26}},"selectionRange":{"start":{"line":207,"character":1},"end":{"line":207,"character":14}}}]},{"name":"GetAzureFileShareClientE","detail":"(accountName string, fileShare string, accountKey string)","kind":12,"range":{"start":{"line":211,"character":0},"end":{"line":221,"character":1}},"selectionRange":{"start":{"line":211,"character":5},"end":{"line":211,"character":29}}},{"name":"(*AzureFileShareClient).getAzureFileURL","detail":"(azureFileName string)","kind":6,"range":{"start":{"line":223,"character":0},"end":{"line":226,"character":1}},"selectionRange":{"start":{"line":223,"character":31},"end":{"line":223,"character":46}}},{"name":"(*AzureFileShareClient).DownloadAzureFileToFile","detail":"(azureFileName string, localFileName string)","kind":6,"range":{"start":{"line":229,"character":0},"end":{"line":251,"character":1}},"selectionRange":{"start":{"line":229,"character":31},"end":{"line":229,"character":54}}},{"name":"GetStorageAccountCredentialE","detail":"(accountName string, accountKey string)","kind":12,"range":{"start":{"line":254,"character":0},"end":{"line":256,"character":1}},"selectionRange":{"start":{"line":254,"character":5},"end":{"line":254,"character":33}}},{"name":"NewAuthorizer","detail":"()","kind":12,"range":{"start":{"line":259,"character":0},"end":{"line":262,"character":1}},"selectionRange":{"start":{"line":259,"character":5},"end":{"line":259,"character":18}}},{"name":"NewKeyVaultAuthorizer","detail":"()","kind":12,"range":{"start":{"line":265,"character":0},"end":{"line":268,"character":1}},"selectionRange":{"start":{"line":265,"character":5},"end":{"line":265,"character":26}}},{"name":"GetKeyVaultClient","detail":"()","kind":12,"range":{"start":{"line":271,"character":0},"end":{"line":281,"character":1}},"selectionRange":{"start":{"line":271,"character":5},"end":{"line":271,"character":22}}},{"name":"GetKeyVaultSecretCurrentVersion","detail":"(keyVaultName string, secretName string)","kind":12,"range":{"start":{"line":285,"character":0},"end":{"line":304,"character":1}},"selectionRange":{"start":{"line":285,"character":5},"end":{"line":285,"character":36}}},{"name":"GetSecret","detail":"(keyVaultName string, secretName string, version string)","kind":12,"range":{"start":{"line":307,"character":0},"end":{"line":317,"character":1}},"selectionRange":{"start":{"line":307,"character":5},"end":{"line":307,"character":14}}},{"name":"GetCurrentSecret","detail":"(keyVaultName string, secretName string)","kind":12,"range":{"start":{"line":320,"character":0},"end":{"line":330,"character":1}},"selectionRange":{"start":{"line":320,"character":5},"end":{"line":320,"character":21}}},{"name":"FetchKeyVaultSecretE","detail":"(s interface{})","kind":12,"range":{"start":{"line":333,"character":0},"end":{"line":356,"character":1}},"selectionRange":{"start":{"line":333,"character":5},"end":{"line":333,"character":25}}},{"name":"getKeyVaultName","detail":"(s interface{})","kind":12,"range":{"start":{"line":358,"character":0},"end":{"line":375,"character":1}},"selectionRange":{"start":{"line":358,"character":5},"end":{"line":358,"character":20}}},{"name":"GetPostgreSQLServersClient","detail":"()","kind":12,"range":{"start":{"line":378,"character":0},"end":{"line":383,"character":1}},"selectionRange":{"start":{"line":378,"character":5},"end":{"line":378,"character":31}}},{"name":"FetchDatabaseServerNameE","detail":"(serverNamePrefix string)","kind":12,"range":{"start":{"line":387,"character":0},"end":{"line":414,"character":1}},"selectionRange":{"start":{"line":387,"character":5},"end":{"line":387,"character":29}}},{"name":"GetApplicationGatewayE","detail":"(resourceGroupName string, applicationGatewayName string)","kind":12,"range":{"start":{"line":417,"character":0},"end":{"line":427,"character":1}},"selectionRange":{"start":{"line":417,"character":5},"end":{"line":417,"character":27}}},{"name":"GetPublicIPAddressE","detail":"(resourceGroupName string, publicIPAddressName string)","kind":12,"range":{"start":{"line":430,"character":0},"end":{"line":440,"character":1}},"selectionRange":{"start":{"line":430,"character":5},"end":{"line":430,"character":24}}},{"name":"GetApplicationGatewayClientE","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":443,"character":0},"end":{"line":451,"character":1}},"selectionRange":{"start":{"line":443,"character":5},"end":{"line":443,"character":33}}},{"name":"GetPublicIPAddressClientE","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":454,"character":0},"end":{"line":462,"character":1}},"selectionRange":{"start":{"line":454,"character":5},"end":{"line":454,"character":30}}},{"name":"GetClusterAdminCredentialsE","detail":"(resourceGroupName string, clusterName string)","kind":12,"range":{"start":{"line":465,"character":0},"end":{"line":476,"character":1}},"selectionRange":{"start":{"line":465,"character":5},"end":{"line":465,"character":32}}},{"name":"WriteKubeconfigFromCredentialsE","detail":"(credentialResults *containerservice.CredentialResults, filePath string)","kind":12,"range":{"start":{"line":479,"character":0},"end":{"line":482,"character":1}},"selectionRange":{"start":{"line":479,"character":5},"end":{"line":479,"character":36}}},{"name":"GetManagedClusterE","detail":"(resourceGroupName string, clusterName string)","kind":12,"range":{"start":{"line":485,"character":0},"end":{"line":495,"character":1}},"selectionRange":{"start":{"line":485,"character":5},"end":{"line":485,"character":23}}},{"name":"GetManagedClustersClientE","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":498,"character":0},"end":{"line":506,"character":1}},"selectionRange":{"start":{"line":498,"character":5},"end":{"line":498,"character":30}}}]


[Trace - 21:24:51.479 PM] Sending request 'textDocument/foldingRange - (30)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"}}


[Trace - 21:24:51.484 PM] Received response 'textDocument/foldingRange - (30)' in 4ms.
Result: [{"startLine":2,"startCharacter":8,"endLine":22,"endCharacter":51,"kind":"imports"},{"startLine":25,"startCharacter":7,"endLine":27,"endCharacter":46},{"startLine":31,"startCharacter":97,"endLine":42,"endCharacter":17},{"startLine":33,"startCharacter":16,"endLine":34,"endCharacter":17},{"startLine":38,"startCharacter":16,"endLine":39,"endCharacter":17},{"startLine":46,"startCharacter":90,"endLine":55,"endCharacter":23},{"startLine":50,"startCharacter":16,"endLine":51,"endCharacter":17},{"startLine":59,"startCharacter":106,"endLine":76,"endCharacter":23},{"startLine":61,"startCharacter":16,"endLine":62,"endCharacter":17},{"startLine":66,"startCharacter":16,"endLine":67,"endCharacter":17},{"startLine":71,"startCharacter":33,"endLine":74,"endCharacter":41},{"startLine":80,"startCharacter":94,"endLine":89,"endCharacter":22},{"startLine":84,"startCharacter":16,"endLine":85,"endCharacter":17},{"startLine":93,"startCharacter":98,"endLine":111,"endCharacter":27},{"startLine":95,"startCharacter":16,"endLine":96,"endCharacter":17},{"startLine":100,"startCharacter":16,"endLine":101,"endCharacter":17},{"startLine":105,"startCharacter":37,"endLine":109,"endCharacter":51},{"startLine":115,"startCharacter":77,"endLine":124,"endCharacter":26},{"startLine":119,"startCharacter":16,"endLine":120,"endCharacter":17},{"startLine":128,"startCharacter":104,"endLine":138,"endCharacter":28},{"startLine":131,"startCharacter":16,"endLine":132,"endCharacter":17},{"startLine":135,"startCharacter":16,"endLine":136,"endCharacter":17},{"startLine":142,"startCharacter":94,"endLine":151,"endCharacter":22},{"startLine":146,"startCharacter":16,"endLine":147,"endCharacter":17},{"startLine":155,"startCharacter":86,"endLine":162,"endCharacter":34},{"startLine":158,"startCharacter":16,"endLine":159,"endCharacter":17},{"startLine":166,"startCharacter":104,"endLine":175,"endCharacter":21},{"startLine":168,"startCharacter":16,"endLine":169,"endCharacter":17},{"startLine":172,"startCharacter":16,"endLine":173,"endCharacter":17},{"startLine":179,"startCharacter":92,"endLine":187,"endCharacter":33},{"startLine":183,"startCharacter":16,"endLine":184,"endCharacter":17},{"startLine":191,"startCharacter":116,"endLine":200,"endCharacter":23},{"startLine":193,"startCharacter":16,"endLine":194,"endCharacter":17},{"startLine":197,"startCharacter":16,"endLine":198,"endCharacter":17},{"startLine":204,"startCharacter":34,"endLine":207,"endCharacter":26},{"startLine":211,"startCharacter":105,"endLine":220,"endCharacter":7},{"startLine":213,"startCharacter":16,"endLine":214,"endCharacter":17},{"startLine":216,"startCharacter":30,"endLine":219,"endCharacter":31},{"startLine":223,"startCharacter":85,"endLine":225,"endCharacter":91},{"startLine":229,"startCharacter":99,"endLine":250,"endCharacter":11},{"startLine":232,"startCharacter":16,"endLine":233,"endCharacter":12},{"startLine":237,"startCharacter":38,"endLine":242,"endCharacter":4},{"startLine":240,"startCharacter":43,"endLine":241,"endCharacter":58},{"startLine":244,"startCharacter":16,"endLine":245,"endCharacter":12},{"startLine":254,"startCharacter":104,"endLine":255,"endCharacter":62},{"startLine":259,"startCharacter":52,"endLine":261,"endCharacter":24},{"startLine":265,"startCharacter":60,"endLine":267,"endCharacter":24},{"startLine":271,"startCharacter":56,"endLine":280,"endCharacter":22},{"startLine":275,"startCharacter":16,"endLine":276,"endCharacter":17},{"startLine":283,"startCharacter":75,"endLine":284,"endCharacter":116,"kind":"comment"},{"startLine":285,"startCharacter":87,"endLine":303,"endCharacter":61},{"startLine":287,"startCharacter":16,"endLine":288,"endCharacter":16},{"startLine":295,"startCharacter":16,"endLine":296,"endCharacter":16},{"startLine":299,"startCharacter":40,"endLine":300,"endCharacter":124},{"startLine":307,"startCharacter":74,"endLine":316,"endCharacter":26},{"startLine":309,"startCharacter":16,"endLine":310,"endCharacter":16},{"startLine":313,"startCharacter":16,"endLine":314,"endCharacter":16},{"startLine":320,"startCharacter":72,"endLine":329,"endCharacter":19},{"startLine":322,"startCharacter":16,"endLine":323,"endCharacter":16},{"startLine":326,"startCharacter":16,"endLine":327,"endCharacter":16},{"startLine":333,"startCharacter":63,"endLine":355,"endCharacter":14},{"startLine":335,"startCharacter":16,"endLine":336,"endCharacter":17},{"startLine":340,"startCharacter":41,"endLine":352,"endCharacter":3},{"startLine":342,"startCharacter":36,"endLine":351,"endCharacter":4},{"startLine":344,"startCharacter":48,"endLine":350,"endCharacter":37},{"startLine":347,"startCharacter":19,"endLine":348,"endCharacter":20},{"startLine":358,"startCharacter":53,"endLine":374,"endCharacter":81},{"startLine":361,"startCharacter":41,"endLine":372,"endCharacter":3},{"startLine":363,"startCharacter":44,"endLine":371,"endCharacter":4},{"startLine":364,"startCharacter":48,"endLine":370,"endCharacter":40},{"startLine":367,"startCharacter":25,"endLine":368,"endCharacter":131},{"startLine":378,"startCharacter":70,"endLine":382,"endCharacter":20},{"startLine":385,"startCharacter":92,"endLine":386,"endCharacter":102,"kind":"comment"},{"startLine":387,"startCharacter":72,"endLine":413,"endCharacter":28},{"startLine":389,"startCharacter":16,"endLine":390,"endCharacter":16},{"startLine":393,"startCharacter":16,"endLine":394,"endCharacter":16},{"startLine":399,"startCharacter":34,"endLine":402,"endCharacter":3},{"startLine":400,"startCharacter":53,"endLine":401,"endCharacter":47},{"startLine":405,"startCharacter":28,"endLine":406,"endCharacter":95},{"startLine":408,"startCharacter":28,"endLine":411,"endCharacter":3},{"startLine":409,"startCharacter":41,"endLine":410,"endCharacter":130},{"startLine":417,"startCharacter":116,"endLine":426,"endCharacter":32},{"startLine":419,"startCharacter":16,"endLine":420,"endCharacter":17},{"startLine":423,"startCharacter":16,"endLine":424,"endCharacter":17},{"startLine":430,"startCharacter":107,"endLine":439,"endCharacter":29},{"startLine":432,"startCharacter":16,"endLine":433,"endCharacter":17},{"startLine":436,"startCharacter":16,"endLine":437,"endCharacter":17},{"startLine":443,"startCharacter":102,"endLine":450,"endCharacter":20},{"startLine":446,"startCharacter":16,"endLine":447,"endCharacter":17},{"startLine":454,"startCharacter":97,"endLine":461,"endCharacter":20},{"startLine":457,"startCharacter":16,"endLine":458,"endCharacter":17},{"startLine":465,"startCharacter":118,"endLine":475,"endCharacter":25},{"startLine":467,"startCharacter":16,"endLine":468,"endCharacter":17},{"startLine":472,"startCharacter":16,"endLine":473,"endCharacter":17},{"startLine":479,"startCharacter":116,"endLine":481,"endCharacter":59},{"startLine":485,"startCharacter":106,"endLine":494,"endCharacter":28},{"startLine":487,"startCharacter":16,"endLine":488,"endCharacter":17},{"startLine":491,"startCharacter":16,"endLine":492,"endCharacter":17},{"startLine":498,"startCharacter":104,"endLine":505,"endCharacter":20},{"startLine":501,"startCharacter":16,"endLine":502,"endCharacter":17}]


[Trace - 21:24:51.530 PM] Sending request 'textDocument/codeLens - (31)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"}}


[Trace - 21:24:51.530 PM] Received response 'textDocument/codeLens - (31)' in 0ms.
Result: null


[Trace - 21:24:51.532 PM] Sending request 'textDocument/codeAction - (32)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"},"range":{"start":{"line":142,"character":5},"end":{"line":142,"character":5}},"context":{"diagnostics":[]}}


[Trace - 21:24:51.538 PM] Received response 'textDocument/codeAction - (32)' in 6ms.
Result: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"documentChanges":[{"textDocument":{"version":1,"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"},"edits":[{"range":{"start":{"line":0,"character":14},"end":{"line":0,"character":15}},"newText":""},{"range":{"start":{"line":1,"character":0},"end":{"line":1,"character":1}},"newText":""},{"range":{"start":{"line":2,"character":8},"end":{"line":2,"character":9}},"newText":""},{"range":{"start":{"line":3,"character":10},"end":{"line":3,"character":11}},"newText":""},{"range":{"start":{"line":4,"character":6},"end":{"line":4,"character":7}},"newText":""},{"range":{"start":{"line":5,"character":12},"end":{"line":5,"character":13}},"newText":""},{"range":{"start":{"line":6,"character":6},"end":{"line":6,"character":7}},"newText":""},{"range":{"start":{"line":7,"character":10},"end":{"line":7,"character":11}},"newText":""},{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":""},{"range":{"start":{"line":9,"character":10},"end":{"line":9,"character":11}},"newText":""},{"range":{"start":{"line":10,"character":7},"end":{"line":10,"character":8}},"newText":""},{"range":{"start":{"line":11,"character":10},"end":{"line":11,"character":11}},"newText":""},{"range":{"start":{"line":12,"character":0},"end":{"line":12,"character":1}},"newText":""},{"range":{"start":{"line":13,"character":77},"end":{"line":13,"character":78}},"newText":""},{"range":{"start":{"line":14,"character":95},"end":{"line":14,"character":96}},"newText":""},{"range":{"start":{"line":15,"character":66},"end":{"line":15,"character":67}},"newText":""},{"range":{"start":{"line":16,"character":68},"end":{"line":16,"character":69}},"newText":""},{"range":{"start":{"line":17,"character":77},"end":{"line":17,"character":78}},"newText":""},{"range":{"start":{"line":18,"character":83},"end":{"line":18,"character":84}},"newText":""},{"range":{"start":{"line":19,"character":77},"end":{"line":19,"character":78}},"newText":""},{"range":{"start":{"line":20,"character":48},"end":{"line":20,"character":49}},"newText":""},{"range":{"start":{"line":21,"character":40},"end":{"line":21,"character":41}},"newText":""},{"range":{"start":{"line":22,"character":51},"end":{"line":22,"character":52}},"newText":""}]}]}}]


[Trace - 21:24:52.330 PM] Sending request 'textDocument/hover - (33)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"},"position":{"line":141,"character":55}}


[Trace - 21:24:52.330 PM] Received response 'textDocument/hover - (33)' in 0ms.
Result: null


[Trace - 21:24:53.087 PM] Sending request 'textDocument/hover - (34)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"},"position":{"line":143,"character":41}}


[Trace - 21:24:53.089 PM] Received response 'textDocument/hover - (34)' in 2ms.
Result: {"contents":{"kind":"markdown","value":"```go\nfunc network.NewVirtualNetworksClient(subscriptionID string) network.VirtualNetworksClient\n```\n\n[`network.NewVirtualNetworksClient` on pkg.go.dev](https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/network/mgmt/2019-09-01/network#NewVirtualNetworksClient)\n\nNewVirtualNetworksClient creates an instance of the VirtualNetworksClient client\\.\n"},"range":{"start":{"line":143,"character":21},"end":{"line":143,"character":45}}}


[Trace - 21:24:53.707 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:53 background imports cache refresh starting\n"}


[Info  - 9:24:53 PM] 2020/07/15 21:24:53 background imports cache refresh starting

[Trace - 21:24:54.409 PM] Sending request 'textDocument/codeAction - (35)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"},"range":{"start":{"line":143,"character":41},"end":{"line":143,"character":41}},"context":{"diagnostics":[]}}


[Trace - 21:24:54.419 PM] Received response 'textDocument/codeAction - (35)' in 10ms.
Result: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"documentChanges":[{"textDocument":{"version":1,"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"},"edits":[{"range":{"start":{"line":0,"character":14},"end":{"line":0,"character":15}},"newText":""},{"range":{"start":{"line":1,"character":0},"end":{"line":1,"character":1}},"newText":""},{"range":{"start":{"line":2,"character":8},"end":{"line":2,"character":9}},"newText":""},{"range":{"start":{"line":3,"character":10},"end":{"line":3,"character":11}},"newText":""},{"range":{"start":{"line":4,"character":6},"end":{"line":4,"character":7}},"newText":""},{"range":{"start":{"line":5,"character":12},"end":{"line":5,"character":13}},"newText":""},{"range":{"start":{"line":6,"character":6},"end":{"line":6,"character":7}},"newText":""},{"range":{"start":{"line":7,"character":10},"end":{"line":7,"character":11}},"newText":""},{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":""},{"range":{"start":{"line":9,"character":10},"end":{"line":9,"character":11}},"newText":""},{"range":{"start":{"line":10,"character":7},"end":{"line":10,"character":8}},"newText":""},{"range":{"start":{"line":11,"character":10},"end":{"line":11,"character":11}},"newText":""},{"range":{"start":{"line":12,"character":0},"end":{"line":12,"character":1}},"newText":""},{"range":{"start":{"line":13,"character":77},"end":{"line":13,"character":78}},"newText":""},{"range":{"start":{"line":14,"character":95},"end":{"line":14,"character":96}},"newText":""},{"range":{"start":{"line":15,"character":66},"end":{"line":15,"character":67}},"newText":""},{"range":{"start":{"line":16,"character":68},"end":{"line":16,"character":69}},"newText":""},{"range":{"start":{"line":17,"character":77},"end":{"line":17,"character":78}},"newText":""},{"range":{"start":{"line":18,"character":83},"end":{"line":18,"character":84}},"newText":""},{"range":{"start":{"line":19,"character":77},"end":{"line":19,"character":78}},"newText":""},{"range":{"start":{"line":20,"character":48},"end":{"line":20,"character":49}},"newText":""},{"range":{"start":{"line":21,"character":40},"end":{"line":21,"character":41}},"newText":""},{"range":{"start":{"line":22,"character":51},"end":{"line":22,"character":52}},"newText":""}]}]}}]


[Trace - 21:24:54.760 PM] Sending request 'textDocument/definition - (36)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"},"position":{"line":143,"character":41}}


[Trace - 21:24:54.762 PM] Received response 'textDocument/definition - (36)' in 1ms.
Result: [{"uri":"file:///home/mjyeaney/go/pkg/mod/github.com/%21azure/azure-sdk-for-go@v44.1.0+incompatible/services/network/mgmt/2019-09-01/network/virtualnetworks.go","range":{"start":{"line":34,"character":5},"end":{"line":34,"character":29}}}]


[Trace - 21:24:54.918 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///home/mjyeaney/go/pkg/mod/github.com/%21azure/azure-sdk-for-go%40v44.1.0%2Bincompatible/services/network/mgmt/2019-09-01/network/virtualnetworks.go","languageId":"go","version":1,"text":"package network\n\n// Copyright (c) Microsoft and contributors.  All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n//\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//\n// Code generated by Microsoft (R) AutoRest Code Generator.\n// Changes may cause incorrect behavior and will be lost if the code is regenerated.\n\nimport (\n\t\"context\"\n\t\"github.com/Azure/go-autorest/autorest\"\n\t\"github.com/Azure/go-autorest/autorest/azure\"\n\t\"github.com/Azure/go-autorest/autorest/validation\"\n\t\"github.com/Azure/go-autorest/tracing\"\n\t\"net/http\"\n)\n\n// VirtualNetworksClient is the network Client\ntype VirtualNetworksClient struct {\n\tBaseClient\n}\n\n// NewVirtualNetworksClient creates an instance of the VirtualNetworksClient client.\nfunc NewVirtualNetworksClient(subscriptionID string) VirtualNetworksClient {\n\treturn NewVirtualNetworksClientWithBaseURI(DefaultBaseURI, subscriptionID)\n}\n\n// NewVirtualNetworksClientWithBaseURI creates an instance of the VirtualNetworksClient client using a custom endpoint.\n// Use this when interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack).\nfunc NewVirtualNetworksClientWithBaseURI(baseURI string, subscriptionID string) VirtualNetworksClient {\n\treturn VirtualNetworksClient{NewWithBaseURI(baseURI, subscriptionID)}\n}\n\n// CheckIPAddressAvailability checks whether a private IP address is available for use.\n// Parameters:\n// resourceGroupName - the name of the resource group.\n// virtualNetworkName - the name of the virtual network.\n// IPAddress - the private IP address to be verified.\nfunc (client VirtualNetworksClient) CheckIPAddressAvailability(ctx context.Context, resourceGroupName string, virtualNetworkName string, IPAddress string) (result IPAddressAvailabilityResult, err error) {\n\tif tracing.IsEnabled() {\n\t\tctx = tracing.StartSpan(ctx, fqdn+\"/VirtualNetworksClient.CheckIPAddressAvailability\")\n\t\tdefer func() {\n\t\t\tsc := -1\n\t\t\tif result.Response.Response != nil {\n\t\t\t\tsc = result.Response.Response.StatusCode\n\t\t\t}\n\t\t\ttracing.EndSpan(ctx, sc, err)\n\t\t}()\n\t}\n\treq, err := client.CheckIPAddressAvailabilityPreparer(ctx, resourceGroupName, virtualNetworkName, IPAddress)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"CheckIPAddressAvailability\", nil, \"Failure preparing request\")\n\t\treturn\n\t}\n\n\tresp, err := client.CheckIPAddressAvailabilitySender(req)\n\tif err != nil {\n\t\tresult.Response = autorest.Response{Response: resp}\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"CheckIPAddressAvailability\", resp, \"Failure sending request\")\n\t\treturn\n\t}\n\n\tresult, err = client.CheckIPAddressAvailabilityResponder(resp)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"CheckIPAddressAvailability\", resp, \"Failure responding to request\")\n\t}\n\n\treturn\n}\n\n// CheckIPAddressAvailabilityPreparer prepares the CheckIPAddressAvailability request.\nfunc (client VirtualNetworksClient) CheckIPAddressAvailabilityPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, IPAddress string) (*http.Request, error) {\n\tpathParameters := map[string]interface{}{\n\t\t\"resourceGroupName\":  autorest.Encode(\"path\", resourceGroupName),\n\t\t\"subscriptionId\":     autorest.Encode(\"path\", client.SubscriptionID),\n\t\t\"virtualNetworkName\": autorest.Encode(\"path\", virtualNetworkName),\n\t}\n\n\tconst APIVersion = \"2019-09-01\"\n\tqueryParameters := map[string]interface{}{\n\t\t\"api-version\": APIVersion,\n\t\t\"ipAddress\":   autorest.Encode(\"query\", IPAddress),\n\t}\n\n\tpreparer := autorest.CreatePreparer(\n\t\tautorest.AsGet(),\n\t\tautorest.WithBaseURL(client.BaseURI),\n\t\tautorest.WithPathParameters(\"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/CheckIPAddressAvailability\", pathParameters),\n\t\tautorest.WithQueryParameters(queryParameters))\n\treturn preparer.Prepare((&http.Request{}).WithContext(ctx))\n}\n\n// CheckIPAddressAvailabilitySender sends the CheckIPAddressAvailability request. The method will close the\n// http.Response Body if it receives an error.\nfunc (client VirtualNetworksClient) CheckIPAddressAvailabilitySender(req *http.Request) (*http.Response, error) {\n\treturn client.Send(req, azure.DoRetryWithRegistration(client.Client))\n}\n\n// CheckIPAddressAvailabilityResponder handles the response to the CheckIPAddressAvailability request. The method always\n// closes the http.Response Body.\nfunc (client VirtualNetworksClient) CheckIPAddressAvailabilityResponder(resp *http.Response) (result IPAddressAvailabilityResult, err error) {\n\terr = autorest.Respond(\n\t\tresp,\n\t\tazure.WithErrorUnlessStatusCode(http.StatusOK),\n\t\tautorest.ByUnmarshallingJSON(&result),\n\t\tautorest.ByClosing())\n\tresult.Response = autorest.Response{Response: resp}\n\treturn\n}\n\n// CreateOrUpdate creates or updates a virtual network in the specified resource group.\n// Parameters:\n// resourceGroupName - the name of the resource group.\n// virtualNetworkName - the name of the virtual network.\n// parameters - parameters supplied to the create or update virtual network operation.\nfunc (client VirtualNetworksClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters VirtualNetwork) (result VirtualNetworksCreateOrUpdateFuture, err error) {\n\tif tracing.IsEnabled() {\n\t\tctx = tracing.StartSpan(ctx, fqdn+\"/VirtualNetworksClient.CreateOrUpdate\")\n\t\tdefer func() {\n\t\t\tsc := -1\n\t\t\tif result.Response() != nil {\n\t\t\t\tsc = result.Response().StatusCode\n\t\t\t}\n\t\t\ttracing.EndSpan(ctx, sc, err)\n\t\t}()\n\t}\n\tif err := validation.Validate([]validation.Validation{\n\t\t{TargetValue: parameters,\n\t\t\tConstraints: []validation.Constraint{{Target: \"parameters.VirtualNetworkPropertiesFormat\", Name: validation.Null, Rule: false,\n\t\t\t\tChain: []validation.Constraint{{Target: \"parameters.VirtualNetworkPropertiesFormat.BgpCommunities\", Name: validation.Null, Rule: false,\n\t\t\t\t\tChain: []validation.Constraint{{Target: \"parameters.VirtualNetworkPropertiesFormat.BgpCommunities.VirtualNetworkCommunity\", Name: validation.Null, Rule: true, Chain: nil}}},\n\t\t\t\t}}}}}); err != nil {\n\t\treturn result, validation.NewError(\"network.VirtualNetworksClient\", \"CreateOrUpdate\", err.Error())\n\t}\n\n\treq, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, virtualNetworkName, parameters)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"CreateOrUpdate\", nil, \"Failure preparing request\")\n\t\treturn\n\t}\n\n\tresult, err = client.CreateOrUpdateSender(req)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"CreateOrUpdate\", result.Response(), \"Failure sending request\")\n\t\treturn\n\t}\n\n\treturn\n}\n\n// CreateOrUpdatePreparer prepares the CreateOrUpdate request.\nfunc (client VirtualNetworksClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters VirtualNetwork) (*http.Request, error) {\n\tpathParameters := map[string]interface{}{\n\t\t\"resourceGroupName\":  autorest.Encode(\"path\", resourceGroupName),\n\t\t\"subscriptionId\":     autorest.Encode(\"path\", client.SubscriptionID),\n\t\t\"virtualNetworkName\": autorest.Encode(\"path\", virtualNetworkName),\n\t}\n\n\tconst APIVersion = \"2019-09-01\"\n\tqueryParameters := map[string]interface{}{\n\t\t\"api-version\": APIVersion,\n\t}\n\n\tparameters.Etag = nil\n\tpreparer := autorest.CreatePreparer(\n\t\tautorest.AsContentType(\"application/json; charset=utf-8\"),\n\t\tautorest.AsPut(),\n\t\tautorest.WithBaseURL(client.BaseURI),\n\t\tautorest.WithPathParameters(\"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}\", pathParameters),\n\t\tautorest.WithJSON(parameters),\n\t\tautorest.WithQueryParameters(queryParameters))\n\treturn preparer.Prepare((&http.Request{}).WithContext(ctx))\n}\n\n// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the\n// http.Response Body if it receives an error.\nfunc (client VirtualNetworksClient) CreateOrUpdateSender(req *http.Request) (future VirtualNetworksCreateOrUpdateFuture, err error) {\n\tvar resp *http.Response\n\tresp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))\n\tif err != nil {\n\t\treturn\n\t}\n\tfuture.Future, err = azure.NewFutureFromResponse(resp)\n\treturn\n}\n\n// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always\n// closes the http.Response Body.\nfunc (client VirtualNetworksClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualNetwork, err error) {\n\terr = autorest.Respond(\n\t\tresp,\n\t\tazure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),\n\t\tautorest.ByUnmarshallingJSON(&result),\n\t\tautorest.ByClosing())\n\tresult.Response = autorest.Response{Response: resp}\n\treturn\n}\n\n// Delete deletes the specified virtual network.\n// Parameters:\n// resourceGroupName - the name of the resource group.\n// virtualNetworkName - the name of the virtual network.\nfunc (client VirtualNetworksClient) Delete(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworksDeleteFuture, err error) {\n\tif tracing.IsEnabled() {\n\t\tctx = tracing.StartSpan(ctx, fqdn+\"/VirtualNetworksClient.Delete\")\n\t\tdefer func() {\n\t\t\tsc := -1\n\t\t\tif result.Response() != nil {\n\t\t\t\tsc = result.Response().StatusCode\n\t\t\t}\n\t\t\ttracing.EndSpan(ctx, sc, err)\n\t\t}()\n\t}\n\treq, err := client.DeletePreparer(ctx, resourceGroupName, virtualNetworkName)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"Delete\", nil, \"Failure preparing request\")\n\t\treturn\n\t}\n\n\tresult, err = client.DeleteSender(req)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"Delete\", result.Response(), \"Failure sending request\")\n\t\treturn\n\t}\n\n\treturn\n}\n\n// DeletePreparer prepares the Delete request.\nfunc (client VirtualNetworksClient) DeletePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string) (*http.Request, error) {\n\tpathParameters := map[string]interface{}{\n\t\t\"resourceGroupName\":  autorest.Encode(\"path\", resourceGroupName),\n\t\t\"subscriptionId\":     autorest.Encode(\"path\", client.SubscriptionID),\n\t\t\"virtualNetworkName\": autorest.Encode(\"path\", virtualNetworkName),\n\t}\n\n\tconst APIVersion = \"2019-09-01\"\n\tqueryParameters := map[string]interface{}{\n\t\t\"api-version\": APIVersion,\n\t}\n\n\tpreparer := autorest.CreatePreparer(\n\t\tautorest.AsDelete(),\n\t\tautorest.WithBaseURL(client.BaseURI),\n\t\tautorest.WithPathParameters(\"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}\", pathParameters),\n\t\tautorest.WithQueryParameters(queryParameters))\n\treturn preparer.Prepare((&http.Request{}).WithContext(ctx))\n}\n\n// DeleteSender sends the Delete request. The method will close the\n// http.Response Body if it receives an error.\nfunc (client VirtualNetworksClient) DeleteSender(req *http.Request) (future VirtualNetworksDeleteFuture, err error) {\n\tvar resp *http.Response\n\tresp, err = client.Send(req, azure.DoRetryWithRegistration(client.Client))\n\tif err != nil {\n\t\treturn\n\t}\n\tfuture.Future, err = azure.NewFutureFromResponse(resp)\n\treturn\n}\n\n// DeleteResponder handles the response to the Delete request. The method always\n// closes the http.Response Body.\nfunc (client VirtualNetworksClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {\n\terr = autorest.Respond(\n\t\tresp,\n\t\tazure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),\n\t\tautorest.ByClosing())\n\tresult.Response = resp\n\treturn\n}\n\n// Get gets the specified virtual network by resource group.\n// Parameters:\n// resourceGroupName - the name of the resource group.\n// virtualNetworkName - the name of the virtual network.\n// expand - expands referenced resources.\nfunc (client VirtualNetworksClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkName string, expand string) (result VirtualNetwork, err error) {\n\tif tracing.IsEnabled() {\n\t\tctx = tracing.StartSpan(ctx, fqdn+\"/VirtualNetworksClient.Get\")\n\t\tdefer func() {\n\t\t\tsc := -1\n\t\t\tif result.Response.Response != nil {\n\t\t\t\tsc = result.Response.Response.StatusCode\n\t\t\t}\n\t\t\ttracing.EndSpan(ctx, sc, err)\n\t\t}()\n\t}\n\treq, err := client.GetPreparer(ctx, resourceGroupName, virtualNetworkName, expand)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"Get\", nil, \"Failure preparing request\")\n\t\treturn\n\t}\n\n\tresp, err := client.GetSender(req)\n\tif err != nil {\n\t\tresult.Response = autorest.Response{Response: resp}\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"Get\", resp, \"Failure sending request\")\n\t\treturn\n\t}\n\n\tresult, err = client.GetResponder(resp)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"Get\", resp, \"Failure responding to request\")\n\t}\n\n\treturn\n}\n\n// GetPreparer prepares the Get request.\nfunc (client VirtualNetworksClient) GetPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, expand string) (*http.Request, error) {\n\tpathParameters := map[string]interface{}{\n\t\t\"resourceGroupName\":  autorest.Encode(\"path\", resourceGroupName),\n\t\t\"subscriptionId\":     autorest.Encode(\"path\", client.SubscriptionID),\n\t\t\"virtualNetworkName\": autorest.Encode(\"path\", virtualNetworkName),\n\t}\n\n\tconst APIVersion = \"2019-09-01\"\n\tqueryParameters := map[string]interface{}{\n\t\t\"api-version\": APIVersion,\n\t}\n\tif len(expand) > 0 {\n\t\tqueryParameters[\"$expand\"] = autorest.Encode(\"query\", expand)\n\t}\n\n\tpreparer := autorest.CreatePreparer(\n\t\tautorest.AsGet(),\n\t\tautorest.WithBaseURL(client.BaseURI),\n\t\tautorest.WithPathParameters(\"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}\", pathParameters),\n\t\tautorest.WithQueryParameters(queryParameters))\n\treturn preparer.Prepare((&http.Request{}).WithContext(ctx))\n}\n\n// GetSender sends the Get request. The method will close the\n// http.Response Body if it receives an error.\nfunc (client VirtualNetworksClient) GetSender(req *http.Request) (*http.Response, error) {\n\treturn client.Send(req, azure.DoRetryWithRegistration(client.Client))\n}\n\n// GetResponder handles the response to the Get request. The method always\n// closes the http.Response Body.\nfunc (client VirtualNetworksClient) GetResponder(resp *http.Response) (result VirtualNetwork, err error) {\n\terr = autorest.Respond(\n\t\tresp,\n\t\tazure.WithErrorUnlessStatusCode(http.StatusOK),\n\t\tautorest.ByUnmarshallingJSON(&result),\n\t\tautorest.ByClosing())\n\tresult.Response = autorest.Response{Response: resp}\n\treturn\n}\n\n// List gets all virtual networks in a resource group.\n// Parameters:\n// resourceGroupName - the name of the resource group.\nfunc (client VirtualNetworksClient) List(ctx context.Context, resourceGroupName string) (result VirtualNetworkListResultPage, err error) {\n\tif tracing.IsEnabled() {\n\t\tctx = tracing.StartSpan(ctx, fqdn+\"/VirtualNetworksClient.List\")\n\t\tdefer func() {\n\t\t\tsc := -1\n\t\t\tif result.vnlr.Response.Response != nil {\n\t\t\t\tsc = result.vnlr.Response.Response.StatusCode\n\t\t\t}\n\t\t\ttracing.EndSpan(ctx, sc, err)\n\t\t}()\n\t}\n\tresult.fn = client.listNextResults\n\treq, err := client.ListPreparer(ctx, resourceGroupName)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"List\", nil, \"Failure preparing request\")\n\t\treturn\n\t}\n\n\tresp, err := client.ListSender(req)\n\tif err != nil {\n\t\tresult.vnlr.Response = autorest.Response{Response: resp}\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"List\", resp, \"Failure sending request\")\n\t\treturn\n\t}\n\n\tresult.vnlr, err = client.ListResponder(resp)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"List\", resp, \"Failure responding to request\")\n\t}\n\n\treturn\n}\n\n// ListPreparer prepares the List request.\nfunc (client VirtualNetworksClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {\n\tpathParameters := map[string]interface{}{\n\t\t\"resourceGroupName\": autorest.Encode(\"path\", resourceGroupName),\n\t\t\"subscriptionId\":    autorest.Encode(\"path\", client.SubscriptionID),\n\t}\n\n\tconst APIVersion = \"2019-09-01\"\n\tqueryParameters := map[string]interface{}{\n\t\t\"api-version\": APIVersion,\n\t}\n\n\tpreparer := autorest.CreatePreparer(\n\t\tautorest.AsGet(),\n\t\tautorest.WithBaseURL(client.BaseURI),\n\t\tautorest.WithPathParameters(\"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks\", pathParameters),\n\t\tautorest.WithQueryParameters(queryParameters))\n\treturn preparer.Prepare((&http.Request{}).WithContext(ctx))\n}\n\n// ListSender sends the List request. The method will close the\n// http.Response Body if it receives an error.\nfunc (client VirtualNetworksClient) ListSender(req *http.Request) (*http.Response, error) {\n\treturn client.Send(req, azure.DoRetryWithRegistration(client.Client))\n}\n\n// ListResponder handles the response to the List request. The method always\n// closes the http.Response Body.\nfunc (client VirtualNetworksClient) ListResponder(resp *http.Response) (result VirtualNetworkListResult, err error) {\n\terr = autorest.Respond(\n\t\tresp,\n\t\tazure.WithErrorUnlessStatusCode(http.StatusOK),\n\t\tautorest.ByUnmarshallingJSON(&result),\n\t\tautorest.ByClosing())\n\tresult.Response = autorest.Response{Response: resp}\n\treturn\n}\n\n// listNextResults retrieves the next set of results, if any.\nfunc (client VirtualNetworksClient) listNextResults(ctx context.Context, lastResults VirtualNetworkListResult) (result VirtualNetworkListResult, err error) {\n\treq, err := lastResults.virtualNetworkListResultPreparer(ctx)\n\tif err != nil {\n\t\treturn result, autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"listNextResults\", nil, \"Failure preparing next results request\")\n\t}\n\tif req == nil {\n\t\treturn\n\t}\n\tresp, err := client.ListSender(req)\n\tif err != nil {\n\t\tresult.Response = autorest.Response{Response: resp}\n\t\treturn result, autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"listNextResults\", resp, \"Failure sending next results request\")\n\t}\n\tresult, err = client.ListResponder(resp)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"listNextResults\", resp, \"Failure responding to next results request\")\n\t}\n\treturn\n}\n\n// ListComplete enumerates all values, automatically crossing page boundaries as required.\nfunc (client VirtualNetworksClient) ListComplete(ctx context.Context, resourceGroupName string) (result VirtualNetworkListResultIterator, err error) {\n\tif tracing.IsEnabled() {\n\t\tctx = tracing.StartSpan(ctx, fqdn+\"/VirtualNetworksClient.List\")\n\t\tdefer func() {\n\t\t\tsc := -1\n\t\t\tif result.Response().Response.Response != nil {\n\t\t\t\tsc = result.page.Response().Response.Response.StatusCode\n\t\t\t}\n\t\t\ttracing.EndSpan(ctx, sc, err)\n\t\t}()\n\t}\n\tresult.page, err = client.List(ctx, resourceGroupName)\n\treturn\n}\n\n// ListAll gets all virtual networks in a subscription.\nfunc (client VirtualNetworksClient) ListAll(ctx context.Context) (result VirtualNetworkListResultPage, err error) {\n\tif tracing.IsEnabled() {\n\t\tctx = tracing.StartSpan(ctx, fqdn+\"/VirtualNetworksClient.ListAll\")\n\t\tdefer func() {\n\t\t\tsc := -1\n\t\t\tif result.vnlr.Response.Response != nil {\n\t\t\t\tsc = result.vnlr.Response.Response.StatusCode\n\t\t\t}\n\t\t\ttracing.EndSpan(ctx, sc, err)\n\t\t}()\n\t}\n\tresult.fn = client.listAllNextResults\n\treq, err := client.ListAllPreparer(ctx)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"ListAll\", nil, \"Failure preparing request\")\n\t\treturn\n\t}\n\n\tresp, err := client.ListAllSender(req)\n\tif err != nil {\n\t\tresult.vnlr.Response = autorest.Response{Response: resp}\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"ListAll\", resp, \"Failure sending request\")\n\t\treturn\n\t}\n\n\tresult.vnlr, err = client.ListAllResponder(resp)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"ListAll\", resp, \"Failure responding to request\")\n\t}\n\n\treturn\n}\n\n// ListAllPreparer prepares the ListAll request.\nfunc (client VirtualNetworksClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {\n\tpathParameters := map[string]interface{}{\n\t\t\"subscriptionId\": autorest.Encode(\"path\", client.SubscriptionID),\n\t}\n\n\tconst APIVersion = \"2019-09-01\"\n\tqueryParameters := map[string]interface{}{\n\t\t\"api-version\": APIVersion,\n\t}\n\n\tpreparer := autorest.CreatePreparer(\n\t\tautorest.AsGet(),\n\t\tautorest.WithBaseURL(client.BaseURI),\n\t\tautorest.WithPathParameters(\"/subscriptions/{subscriptionId}/providers/Microsoft.Network/virtualNetworks\", pathParameters),\n\t\tautorest.WithQueryParameters(queryParameters))\n\treturn preparer.Prepare((&http.Request{}).WithContext(ctx))\n}\n\n// ListAllSender sends the ListAll request. The method will close the\n// http.Response Body if it receives an error.\nfunc (client VirtualNetworksClient) ListAllSender(req *http.Request) (*http.Response, error) {\n\treturn client.Send(req, azure.DoRetryWithRegistration(client.Client))\n}\n\n// ListAllResponder handles the response to the ListAll request. The method always\n// closes the http.Response Body.\nfunc (client VirtualNetworksClient) ListAllResponder(resp *http.Response) (result VirtualNetworkListResult, err error) {\n\terr = autorest.Respond(\n\t\tresp,\n\t\tazure.WithErrorUnlessStatusCode(http.StatusOK),\n\t\tautorest.ByUnmarshallingJSON(&result),\n\t\tautorest.ByClosing())\n\tresult.Response = autorest.Response{Response: resp}\n\treturn\n}\n\n// listAllNextResults retrieves the next set of results, if any.\nfunc (client VirtualNetworksClient) listAllNextResults(ctx context.Context, lastResults VirtualNetworkListResult) (result VirtualNetworkListResult, err error) {\n\treq, err := lastResults.virtualNetworkListResultPreparer(ctx)\n\tif err != nil {\n\t\treturn result, autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"listAllNextResults\", nil, \"Failure preparing next results request\")\n\t}\n\tif req == nil {\n\t\treturn\n\t}\n\tresp, err := client.ListAllSender(req)\n\tif err != nil {\n\t\tresult.Response = autorest.Response{Response: resp}\n\t\treturn result, autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"listAllNextResults\", resp, \"Failure sending next results request\")\n\t}\n\tresult, err = client.ListAllResponder(resp)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"listAllNextResults\", resp, \"Failure responding to next results request\")\n\t}\n\treturn\n}\n\n// ListAllComplete enumerates all values, automatically crossing page boundaries as required.\nfunc (client VirtualNetworksClient) ListAllComplete(ctx context.Context) (result VirtualNetworkListResultIterator, err error) {\n\tif tracing.IsEnabled() {\n\t\tctx = tracing.StartSpan(ctx, fqdn+\"/VirtualNetworksClient.ListAll\")\n\t\tdefer func() {\n\t\t\tsc := -1\n\t\t\tif result.Response().Response.Response != nil {\n\t\t\t\tsc = result.page.Response().Response.Response.StatusCode\n\t\t\t}\n\t\t\ttracing.EndSpan(ctx, sc, err)\n\t\t}()\n\t}\n\tresult.page, err = client.ListAll(ctx)\n\treturn\n}\n\n// ListUsage lists usage stats.\n// Parameters:\n// resourceGroupName - the name of the resource group.\n// virtualNetworkName - the name of the virtual network.\nfunc (client VirtualNetworksClient) ListUsage(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworkListUsageResultPage, err error) {\n\tif tracing.IsEnabled() {\n\t\tctx = tracing.StartSpan(ctx, fqdn+\"/VirtualNetworksClient.ListUsage\")\n\t\tdefer func() {\n\t\t\tsc := -1\n\t\t\tif result.vnlur.Response.Response != nil {\n\t\t\t\tsc = result.vnlur.Response.Response.StatusCode\n\t\t\t}\n\t\t\ttracing.EndSpan(ctx, sc, err)\n\t\t}()\n\t}\n\tresult.fn = client.listUsageNextResults\n\treq, err := client.ListUsagePreparer(ctx, resourceGroupName, virtualNetworkName)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"ListUsage\", nil, \"Failure preparing request\")\n\t\treturn\n\t}\n\n\tresp, err := client.ListUsageSender(req)\n\tif err != nil {\n\t\tresult.vnlur.Response = autorest.Response{Response: resp}\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"ListUsage\", resp, \"Failure sending request\")\n\t\treturn\n\t}\n\n\tresult.vnlur, err = client.ListUsageResponder(resp)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"ListUsage\", resp, \"Failure responding to request\")\n\t}\n\n\treturn\n}\n\n// ListUsagePreparer prepares the ListUsage request.\nfunc (client VirtualNetworksClient) ListUsagePreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string) (*http.Request, error) {\n\tpathParameters := map[string]interface{}{\n\t\t\"resourceGroupName\":  autorest.Encode(\"path\", resourceGroupName),\n\t\t\"subscriptionId\":     autorest.Encode(\"path\", client.SubscriptionID),\n\t\t\"virtualNetworkName\": autorest.Encode(\"path\", virtualNetworkName),\n\t}\n\n\tconst APIVersion = \"2019-09-01\"\n\tqueryParameters := map[string]interface{}{\n\t\t\"api-version\": APIVersion,\n\t}\n\n\tpreparer := autorest.CreatePreparer(\n\t\tautorest.AsGet(),\n\t\tautorest.WithBaseURL(client.BaseURI),\n\t\tautorest.WithPathParameters(\"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}/usages\", pathParameters),\n\t\tautorest.WithQueryParameters(queryParameters))\n\treturn preparer.Prepare((&http.Request{}).WithContext(ctx))\n}\n\n// ListUsageSender sends the ListUsage request. The method will close the\n// http.Response Body if it receives an error.\nfunc (client VirtualNetworksClient) ListUsageSender(req *http.Request) (*http.Response, error) {\n\treturn client.Send(req, azure.DoRetryWithRegistration(client.Client))\n}\n\n// ListUsageResponder handles the response to the ListUsage request. The method always\n// closes the http.Response Body.\nfunc (client VirtualNetworksClient) ListUsageResponder(resp *http.Response) (result VirtualNetworkListUsageResult, err error) {\n\terr = autorest.Respond(\n\t\tresp,\n\t\tazure.WithErrorUnlessStatusCode(http.StatusOK),\n\t\tautorest.ByUnmarshallingJSON(&result),\n\t\tautorest.ByClosing())\n\tresult.Response = autorest.Response{Response: resp}\n\treturn\n}\n\n// listUsageNextResults retrieves the next set of results, if any.\nfunc (client VirtualNetworksClient) listUsageNextResults(ctx context.Context, lastResults VirtualNetworkListUsageResult) (result VirtualNetworkListUsageResult, err error) {\n\treq, err := lastResults.virtualNetworkListUsageResultPreparer(ctx)\n\tif err != nil {\n\t\treturn result, autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"listUsageNextResults\", nil, \"Failure preparing next results request\")\n\t}\n\tif req == nil {\n\t\treturn\n\t}\n\tresp, err := client.ListUsageSender(req)\n\tif err != nil {\n\t\tresult.Response = autorest.Response{Response: resp}\n\t\treturn result, autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"listUsageNextResults\", resp, \"Failure sending next results request\")\n\t}\n\tresult, err = client.ListUsageResponder(resp)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"listUsageNextResults\", resp, \"Failure responding to next results request\")\n\t}\n\treturn\n}\n\n// ListUsageComplete enumerates all values, automatically crossing page boundaries as required.\nfunc (client VirtualNetworksClient) ListUsageComplete(ctx context.Context, resourceGroupName string, virtualNetworkName string) (result VirtualNetworkListUsageResultIterator, err error) {\n\tif tracing.IsEnabled() {\n\t\tctx = tracing.StartSpan(ctx, fqdn+\"/VirtualNetworksClient.ListUsage\")\n\t\tdefer func() {\n\t\t\tsc := -1\n\t\t\tif result.Response().Response.Response != nil {\n\t\t\t\tsc = result.page.Response().Response.Response.StatusCode\n\t\t\t}\n\t\t\ttracing.EndSpan(ctx, sc, err)\n\t\t}()\n\t}\n\tresult.page, err = client.ListUsage(ctx, resourceGroupName, virtualNetworkName)\n\treturn\n}\n\n// UpdateTags updates a virtual network tags.\n// Parameters:\n// resourceGroupName - the name of the resource group.\n// virtualNetworkName - the name of the virtual network.\n// parameters - parameters supplied to update virtual network tags.\nfunc (client VirtualNetworksClient) UpdateTags(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters TagsObject) (result VirtualNetwork, err error) {\n\tif tracing.IsEnabled() {\n\t\tctx = tracing.StartSpan(ctx, fqdn+\"/VirtualNetworksClient.UpdateTags\")\n\t\tdefer func() {\n\t\t\tsc := -1\n\t\t\tif result.Response.Response != nil {\n\t\t\t\tsc = result.Response.Response.StatusCode\n\t\t\t}\n\t\t\ttracing.EndSpan(ctx, sc, err)\n\t\t}()\n\t}\n\treq, err := client.UpdateTagsPreparer(ctx, resourceGroupName, virtualNetworkName, parameters)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"UpdateTags\", nil, \"Failure preparing request\")\n\t\treturn\n\t}\n\n\tresp, err := client.UpdateTagsSender(req)\n\tif err != nil {\n\t\tresult.Response = autorest.Response{Response: resp}\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"UpdateTags\", resp, \"Failure sending request\")\n\t\treturn\n\t}\n\n\tresult, err = client.UpdateTagsResponder(resp)\n\tif err != nil {\n\t\terr = autorest.NewErrorWithError(err, \"network.VirtualNetworksClient\", \"UpdateTags\", resp, \"Failure responding to request\")\n\t}\n\n\treturn\n}\n\n// UpdateTagsPreparer prepares the UpdateTags request.\nfunc (client VirtualNetworksClient) UpdateTagsPreparer(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters TagsObject) (*http.Request, error) {\n\tpathParameters := map[string]interface{}{\n\t\t\"resourceGroupName\":  autorest.Encode(\"path\", resourceGroupName),\n\t\t\"subscriptionId\":     autorest.Encode(\"path\", client.SubscriptionID),\n\t\t\"virtualNetworkName\": autorest.Encode(\"path\", virtualNetworkName),\n\t}\n\n\tconst APIVersion = \"2019-09-01\"\n\tqueryParameters := map[string]interface{}{\n\t\t\"api-version\": APIVersion,\n\t}\n\n\tpreparer := autorest.CreatePreparer(\n\t\tautorest.AsContentType(\"application/json; charset=utf-8\"),\n\t\tautorest.AsPatch(),\n\t\tautorest.WithBaseURL(client.BaseURI),\n\t\tautorest.WithPathParameters(\"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/virtualNetworks/{virtualNetworkName}\", pathParameters),\n\t\tautorest.WithJSON(parameters),\n\t\tautorest.WithQueryParameters(queryParameters))\n\treturn preparer.Prepare((&http.Request{}).WithContext(ctx))\n}\n\n// UpdateTagsSender sends the UpdateTags request. The method will close the\n// http.Response Body if it receives an error.\nfunc (client VirtualNetworksClient) UpdateTagsSender(req *http.Request) (*http.Response, error) {\n\treturn client.Send(req, azure.DoRetryWithRegistration(client.Client))\n}\n\n// UpdateTagsResponder handles the response to the UpdateTags request. The method always\n// closes the http.Response Body.\nfunc (client VirtualNetworksClient) UpdateTagsResponder(resp *http.Response) (result VirtualNetwork, err error) {\n\terr = autorest.Respond(\n\t\tresp,\n\t\tazure.WithErrorUnlessStatusCode(http.StatusOK),\n\t\tautorest.ByUnmarshallingJSON(&result),\n\t\tautorest.ByClosing())\n\tresult.Response = autorest.Response{Response: resp}\n\treturn\n}\n"}}


[Trace - 21:24:54.920 PM] Sending request 'textDocument/documentLink - (37)'.
Params: {"textDocument":{"uri":"file:///home/mjyeaney/go/pkg/mod/github.com/%21azure/azure-sdk-for-go%40v44.1.0%2Bincompatible/services/network/mgmt/2019-09-01/network/virtualnetworks.go"}}


[Trace - 21:24:54.920 PM] Sending request 'textDocument/codeAction - (38)'.
Params: {"textDocument":{"uri":"file:///home/mjyeaney/go/pkg/mod/github.com/%21azure/azure-sdk-for-go%40v44.1.0%2Bincompatible/services/network/mgmt/2019-09-01/network/virtualnetworks.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}


[Trace - 21:24:54.921 PM] Sending request 'textDocument/documentSymbol - (39)'.
Params: {"textDocument":{"uri":"file:///home/mjyeaney/go/pkg/mod/github.com/%21azure/azure-sdk-for-go%40v44.1.0%2Bincompatible/services/network/mgmt/2019-09-01/network/virtualnetworks.go"}}


[Trace - 21:24:55.057 PM] Sending request 'textDocument/foldingRange - (40)'.
Params: {"textDocument":{"uri":"file:///home/mjyeaney/go/pkg/mod/github.com/%21azure/azure-sdk-for-go%40v44.1.0%2Bincompatible/services/network/mgmt/2019-09-01/network/virtualnetworks.go"}}


[Trace - 21:24:55.113 PM] Sending request 'textDocument/codeLens - (41)'.
Params: {"textDocument":{"uri":"file:///home/mjyeaney/go/pkg/mod/github.com/%21azure/azure-sdk-for-go%40v44.1.0%2Bincompatible/services/network/mgmt/2019-09-01/network/virtualnetworks.go"}}


[Trace - 21:24:55.114 PM] Sending request 'textDocument/codeAction - (42)'.
Params: {"textDocument":{"uri":"file:///home/mjyeaney/go/pkg/mod/github.com/%21azure/azure-sdk-for-go%40v44.1.0%2Bincompatible/services/network/mgmt/2019-09-01/network/virtualnetworks.go"},"range":{"start":{"line":34,"character":5},"end":{"line":34,"character":5}},"context":{"diagnostics":[]}}


[Trace - 21:24:55.114 PM] Sending notification '$/cancelRequest'.
Params: {"id":38}


[Trace - 21:24:55.687 PM] Received response 'textDocument/documentLink - (37)' in 767ms.
Result: [{"range":{"start":{"line":20,"character":2},"end":{"line":20,"character":9}},"target":"https://pkg.go.dev/context"},{"range":{"start":{"line":21,"character":2},"end":{"line":21,"character":39}},"target":"https://pkg.go.dev/github.com/Azure/go-autorest/autorest@v0.10.0"},{"range":{"start":{"line":22,"character":2},"end":{"line":22,"character":45}},"target":"https://pkg.go.dev/github.com/Azure/go-autorest/autorest@v0.10.0/azure"},{"range":{"start":{"line":23,"character":2},"end":{"line":23,"character":50}},"target":"https://pkg.go.dev/github.com/Azure/go-autorest/autorest/validation@v0.2.0"},{"range":{"start":{"line":24,"character":2},"end":{"line":24,"character":38}},"target":"https://pkg.go.dev/github.com/Azure/go-autorest/tracing@v0.5.0"},{"range":{"start":{"line":25,"character":2},"end":{"line":25,"character":10}},"target":"https://pkg.go.dev/net/http"},{"range":{"start":{"line":51,"character":38},"end":{"line":51,"character":62}},"target":"https://VirtualNetworksClient.Ch"},{"range":{"start":{"line":62,"character":41},"end":{"line":62,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":69,"character":41},"end":{"line":69,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":75,"character":41},"end":{"line":75,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":98,"character":108},"end":{"line":98,"character":189}},"target":"https://Microsoft.Network/virtualNetworks/%7BvirtualNetworkName%7D/CheckIPAddressAvailability"},{"range":{"start":{"line":128,"character":38},"end":{"line":128,"character":62}},"target":"https://VirtualNetworksClient.Cr"},{"range":{"start":{"line":139,"character":50},"end":{"line":139,"character":63}},"target":"https://parameters.Vi"},{"range":{"start":{"line":140,"character":45},"end":{"line":140,"character":89}},"target":"https://parameters.VirtualNetworkPropertiesFormat.Bg"},{"range":{"start":{"line":141,"character":46},"end":{"line":141,"character":105}},"target":"https://parameters.VirtualNetworkPropertiesFormat.BgpCommunities.Vi"},{"range":{"start":{"line":143,"character":38},"end":{"line":143,"character":48}},"target":"https://network.Vi"},{"range":{"start":{"line":148,"character":41},"end":{"line":148,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":154,"character":41},"end":{"line":154,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":179,"character":108},"end":{"line":179,"character":162}},"target":"https://Microsoft.Network/virtualNetworks/%7BvirtualNetworkName%7D"},{"range":{"start":{"line":215,"character":38},"end":{"line":215,"character":62}},"target":"https://VirtualNetworksClient.De"},{"range":{"start":{"line":226,"character":41},"end":{"line":226,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":232,"character":41},"end":{"line":232,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":255,"character":108},"end":{"line":255,"character":162}},"target":"https://Microsoft.Network/virtualNetworks/%7BvirtualNetworkName%7D"},{"range":{"start":{"line":290,"character":38},"end":{"line":290,"character":62}},"target":"https://VirtualNetworksClient.Ge"},{"range":{"start":{"line":301,"character":41},"end":{"line":301,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":308,"character":41},"end":{"line":308,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":314,"character":41},"end":{"line":314,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":339,"character":108},"end":{"line":339,"character":162}},"target":"https://Microsoft.Network/virtualNetworks/%7BvirtualNetworkName%7D"},{"range":{"start":{"line":367,"character":38},"end":{"line":367,"character":62}},"target":"https://VirtualNetworksClient.Li"},{"range":{"start":{"line":379,"character":41},"end":{"line":379,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":386,"character":41},"end":{"line":386,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":392,"character":41},"end":{"line":392,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":413,"character":108},"end":{"line":413,"character":141}},"target":"https://Microsoft.Network/virtualNetworks"},{"range":{"start":{"line":440,"character":50},"end":{"line":440,"character":60}},"target":"https://network.Vi"},{"range":{"start":{"line":448,"character":50},"end":{"line":448,"character":60}},"target":"https://network.Vi"},{"range":{"start":{"line":452,"character":41},"end":{"line":452,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":460,"character":38},"end":{"line":460,"character":62}},"target":"https://VirtualNetworksClient.Li"},{"range":{"start":{"line":476,"character":38},"end":{"line":476,"character":62}},"target":"https://VirtualNetworksClient.Li"},{"range":{"start":{"line":488,"character":41},"end":{"line":488,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":495,"character":41},"end":{"line":495,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":501,"character":41},"end":{"line":501,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":521,"character":73},"end":{"line":521,"character":106}},"target":"https://Microsoft.Network/virtualNetworks"},{"range":{"start":{"line":548,"character":50},"end":{"line":548,"character":60}},"target":"https://network.Vi"},{"range":{"start":{"line":556,"character":50},"end":{"line":556,"character":60}},"target":"https://network.Vi"},{"range":{"start":{"line":560,"character":41},"end":{"line":560,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":568,"character":38},"end":{"line":568,"character":62}},"target":"https://VirtualNetworksClient.Li"},{"range":{"start":{"line":587,"character":38},"end":{"line":587,"character":62}},"target":"https://VirtualNetworksClient.Li"},{"range":{"start":{"line":599,"character":41},"end":{"line":599,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":606,"character":41},"end":{"line":606,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":612,"character":41},"end":{"line":612,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":634,"character":108},"end":{"line":634,"character":169}},"target":"https://Microsoft.Network/virtualNetworks/%7BvirtualNetworkName%7D/usages"},{"range":{"start":{"line":661,"character":50},"end":{"line":661,"character":60}},"target":"https://network.Vi"},{"range":{"start":{"line":669,"character":50},"end":{"line":669,"character":60}},"target":"https://network.Vi"},{"range":{"start":{"line":673,"character":41},"end":{"line":673,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":681,"character":38},"end":{"line":681,"character":62}},"target":"https://VirtualNetworksClient.Li"},{"range":{"start":{"line":712,"character":41},"end":{"line":712,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":719,"character":41},"end":{"line":719,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":725,"character":41},"end":{"line":725,"character":51}},"target":"https://network.Vi"},{"range":{"start":{"line":748,"character":108},"end":{"line":748,"character":162}},"target":"https://Microsoft.Network/virtualNetworks/%7BvirtualNetworkName%7D"},{"range":{"start":{"line":7,"character":3},"end":{"line":7,"character":45}},"target":"http://www.apache.org/licenses/LICENSE-2.0"},{"range":{"start":{"line":104,"character":3},"end":{"line":104,"character":10}},"target":"https://http.Re"},{"range":{"start":{"line":110,"character":14},"end":{"line":110,"character":21}},"target":"https://http.Re"},{"range":{"start":{"line":186,"character":3},"end":{"line":186,"character":10}},"target":"https://http.Re"},{"range":{"start":{"line":198,"character":14},"end":{"line":198,"character":21}},"target":"https://http.Re"},{"range":{"start":{"line":261,"character":3},"end":{"line":261,"character":10}},"target":"https://http.Re"},{"range":{"start":{"line":273,"character":14},"end":{"line":273,"character":21}},"target":"https://http.Re"},{"range":{"start":{"line":345,"character":3},"end":{"line":345,"character":10}},"target":"https://http.Re"},{"range":{"start":{"line":351,"character":14},"end":{"line":351,"character":21}},"target":"https://http.Re"},{"range":{"start":{"line":419,"character":3},"end":{"line":419,"character":10}},"target":"https://http.Re"},{"range":{"start":{"line":425,"character":14},"end":{"line":425,"character":21}},"target":"https://http.Re"},{"range":{"start":{"line":527,"character":3},"end":{"line":527,"character":10}},"target":"https://http.Re"},{"range":{"start":{"line":533,"character":14},"end":{"line":533,"character":21}},"target":"https://http.Re"},{"range":{"start":{"line":640,"character":3},"end":{"line":640,"character":10}},"target":"https://http.Re"},{"range":{"start":{"line":646,"character":14},"end":{"line":646,"character":21}},"target":"https://http.Re"},{"range":{"start":{"line":755,"character":3},"end":{"line":755,"character":10}},"target":"https://http.Re"},{"range":{"start":{"line":761,"character":14},"end":{"line":761,"character":21}},"target":"https://http.Re"}]


[Error - Received] 21:24:55.688 PM golang/vscode-go#38 JSON RPC cancelled


[Trace - 21:24:55.690 PM] Received response 'textDocument/documentSymbol - (39)' in 768ms.
Result: [{"name":"VirtualNetworksClient","detail":"struct{...}","kind":23,"range":{"start":{"line":29,"character":5},"end":{"line":31,"character":1}},"selectionRange":{"start":{"line":29,"character":5},"end":{"line":29,"character":26}},"children":[{"name":"BaseClient","detail":"struct{...}","kind":8,"range":{"start":{"line":30,"character":1},"end":{"line":30,"character":11}},"selectionRange":{"start":{"line":30,"character":1},"end":{"line":30,"character":11}}}]},{"name":"NewVirtualNetworksClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":34,"character":0},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":34,"character":5},"end":{"line":34,"character":29}}},{"name":"NewVirtualNetworksClientWithBaseURI","detail":"(baseURI string, subscriptionID string)","kind":12,"range":{"start":{"line":40,"character":0},"end":{"line":42,"character":1}},"selectionRange":{"start":{"line":40,"character":5},"end":{"line":40,"character":40}}},{"name":"(VirtualNetworksClient).CheckIPAddressAvailability","detail":"(ctx context.Context, resourceGroupName string, virtualNetworkName string, IPAddress string)","kind":6,"range":{"start":{"line":49,"character":0},"end":{"line":79,"character":1}},"selectionRange":{"start":{"line":49,"character":36},"end":{"line":49,"character":62}}},{"name":"(VirtualNetworksClient).CheckIPAddressAvailabilityPreparer","detail":"(ctx context.Context, resourceGroupName string, virtualNetworkName string, IPAddress string)","kind":6,"range":{"start":{"line":82,"character":0},"end":{"line":101,"character":1}},"selectionRange":{"start":{"line":82,"character":36},"end":{"line":82,"character":70}}},{"name":"(VirtualNetworksClient).CheckIPAddressAvailabilitySender","detail":"(req *http.Request)","kind":6,"range":{"start":{"line":105,"character":0},"end":{"line":107,"character":1}},"selectionRange":{"start":{"line":105,"character":36},"end":{"line":105,"character":68}}},{"name":"(VirtualNetworksClient).CheckIPAddressAvailabilityResponder","detail":"(resp *http.Response)","kind":6,"range":{"start":{"line":111,"character":0},"end":{"line":119,"character":1}},"selectionRange":{"start":{"line":111,"character":36},"end":{"line":111,"character":71}}},{"name":"(VirtualNetworksClient).CreateOrUpdate","detail":"(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters VirtualNetwork)","kind":6,"range":{"start":{"line":126,"character":0},"end":{"line":159,"character":1}},"selectionRange":{"start":{"line":126,"character":36},"end":{"line":126,"character":50}}},{"name":"(VirtualNetworksClient).CreateOrUpdatePreparer","detail":"(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters VirtualNetwork)","kind":6,"range":{"start":{"line":162,"character":0},"end":{"line":183,"character":1}},"selectionRange":{"start":{"line":162,"character":36},"end":{"line":162,"character":58}}},{"name":"(VirtualNetworksClient).CreateOrUpdateSender","detail":"(req *http.Request)","kind":6,"range":{"start":{"line":187,"character":0},"end":{"line":195,"character":1}},"selectionRange":{"start":{"line":187,"character":36},"end":{"line":187,"character":56}}},{"name":"(VirtualNetworksClient).CreateOrUpdateResponder","detail":"(resp *http.Response)","kind":6,"range":{"start":{"line":199,"character":0},"end":{"line":207,"character":1}},"selectionRange":{"start":{"line":199,"character":36},"end":{"line":199,"character":59}}},{"name":"(VirtualNetworksClient).Delete","detail":"(ctx context.Context, resourceGroupName string, virtualNetworkName string)","kind":6,"range":{"start":{"line":213,"character":0},"end":{"line":237,"character":1}},"selectionRange":{"start":{"line":213,"character":36},"end":{"line":213,"character":42}}},{"name":"(VirtualNetworksClient).DeletePreparer","detail":"(ctx context.Context, resourceGroupName string, virtualNetworkName string)","kind":6,"range":{"start":{"line":240,"character":0},"end":{"line":258,"character":1}},"selectionRange":{"start":{"line":240,"character":36},"end":{"line":240,"character":50}}},{"name":"(VirtualNetworksClient).DeleteSender","detail":"(req *http.Request)","kind":6,"range":{"start":{"line":262,"character":0},"end":{"line":270,"character":1}},"selectionRange":{"start":{"line":262,"character":36},"end":{"line":262,"character":48}}},{"name":"(VirtualNetworksClient).DeleteResponder","detail":"(resp *http.Response)","kind":6,"range":{"start":{"line":274,"character":0},"end":{"line":281,"character":1}},"selectionRange":{"start":{"line":274,"character":36},"end":{"line":274,"character":51}}},{"name":"(VirtualNetworksClient).Get","detail":"(ctx context.Context, resourceGroupName string, virtualNetworkName string, expand string)","kind":6,"range":{"start":{"line":288,"character":0},"end":{"line":318,"character":1}},"selectionRange":{"start":{"line":288,"character":36},"end":{"line":288,"character":39}}},{"name":"(VirtualNetworksClient).GetPreparer","detail":"(ctx context.Context, resourceGroupName string, virtualNetworkName string, expand string)","kind":6,"range":{"start":{"line":321,"character":0},"end":{"line":342,"character":1}},"selectionRange":{"start":{"line":321,"character":36},"end":{"line":321,"character":47}}},{"name":"(VirtualNetworksClient).GetSender","detail":"(req *http.Request)","kind":6,"range":{"start":{"line":346,"character":0},"end":{"line":348,"character":1}},"selectionRange":{"start":{"line":346,"character":36},"end":{"line":346,"character":45}}},{"name":"(VirtualNetworksClient).GetResponder","detail":"(resp *http.Response)","kind":6,"range":{"start":{"line":352,"character":0},"end":{"line":360,"character":1}},"selectionRange":{"start":{"line":352,"character":36},"end":{"line":352,"character":48}}},{"name":"(VirtualNetworksClient).List","detail":"(ctx context.Context, resourceGroupName string)","kind":6,"range":{"start":{"line":365,"character":0},"end":{"line":396,"character":1}},"selectionRange":{"start":{"line":365,"character":36},"end":{"line":365,"character":40}}},{"name":"(VirtualNetworksClient).ListPreparer","detail":"(ctx context.Context, resourceGroupName string)","kind":6,"range":{"start":{"line":399,"character":0},"end":{"line":416,"character":1}},"selectionRange":{"start":{"line":399,"character":36},"end":{"line":399,"character":48}}},{"name":"(VirtualNetworksClient).ListSender","detail":"(req *http.Request)","kind":6,"range":{"start":{"line":420,"character":0},"end":{"line":422,"character":1}},"selectionRange":{"start":{"line":420,"character":36},"end":{"line":420,"character":46}}},{"name":"(VirtualNetworksClient).ListResponder","detail":"(resp *http.Response)","kind":6,"range":{"start":{"line":426,"character":0},"end":{"line":434,"character":1}},"selectionRange":{"start":{"line":426,"character":36},"end":{"line":426,"character":49}}},{"name":"(VirtualNetworksClient).listNextResults","detail":"(ctx context.Context, lastResults VirtualNetworkListResult)","kind":6,"range":{"start":{"line":437,"character":0},"end":{"line":455,"character":1}},"selectionRange":{"start":{"line":437,"character":36},"end":{"line":437,"character":51}}},{"name":"(VirtualNetworksClient).ListComplete","detail":"(ctx context.Context, resourceGroupName string)","kind":6,"range":{"start":{"line":458,"character":0},"end":{"line":471,"character":1}},"selectionRange":{"start":{"line":458,"character":36},"end":{"line":458,"character":48}}},{"name":"(VirtualNetworksClient).ListAll","detail":"(ctx context.Context)","kind":6,"range":{"start":{"line":474,"character":0},"end":{"line":505,"character":1}},"selectionRange":{"start":{"line":474,"character":36},"end":{"line":474,"character":43}}},{"name":"(VirtualNetworksClient).ListAllPreparer","detail":"(ctx context.Context)","kind":6,"range":{"start":{"line":508,"character":0},"end":{"line":524,"character":1}},"selectionRange":{"start":{"line":508,"character":36},"end":{"line":508,"character":51}}},{"name":"(VirtualNetworksClient).ListAllSender","detail":"(req *http.Request)","kind":6,"range":{"start":{"line":528,"character":0},"end":{"line":530,"character":1}},"selectionRange":{"start":{"line":528,"character":36},"end":{"line":528,"character":49}}},{"name":"(VirtualNetworksClient).ListAllResponder","detail":"(resp *http.Response)","kind":6,"range":{"start":{"line":534,"character":0},"end":{"line":542,"character":1}},"selectionRange":{"start":{"line":534,"character":36},"end":{"line":534,"character":52}}},{"name":"(VirtualNetworksClient).listAllNextResults","detail":"(ctx context.Context, lastResults VirtualNetworkListResult)","kind":6,"range":{"start":{"line":545,"character":0},"end":{"line":563,"character":1}},"selectionRange":{"start":{"line":545,"character":36},"end":{"line":545,"character":54}}},{"name":"(VirtualNetworksClient).ListAllComplete","detail":"(ctx context.Context)","kind":6,"range":{"start":{"line":566,"character":0},"end":{"line":579,"character":1}},"selectionRange":{"start":{"line":566,"character":36},"end":{"line":566,"character":51}}},{"name":"(VirtualNetworksClient).ListUsage","detail":"(ctx context.Context, resourceGroupName string, virtualNetworkName string)","kind":6,"range":{"start":{"line":585,"character":0},"end":{"line":616,"character":1}},"selectionRange":{"start":{"line":585,"character":36},"end":{"line":585,"character":45}}},{"name":"(VirtualNetworksClient).ListUsagePreparer","detail":"(ctx context.Context, resourceGroupName string, virtualNetworkName string)","kind":6,"range":{"start":{"line":619,"character":0},"end":{"line":637,"character":1}},"selectionRange":{"start":{"line":619,"character":36},"end":{"line":619,"character":53}}},{"name":"(VirtualNetworksClient).ListUsageSender","detail":"(req *http.Request)","kind":6,"range":{"start":{"line":641,"character":0},"end":{"line":643,"character":1}},"selectionRange":{"start":{"line":641,"character":36},"end":{"line":641,"character":51}}},{"name":"(VirtualNetworksClient).ListUsageResponder","detail":"(resp *http.Response)","kind":6,"range":{"start":{"line":647,"character":0},"end":{"line":655,"character":1}},"selectionRange":{"start":{"line":647,"character":36},"end":{"line":647,"character":54}}},{"name":"(VirtualNetworksClient).listUsageNextResults","detail":"(ctx context.Context, lastResults VirtualNetworkListUsageResult)","kind":6,"range":{"start":{"line":658,"character":0},"end":{"line":676,"character":1}},"selectionRange":{"start":{"line":658,"character":36},"end":{"line":658,"character":56}}},{"name":"(VirtualNetworksClient).ListUsageComplete","detail":"(ctx context.Context, resourceGroupName string, virtualNetworkName string)","kind":6,"range":{"start":{"line":679,"character":0},"end":{"line":692,"character":1}},"selectionRange":{"start":{"line":679,"character":36},"end":{"line":679,"character":53}}},{"name":"(VirtualNetworksClient).UpdateTags","detail":"(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters TagsObject)","kind":6,"range":{"start":{"line":699,"character":0},"end":{"line":729,"character":1}},"selectionRange":{"start":{"line":699,"character":36},"end":{"line":699,"character":46}}},{"name":"(VirtualNetworksClient).UpdateTagsPreparer","detail":"(ctx context.Context, resourceGroupName string, virtualNetworkName string, parameters TagsObject)","kind":6,"range":{"start":{"line":732,"character":0},"end":{"line":752,"character":1}},"selectionRange":{"start":{"line":732,"character":36},"end":{"line":732,"character":54}}},{"name":"(VirtualNetworksClient).UpdateTagsSender","detail":"(req *http.Request)","kind":6,"range":{"start":{"line":756,"character":0},"end":{"line":758,"character":1}},"selectionRange":{"start":{"line":756,"character":36},"end":{"line":756,"character":52}}},{"name":"(VirtualNetworksClient).UpdateTagsResponder","detail":"(resp *http.Response)","kind":6,"range":{"start":{"line":762,"character":0},"end":{"line":770,"character":1}},"selectionRange":{"start":{"line":762,"character":36},"end":{"line":762,"character":55}}}]


[Trace - 21:24:55.714 PM] Received response 'textDocument/foldingRange - (40)' in 657ms.
Result: [{"startLine":2,"startCharacter":66,"endLine":17,"endCharacter":84,"kind":"comment"},{"startLine":19,"startCharacter":8,"endLine":25,"endCharacter":11,"kind":"imports"},{"startLine":29,"startCharacter":35,"endLine":30,"endCharacter":11},{"startLine":34,"startCharacter":76,"endLine":35,"endCharacter":75},{"startLine":38,"startCharacter":119,"endLine":39,"endCharacter":115,"kind":"comment"},{"startLine":40,"startCharacter":103,"endLine":41,"endCharacter":70},{"startLine":44,"startCharacter":87,"endLine":48,"endCharacter":53,"kind":"comment"},{"startLine":49,"startCharacter":204,"endLine":78,"endCharacter":7},{"startLine":50,"startCharacter":25,"endLine":58,"endCharacter":5},{"startLine":52,"startCharacter":16,"endLine":57,"endCharacter":32},{"startLine":54,"startCharacter":39,"endLine":55,"endCharacter":44},{"startLine":61,"startCharacter":16,"endLine":63,"endCharacter":8},{"startLine":67,"startCharacter":16,"endLine":70,"endCharacter":8},{"startLine":74,"startCharacter":16,"endLine":75,"endCharacter":141},{"startLine":82,"startCharacter":187,"endLine":100,"endCharacter":60},{"startLine":83,"startCharacter":42,"endLine":86,"endCharacter":67},{"startLine":90,"startCharacter":43,"endLine":92,"endCharacter":52},{"startLine":103,"startCharacter":107,"endLine":104,"endCharacter":46,"kind":"comment"},{"startLine":105,"startCharacter":113,"endLine":106,"endCharacter":70},{"startLine":109,"startCharacter":120,"endLine":110,"endCharacter":33,"kind":"comment"},{"startLine":111,"startCharacter":142,"endLine":118,"endCharacter":7},{"startLine":121,"startCharacter":87,"endLine":125,"endCharacter":86,"kind":"comment"},{"startLine":126,"startCharacter":209,"endLine":158,"endCharacter":7},{"startLine":127,"startCharacter":25,"endLine":135,"endCharacter":5},{"startLine":129,"startCharacter":16,"endLine":134,"endCharacter":32},{"startLine":131,"startCharacter":32,"endLine":132,"endCharacter":37},{"startLine":137,"startCharacter":55,"endLine":142,"endCharacter":8},{"startLine":138,"startCharacter":3,"endLine":142,"endCharacter":7},{"startLine":139,"startCharacter":40,"endLine":142,"endCharacter":6},{"startLine":139,"startCharacter":41,"endLine":142,"endCharacter":5},{"startLine":140,"startCharacter":35,"endLine":141,"endCharacter":177},{"startLine":140,"startCharacter":36,"endLine":141,"endCharacter":176},{"startLine":142,"startCharacter":24,"endLine":143,"endCharacter":100},{"startLine":147,"startCharacter":16,"endLine":149,"endCharacter":8},{"startLine":153,"startCharacter":16,"endLine":155,"endCharacter":8},{"startLine":162,"startCharacter":184,"endLine":182,"endCharacter":60},{"startLine":163,"startCharacter":42,"endLine":166,"endCharacter":67},{"startLine":170,"startCharacter":43,"endLine":171,"endCharacter":27},{"startLine":185,"startCharacter":83,"endLine":186,"endCharacter":46,"kind":"comment"},{"startLine":187,"startCharacter":133,"endLine":194,"endCharacter":7},{"startLine":190,"startCharacter":16,"endLine":191,"endCharacter":8},{"startLine":197,"startCharacter":96,"endLine":198,"endCharacter":33,"kind":"comment"},{"startLine":199,"startCharacter":117,"endLine":206,"endCharacter":7},{"startLine":209,"startCharacter":48,"endLine":212,"endCharacter":56,"kind":"comment"},{"startLine":213,"startCharacter":166,"endLine":236,"endCharacter":7},{"startLine":214,"startCharacter":25,"endLine":222,"endCharacter":5},{"startLine":216,"startCharacter":16,"endLine":221,"endCharacter":32},{"startLine":218,"startCharacter":32,"endLine":219,"endCharacter":37},{"startLine":225,"startCharacter":16,"endLine":227,"endCharacter":8},{"startLine":231,"startCharacter":16,"endLine":233,"endCharacter":8},{"startLine":240,"startCharacter":149,"endLine":257,"endCharacter":60},{"startLine":241,"startCharacter":42,"endLine":244,"endCharacter":67},{"startLine":248,"startCharacter":43,"endLine":249,"endCharacter":27},{"startLine":260,"startCharacter":67,"endLine":261,"endCharacter":46,"kind":"comment"},{"startLine":262,"startCharacter":117,"endLine":269,"endCharacter":7},{"startLine":265,"startCharacter":16,"endLine":266,"endCharacter":8},{"startLine":272,"startCharacter":80,"endLine":273,"endCharacter":33,"kind":"comment"},{"startLine":274,"startCharacter":112,"endLine":280,"endCharacter":7},{"startLine":283,"startCharacter":60,"endLine":287,"endCharacter":41,"kind":"comment"},{"startLine":288,"startCharacter":165,"endLine":317,"endCharacter":7},{"startLine":289,"startCharacter":25,"endLine":297,"endCharacter":5},{"startLine":291,"startCharacter":16,"endLine":296,"endCharacter":32},{"startLine":293,"startCharacter":39,"endLine":294,"endCharacter":44},{"startLine":300,"startCharacter":16,"endLine":302,"endCharacter":8},{"startLine":306,"startCharacter":16,"endLine":309,"endCharacter":8},{"startLine":313,"startCharacter":16,"endLine":314,"endCharacter":118},{"startLine":321,"startCharacter":161,"endLine":341,"endCharacter":60},{"startLine":322,"startCharacter":42,"endLine":325,"endCharacter":67},{"startLine":329,"startCharacter":43,"endLine":330,"endCharacter":27},{"startLine":332,"startCharacter":21,"endLine":333,"endCharacter":63},{"startLine":344,"startCharacter":61,"endLine":345,"endCharacter":46,"kind":"comment"},{"startLine":346,"startCharacter":90,"endLine":347,"endCharacter":70},{"startLine":350,"startCharacter":74,"endLine":351,"endCharacter":33,"kind":"comment"},{"startLine":352,"startCharacter":106,"endLine":359,"endCharacter":7},{"startLine":362,"startCharacter":54,"endLine":364,"endCharacter":54,"kind":"comment"},{"startLine":365,"startCharacter":138,"endLine":395,"endCharacter":7},{"startLine":366,"startCharacter":25,"endLine":374,"endCharacter":5},{"startLine":368,"startCharacter":16,"endLine":373,"endCharacter":32},{"startLine":370,"startCharacter":44,"endLine":371,"endCharacter":49},{"startLine":378,"startCharacter":16,"endLine":380,"endCharacter":8},{"startLine":384,"startCharacter":16,"endLine":387,"endCharacter":8},{"startLine":391,"startCharacter":16,"endLine":392,"endCharacter":119},{"startLine":399,"startCharacter":120,"endLine":415,"endCharacter":60},{"startLine":400,"startCharacter":42,"endLine":402,"endCharacter":69},{"startLine":406,"startCharacter":43,"endLine":407,"endCharacter":27},{"startLine":418,"startCharacter":63,"endLine":419,"endCharacter":46,"kind":"comment"},{"startLine":420,"startCharacter":91,"endLine":421,"endCharacter":70},{"startLine":424,"startCharacter":76,"endLine":425,"endCharacter":33,"kind":"comment"},{"startLine":426,"startCharacter":117,"endLine":433,"endCharacter":7},{"startLine":437,"startCharacter":157,"endLine":454,"endCharacter":7},{"startLine":439,"startCharacter":16,"endLine":440,"endCharacter":147},{"startLine":442,"startCharacter":16,"endLine":443,"endCharacter":8},{"startLine":446,"startCharacter":16,"endLine":448,"endCharacter":146},{"startLine":451,"startCharacter":16,"endLine":452,"endCharacter":143},{"startLine":458,"startCharacter":150,"endLine":470,"endCharacter":7},{"startLine":459,"startCharacter":25,"endLine":467,"endCharacter":5},{"startLine":461,"startCharacter":16,"endLine":466,"endCharacter":32},{"startLine":463,"startCharacter":50,"endLine":464,"endCharacter":60},{"startLine":474,"startCharacter":115,"endLine":504,"endCharacter":7},{"startLine":475,"startCharacter":25,"endLine":483,"endCharacter":5},{"startLine":477,"startCharacter":16,"endLine":482,"endCharacter":32},{"startLine":479,"startCharacter":44,"endLine":480,"endCharacter":49},{"startLine":487,"startCharacter":16,"endLine":489,"endCharacter":8},{"startLine":493,"startCharacter":16,"endLine":496,"endCharacter":8},{"startLine":500,"startCharacter":16,"endLine":501,"endCharacter":122},{"startLine":508,"startCharacter":97,"endLine":523,"endCharacter":60},{"startLine":509,"startCharacter":42,"endLine":510,"endCharacter":66},{"startLine":514,"startCharacter":43,"endLine":515,"endCharacter":27},{"startLine":526,"startCharacter":69,"endLine":527,"endCharacter":46,"kind":"comment"},{"startLine":528,"startCharacter":94,"endLine":529,"endCharacter":70},{"startLine":532,"startCharacter":82,"endLine":533,"endCharacter":33,"kind":"comment"},{"startLine":534,"startCharacter":120,"endLine":541,"endCharacter":7},{"startLine":545,"startCharacter":160,"endLine":562,"endCharacter":7},{"startLine":547,"startCharacter":16,"endLine":548,"endCharacter":150},{"startLine":550,"startCharacter":16,"endLine":551,"endCharacter":8},{"startLine":554,"startCharacter":16,"endLine":556,"endCharacter":149},{"startLine":559,"startCharacter":16,"endLine":560,"endCharacter":146},{"startLine":566,"startCharacter":127,"endLine":578,"endCharacter":7},{"startLine":567,"startCharacter":25,"endLine":575,"endCharacter":5},{"startLine":569,"startCharacter":16,"endLine":574,"endCharacter":32},{"startLine":571,"startCharacter":50,"endLine":572,"endCharacter":60},{"startLine":581,"startCharacter":31,"endLine":584,"endCharacter":56,"kind":"comment"},{"startLine":585,"startCharacter":175,"endLine":615,"endCharacter":7},{"startLine":586,"startCharacter":25,"endLine":594,"endCharacter":5},{"startLine":588,"startCharacter":16,"endLine":593,"endCharacter":32},{"startLine":590,"startCharacter":45,"endLine":591,"endCharacter":50},{"startLine":598,"startCharacter":16,"endLine":600,"endCharacter":8},{"startLine":604,"startCharacter":16,"endLine":607,"endCharacter":8},{"startLine":611,"startCharacter":16,"endLine":612,"endCharacter":124},{"startLine":619,"startCharacter":152,"endLine":636,"endCharacter":60},{"startLine":620,"startCharacter":42,"endLine":623,"endCharacter":67},{"startLine":627,"startCharacter":43,"endLine":628,"endCharacter":27},{"startLine":639,"startCharacter":73,"endLine":640,"endCharacter":46,"kind":"comment"},{"startLine":641,"startCharacter":96,"endLine":642,"endCharacter":70},{"startLine":645,"startCharacter":86,"endLine":646,"endCharacter":33,"kind":"comment"},{"startLine":647,"startCharacter":127,"endLine":654,"endCharacter":7},{"startLine":658,"startCharacter":172,"endLine":675,"endCharacter":7},{"startLine":660,"startCharacter":16,"endLine":661,"endCharacter":152},{"startLine":663,"startCharacter":16,"endLine":664,"endCharacter":8},{"startLine":667,"startCharacter":16,"endLine":669,"endCharacter":151},{"startLine":672,"startCharacter":16,"endLine":673,"endCharacter":148},{"startLine":679,"startCharacter":187,"endLine":691,"endCharacter":7},{"startLine":680,"startCharacter":25,"endLine":688,"endCharacter":5},{"startLine":682,"startCharacter":16,"endLine":687,"endCharacter":32},{"startLine":684,"startCharacter":50,"endLine":685,"endCharacter":60},{"startLine":694,"startCharacter":45,"endLine":698,"endCharacter":67,"kind":"comment"},{"startLine":699,"startCharacter":180,"endLine":728,"endCharacter":7},{"startLine":700,"startCharacter":25,"endLine":708,"endCharacter":5},{"startLine":702,"startCharacter":16,"endLine":707,"endCharacter":32},{"startLine":704,"startCharacter":39,"endLine":705,"endCharacter":44},{"startLine":711,"startCharacter":16,"endLine":713,"endCharacter":8},{"startLine":717,"startCharacter":16,"endLine":720,"endCharacter":8},{"startLine":724,"startCharacter":16,"endLine":725,"endCharacter":125},{"startLine":732,"startCharacter":176,"endLine":751,"endCharacter":60},{"startLine":733,"startCharacter":42,"endLine":736,"endCharacter":67},{"startLine":740,"startCharacter":43,"endLine":741,"endCharacter":27},{"startLine":754,"startCharacter":75,"endLine":755,"endCharacter":46,"kind":"comment"},{"startLine":756,"startCharacter":97,"endLine":757,"endCharacter":70},{"startLine":760,"startCharacter":88,"endLine":761,"endCharacter":33,"kind":"comment"},{"startLine":762,"startCharacter":113,"endLine":769,"endCharacter":7}]


[Trace - 21:24:55.715 PM] Received response 'textDocument/codeLens - (41)' in 602ms.
Result: null


[Trace - 21:24:55.726 PM] Received response 'textDocument/codeAction - (42)' in 612ms.
Result: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"documentChanges":[{"textDocument":{"version":1,"uri":"file:///home/mjyeaney/go/pkg/mod/github.com/%21azure/azure-sdk-for-go@v44.1.0+incompatible/services/network/mgmt/2019-09-01/network/virtualnetworks.go"},"edits":[{"range":{"start":{"line":21,"character":2},"end":{"line":21,"character":2}},"newText":"net/http\"\n\n\t\""},{"range":{"start":{"line":24,"character":38},"end":{"line":25,"character":10}},"newText":""}]}]}}]


[Trace - 21:24:56.861 PM] Sending request 'textDocument/hover - (43)'.
Params: {"textDocument":{"uri":"file:///home/mjyeaney/go/pkg/mod/github.com/%21azure/azure-sdk-for-go%40v44.1.0%2Bincompatible/services/network/mgmt/2019-09-01/network/virtualnetworks.go"},"position":{"line":51,"character":22}}


[Trace - 21:24:56.862 PM] Received response 'textDocument/hover - (43)' in 1ms.
Result: {"contents":{"kind":"markdown","value":"```go\nfunc tracing.StartSpan(ctx context.Context, name string) context.Context\n```\n\n[`tracing.StartSpan` on pkg.go.dev](https://pkg.go.dev/github.com/Azure/go-autorest/tracing@v0.5.0#StartSpan)\n\nStartSpan starts a trace span with the specified name, associating it with the\nprovided context\\.  Has no effect if a Tracer has not been registered\\.\n"},"range":{"start":{"line":51,"character":16},"end":{"line":51,"character":25}}}


[Trace - 21:24:58.190 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"2020/07/15 21:24:58 background refresh finished after 4.482934s\n"}


[Info  - 9:24:58 PM] 2020/07/15 21:24:58 background refresh finished after 4.482934s

[Trace - 21:26:21.479 PM] Sending notification 'textDocument/didClose'.
Params: {"textDocument":{"uri":"file:///home/mjyeaney/go/pkg/mod/github.com/%21azure/azure-sdk-for-go%40v44.1.0%2Bincompatible/services/network/mgmt/2019-09-01/network/virtualnetworks.go"}}


[Trace - 21:26:21.481 PM] Sending request 'textDocument/documentLink - (44)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"}}


[Trace - 21:26:21.481 PM] Sending request 'textDocument/codeAction - (45)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}


[Trace - 21:26:21.483 PM] Sending request 'textDocument/documentSymbol - (46)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"}}


[Trace - 21:26:21.503 PM] Received response 'textDocument/documentLink - (44)' in 21ms.
Result: [{"range":{"start":{"line":3,"character":2},"end":{"line":3,"character":9}},"target":"https://pkg.go.dev/context"},{"range":{"start":{"line":4,"character":2},"end":{"line":4,"character":5}},"target":"https://pkg.go.dev/fmt"},{"range":{"start":{"line":5,"character":2},"end":{"line":5,"character":11}},"target":"https://pkg.go.dev/io/ioutil"},{"range":{"start":{"line":6,"character":2},"end":{"line":6,"character":5}},"target":"https://pkg.go.dev/log"},{"range":{"start":{"line":7,"character":2},"end":{"line":7,"character":9}},"target":"https://pkg.go.dev/net/url"},{"range":{"start":{"line":8,"character":2},"end":{"line":8,"character":4}},"target":"https://pkg.go.dev/os"},{"range":{"start":{"line":9,"character":2},"end":{"line":9,"character":9}},"target":"https://pkg.go.dev/reflect"},{"range":{"start":{"line":10,"character":2},"end":{"line":10,"character":6}},"target":"https://pkg.go.dev/sort"},{"range":{"start":{"line":11,"character":2},"end":{"line":11,"character":9}},"target":"https://pkg.go.dev/strings"},{"range":{"start":{"line":13,"character":2},"end":{"line":13,"character":76}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/compute/mgmt/2020-06-01/compute"},{"range":{"start":{"line":14,"character":2},"end":{"line":14,"character":94}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/containerservice/mgmt/2020-02-01/containerservice"},{"range":{"start":{"line":15,"character":9},"end":{"line":15,"character":65}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/keyvault/auth"},{"range":{"start":{"line":16,"character":2},"end":{"line":16,"character":67}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/keyvault/v7.0/keyvault"},{"range":{"start":{"line":17,"character":2},"end":{"line":17,"character":76}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/network/mgmt/2019-09-01/network"},{"range":{"start":{"line":18,"character":2},"end":{"line":18,"character":82}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/postgresql/mgmt/2017-12-01/postgresql"},{"range":{"start":{"line":19,"character":2},"end":{"line":19,"character":76}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go@v44.1.0+incompatible/services/storage/mgmt/2019-06-01/storage"},{"range":{"start":{"line":20,"character":2},"end":{"line":20,"character":47}},"target":"https://pkg.go.dev/github.com/Azure/azure-storage-file-go@v0.6.0/azfile"},{"range":{"start":{"line":21,"character":2},"end":{"line":21,"character":39}},"target":"https://pkg.go.dev/github.com/Azure/go-autorest/autorest@v0.10.0"},{"range":{"start":{"line":22,"character":2},"end":{"line":22,"character":50}},"target":"https://pkg.go.dev/github.com/Azure/go-autorest/autorest/azure/auth@v0.4.2"},{"range":{"start":{"line":284,"character":8},"end":{"line":284,"character":80}},"target":"https://foo.vault.azure.net/secrets/BAR/194bd7da9aa54944ab316faebd9120d0"}]


[Trace - 21:26:21.511 PM] Received response 'textDocument/codeAction - (45)' in 30ms.
Result: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"documentChanges":[{"textDocument":{"version":1,"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"},"edits":[{"range":{"start":{"line":0,"character":14},"end":{"line":0,"character":15}},"newText":""},{"range":{"start":{"line":1,"character":0},"end":{"line":1,"character":1}},"newText":""},{"range":{"start":{"line":2,"character":8},"end":{"line":2,"character":9}},"newText":""},{"range":{"start":{"line":3,"character":10},"end":{"line":3,"character":11}},"newText":""},{"range":{"start":{"line":4,"character":6},"end":{"line":4,"character":7}},"newText":""},{"range":{"start":{"line":5,"character":12},"end":{"line":5,"character":13}},"newText":""},{"range":{"start":{"line":6,"character":6},"end":{"line":6,"character":7}},"newText":""},{"range":{"start":{"line":7,"character":10},"end":{"line":7,"character":11}},"newText":""},{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":""},{"range":{"start":{"line":9,"character":10},"end":{"line":9,"character":11}},"newText":""},{"range":{"start":{"line":10,"character":7},"end":{"line":10,"character":8}},"newText":""},{"range":{"start":{"line":11,"character":10},"end":{"line":11,"character":11}},"newText":""},{"range":{"start":{"line":12,"character":0},"end":{"line":12,"character":1}},"newText":""},{"range":{"start":{"line":13,"character":77},"end":{"line":13,"character":78}},"newText":""},{"range":{"start":{"line":14,"character":95},"end":{"line":14,"character":96}},"newText":""},{"range":{"start":{"line":15,"character":66},"end":{"line":15,"character":67}},"newText":""},{"range":{"start":{"line":16,"character":68},"end":{"line":16,"character":69}},"newText":""},{"range":{"start":{"line":17,"character":77},"end":{"line":17,"character":78}},"newText":""},{"range":{"start":{"line":18,"character":83},"end":{"line":18,"character":84}},"newText":""},{"range":{"start":{"line":19,"character":77},"end":{"line":19,"character":78}},"newText":""},{"range":{"start":{"line":20,"character":48},"end":{"line":20,"character":49}},"newText":""},{"range":{"start":{"line":21,"character":40},"end":{"line":21,"character":41}},"newText":""},{"range":{"start":{"line":22,"character":51},"end":{"line":22,"character":52}},"newText":""}]}]}}]


[Trace - 21:26:21.512 PM] Received response 'textDocument/documentSymbol - (46)' in 29ms.
Result: [{"name":"SubscriptionIDEnvName","detail":"untyped string","kind":14,"range":{"start":{"line":25,"character":0},"end":{"line":28,"character":1}},"selectionRange":{"start":{"line":27,"character":1},"end":{"line":27,"character":22}}},{"name":"GetNetworkInterfaceE","detail":"(resourceGroupName string, nicName string)","kind":12,"range":{"start":{"line":31,"character":0},"end":{"line":43,"character":1}},"selectionRange":{"start":{"line":31,"character":5},"end":{"line":31,"character":25}}},{"name":"GetNetworkInterfaceClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":46,"character":0},"end":{"line":56,"character":1}},"selectionRange":{"start":{"line":46,"character":5},"end":{"line":46,"character":30}}},{"name":"GetVirtualMachinesE","detail":"(resourceGroupName string)","kind":12,"range":{"start":{"line":59,"character":0},"end":{"line":77,"character":1}},"selectionRange":{"start":{"line":59,"character":5},"end":{"line":59,"character":24}}},{"name":"GetVirtualMachinesClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":80,"character":0},"end":{"line":90,"character":1}},"selectionRange":{"start":{"line":80,"character":5},"end":{"line":80,"character":29}}},{"name":"GetAllSubClientsE","detail":"(resourceGroupName string, virtualNetworkName string)","kind":12,"range":{"start":{"line":93,"character":0},"end":{"line":112,"character":1}},"selectionRange":{"start":{"line":93,"character":5},"end":{"line":93,"character":22}}},{"name":"GetSubNetClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":115,"character":0},"end":{"line":125,"character":1}},"selectionRange":{"start":{"line":115,"character":5},"end":{"line":115,"character":20}}},{"name":"GetVirtualNetworkE","detail":"(resourceGroupName string, virtualNetworkName string)","kind":12,"range":{"start":{"line":128,"character":0},"end":{"line":139,"character":1}},"selectionRange":{"start":{"line":128,"character":5},"end":{"line":128,"character":23}}},{"name":"GetVirtualNetworksClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":142,"character":0},"end":{"line":152,"character":1}},"selectionRange":{"start":{"line":142,"character":5},"end":{"line":142,"character":29}}},{"name":"GetStorageAccountClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":155,"character":0},"end":{"line":163,"character":1}},"selectionRange":{"start":{"line":155,"character":5},"end":{"line":155,"character":28}}},{"name":"GetStorageAccountProperty","detail":"(resourceGroupName string, storageAccountName string)","kind":12,"range":{"start":{"line":166,"character":0},"end":{"line":176,"character":1}},"selectionRange":{"start":{"line":166,"character":5},"end":{"line":166,"character":30}}},{"name":"GetBlobContainersClient","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":179,"character":0},"end":{"line":188,"character":1}},"selectionRange":{"start":{"line":179,"character":5},"end":{"line":179,"character":28}}},{"name":"GetBlobContainer","detail":"(resourceGroupName string, storageAccountName string, containerName string)","kind":12,"range":{"start":{"line":191,"character":0},"end":{"line":201,"character":1}},"selectionRange":{"start":{"line":191,"character":5},"end":{"line":191,"character":21}}},{"name":"AzureFileShareClient","detail":"struct{...}","kind":23,"range":{"start":{"line":204,"character":5},"end":{"line":208,"character":1}},"selectionRange":{"start":{"line":204,"character":5},"end":{"line":204,"character":25}},"children":[{"name":"Credential","detail":"*azfile.SharedKeyCredential","kind":8,"range":{"start":{"line":205,"character":1},"end":{"line":205,"character":47}},"selectionRange":{"start":{"line":205,"character":1},"end":{"line":205,"character":11}}},{"name":"StorageAccountName","detail":"string","kind":8,"range":{"start":{"line":206,"character":1},"end":{"line":206,"character":26}},"selectionRange":{"start":{"line":206,"character":1},"end":{"line":206,"character":19}}},{"name":"FileShareName","detail":"string","kind":8,"range":{"start":{"line":207,"character":1},"end":{"line":207,"character":26}},"selectionRange":{"start":{"line":207,"character":1},"end":{"line":207,"character":14}}}]},{"name":"GetAzureFileShareClientE","detail":"(accountName string, fileShare string, accountKey string)","kind":12,"range":{"start":{"line":211,"character":0},"end":{"line":221,"character":1}},"selectionRange":{"start":{"line":211,"character":5},"end":{"line":211,"character":29}}},{"name":"(*AzureFileShareClient).getAzureFileURL","detail":"(azureFileName string)","kind":6,"range":{"start":{"line":223,"character":0},"end":{"line":226,"character":1}},"selectionRange":{"start":{"line":223,"character":31},"end":{"line":223,"character":46}}},{"name":"(*AzureFileShareClient).DownloadAzureFileToFile","detail":"(azureFileName string, localFileName string)","kind":6,"range":{"start":{"line":229,"character":0},"end":{"line":251,"character":1}},"selectionRange":{"start":{"line":229,"character":31},"end":{"line":229,"character":54}}},{"name":"GetStorageAccountCredentialE","detail":"(accountName string, accountKey string)","kind":12,"range":{"start":{"line":254,"character":0},"end":{"line":256,"character":1}},"selectionRange":{"start":{"line":254,"character":5},"end":{"line":254,"character":33}}},{"name":"NewAuthorizer","detail":"()","kind":12,"range":{"start":{"line":259,"character":0},"end":{"line":262,"character":1}},"selectionRange":{"start":{"line":259,"character":5},"end":{"line":259,"character":18}}},{"name":"NewKeyVaultAuthorizer","detail":"()","kind":12,"range":{"start":{"line":265,"character":0},"end":{"line":268,"character":1}},"selectionRange":{"start":{"line":265,"character":5},"end":{"line":265,"character":26}}},{"name":"GetKeyVaultClient","detail":"()","kind":12,"range":{"start":{"line":271,"character":0},"end":{"line":281,"character":1}},"selectionRange":{"start":{"line":271,"character":5},"end":{"line":271,"character":22}}},{"name":"GetKeyVaultSecretCurrentVersion","detail":"(keyVaultName string, secretName string)","kind":12,"range":{"start":{"line":285,"character":0},"end":{"line":304,"character":1}},"selectionRange":{"start":{"line":285,"character":5},"end":{"line":285,"character":36}}},{"name":"GetSecret","detail":"(keyVaultName string, secretName string, version string)","kind":12,"range":{"start":{"line":307,"character":0},"end":{"line":317,"character":1}},"selectionRange":{"start":{"line":307,"character":5},"end":{"line":307,"character":14}}},{"name":"GetCurrentSecret","detail":"(keyVaultName string, secretName string)","kind":12,"range":{"start":{"line":320,"character":0},"end":{"line":330,"character":1}},"selectionRange":{"start":{"line":320,"character":5},"end":{"line":320,"character":21}}},{"name":"FetchKeyVaultSecretE","detail":"(s interface{})","kind":12,"range":{"start":{"line":333,"character":0},"end":{"line":356,"character":1}},"selectionRange":{"start":{"line":333,"character":5},"end":{"line":333,"character":25}}},{"name":"getKeyVaultName","detail":"(s interface{})","kind":12,"range":{"start":{"line":358,"character":0},"end":{"line":375,"character":1}},"selectionRange":{"start":{"line":358,"character":5},"end":{"line":358,"character":20}}},{"name":"GetPostgreSQLServersClient","detail":"()","kind":12,"range":{"start":{"line":378,"character":0},"end":{"line":383,"character":1}},"selectionRange":{"start":{"line":378,"character":5},"end":{"line":378,"character":31}}},{"name":"FetchDatabaseServerNameE","detail":"(serverNamePrefix string)","kind":12,"range":{"start":{"line":387,"character":0},"end":{"line":414,"character":1}},"selectionRange":{"start":{"line":387,"character":5},"end":{"line":387,"character":29}}},{"name":"GetApplicationGatewayE","detail":"(resourceGroupName string, applicationGatewayName string)","kind":12,"range":{"start":{"line":417,"character":0},"end":{"line":427,"character":1}},"selectionRange":{"start":{"line":417,"character":5},"end":{"line":417,"character":27}}},{"name":"GetPublicIPAddressE","detail":"(resourceGroupName string, publicIPAddressName string)","kind":12,"range":{"start":{"line":430,"character":0},"end":{"line":440,"character":1}},"selectionRange":{"start":{"line":430,"character":5},"end":{"line":430,"character":24}}},{"name":"GetApplicationGatewayClientE","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":443,"character":0},"end":{"line":451,"character":1}},"selectionRange":{"start":{"line":443,"character":5},"end":{"line":443,"character":33}}},{"name":"GetPublicIPAddressClientE","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":454,"character":0},"end":{"line":462,"character":1}},"selectionRange":{"start":{"line":454,"character":5},"end":{"line":454,"character":30}}},{"name":"GetClusterAdminCredentialsE","detail":"(resourceGroupName string, clusterName string)","kind":12,"range":{"start":{"line":465,"character":0},"end":{"line":476,"character":1}},"selectionRange":{"start":{"line":465,"character":5},"end":{"line":465,"character":32}}},{"name":"WriteKubeconfigFromCredentialsE","detail":"(credentialResults *containerservice.CredentialResults, filePath string)","kind":12,"range":{"start":{"line":479,"character":0},"end":{"line":482,"character":1}},"selectionRange":{"start":{"line":479,"character":5},"end":{"line":479,"character":36}}},{"name":"GetManagedClusterE","detail":"(resourceGroupName string, clusterName string)","kind":12,"range":{"start":{"line":485,"character":0},"end":{"line":495,"character":1}},"selectionRange":{"start":{"line":485,"character":5},"end":{"line":485,"character":23}}},{"name":"GetManagedClustersClientE","detail":"(subscriptionID string)","kind":12,"range":{"start":{"line":498,"character":0},"end":{"line":506,"character":1}},"selectionRange":{"start":{"line":498,"character":5},"end":{"line":498,"character":30}}}]


[Trace - 21:26:21.630 PM] Sending request 'textDocument/foldingRange - (47)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"}}


[Trace - 21:26:21.635 PM] Received response 'textDocument/foldingRange - (47)' in 5ms.
Result: [{"startLine":2,"startCharacter":8,"endLine":22,"endCharacter":51,"kind":"imports"},{"startLine":25,"startCharacter":7,"endLine":27,"endCharacter":46},{"startLine":31,"startCharacter":97,"endLine":42,"endCharacter":17},{"startLine":33,"startCharacter":16,"endLine":34,"endCharacter":17},{"startLine":38,"startCharacter":16,"endLine":39,"endCharacter":17},{"startLine":46,"startCharacter":90,"endLine":55,"endCharacter":23},{"startLine":50,"startCharacter":16,"endLine":51,"endCharacter":17},{"startLine":59,"startCharacter":106,"endLine":76,"endCharacter":23},{"startLine":61,"startCharacter":16,"endLine":62,"endCharacter":17},{"startLine":66,"startCharacter":16,"endLine":67,"endCharacter":17},{"startLine":71,"startCharacter":33,"endLine":74,"endCharacter":41},{"startLine":80,"startCharacter":94,"endLine":89,"endCharacter":22},{"startLine":84,"startCharacter":16,"endLine":85,"endCharacter":17},{"startLine":93,"startCharacter":98,"endLine":111,"endCharacter":27},{"startLine":95,"startCharacter":16,"endLine":96,"endCharacter":17},{"startLine":100,"startCharacter":16,"endLine":101,"endCharacter":17},{"startLine":105,"startCharacter":37,"endLine":109,"endCharacter":51},{"startLine":115,"startCharacter":77,"endLine":124,"endCharacter":26},{"startLine":119,"startCharacter":16,"endLine":120,"endCharacter":17},{"startLine":128,"startCharacter":104,"endLine":138,"endCharacter":28},{"startLine":131,"startCharacter":16,"endLine":132,"endCharacter":17},{"startLine":135,"startCharacter":16,"endLine":136,"endCharacter":17},{"startLine":142,"startCharacter":94,"endLine":151,"endCharacter":22},{"startLine":146,"startCharacter":16,"endLine":147,"endCharacter":17},{"startLine":155,"startCharacter":86,"endLine":162,"endCharacter":34},{"startLine":158,"startCharacter":16,"endLine":159,"endCharacter":17},{"startLine":166,"startCharacter":104,"endLine":175,"endCharacter":21},{"startLine":168,"startCharacter":16,"endLine":169,"endCharacter":17},{"startLine":172,"startCharacter":16,"endLine":173,"endCharacter":17},{"startLine":179,"startCharacter":92,"endLine":187,"endCharacter":33},{"startLine":183,"startCharacter":16,"endLine":184,"endCharacter":17},{"startLine":191,"startCharacter":116,"endLine":200,"endCharacter":23},{"startLine":193,"startCharacter":16,"endLine":194,"endCharacter":17},{"startLine":197,"startCharacter":16,"endLine":198,"endCharacter":17},{"startLine":204,"startCharacter":34,"endLine":207,"endCharacter":26},{"startLine":211,"startCharacter":105,"endLine":220,"endCharacter":7},{"startLine":213,"startCharacter":16,"endLine":214,"endCharacter":17},{"startLine":216,"startCharacter":30,"endLine":219,"endCharacter":31},{"startLine":223,"startCharacter":85,"endLine":225,"endCharacter":91},{"startLine":229,"startCharacter":99,"endLine":250,"endCharacter":11},{"startLine":232,"startCharacter":16,"endLine":233,"endCharacter":12},{"startLine":237,"startCharacter":38,"endLine":242,"endCharacter":4},{"startLine":240,"startCharacter":43,"endLine":241,"endCharacter":58},{"startLine":244,"startCharacter":16,"endLine":245,"endCharacter":12},{"startLine":254,"startCharacter":104,"endLine":255,"endCharacter":62},{"startLine":259,"startCharacter":52,"endLine":261,"endCharacter":24},{"startLine":265,"startCharacter":60,"endLine":267,"endCharacter":24},{"startLine":271,"startCharacter":56,"endLine":280,"endCharacter":22},{"startLine":275,"startCharacter":16,"endLine":276,"endCharacter":17},{"startLine":283,"startCharacter":75,"endLine":284,"endCharacter":116,"kind":"comment"},{"startLine":285,"startCharacter":87,"endLine":303,"endCharacter":61},{"startLine":287,"startCharacter":16,"endLine":288,"endCharacter":16},{"startLine":295,"startCharacter":16,"endLine":296,"endCharacter":16},{"startLine":299,"startCharacter":40,"endLine":300,"endCharacter":124},{"startLine":307,"startCharacter":74,"endLine":316,"endCharacter":26},{"startLine":309,"startCharacter":16,"endLine":310,"endCharacter":16},{"startLine":313,"startCharacter":16,"endLine":314,"endCharacter":16},{"startLine":320,"startCharacter":72,"endLine":329,"endCharacter":19},{"startLine":322,"startCharacter":16,"endLine":323,"endCharacter":16},{"startLine":326,"startCharacter":16,"endLine":327,"endCharacter":16},{"startLine":333,"startCharacter":63,"endLine":355,"endCharacter":14},{"startLine":335,"startCharacter":16,"endLine":336,"endCharacter":17},{"startLine":340,"startCharacter":41,"endLine":352,"endCharacter":3},{"startLine":342,"startCharacter":36,"endLine":351,"endCharacter":4},{"startLine":344,"startCharacter":48,"endLine":350,"endCharacter":37},{"startLine":347,"startCharacter":19,"endLine":348,"endCharacter":20},{"startLine":358,"startCharacter":53,"endLine":374,"endCharacter":81},{"startLine":361,"startCharacter":41,"endLine":372,"endCharacter":3},{"startLine":363,"startCharacter":44,"endLine":371,"endCharacter":4},{"startLine":364,"startCharacter":48,"endLine":370,"endCharacter":40},{"startLine":367,"startCharacter":25,"endLine":368,"endCharacter":131},{"startLine":378,"startCharacter":70,"endLine":382,"endCharacter":20},{"startLine":385,"startCharacter":92,"endLine":386,"endCharacter":102,"kind":"comment"},{"startLine":387,"startCharacter":72,"endLine":413,"endCharacter":28},{"startLine":389,"startCharacter":16,"endLine":390,"endCharacter":16},{"startLine":393,"startCharacter":16,"endLine":394,"endCharacter":16},{"startLine":399,"startCharacter":34,"endLine":402,"endCharacter":3},{"startLine":400,"startCharacter":53,"endLine":401,"endCharacter":47},{"startLine":405,"startCharacter":28,"endLine":406,"endCharacter":95},{"startLine":408,"startCharacter":28,"endLine":411,"endCharacter":3},{"startLine":409,"startCharacter":41,"endLine":410,"endCharacter":130},{"startLine":417,"startCharacter":116,"endLine":426,"endCharacter":32},{"startLine":419,"startCharacter":16,"endLine":420,"endCharacter":17},{"startLine":423,"startCharacter":16,"endLine":424,"endCharacter":17},{"startLine":430,"startCharacter":107,"endLine":439,"endCharacter":29},{"startLine":432,"startCharacter":16,"endLine":433,"endCharacter":17},{"startLine":436,"startCharacter":16,"endLine":437,"endCharacter":17},{"startLine":443,"startCharacter":102,"endLine":450,"endCharacter":20},{"startLine":446,"startCharacter":16,"endLine":447,"endCharacter":17},{"startLine":454,"startCharacter":97,"endLine":461,"endCharacter":20},{"startLine":457,"startCharacter":16,"endLine":458,"endCharacter":17},{"startLine":465,"startCharacter":118,"endLine":475,"endCharacter":25},{"startLine":467,"startCharacter":16,"endLine":468,"endCharacter":17},{"startLine":472,"startCharacter":16,"endLine":473,"endCharacter":17},{"startLine":479,"startCharacter":116,"endLine":481,"endCharacter":59},{"startLine":485,"startCharacter":106,"endLine":494,"endCharacter":28},{"startLine":487,"startCharacter":16,"endLine":488,"endCharacter":17},{"startLine":491,"startCharacter":16,"endLine":492,"endCharacter":17},{"startLine":498,"startCharacter":104,"endLine":505,"endCharacter":20},{"startLine":501,"startCharacter":16,"endLine":502,"endCharacter":17}]


[Trace - 21:26:21.706 PM] Sending request 'textDocument/codeLens - (48)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"}}


[Trace - 21:26:21.706 PM] Received response 'textDocument/codeLens - (48)' in 0ms.
Result: null


[Trace - 21:26:21.707 PM] Sending request 'textDocument/codeAction - (49)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"},"range":{"start":{"line":143,"character":41},"end":{"line":143,"character":41}},"context":{"diagnostics":[]}}


[Trace - 21:26:21.713 PM] Received response 'textDocument/codeAction - (49)' in 5ms.
Result: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"documentChanges":[{"textDocument":{"version":1,"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"},"edits":[{"range":{"start":{"line":0,"character":14},"end":{"line":0,"character":15}},"newText":""},{"range":{"start":{"line":1,"character":0},"end":{"line":1,"character":1}},"newText":""},{"range":{"start":{"line":2,"character":8},"end":{"line":2,"character":9}},"newText":""},{"range":{"start":{"line":3,"character":10},"end":{"line":3,"character":11}},"newText":""},{"range":{"start":{"line":4,"character":6},"end":{"line":4,"character":7}},"newText":""},{"range":{"start":{"line":5,"character":12},"end":{"line":5,"character":13}},"newText":""},{"range":{"start":{"line":6,"character":6},"end":{"line":6,"character":7}},"newText":""},{"range":{"start":{"line":7,"character":10},"end":{"line":7,"character":11}},"newText":""},{"range":{"start":{"line":8,"character":5},"end":{"line":8,"character":6}},"newText":""},{"range":{"start":{"line":9,"character":10},"end":{"line":9,"character":11}},"newText":""},{"range":{"start":{"line":10,"character":7},"end":{"line":10,"character":8}},"newText":""},{"range":{"start":{"line":11,"character":10},"end":{"line":11,"character":11}},"newText":""},{"range":{"start":{"line":12,"character":0},"end":{"line":12,"character":1}},"newText":""},{"range":{"start":{"line":13,"character":77},"end":{"line":13,"character":78}},"newText":""},{"range":{"start":{"line":14,"character":95},"end":{"line":14,"character":96}},"newText":""},{"range":{"start":{"line":15,"character":66},"end":{"line":15,"character":67}},"newText":""},{"range":{"start":{"line":16,"character":68},"end":{"line":16,"character":69}},"newText":""},{"range":{"start":{"line":17,"character":77},"end":{"line":17,"character":78}},"newText":""},{"range":{"start":{"line":18,"character":83},"end":{"line":18,"character":84}},"newText":""},{"range":{"start":{"line":19,"character":77},"end":{"line":19,"character":78}},"newText":""},{"range":{"start":{"line":20,"character":48},"end":{"line":20,"character":49}},"newText":""},{"range":{"start":{"line":21,"character":40},"end":{"line":21,"character":41}},"newText":""},{"range":{"start":{"line":22,"character":51},"end":{"line":22,"character":52}},"newText":""}]}]}}]


[Trace - 21:26:22.732 PM] Sending notification 'textDocument/didClose'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"}}


[Trace - 21:26:23.949 PM] Sending notification 'textDocument/didClose'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/03_networking_mgmt_subnet_test.go"}}


[Trace - 21:26:24.802 PM] Sending notification 'textDocument/didClose'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/helper/azure_helper.go"}}


[Trace - 21:26:26.212 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go","languageId":"go","version":1,"text":"// +build 04\n\npackage terraform\n\nimport (\n\t\"strings\"\n\t\"testing\"\n\n\t\"dev.azure.com/csedevops/public-terraform-template/test/helper\"\n\t\"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2020-06-01/compute\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\ntype MgmtVmConfig struct {\n\tResourceGroupName     string `env:\"TF_VAR_COR_RESOURCE_GROUP\"`\n\tMgmtVm01Name          string `env:\"TF_VAR_MGMTVM_NAME_01\"`\n\tMgmtVm01AdminUsername string `env:\"TF_VAR_GLAUSERNAME\"`\n\tMgmtVm01PrivateIP     string `env:\"TF_VAR_MGMT01_PRIVATE_IP\"`\n\tMgmtVm02Name          string `env:\"TF_VAR_MGMTVM_NAME_02\"`\n\tMgmtVm02AdminUsername string `env:\"TF_VAR_GLAUSERNAME\"`\n\tMgmtVm02PrivateIP     string `env:\"TF_VAR_MGMT02_PRIVATE_IP\"`\n}\n\nfunc Test04_vms_mgmt_vm_01_test(t *testing.T) {\n\thelper.LoadEnvFile(t)\n\tconfig := helper.DeserializeVariablesStruct(&MgmtVmConfig{}).(*MgmtVmConfig)\n\tassert.True(t, helper.ValidateVariablesStruct(config, true))\n\n\t// Read the vms (should be 2)\n\tvmList, err := helper.GetVirtualMachinesE(config.ResourceGroupName)\n\n\t// Assert no err\n\trequire.NoError(t, err)\n\n\t// Make sure the VM was found\n\tassert.True(t, len(*vmList) > 0)\n\n\t// For each VM, check: SKU, Name, disk count...??\n\ttheVm := (*vmList)[config.MgmtVm01Name]\n\t\n\t// Check properties\n\t// NOTE: This needs moved to a TF VAR\n\tassert.Equal(t, theVm.HardwareProfile.VMSize, compute.VirtualMachineSizeTypes(\"Standard_DS1_v2\"))\n\tassert.Equal(t, *theVm.OsProfile.ComputerName, config.MgmtVm01Name)\n\tassert.Equal(t, *theVm.OsProfile.AdminUsername, config.MgmtVm01AdminUsername)\n\n\t// Get the primary NIC\n\tprimaryNicID := (*theVm.NetworkProfile.NetworkInterfaces)[0].ID\n\t\n\t// NOTE: Splittling the resource ID to get the actual NIC name, since the compute API\n\t// gives us the entire resource ID. Would love to clean this up\n\tnic_parts := strings.Split(*primaryNicID, \"/\")\n\tnic_name := nic_parts[8]\n\t\n\t// Now read the nic\n\ttheNic, err := helper.GetNetworkInterfaceE(config.ResourceGroupName, nic_name)\n\trequire.NoError(t, err)\n\tassert.Equal(t, *(*theNic.IPConfigurations)[0].PrivateIPAddress, config.MgmtVm01PrivateIP)\n}\n\nfunc Test04_vms_mgmt_vm_02_test(t *testing.T) {\n\thelper.LoadEnvFile(t)\n\tconfig := helper.DeserializeVariablesStruct(&MgmtVmConfig{}).(*MgmtVmConfig)\n\tassert.True(t, helper.ValidateVariablesStruct(config, true))\n\n\t// Read the vms (should be 2)\n\tvmList, err := helper.GetVirtualMachinesE(config.ResourceGroupName)\n\n\t// Assert no err\n\trequire.NoError(t, err)\n\n\t// Make sure the VM was found\n\tassert.True(t, len(*vmList) > 0)\n\n\t// For each VM, check: SKU, Name, disk count...??\n\ttheVm := (*vmList)[config.MgmtVm02Name]\n\n\t// Check rest of properties\n\t// NOTE: This needs moved to a TF VAR\n\tassert.Equal(t, theVm.HardwareProfile.VMSize, compute.VirtualMachineSizeTypes(\"Standard_DS1_v2\"))\n\tassert.Equal(t, *theVm.InstanceView.ComputerName, config.MgmtVm02Name)\n\tassert.Equal(t, *theVm.OsProfile.AdminUsername, config.MgmtVm02AdminUsername)\n\n\t// Get the primary NIC\n\tprimaryNicID := (*theVm.NetworkProfile.NetworkInterfaces)[0].ID\n\t\n\t// NOTE: Splittling the resource ID to get the actual NIC name, since the compute API\n\t// gives us the entire resource ID. Would love to clean this up\n\tnic_parts := strings.Split(*primaryNicID, \"/\")\n\tnic_name := nic_parts[8]\n\t\n\t// Now read the nic\n\ttheNic, err := helper.GetNetworkInterfaceE(config.ResourceGroupName, nic_name)\n\trequire.NoError(t, err)\n\tassert.Equal(t, *(*theNic.IPConfigurations)[0].PrivateIPAddress, config.MgmtVm02PrivateIP)\n}\n"}}


[Trace - 21:26:26.213 PM] Sending request 'textDocument/documentLink - (50)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"}}


[Trace - 21:26:26.213 PM] Sending request 'textDocument/codeAction - (51)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}


[Trace - 21:26:26.214 PM] Sending request 'textDocument/documentSymbol - (52)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"}}


[Trace - 21:26:26.224 PM] Received response 'textDocument/documentLink - (50)' in 10ms.
Result: [{"range":{"start":{"line":5,"character":2},"end":{"line":5,"character":9}},"target":"https://pkg.go.dev/strings"},{"range":{"start":{"line":6,"character":2},"end":{"line":6,"character":9}},"target":"https://pkg.go.dev/testing"},{"range":{"start":{"line":8,"character":2},"end":{"line":8,"character":63}},"target":"https://pkg.go.dev/dev.azure.com/csedevops/public-terraform-template/test/helper"},{"range":{"start":{"line":9,"character":2},"end":{"line":9,"character":76}},"target":"https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2020-06-01/compute"},{"range":{"start":{"line":10,"character":2},"end":{"line":10,"character":36}},"target":"https://pkg.go.dev/github.com/stretchr/testify@v1.5.1/assert"},{"range":{"start":{"line":11,"character":2},"end":{"line":11,"character":37}},"target":"https://pkg.go.dev/github.com/stretchr/testify@v1.5.1/require"}]


[Trace - 21:26:26.229 PM] Received response 'textDocument/codeAction - (51)' in 15ms.
Result: null


[Trace - 21:26:26.229 PM] Received response 'textDocument/documentSymbol - (52)' in 14ms.
Result: []


[Trace - 21:26:26.229 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"2020/07/15 21:26:26 DocumentSymbols failed: getting file for DocumentSymbols: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go\n\tURI=file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go\n"}


[Error - 9:26:26 PM] 2020/07/15 21:26:26 DocumentSymbols failed: getting file for DocumentSymbols: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go
	URI=file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go

[Trace - 21:26:26.333 PM] Sending request 'textDocument/documentSymbol - (53)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"}}


[Trace - 21:26:26.334 PM] Sending notification '$/cancelRequest'.
Params: {"id":53}


[Trace - 21:26:26.334 PM] Received response 'textDocument/documentSymbol - (53)' in 0ms.
Result: []


[Trace - 21:26:26.335 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"2020/07/15 21:26:26 DocumentSymbols failed: getting file for DocumentSymbols: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go\n\tURI=file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go\n"}


[Trace - 21:26:26.335 PM] Sending request 'textDocument/documentSymbol - (54)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"}}


[Trace - 21:26:26.335 PM] Received response 'textDocument/documentSymbol - (54)' in 0ms.
Result: []


[Trace - 21:26:26.335 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"2020/07/15 21:26:26 DocumentSymbols failed: getting file for DocumentSymbols: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go\n\tURI=file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go\n"}


[Error - 9:26:26 PM] 2020/07/15 21:26:26 DocumentSymbols failed: getting file for DocumentSymbols: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go
	URI=file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go

[Error - 9:26:26 PM] 2020/07/15 21:26:26 DocumentSymbols failed: getting file for DocumentSymbols: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go
	URI=file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go

[Trace - 21:26:26.393 PM] Sending request 'textDocument/foldingRange - (55)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"}}


[Trace - 21:26:26.394 PM] Received response 'textDocument/foldingRange - (55)' in 0ms.
Result: [{"startLine":4,"startCharacter":8,"endLine":11,"endCharacter":38,"kind":"imports"},{"startLine":14,"startCharacter":26,"endLine":21,"endCharacter":62},{"startLine":24,"startCharacter":47,"endLine":58,"endCharacter":91},{"startLine":41,"startCharacter":20,"endLine":42,"endCharacter":38,"kind":"comment"},{"startLine":50,"startCharacter":86,"endLine":51,"endCharacter":64,"kind":"comment"},{"startLine":61,"startCharacter":47,"endLine":95,"endCharacter":91},{"startLine":78,"startCharacter":28,"endLine":79,"endCharacter":38,"kind":"comment"},{"startLine":87,"startCharacter":86,"endLine":88,"endCharacter":64,"kind":"comment"}]


[Trace - 21:26:26.465 PM] Sending request 'textDocument/codeLens - (56)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"}}


[Trace - 21:26:26.465 PM] Received response 'textDocument/codeLens - (56)' in 0ms.
Result: null


[Trace - 21:26:26.519 PM] Sending request 'textDocument/codeAction - (57)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"range":{"start":{"line":26,"character":77},"end":{"line":26,"character":77}},"context":{"diagnostics":[]}}


[Trace - 21:26:26.524 PM] Received response 'textDocument/codeAction - (57)' in 4ms.
Result: null


[Trace - 21:26:27.593 PM] Sending request 'textDocument/hover - (58)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":26,"character":33}}


[Trace - 21:26:27.594 PM] Received response 'textDocument/hover - (58)' in 0ms.
Result: null


[Trace - 21:26:44.003 PM] Sending request 'textDocument/hover - (59)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":30,"character":31}}


[Trace - 21:26:44.005 PM] Received response 'textDocument/hover - (59)' in 1ms.
Result: null


[Trace - 21:26:50.207 PM] Sending request 'textDocument/hover - (60)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":38,"character":34}}


[Trace - 21:26:50.208 PM] Received response 'textDocument/hover - (60)' in 1ms.
Result: null


[Trace - 21:26:51.046 PM] Sending request 'textDocument/hover - (61)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":30,"character":34}}


[Trace - 21:26:51.048 PM] Received response 'textDocument/hover - (61)' in 1ms.
Result: null


[Trace - 21:26:52.314 PM] Sending request 'textDocument/codeAction - (62)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"range":{"start":{"line":30,"character":35},"end":{"line":30,"character":35}},"context":{"diagnostics":[]}}


[Trace - 21:26:52.323 PM] Received response 'textDocument/codeAction - (62)' in 8ms.
Result: null


[Trace - 21:26:53.036 PM] Sending request 'textDocument/definition - (63)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":30,"character":35}}


[Error - Received] 21:26:53.037 PM golang/vscode-go#63 getting file for Identifier: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go


[Error - 9:26:53 PM] Request textDocument/definition failed.
  Message: getting file for Identifier: no ParseGoHandle for file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go
  Code: 0 
[Trace - 21:27:20.156 PM] Sending request 'textDocument/hover - (64)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":33,"character":19}}


[Trace - 21:27:20.158 PM] Received response 'textDocument/hover - (64)' in 1ms.
Result: null


[Trace - 21:27:20.934 PM] Sending request 'textDocument/hover - (65)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":33,"character":11}}


[Trace - 21:27:20.936 PM] Received response 'textDocument/hover - (65)' in 1ms.
Result: null


[Trace - 21:27:24.573 PM] Sending request 'textDocument/hover - (66)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":39,"character":0}}


[Trace - 21:27:24.574 PM] Received response 'textDocument/hover - (66)' in 1ms.
Result: null


[Trace - 21:27:24.951 PM] Sending request 'textDocument/hover - (67)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":39,"character":0}}


[Trace - 21:27:24.951 PM] Received response 'textDocument/hover - (67)' in 0ms.
Result: null


[Trace - 21:27:25.187 PM] Sending request 'textDocument/hover - (68)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":38,"character":0}}


[Trace - 21:27:25.188 PM] Received response 'textDocument/hover - (68)' in 0ms.
Result: null


[Trace - 21:27:25.587 PM] Sending request 'textDocument/hover - (69)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":38,"character":0}}


[Trace - 21:27:25.587 PM] Received response 'textDocument/hover - (69)' in 0ms.
Result: null


[Trace - 21:27:30.888 PM] Sending request 'textDocument/hover - (70)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":26,"character":32}}


[Trace - 21:27:30.889 PM] Received response 'textDocument/hover - (70)' in 1ms.
Result: null


[Trace - 21:27:31.284 PM] Sending request 'textDocument/hover - (71)'.
Params: {"textDocument":{"uri":"file:///mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go"},"position":{"line":26,"character":33}}


[Trace - 21:27:31.284 PM] Received response 'textDocument/hover - (71)' in 0ms.
Result: null

@stamblerre stamblerre transferred this issue from golang/vscode-go Jul 20, 2020
@stamblerre stamblerre changed the title Gopls very high CPU/memory/latency x/tools/gopls: high CPU/memory usage on WSL Jul 20, 2020
@gopherbot gopherbot added Tools This label describes issues relating to any tools in the x/tools repository. gopls Issues related to the Go language server, gopls. labels Jul 20, 2020
@gopherbot gopherbot added this to the Unreleased milestone Jul 20, 2020
@mjyeaney
Copy link
Author

Team - any updates here?

@stamblerre
Copy link
Contributor

Sorry for the delay. I think the issue is likely that some of your files aren't getting correctly mapped to their packages:

[Info  - 6:37:42 PM] 2020/07/15 18:37:42 go/packages.Load
	snapshot=0
	directory=/mnt/c/Projects/IL6-Core/test
	query=[./... builtin]
	packages=4

[Info  - 6:37:45 PM] 2020/07/15 18:37:45 go/packages.Load
	snapshot=1
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]
	packages=1

[Info  - 6:37:45 PM] 2020/07/15 18:37:45 go/packages.Load
	snapshot=1
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]

[Info  - 6:37:47 PM] 2020/07/15 18:37:47 go/packages.Load
	snapshot=1
	directory=/mnt/c/Projects/IL6-Core/test
	query=[file=/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]
	packages=1

[Info  - 6:37:47 PM] 2020/07/15 18:37:47 go/packages.Load
	snapshot=1
	package_path="command-line-arguments"
	files=[/mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go]

I wonder why /mnt/c/Projects/IL6-Core/test/terraform/04_vms_mgmt_vm_test.go keeps getting re-loaded. Does it have any build tags? What is the output of go list -e -json -compiled -test ./... in the /mnt/c/Projects/IL6-Core/test/ directory?

@mjyeaney
Copy link
Author

mjyeaney commented Jul 22, 2020

Good catch - yes, all the *_test.go files have build tags in them, and when they are removed things start behaving very differently. For example, linter feedback now begins to display (didn't before), and tasks that normally hang language feedback now work instantly (e.g, renaming a struct name used to "kill" all autosuggest feedback and fill the output with errors like shown above).

In addition, once the build tags are removed these files no longer reload multiple times.

The build tags are all of the following format: // +build 03 (for example...the number is an identifier for the portion of the test pipeline so they can be run independently)

@stamblerre
Copy link
Contributor

gopls currently doesn't support build tags well, so if you're working in a file with build tags, you will need to add additional configuration to get the features to work (#29202 has more details).

There does seem to be an additional issue here, which is that build tagged files usually get marked as "unloadable" when we cannot find their package, but if you are editing a build tagged file, we will probably keep trying to load it. We should make sure that gopls gives up after some number of tries or think of some other workaround.

@stamblerre stamblerre changed the title x/tools/gopls: high CPU/memory usage on WSL x/tools/gopls: build tagged files not marked as unloadable Jul 22, 2020
@stamblerre stamblerre modified the milestones: gopls/v0.5.0, gopls/v1.0.0 Jul 22, 2020
@igordcard
Copy link

igordcard commented Jul 26, 2020

I'm also getting
DocumentSymbols failed: getting file for DocumentSymbols: no ParseGoHandle for

which is preventing all symbols from being loaded from a go file (over SSH remote). This seems to happen on and off as I open go files and can happen to any of them. If symbols don't load for a particular file, they may load later after I open and close a bunch of other files. The best seems to be restart vscode or gopls and then trying to open the file that I want. Also, 1st file opened in vscode seems to always load the symbols just fine, but 2nd file opened always fails (doesn't matter which actual files).

@stamblerre
Copy link
Contributor

@igordcard: Please take a look at the gopls troubleshooting guide and open a new issue.

@stamblerre
Copy link
Contributor

stamblerre commented Sep 9, 2020

I believe that #31668 would likely be a good way of guiding the user to solve the problem.
One idea for resolving the CPU usage issue would be to treat "unloadable" as a piece of package (or in this case, file)
metadata. This way, gopls wouldn't try to reload it until the metadata was invalidated (package name or imports changed).

@stamblerre stamblerre changed the title x/tools/gopls: build tagged files not marked as unloadable x/tools/gopls: invalidate file "unloadability" when name/imports change Sep 9, 2020
@stamblerre stamblerre added this to Needs Triage in vscode-go: gopls by default Nov 10, 2020
@stamblerre stamblerre moved this from Needs Triage to Critical in vscode-go: gopls by default Nov 10, 2020
@stamblerre stamblerre moved this from Critical to Non-critical in vscode-go: gopls by default Nov 11, 2020
@gopherbot
Copy link

Change https://golang.org/cl/271477 mentions this issue: internal/lsp/cache: don't delete metadata until it's reloaded

@gopherbot
Copy link

Change https://golang.org/cl/276976 mentions this issue: internal/lsp: preserve file's unloadability unless package name changes

@gopherbot
Copy link

Change https://golang.org/cl/277118 mentions this issue: internal/lsp: only reload invalid metadata when necessary

@gopherbot
Copy link

Change https://golang.org/cl/298489 mentions this issue: internal/lsp: only reload invalid metadata when necessary

gopls on-deck automation moved this from To Do to Done Jun 16, 2021
@stamblerre stamblerre modified the milestones: gopls/v1.0.0, gopls/v0.7.1 Jun 16, 2021
@golang golang locked and limited conversation to collaborators Jun 16, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
FrozenDueToAge gopls Issues related to the Go language server, gopls. Tools This label describes issues relating to any tools in the x/tools repository.
Projects
No open projects
Development

No branches or pull requests

5 participants