Skip to content

Commit 480992a

Browse files
authored
feat: improve reliability of refresh operations (#883)
1 parent c350b93 commit 480992a

2 files changed

Lines changed: 11 additions & 10 deletions

File tree

cmd/cloud_sql_proxy/proxy.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ func parseInstanceConfig(dir, instance string, cl *http.Client) (instanceConfig,
264264
if *host != "" {
265265
sql.BasePath = *host
266266
}
267-
inst, err := sql.Instances.Get(proj, regionName).Do()
267+
inst, err := sql.Connect.Get(proj, regionName).Do()
268268
if err != nil {
269269
return instanceConfig{}, err
270270
}

proxy/certs/certs.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ func (s *RemoteCertSource) Local(instance string) (tls.Certificate, error) {
209209
p, r, n := util.SplitName(instance)
210210
regionName := fmt.Sprintf("%s~%s", r, n)
211211
pubKey := string(pem.EncodeToMemory(&pem.Block{Bytes: pkix, Type: "RSA PUBLIC KEY"}))
212-
createEphemeralRequest := sqladmin.SslCertsCreateEphemeralRequest{
212+
generateEphemeralCertRequest := sqladmin.GenerateEphemeralCertRequest{
213213
PublicKey: pubKey,
214214
}
215215
var tok *oauth2.Token
@@ -229,23 +229,24 @@ func (s *RemoteCertSource) Local(instance string) (tls.Certificate, error) {
229229
}
230230
// TODO: remove this once issue with OAuth2 Tokens is resolved.
231231
// See https://github.com/GoogleCloudPlatform/cloudsql-proxy/issues/852.
232-
createEphemeralRequest.AccessToken = strings.TrimRight(tok.AccessToken, ".")
232+
generateEphemeralCertRequest.AccessToken = strings.TrimRight(tok.AccessToken, ".")
233233
}
234-
req := s.serv.SslCerts.CreateEphemeral(p, regionName, &createEphemeralRequest)
234+
req := s.serv.Connect.GenerateEphemeralCert(p, regionName, &generateEphemeralCertRequest)
235235

236-
var data *sqladmin.SslCert
237-
err = backoffAPIRetry("createEphemeral for", instance, func() error {
236+
var data *sqladmin.GenerateEphemeralCertResponse
237+
err = backoffAPIRetry("generateEphemeral for", instance, func() error {
238238
data, err = req.Do()
239239
return err
240240
})
241241
if err != nil {
242242
return tls.Certificate{}, err
243243
}
244244

245-
c, err := parseCert(data.Cert)
245+
c, err := parseCert(data.EphemeralCert.Cert)
246246
if err != nil {
247247
return tls.Certificate{}, fmt.Errorf("couldn't parse ephemeral certificate for instance %q: %v", instance, err)
248248
}
249+
249250
if s.EnableIAMLogin {
250251
// Adjust the certificate's expiration to be the earlier of tok.Expiry or c.NotAfter
251252
if tok.Expiry.Before(c.NotAfter) {
@@ -282,7 +283,7 @@ func (s *RemoteCertSource) generateKey() *rsa.PrivateKey {
282283
}
283284

284285
// Find the first matching IP address by user input IP address types
285-
func (s *RemoteCertSource) findIPAddr(data *sqladmin.DatabaseInstance, instance string) (ipAddrInUse string, err error) {
286+
func (s *RemoteCertSource) findIPAddr(data *sqladmin.ConnectSettings, instance string) (ipAddrInUse string, err error) {
286287
for _, eachIPAddrTypeByUser := range s.IPAddrTypes {
287288
for _, eachIPAddrTypeOfInstance := range data.IpAddresses {
288289
if strings.ToUpper(eachIPAddrTypeOfInstance.Type) == strings.ToUpper(eachIPAddrTypeByUser) {
@@ -306,9 +307,9 @@ func (s *RemoteCertSource) findIPAddr(data *sqladmin.DatabaseInstance, instance
306307
func (s *RemoteCertSource) Remote(instance string) (cert *x509.Certificate, addr, name, version string, err error) {
307308
p, region, n := util.SplitName(instance)
308309
regionName := fmt.Sprintf("%s~%s", region, n)
309-
req := s.serv.Instances.Get(p, regionName)
310+
req := s.serv.Connect.Get(p, regionName)
310311

311-
var data *sqladmin.DatabaseInstance
312+
var data *sqladmin.ConnectSettings
312313
err = backoffAPIRetry("get instance", instance, func() error {
313314
data, err = req.Do()
314315
return err

0 commit comments

Comments
 (0)