-
-
Save alvaroaleman/32b224edd095176acff0843ab5885cf2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
serve.go:414: debug server listening at http://localhost:40123 | |
[Trace - 17:58:42.408 PM] Sending request 'initialize - (1)'. | |
Params: {"rootUri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools","capabilities":{"workspace":{"workspaceFolders":true,"configuration":true,"didChangeConfiguration":{"dynamicRegistration":true}},"textDocument":{"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["source.organizeImports","refactor.rewrite"]}}},"completion":{"completionItem":{"snippetSupport":false}},"hover":{"contentFormat":["plaintext"]}}},"processId":3392083,"workspaceFolders":[{"uri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools","name":"/home/alvaro/git/golang/src/github.com/openshift/ci-tools"}]} | |
[Trace - 17:58:42.408 PM] Received notification 'window/logMessage'. | |
Params: {"type":3,"message":"2021/02/25 17:58:42 Handshake session update\n\tupdate_session=2\n\tdebug_address=\"[::]:40123\"\n\tlogfile=\"/tmp/gopls-3392085.log\"\n\tserver=\"1\"\n\tgopls_path=\"/home/alvaro/git/golang/bin/gopls\"\n"} | |
[Trace - 17:58:42.486 PM] Received response 'initialize - (1)' in 78ms. | |
Result: {"capabilities":{"textDocumentSync":{"change":2,"openClose":true,"save":{}},"completionProvider":{"triggerCharacters":["."]},"hoverProvider":true,"signatureHelpProvider":{"triggerCharacters":["(",","]},"definitionProvider":true,"typeDefinitionProvider":true,"implementationProvider":true,"referencesProvider":true,"documentHighlightProvider":true,"documentSymbolProvider":true,"codeActionProvider":{"codeActionKinds":["quickfix","refactor.extract","refactor.rewrite","source.fixAll","source.organizeImports"]},"codeLensProvider":{},"documentLinkProvider":{},"workspaceSymbolProvider":true,"documentFormattingProvider":true,"documentOnTypeFormattingProvider":{"firstTriggerCharacter":""},"renameProvider":true,"foldingRangeProvider":true,"executeCommandProvider":{"commands":["gopls.add_dependency","gopls.add_import","gopls.apply_fix","gopls.check_upgrades","gopls.gc_details","gopls.generate","gopls.generate_gopls_mod","gopls.go_get_package","gopls.list_known_packages","gopls.regenerate_cgo","gopls.remove_dependency","gopls.run_tests","gopls.test","gopls.tidy","gopls.toggle_gc_details","gopls.update_go_sum","gopls.upgrade_dependency","gopls.vendor"]},"callHierarchyProvider":true},"serverInfo":{"name":"gopls","version":"{\"path\":\"golang.org/x/tools/gopls\",\"version\":\"v0.6.6\",\"sum\":\"h1:GmCsAKZMEb1BD1BTWnQrMyx4FmNThlEsmuFiJbLBXio=\",\"deps\":[{\"path\":\"github.com/BurntSushi/toml\",\"version\":\"v0.3.1\",\"sum\":\"h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=\"},{\"path\":\"github.com/google/go-cmp\",\"version\":\"v0.5.4\",\"sum\":\"h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=\"},{\"path\":\"github.com/sergi/go-diff\",\"version\":\"v1.1.0\",\"sum\":\"h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=\"},{\"path\":\"golang.org/x/mod\",\"version\":\"v0.4.1\",\"sum\":\"h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY=\"},{\"path\":\"golang.org/x/sync\",\"version\":\"v0.0.0-20201020160332-67f06af15bc9\",\"sum\":\"h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck=\"},{\"path\":\"golang.org/x/sys\",\"version\":\"v0.0.0-20210124154548-22da62e12c0c\",\"sum\":\"h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk=\"},{\"path\":\"golang.org/x/tools\",\"version\":\"v0.1.1-0.20210222172741-77e031214674\",\"sum\":\"h1:XzEjy9Ks1MwmcJOarbxTnL/AqHtzsRfRzAwfDhII2lE=\"},{\"path\":\"golang.org/x/xerrors\",\"version\":\"v0.0.0-20200804184101-5ec99f83aff1\",\"sum\":\"h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=\"},{\"path\":\"honnef.co/go/tools\",\"version\":\"v0.1.1\",\"sum\":\"h1:EVDuO03OCZwpV2t/tLLxPmPiomagMoBOgfPt0FM+4IY=\"},{\"path\":\"mvdan.cc/gofumpt\",\"version\":\"v0.1.0\",\"sum\":\"h1:hsVv+Y9UsZ/mFZTxJZuHVI6shSQCtzZ11h1JEFPAZLw=\"},{\"path\":\"mvdan.cc/xurls/v2\",\"version\":\"v2.2.0\",\"sum\":\"h1:NSZPykBXJFCetGZykLAxaL6SIpvbVy/UFEniIfHAa8A=\"}]}"}} | |
[Trace - 17:58:42.492 PM] Sending notification 'initialized'. | |
Params: {} | |
[Trace - 17:58:42.492 PM] Sending notification 'workspace/didChangeWorkspaceFolders'. | |
Params: {"event":{"added":[{"uri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools","name":"/home/alvaro/git/golang/src/github.com/openshift/ci-tools"}],"removed":[]}} | |
[Trace - 17:58:42.493 PM] Sending notification 'textDocument/didOpen'. | |
Params: {"textDocument":{"uri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/cmd/secret-collection-manager/main_test.go","version":2,"languageId":"go","text":"package main\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"os/exec\"\n\t\"reflect\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/hashicorp/vault/api\"\n\t\"github.com/sirupsen/logrus\"\n\tutilerrors \"k8s.io/apimachinery/pkg/util/errors\"\n\n\t\"github.com/openshift/ci-tools/pkg/vaultclient\"\n)\n\nconst vaultTestingToken = \"jpuxZFWWFW7vM882GGX2aWOE\"\n\nfunc TestSecretCollectionManager(t *testing.T) {\n\tif _, err := exec.LookPath(\"vault\"); err != nil {\n\t\tif _, runningInCi := os.LookupEnv(\"CI\"); runningInCi {\n\t\t\tt.Fatalf(\"could not find vault in path: %v\", err)\n\t\t}\n\t\tt.Skip(\"could not find vault in path\")\n\t}\n\tif os.Getenv(\"CI\") != \"\" {\n\t\t// We need a writeable home\n\t\tos.Setenv(\"HOME\", \"/tmp\")\n\t}\n\tlogrus.SetLevel(logrus.TraceLevel)\n\n\tvaultCancel, vaultDone, err := startVault(t)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to start vault: %v\", err)\n\t}\n\tt.Cleanup(func() {\n\t\tvaultCancel()\n\t\t<-vaultDone\n\t})\n\n\tclient, err := vaultclient.New(\"http://127.0.0.1:8300\", vaultTestingToken)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to construct vault client: %v\", err)\n\t}\n\n\tif err := client.Sys().EnableAuthWithOptions(\"userpass\", &api.EnableAuthOptions{Type: \"userpass\"}); err != nil {\n\t\tt.Fatalf(\"failed to enable userpass auth: %v\", err)\n\t}\n\n\tmounts, err := client.ListAuthMounts()\n\tif err != nil {\n\t\tt.Fatalf(\"failed to list auth mounts: %v\", err)\n\t}\n\tvar mountAccessor string\n\tfor _, mount := range mounts {\n\t\tif mount.Type == \"userpass\" {\n\t\t\tmountAccessor = mount.Accessor\n\t\t\tbreak\n\t\t}\n\t}\n\tif mountAccessor == \"\" {\n\t\tt.Fatalf(\"failed to find userpass mount\")\n\t}\n\n\tfor _, user := range []string{\"user-1\", \"user-2\"} {\n\t\tif _, err := client.Logical().Write(fmt.Sprintf(\"/auth/userpass/users/%s\", user), map[string]interface{}{\"password\": \"irrelevant\"}); err != nil {\n\t\t\tt.Fatalf(\"failed to create userpass user %s: %v\", user, err)\n\t\t}\n\t\tidentity, err := client.CreateIdentity(user, []string{\"default\"})\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed to create identity for user %s: %v\", user, err)\n\t\t}\n\t\tif _, err := client.Logical().Write(\"identity/entity-alias\", map[string]interface{}{\n\t\t\t\"name\": user,\n\t\t\t\"canonical_id\": identity.ID,\n\t\t\t\"mount_accessor\": mountAccessor,\n\t\t}); err != nil {\n\t\t\tt.Fatalf(\"failed to create identity alias for user %s in mount_accessor %s: %v\", user, mountAccessor, err)\n\t\t}\n\t}\n\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\tserver := server(client, \"secret/self-managed\")\n\tgo func() {\n\t\tif err := server.ListenAndServe(); err != nil && ctx.Err() == nil {\n\t\t\tcancel()\n\t\t\tt.Errorf(\"failed to start secret-collection-manager: %v\", err)\n\t\t}\n\t}()\n\n\tif err := waitForServiceReady(ctx, t, \"http://127.0.0.1:8080/healthz\"); err != nil {\n\t\tt.Fatalf(\"failed to wait for secret collection manager to become ready: %v\", err)\n\t}\n\tt.Cleanup(func() {\n\t\tif err := server.Close(); err != nil {\n\t\t\tt.Errorf(\"failed to close server: %v\", err)\n\t\t}\n\t})\n\n\ttestCases := []struct {\n\t\tname string\n\t\tuser string\n\t\trequest *http.Request\n\t\texpectedStatusCode int\n\t\texpectedBody string\n\t\texpectedVaultGroups []vaultclient.Group\n\t\texpectedVaultPolicies []string\n\t}{\n\t\t{\n\t\t\tname: \"Initial listing as user 1, no policies\",\n\t\t\tuser: \"user-1\",\n\t\t\trequest: mustNewRequest(http.MethodGet, \"http://127.0.0.1:8080/secretcollection\", nil),\n\t\t\texpectedStatusCode: 200,\n\t\t\texpectedVaultPolicies: []string{\"default\", \"root\"},\n\t\t},\n\t\t{\n\t\t\tname: \"User 1 creates policy\",\n\t\t\tuser: \"user-1\",\n\t\t\trequest: mustNewRequest(http.MethodPut, \"http://127.0.0.1:8080/secretcollection/mine-alone\", nil),\n\t\t\texpectedStatusCode: 200,\n\t\t\texpectedVaultGroups: []vaultclient.Group{{\n\t\t\t\tName: \"secret-collection-manager-managed-mine-alone\",\n\t\t\t\tPolicies: []string{\"secret-collection-manager-managed-mine-alone\"},\n\t\t\t\tMemberEntityIDs: []string{\"entity-0\"},\n\t\t\t\tMetadata: map[string]string{\"created-by-secret-collection-manager\": \"true\"},\n\t\t\t\tModifyIndex: 1,\n\t\t\t}},\n\t\t\texpectedVaultPolicies: []string{\"default\", \"secret-collection-manager-managed-mine-alone\", \"root\"},\n\t\t},\n\t}\n\n\t// These tests mutate state in vault, so they need to be executed serially\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\ttc.request.Header.Set(\"X-Forwarded-Email\", fmt.Sprintf(\"%s@unchecked.com\", tc.user))\n\t\t\tresponse, err := http.DefaultClient.Do(tc.request)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"request failed: %v\", err)\n\t\t\t}\n\t\t\tdefer response.Body.Close()\n\t\t\tif response.StatusCode != tc.expectedStatusCode {\n\t\t\t\tt.Fatalf(\"expected status code %d, got %d\", tc.expectedStatusCode, response.StatusCode)\n\t\t\t}\n\n\t\t\tbodyData, err := io.ReadAll(response.Body)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to read response body: %v\", err)\n\t\t\t}\n\t\t\tif diff := cmp.Diff(tc.expectedBody, string(bodyData)); diff != \"\" {\n\t\t\t\tt.Errorf(\"expected body differs from actual: %s\", diff)\n\t\t\t}\n\n\t\t\tgroups, err := client.GetAllGroups()\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to get all groups: %v\", err)\n\t\t\t}\n\t\t\tfor idx := range groups {\n\t\t\t\tgroups[idx].ID = \"\"\n\t\t\t\tgroups[idx].CreationTime = nil\n\t\t\t\tgroups[idx].LastUpdateTime = nil\n\t\t\t\tgroups[idx].Type = \"\"\n\t\t\t\tgroups[idx].NamespaceID = \"\"\n\t\t\t\tif reflect.DeepEqual(groups[idx].Alias, emptyVaultAlias) {\n\t\t\t\t\t// The server doesn't use omitempty, so defining it as pointer with omitempty clientside is useless,\n\t\t\t\t\tgroups[idx].Alias = nil\n\t\t\t\t}\n\t\t\t\tfor memberIdIdx := range groups[idx].MemberEntityIDs {\n\t\t\t\t\tgroups[idx].MemberEntityIDs[memberIdIdx] = fmt.Sprintf(\"entity-%d\", memberIdIdx)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif diff := cmp.Diff(tc.expectedVaultGroups, groups); diff != \"\" {\n\t\t\t\tt.Errorf(\"expectedVaultGroups differ from actual: %s\", diff)\n\t\t\t}\n\t\t\tpolicies, err := client.Sys().ListPolicies()\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to list policies: %v\", err)\n\t\t\t}\n\t\t\tif diff := cmp.Diff(tc.expectedVaultPolicies, policies); diff != \"\" {\n\t\t\t\tt.Errorf(\"expected vault policies differ from actual: %s\", diff)\n\t\t\t}\n\n\t\t})\n\t}\n}\n\nvar emptyVaultAlias = &vaultclient.Alias{}\n\nfunc mustNewRequest(method, url string, body io.Reader) *http.Request {\n\trequest, err := http.NewRequest(method, url, body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn request\n}\n\nfunc startVault(t *testing.T) (cancel context.CancelFunc, done chan struct{}, err error) {\n\tctx, cancel := context.WithCancel(context.Background())\n\n\tcmd := exec.CommandContext(ctx, \"vault\",\n\t\t\"server\",\n\t\t\"-dev\",\n\t\t\"--dev-listen-address=127.0.0.1:8300\",\n\t\tfmt.Sprintf(\"-dev-root-token-id=%s\", vaultTestingToken),\n\t)\n\n\tdone = make(chan struct{})\n\tgotReady := make(chan struct{})\n\tgo func() {\n\t\tdefer close(done)\n\t\tout, err := cmd.CombinedOutput()\n\t\tif err != nil && !isChannelClosed(gotReady) {\n\t\t\tt.Errorf(\"vault command failed: err: %v, out:\\n%s\\n\", err, string(out))\n\t\t}\n\t}()\n\n\tif err := waitForServiceReady(ctx, t, \"http://127.0.0.1:8300/v1/sys/health\"); err != nil {\n\t\tcancel()\n\t\t// Let the other goroutine print the log\n\t\t<-done\n\t\treturn nil, nil, errors.New(\"timed out waiting for vault to get ready\")\n\t}\n\n\tclose(gotReady)\n\treturn cancel, done, nil\n}\n\nfunc isChannelClosed(ch chan struct{}) bool {\n\tselect {\n\tcase <-ch:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc waitForServiceReady(ctx context.Context, t *testing.T, address string) error {\n\tctx, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\n\tvar errs []error\n\tfor ctx.Err() == nil {\n\t\trequest, err := http.NewRequestWithContext(ctx, http.MethodGet, address, nil)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed to construct http request for vaulth healthcheck: %v\", err)\n\t\t}\n\t\tresponse, err := http.DefaultClient.Do(request)\n\t\tif response != nil && response.Body != nil {\n\t\t\tresponse.Body.Close()\n\t\t}\n\t\tif err == nil && response.StatusCode == http.StatusOK {\n\t\t\treturn nil\n\t\t}\n\t\terrs = append(errs, err)\n\t}\n\n\treturn fmt.Errorf(\"reached thirty second time out, errors when healthchecking: %w\", utilerrors.NewAggregate(errs))\n}\n"}} | |
[Trace - 17:58:42.493 PM] Received notification 'window/showMessage'. | |
Params: {"type":4,"message":"Loading packages..."} | |
[Trace - 17:58:42.494 PM] Received request 'workspace/configuration - (1)'. | |
Params: {"items":[{"scopeUri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools","section":"gopls"}]} | |
[Trace - 17:58:42.495 PM] Sending response 'workspace/configuration - (1)' in 0ms. | |
Result: [{"buildFlags":[],"hoverKind":"Structured"}] | |
[Trace - 17:58:42.613 PM] Received notification 'window/logMessage'. | |
Params: {"type":3,"message":"2021/02/25 17:58:42 go env for /home/alvaro/git/golang/src/github.com/openshift/ci-tools\n(root /home/alvaro/git/golang/src/github.com/openshift/ci-tools)\n(go version go version go1.16 linux/amd64)\n(valid build configuration = true)\n(build flags: [])\nGOSUMDB=off\nGO111MODULE=\nGONOSUMDB=\nGOPATH=/home/alvaro/git/golang\nGOPRIVATE=\nGOPROXY=direct\nGOFLAGS=\nGOMOD=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/go.mod\nGOROOT=/usr/local/go\nGOMODCACHE=/home/alvaro/git/golang/pkg/mod\nGOCACHE=/home/alvaro/.gocache\nGOINSECURE=\nGONOPROXY=\n\n"} | |
[Trace - 17:58:44.320 PM] Sending notification 'textDocument/didChange'. | |
Params: {"contentChanges":[{"text":"package main\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"os/exec\"\n\t\"reflect\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/hashicorp/vault/api\"\n\t\"github.com/sirupsen/logrus\"\n\tutilerrors \"k8s.io/apimachinery/pkg/util/errors\"\n\n\t\"github.com/openshift/ci-tools/pkg/vaultclient\"\n)\n\nconst vaultTestingToken = \"jpuxZFWWFW7vM882GGX2aWOE\"\n\nfunc TestSecretCollectionManager(t *testing.T) {\n\tif _, err := exec.LookPath(\"vault\"); err != nil {\n\t\tif _, runningInCi := os.LookupEnv(\"CI\"); runningInCi {\n\t\t\tt.Fatalf(\"could not find vault in path: %v\", err)\n\t\t}\n\t\tt.Skip(\"could not find vault in path\")\n\t}\n\tif os.Getenv(\"CI\") != \"\" {\n\t\t// We need a writeable home\n\t\tos.Setenv(\"HOME\", \"/tmp\")\n\t}\n\tlogrus.SetLevel(logrus.TraceLevel)\n\n\tvaultCancel, vaultDone, err := startVault(t)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to start vault: %v\", err)\n\t}\n\tt.Cleanup(func() {\n\t\tvaultCancel()\n\t\t<-vaultDone\n\t})\n\n\tclient, err := vaultclient.New(\"http://127.0.0.1:8300\", vaultTestingToken)\n\tif err != nil {\n\t\tt.Fatalf(\"failed to construct vault client: %v\", err)\n\t}\n\n\tif err := client.Sys().EnableAuthWithOptions(\"userpass\", &api.EnableAuthOptions{Type: \"userpass\"}); err != nil {\n\t\tt.Fatalf(\"failed to enable userpass auth: %v\", err)\n\t}\n\n\tmounts, err := client.ListAuthMounts()\n\tif err != nil {\n\t\tt.Fatalf(\"failed to list auth mounts: %v\", err)\n\t}\n\tvar mountAccessor string\n\tfor _, mount := range mounts {\n\t\tif mount.Type == \"userpass\" {\n\t\t\tmountAccessor = mount.Accessor\n\t\t\tbreak\n\t\t}\n\t}\n\tif mountAccessor == \"\" {\n\t\tt.Fatalf(\"failed to find userpass mount\")\n\t}\n\n\tfor _, user := range []string{\"user-1\", \"user-2\"} {\n\t\tif _, err := client.Logical().Write(fmt.Sprintf(\"/auth/userpass/users/%s\", user), map[string]interface{}{\"password\": \"irrelevant\"}); err != nil {\n\t\t\tt.Fatalf(\"failed to create userpass user %s: %v\", user, err)\n\t\t}\n\t\tidentity, err := client.CreateIdentity(user, []string{\"default\"})\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed to create identity for user %s: %v\", user, err)\n\t\t}\n\t\tif _, err := client.Logical().Write(\"identity/entity-alias\", map[string]interface{}{\n\t\t\t\"name\": user,\n\t\t\t\"canonical_id\": identity.ID,\n\t\t\t\"mount_accessor\": mountAccessor,\n\t\t}); err != nil {\n\t\t\tt.Fatalf(\"failed to create identity alias for user %s in mount_accessor %s: %v\", user, mountAccessor, err)\n\t\t}\n\t}\n\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\tserver := server(client, \"secret/self-managed\")\n\tgo func() {\n\t\tif err := server.ListenAndServe(); err != nil && ctx.Err() == nil {\n\t\t\tcancel()\n\t\t\tt.Errorf(\"failed to start secret-collection-manager: %v\", err)\n\t\t}\n\t}()\n\n\tif err := waitForServiceReady(ctx, t, \"http://127.0.0.1:8080/healthz\"); err != nil {\n\t\tt.Fatalf(\"failed to wait for secret collection manager to become ready: %v\", err)\n\t}\n\tt.Cleanup(func() {\n\t\tif err := server.Close(); err != nil {\n\t\t\tt.Errorf(\"failed to close server: %v\", err)\n\t\t}\n\t})\n\n\ttestCases := []struct {\n\t\tname string\n\t\tuser string\n\t\trequest *http.Request\n\t\texpectedStatusCode int\n\t\texpectedBody string\n\t\texpectedVaultGroups []vaultclient.Group\n\t\texpectedVaultPolicies []string\n\t}{\n\t\t{\n\t\t\tname: \"Initial listing as user 1, no policies\",\n\t\t\tuser: \"user-1\",\n\t\t\trequest: mustNewRequest(http.MethodGet, \"http://127.0.0.1:8080/secretcollection\", nil),\n\t\t\texpectedStatusCode: 200,\n\t\t\texpectedVaultPolicies: []string{\"default\", \"root\"},\n\t\t},\n\t\t{\n\t\t\tname: \"User 1 creates policy\",\n\t\t\tuser: \"user-1\",\n\t\t\trequest: mustNewRequest(http.MethodPut, \"http://127.0.0.1:8080/secretcollection/mine-alone\", nil),\n\t\t\texpectedStatusCode: 200,\n\t\t\texpectedVaultGroups: []vaultclient.Group{{\n\t\t\t\tName: \"secret-collection-manager-managed-mine-alone\",\n\t\t\t\tPolicies: []string{\"secret-collection-manager-managed-mine-alone\"},\n\t\t\t\tMemberEntityIDs: []string{\"entity-0\"},\n\t\t\t\tMetadata: map[string]string{\"created-by-secret-collection-manager\": \"true\"},\n\t\t\t\tModifyIndex: 1,\n\t\t\t}},\n\t\t\texpectedVaultPolicies: []string{\"default\", \"secret-collection-manager-managed-mine-alone\", \"root\"},\n\t\t},\n\t}\n\n\t// These tests mutate state in vault, so they need to be executed serially\n\tfor _, tc := range testCases {\n\t\tt.Run(tc.name, func(t *testing.T) {\n\t\t\ttc.request.Header.Set(\"X-Forwarded-Email\", fmt.Sprintf(\"%s@unchecked.com\", tc.user))\n\t\t\tresponse, err := http.DefaultClient.Do(tc.request)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"request failed: %v\", err)\n\t\t\t}\n\t\t\tdefer response.Body.Close()\n\t\t\tif response.StatusCode != tc.expectedStatusCode {\n\t\t\t\tt.Fatalf(\"expected status code %d, got %d\", tc.expectedStatusCode, response.StatusCode)\n\t\t\t}\n\n\t\t\tbodyData, err := io.ReadAll(response.Body)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to read response body: %v\", err)\n\t\t\t}\n\t\t\tif diff := cmp.Diff(tc.expectedBody, string(bodyData)); diff != \"\" {\n\t\t\t\tt.Errorf(\"expected body differs from actual: %s\", diff)\n\t\t\t}\n\n\t\t\tgroups, err := client.GetAllGroups()\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to get all groups: %v\", err)\n\t\t\t}\n\t\t\tfor idx := range groups {\n\t\t\t\tgroups[idx].ID = \"\"\n\t\t\t\tgroups[idx].CreationTime = nil\n\t\t\t\tgroups[idx].LastUpdateTime = nil\n\t\t\t\tgroups[idx].Type = \"\"\n\t\t\t\tgroups[idx].NamespaceID = \"\"\n\t\t\t\tif reflect.DeepEqual(groups[idx].Alias, emptyVaultAlias) {\n\t\t\t\t\t// The server doesn't use omitempty, so defining it as pointer with omitempty clientside is useless,\n\t\t\t\t\tgroups[idx].Alias = nil\n\t\t\t\t}\n\t\t\t\tfor memberIdIdx := range groups[idx].MemberEntityIDs {\n\t\t\t\t\tgroups[idx].MemberEntityIDs[memberIdIdx] = fmt.Sprintf(\"entity-%d\", memberIdIdx)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif diff := cmp.Diff(tc.expectedVaultGroups, groups); diff != \"\" {\n\t\t\t\tt.Errorf(\"expectedVaultGroups differ from actual: %s\", diff)\n\t\t\t}\n\t\t\tpolicies, err := client.Sys().ListPolicies()\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"failed to list policies: %v\", err)\n\t\t\t}\n\t\t\tif diff := cmp.Diff(tc.expectedVaultPolicies, policies); diff != \"\" {\n\t\t\t\tt.Errorf(\"expected vault policies differ from actual: %s\", diff)\n\t\t\t}\n\n\t\t})\n\t}\n}\n\nvar emptyVaultAlias = &vaultclient.Alias{}\n\nfunc mustNewRequest(method, url string, body io.Reader) *http.Request {\n\trequest, err := http.NewRequest(method, url, body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn request\n}\n\nfunc startVault(t *testing.T) (cancel context.CancelFunc, done chan struct{}, err error) {\n\tctx, cancel := context.WithCancel(context.Background())\n\n\tcmd := exec.CommandContext(ctx, \"vault\",\n\t\t\"server\",\n\t\t\"-dev\",\n\t\t\"--dev-listen-address=127.0.0.1:8300\",\n\t\tfmt.Sprintf(\"-dev-root-token-id=%s\", vaultTestingToken),\n\t)\n\n\tdone = make(chan struct{})\n\tgotReady := make(chan struct{})\n\tgo func() {\n\t\tdefer close(done)\n\t\tout, err := cmd.CombinedOutput()\n\t\tif err != nil && !isChannelClosed(gotReady) {\n\t\t\tt.Errorf(\"vault command failed: err: %v, out:\\n%s\\n\", err, string(out))\n\t\t}\n\t}()\n\n\tif err := waitForServiceReady(ctx, t, \"http://127.0.0.1:8300/v1/sys/health\"); err != nil {\n\t\tcancel()\n\t\t// Let the other goroutine print the log\n\t\t<-done\n\t\treturn nil, nil, errors.New(\"timed out waiting for vault to get ready\")\n\t}\n\n\tclose(gotReady)\n\treturn cancel, done, nil\n}\n\nfunc isChannelClosed(ch chan struct{}) bool {\n\tselect {\n\tcase <-ch:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc waitForServiceReady(ctx context.Context, t *testing.T, address string) error {\n\tctx, cancel := context.WithTimeout(ctx, 30*time.Second)\n\tdefer cancel()\n\n\tvar errs []error\n\tfor ctx.Err() == nil {\n\t\trequest, err := http.NewRequestWithContext(ctx, http.MethodGet, address, nil)\n\t\tif err != nil {\n\t\t\tt.Fatalf(\"failed to construct http request for vaulth healthcheck: %v\", err)\n\t\t}\n\t\tresponse, err := http.DefaultClient.Do(request)\n\t\tif response != nil && response.Body != nil {\n\t\t\tresponse.Body.Close()\n\t\t}\n\t\tif err == nil && response.StatusCode == http.StatusOK {\n\t\t\treturn nil\n\t\t}\n\t\terrs = append(errs, err)\n\t}\n\n\treturn fmt.Errorf(\"reached thirty second time out, errors when healthchecking: %w\", utilerrors.NewAggregate(errs))\n}\n"}],"textDocument":{"uri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/cmd/secret-collection-manager/main_test.go","version":3}} | |
[Trace - 17:58:44.323 PM] Sending request 'textDocument/definition - (2)'. | |
Params: {"textDocument":{"uri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/cmd/secret-collection-manager/main_test.go"},"position":{"character":63,"line":51}} | |
[Trace - 17:58:46.190 PM] Received notification 'window/logMessage'. | |
Params: {"type":3,"message":"2021/02/25 17:58:46 go/packages.Load\n\tsnapshot=0\n\tdirectory=/home/alvaro/git/golang/src/github.com/openshift/ci-tools\n\tquery=[builtin github.com/openshift/ci-tools/...]\n\tpackages=292\n"} | |
[Trace - 17:58:46.793 PM] Received notification 'window/showMessage'. | |
Params: {"type":3,"message":"Finished loading packages."} | |
[Trace - 17:58:48.579 PM] Received request 'client/registerCapability - (2)'. | |
Params: {"registrations":[{"id":"workspace/didChangeConfiguration","method":"workspace/didChangeConfiguration"},{"id":"workspace/didChangeWorkspaceFolders","method":"workspace/didChangeWorkspaceFolders"}]} | |
[Trace - 17:58:48.580 PM] Sending response 'client/registerCapability - (2)' in 0ms. | |
Result: | |
[Trace - 17:58:48.752 PM] Received notification 'window/showMessage'. | |
Params: {"type":4,"message":"Loading packages..."} | |
[Trace - 17:58:48.752 PM] Received request 'workspace/configuration - (3)'. | |
Params: {"items":[{"scopeUri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools","section":"gopls"}]} | |
[Trace - 17:58:48.757 PM] Sending response 'workspace/configuration - (3)' in 4ms. | |
Result: [{"buildFlags":[],"hoverKind":"Structured"}] | |
[Trace - 17:58:48.965 PM] Received notification 'window/logMessage'. | |
Params: {"type":3,"message":"2021/02/25 17:58:48 go env for /home/alvaro/git/golang/src/github.com/openshift/ci-tools\n(root /home/alvaro/git/golang/src/github.com/openshift/ci-tools)\n(go version go version go1.16 linux/amd64)\n(valid build configuration = true)\n(build flags: [])\nGOPRIVATE=\nGO111MODULE=\nGOMODCACHE=/home/alvaro/git/golang/pkg/mod\nGOSUMDB=off\nGOMOD=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/go.mod\nGONOSUMDB=\nGOPATH=/home/alvaro/git/golang\nGOPROXY=direct\nGOCACHE=/home/alvaro/.gocache\nGOINSECURE=\nGOFLAGS=\nGOROOT=/usr/local/go\nGONOPROXY=\n\n"} | |
[Trace - 17:58:54.179 PM] Received notification 'window/logMessage'. | |
Params: {"type":3,"message":"2021/02/25 17:58:54 go/packages.Load\n\tsnapshot=0\n\tdirectory=/home/alvaro/git/golang/src/github.com/openshift/ci-tools\n\tquery=[builtin github.com/openshift/ci-tools/...]\n\tpackages=292\n"} | |
[Trace - 17:58:54.646 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:54 creating workspace dir: mkdir /tmp/gopls-3392083.workspace: file exists\n"} | |
[Trace - 17:58:54.646 PM] Received notification 'window/showMessage'. | |
Params: {"type":3,"message":"Finished loading packages."} | |
[Trace - 17:58:54.809 PM] Sending request 'textDocument/definition - (3)'. | |
Params: {"textDocument":{"uri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/cmd/secret-collection-manager/main_test.go"},"position":{"character":63,"line":51}} | |
[Trace - 17:58:55.288 PM] Received response 'textDocument/definition - (2)' in 10965ms. | |
Result: [{"uri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api/sys_auth.go","range":{"start":{"line":76,"character":5},"end":{"line":76,"character":22}}}] | |
[Trace - 17:58:55.290 PM] Received response 'textDocument/definition - (3)' in 480ms. | |
Result: [{"uri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api/sys_auth.go","range":{"start":{"line":76,"character":5},"end":{"line":76,"character":22}}}] | |
[Trace - 17:58:55.336 PM] Sending notification 'workspace/didChangeWorkspaceFolders'. | |
Params: {"event":{"added":[{"uri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api","name":"/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api"}],"removed":[]}} | |
[Trace - 17:58:55.336 PM] Sending notification 'textDocument/didOpen'. | |
Params: {"textDocument":{"uri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api/sys_auth.go","version":1,"languageId":"go","text":"package api\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nfunc (c *Sys) ListAuth() (map[string]*AuthMount, error) {\n\tr := c.c.NewRequest(\"GET\", \"/v1/sys/auth\")\n\n\tctx, cancelFunc := context.WithCancel(context.Background())\n\tdefer cancelFunc()\n\tresp, err := c.c.RawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tmounts := map[string]*AuthMount{}\n\terr = mapstructure.Decode(secret.Data, &mounts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn mounts, nil\n}\n\n// DEPRECATED: Use EnableAuthWithOptions instead\nfunc (c *Sys) EnableAuth(path, authType, desc string) error {\n\treturn c.EnableAuthWithOptions(path, &EnableAuthOptions{\n\t\tType: authType,\n\t\tDescription: desc,\n\t})\n}\n\nfunc (c *Sys) EnableAuthWithOptions(path string, options *EnableAuthOptions) error {\n\tr := c.c.NewRequest(\"POST\", fmt.Sprintf(\"/v1/sys/auth/%s\", path))\n\tif err := r.SetJSONBody(options); err != nil {\n\t\treturn err\n\t}\n\n\tctx, cancelFunc := context.WithCancel(context.Background())\n\tdefer cancelFunc()\n\tresp, err := c.c.RawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n\nfunc (c *Sys) DisableAuth(path string) error {\n\tr := c.c.NewRequest(\"DELETE\", fmt.Sprintf(\"/v1/sys/auth/%s\", path))\n\n\tctx, cancelFunc := context.WithCancel(context.Background())\n\tdefer cancelFunc()\n\tresp, err := c.c.RawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\n// Rather than duplicate, we can use modern Go's type aliasing\ntype EnableAuthOptions = MountInput\ntype AuthConfigInput = MountConfigInput\ntype AuthMount = MountOutput\ntype AuthConfigOutput = MountConfigOutput\n"}} | |
[Trace - 17:58:55.342 PM] Received notification 'window/showMessage'. | |
Params: {"type":4,"message":"Loading packages..."} | |
[Trace - 17:58:55.342 PM] Received request 'workspace/configuration - (4)'. | |
Params: {"items":[{"scopeUri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api","section":"gopls"}]} | |
[Trace - 17:58:55.366 PM] Sending response 'workspace/configuration - (4)' in 23ms. | |
Result: [{"buildFlags":[],"hoverKind":"Structured"}] | |
[Trace - 17:58:55.615 PM] Received notification 'window/logMessage'. | |
Params: {"type":3,"message":"2021/02/25 17:58:55 go env for /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api\n(root /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api)\n(go version go version go1.16 linux/amd64)\n(valid build configuration = true)\n(build flags: [])\nGOMOD=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/go.mod\nGO111MODULE=\nGONOSUMDB=\nGOPRIVATE=\nGOPROXY=direct\nGOCACHE=/home/alvaro/.gocache\nGOFLAGS=\nGONOPROXY=\nGOROOT=/usr/local/go\nGOSUMDB=off\nGOPATH=/home/alvaro/git/golang\nGOINSECURE=\nGOMODCACHE=/home/alvaro/git/golang/pkg/mod\n\n"} | |
[Trace - 17:58:55.714 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:55 go/packages.Load: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n\n\tsnapshot=0\n\tdirectory=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api\n\tquery=[builtin github.com/hashicorp/vault/api/...]\n\tpackages=0\n"} | |
[Trace - 17:58:55.714 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:55 initial workspace load failed: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n: packages.Load error\n"} | |
[Trace - 17:58:55.715 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:55 creating workspace dir: mkdir /tmp/gopls-3392083.workspace: file exists\n"} | |
[Trace - 17:58:55.715 PM] Received notification 'window/showMessage'. | |
Params: {"type":3,"message":"Finished loading packages."} | |
[Trace - 17:58:55.900 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:55 diagnosing go.mod: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n: packages.Load error\n"} | |
[Trace - 17:58:55.900 PM] Received notification 'window/showMessage'. | |
Params: {"type":4,"message":"err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory : packages.Load error"} | |
[Trace - 17:58:55.900 PM] Received notification 'textDocument/publishDiagnostics'. | |
Params: {"uri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api/go.mod","diagnostics":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":37}},"severity":1,"source":"go list","message":"err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n: packages.Load error"}]} | |
[Trace - 17:58:55.901 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:55 errors loading workspace: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n: packages.Load error\n\tsnapshot=0\n\tdirectory=file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api\n"} | |
[Trace - 17:58:56.064 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:56 go/packages.Load: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n\n\tsnapshot=1\n\tdirectory=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api\n\tquery=[file=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api/sys_auth.go]\n\tpackages=0\n"} | |
[Trace - 17:58:56.519 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:56 go/packages.Load: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n\n\tsnapshot=1\n\tdirectory=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api\n\tquery=[builtin github.com/hashicorp/vault/api/...]\n\tpackages=0\n"} | |
[Trace - 17:58:56.519 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:56 initial workspace load failed: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n: packages.Load error\n"} | |
[Trace - 17:58:56.658 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:56 go/packages.Load: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n\n\tsnapshot=1\n\tdirectory=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api\n\tquery=[file=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api/sys_auth.go]\n\tpackages=0\n"} | |
[Trace - 17:58:56.658 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:56 reloadOrphanedFiles: failed to load: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n: packages.Load error\n\tquery=[file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api/sys_auth.go]\n"} | |
[Trace - 17:58:56.659 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:56 diagnosing go.mod: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n: packages.Load error\n"} | |
[Trace - 17:58:56.659 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:56 errors loading workspace: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n: packages.Load error\n\tsnapshot=1\n\tdirectory=file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api\n"} | |
[Trace - 17:58:56.805 PM] Sending notification 'textDocument/didChange'. | |
Params: {"contentChanges":[{"text":"package api\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/mitchellh/mapstructure\"\n)\n\nfunc (c *Sys) ListAuth() (map[string]*AuthMount, error) {\n\tr := c.c.NewRequest(\"GET\", \"/v1/sys/auth\")\n\n\tctx, cancelFunc := context.WithCancel(context.Background())\n\tdefer cancelFunc()\n\tresp, err := c.c.RawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer resp.Body.Close()\n\n\tsecret, err := ParseSecret(resp.Body)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif secret == nil || secret.Data == nil {\n\t\treturn nil, errors.New(\"data from server response is empty\")\n\t}\n\n\tmounts := map[string]*AuthMount{}\n\terr = mapstructure.Decode(secret.Data, &mounts)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn mounts, nil\n}\n\n// DEPRECATED: Use EnableAuthWithOptions instead\nfunc (c *Sys) EnableAuth(path, authType, desc string) error {\n\treturn c.EnableAuthWithOptions(path, &EnableAuthOptions{\n\t\tType: authType,\n\t\tDescription: desc,\n\t})\n}\n\nfunc (c *Sys) EnableAuthWithOptions(path string, options *EnableAuthOptions) error {\n\tr := c.c.NewRequest(\"POST\", fmt.Sprintf(\"/v1/sys/auth/%s\", path))\n\tif err := r.SetJSONBody(options); err != nil {\n\t\treturn err\n\t}\n\n\tctx, cancelFunc := context.WithCancel(context.Background())\n\tdefer cancelFunc()\n\tresp, err := c.c.RawRequestWithContext(ctx, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer resp.Body.Close()\n\n\treturn nil\n}\n\nfunc (c *Sys) DisableAuth(path string) error {\n\tr := c.c.NewRequest(\"DELETE\", fmt.Sprintf(\"/v1/sys/auth/%s\", path))\n\n\tctx, cancelFunc := context.WithCancel(context.Background())\n\tdefer cancelFunc()\n\tresp, err := c.c.RawRequestWithContext(ctx, r)\n\tif err == nil {\n\t\tdefer resp.Body.Close()\n\t}\n\treturn err\n}\n\n// Rather than duplicate, we can use modern Go's type aliasing\ntype EnableAuthOptions = MountInput\ntype AuthConfigInput = MountConfigInput\ntype AuthMount = MountOutput\ntype AuthConfigOutput = MountConfigOutput\n"}],"textDocument":{"uri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api/sys_auth.go","version":2}} | |
[Trace - 17:58:56.805 PM] Sending request 'textDocument/definition - (4)'. | |
Params: {"textDocument":{"uri":"file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api/sys_auth.go"},"position":{"character":25,"line":76}} | |
[Trace - 17:58:57.280 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:57 go/packages.Load: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n\n\tsnapshot=2\n\tdirectory=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api\n\tquery=[file=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api/sys_auth.go]\n\tpackages=0\n"} | |
[Error - Received] 17:58:57.347 PM #4 err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory | |
: packages.Load error | |
[Trace - 17:58:57.348 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:57 go/packages.Load: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n\n\tsnapshot=2\n\tdirectory=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api\n\tquery=[file=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api/sys_auth.go]\n\tpackages=0\n"} | |
[Trace - 17:58:57.677 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:57 go/packages.Load: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n\n\tsnapshot=2\n\tdirectory=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api\n\tquery=[builtin github.com/hashicorp/vault/api/...]\n\tpackages=0\n"} | |
[Trace - 17:58:57.677 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:57 initial workspace load failed: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n: packages.Load error\n"} | |
[Trace - 17:58:57.752 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:57 go/packages.Load: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n\n\tsnapshot=2\n\tdirectory=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api\n\tquery=[file=/home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api/sys_auth.go]\n\tpackages=0\n"} | |
[Trace - 17:58:57.752 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:57 reloadOrphanedFiles: failed to load: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n: packages.Load error\n\tquery=[file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api/sys_auth.go]\n"} | |
[Trace - 17:58:57.752 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:57 diagnosing go.mod: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n: packages.Load error\n"} | |
[Trace - 17:58:57.752 PM] Received notification 'window/logMessage'. | |
Params: {"type":1,"message":"2021/02/25 17:58:57 errors loading workspace: err: exit status 1: stderr: go: github.com/hashicorp/vault/sdk@v0.1.13 (replaced by ../sdk): reading ../sdk/go.mod: open /home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/sdk/go.mod: no such file or directory\n: packages.Load error\n\tsnapshot=2\n\tdirectory=file:///home/alvaro/git/golang/src/github.com/openshift/ci-tools/vendor/github.com/hashicorp/vault/api\n"} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment