@@ -132,6 +132,7 @@ export class SQLAdminFetcher {
132132 private parseIpAddresses (
133133 ipResponse : sqladmin_v1beta4 . Schema$IpMapping [ ] | undefined ,
134134 dnsName : string | null | undefined ,
135+ dnsNames : sqladmin_v1beta4 . Schema$DnsNameMapping [ ] | null | undefined ,
135136 pscEnabled : boolean | null | undefined
136137 ) : IpAddresses {
137138 const ipAddresses : IpAddresses = { } ;
@@ -149,7 +150,23 @@ export class SQLAdminFetcher {
149150 // Resolve dnsName into IP address for PSC enabled instances.
150151 // Note that we have to check for PSC enablement because CAS instances
151152 // also set the dnsName field.
152- if ( dnsName && pscEnabled ) {
153+
154+ // Search the dns_names field for the PSC DNS Name.
155+ if ( dnsNames ) {
156+ for ( const dnm of dnsNames ) {
157+ if (
158+ dnm . name &&
159+ dnm . connectionType === 'PRIVATE_SERVICE_CONNECT' &&
160+ dnm . dnsScope === 'INSTANCE'
161+ ) {
162+ ipAddresses . psc = dnm . name ;
163+ break ;
164+ }
165+ }
166+ }
167+
168+ // If the psc dns name was not found, use the legacy dns_name field
169+ if ( ! ipAddresses . psc && dnsName && pscEnabled ) {
153170 ipAddresses . psc = dnsName ;
154171 }
155172
@@ -188,6 +205,7 @@ export class SQLAdminFetcher {
188205 const ipAddresses = this . parseIpAddresses (
189206 res . data . ipAddresses ,
190207 res . data . dnsName ,
208+ res . data . dnsNames ,
191209 res . data . pscEnabled
192210 ) ;
193211
@@ -214,6 +232,16 @@ export class SQLAdminFetcher {
214232 }
215233
216234 cleanGaxiosConfig ( ) ;
235+ // Find a DNS name to use to validate the certificate from the dns_names field. Any
236+ // name in the list may be used to validate the server TLS certificate.
237+ // Fall back to legacy dns_name field if necessary.
238+ let serverName = null ;
239+ if ( res . data . dnsNames && res . data . dnsNames . length > 0 ) {
240+ serverName = res . data . dnsNames [ 0 ] . name ;
241+ }
242+ if ( serverName === null ) {
243+ serverName = res . data . dnsName ;
244+ }
217245
218246 return {
219247 ipAddresses,
@@ -222,7 +250,7 @@ export class SQLAdminFetcher {
222250 expirationTime : serverCaCert . expirationTime ,
223251 } ,
224252 serverCaMode : res . data . serverCaMode || '' ,
225- dnsName : res . data . dnsName || '' ,
253+ dnsName : serverName || '' ,
226254 } ;
227255 }
228256
0 commit comments