MCPcopy Index your code
hub / github.com/linuxkit/linuxkit / NewGCPClient

Function NewGCPClient

src/cmd/linuxkit/gcp.go:42–107  ·  view source on GitHub ↗

NewGCPClient creates a new GCP client

(keys, projectName string)

Source from the content-addressed store, hash-verified

40
41// NewGCPClient creates a new GCP client
42func NewGCPClient(keys, projectName string) (*GCPClient, error) {
43 log.Debugf("Connecting to GCP")
44 ctx := context.Background()
45 var client *GCPClient
46 if projectName == "" {
47 return nil, fmt.Errorf("the project name is not specified")
48 }
49 if keys != "" {
50 log.Debugf("Using Keys %s", keys)
51 f, err := os.Open(keys)
52 if err != nil {
53 return nil, err
54 }
55
56 jsonKey, err := io.ReadAll(f)
57 if err != nil {
58 return nil, err
59 }
60
61 config, err := google.JWTConfigFromJSON(jsonKey,
62 storage.DevstorageReadWriteScope,
63 compute.ComputeScope,
64 )
65 if err != nil {
66 return nil, err
67 }
68
69 client = &GCPClient{
70 client: config.Client(ctx),
71 projectName: projectName,
72 }
73 } else {
74 log.Debugf("Using Application Default credentials")
75 gc, err := google.DefaultClient(
76 ctx,
77 storage.DevstorageReadWriteScope,
78 compute.ComputeScope,
79 )
80 if err != nil {
81 return nil, err
82 }
83 client = &GCPClient{
84 client: gc,
85 projectName: projectName,
86 }
87 }
88
89 var err error
90 client.compute, err = compute.NewService(ctx, option.WithHTTPClient(client.client))
91 if err != nil {
92 return nil, err
93 }
94
95 client.storage, err = storage.NewService(ctx, option.WithHTTPClient(client.client))
96 if err != nil {
97 return nil, err
98 }
99

Callers 2

pushGCPCmdFunction · 0.85
runGCPCmdFunction · 0.85

Calls 1

OpenMethod · 0.65

Tested by

no test coverage detected