Skip to content

Commit 6c45513

Browse files
authored
feat: use regionalized instance ids to prevent global conflicts with sqladmin v1 (#504)
* fix: use regionalized instance names to prevent global conflicts with sqladmin v1 * change variable name from region to r * replace reference to instance.Name
1 parent 5b653f5 commit 6c45513

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

cmd/cloud_sql_proxy/cloud_sql_proxy.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ func listInstances(ctx context.Context, cl *http.Client, projects []string) ([]s
345345
for _, in := range r.Items {
346346
// The Proxy is only support on Second Gen
347347
if in.BackendType == "SECOND_GEN" {
348-
ch <- fmt.Sprintf("%s:%s:%s", in.Project, in.Region, in.Name)
348+
ch <- in.ConnectionName
349349
}
350350
}
351351
return nil

cmd/cloud_sql_proxy/proxy.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,9 @@ func parseInstanceConfig(dir, instance string, cl *http.Client) (instanceConfig,
231231
}
232232
// Parse the instance connection name - everything before the "=".
233233
ret.Instance = args[0]
234-
proj, _, name := util.SplitName(ret.Instance)
235-
if proj == "" || name == "" {
234+
proj, region, name := util.SplitName(ret.Instance)
235+
regionName := fmt.Sprintf("%s~%s", region, name)
236+
if proj == "" || region == "" || name == "" {
236237
return instanceConfig{}, fmt.Errorf("invalid instance connection string: must be in the form `project:region:instance-name`; invalid name was %q", args[0])
237238
}
238239
if len(args) == 1 {
@@ -269,7 +270,7 @@ func parseInstanceConfig(dir, instance string, cl *http.Client) (instanceConfig,
269270
if *host != "" {
270271
sql.BasePath = *host
271272
}
272-
inst, err := sql.Instances.Get(proj, name).Do()
273+
inst, err := sql.Instances.Get(proj, regionName).Do()
273274
if err != nil {
274275
return instanceConfig{}, err
275276
}

proxy/certs/certs.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,9 @@ func (s *RemoteCertSource) Local(instance string) (ret tls.Certificate, err erro
169169
return ret, err
170170
}
171171

172-
p, _, n := util.SplitName(instance)
173-
req := s.serv.SslCerts.CreateEphemeral(p, n,
172+
p, r, n := util.SplitName(instance)
173+
regionName := fmt.Sprintf("%s~%s", r, n)
174+
req := s.serv.SslCerts.CreateEphemeral(p, regionName,
174175
&sqladmin.SslCertsCreateEphemeralRequest{
175176
PublicKey: string(pem.EncodeToMemory(&pem.Block{Bytes: pkix, Type: "RSA PUBLIC KEY"})),
176177
},
@@ -228,7 +229,8 @@ func (s *RemoteCertSource) findIPAddr(data *sqladmin.DatabaseInstance, instance
228229
// Remote returns the specified instance's CA certificate, address, and name.
229230
func (s *RemoteCertSource) Remote(instance string) (cert *x509.Certificate, addr, name, version string, err error) {
230231
p, region, n := util.SplitName(instance)
231-
req := s.serv.Instances.Get(p, n)
232+
regionName := fmt.Sprintf("%s~%s", region, n)
233+
req := s.serv.Instances.Get(p, regionName)
232234

233235
var data *sqladmin.DatabaseInstance
234236
err = backoffAPIRetry("get instance", instance, func() error {

0 commit comments

Comments
 (0)