func NewStaticConnectionInfoCache()

in internal/alloydb/static.go [87:127]


func NewStaticConnectionInfoCache(
	inst InstanceURI,
	l debug.ContextLogger,
	r io.Reader,
) (*StaticConnectionInfoCache, error) {
	data, err := io.ReadAll(r)
	if err != nil {
		return nil, err
	}
	var d staticData
	if err := json.Unmarshal(data, &d); err != nil {
		return nil, err
	}
	static, ok := d.InstanceInfo[inst.URI()]
	if !ok {
		return nil, errtype.NewConfigError("unknown instance", inst.String())
	}
	cc, err := newClientCertificate(
		inst, []byte(d.PrivateKey), static.PEMCertificateChain, static.CACert,
	)
	if err != nil {
		return nil, err
	}
	pool := x509.NewCertPool()
	pool.AddCert(cc.caCert)
	info := ConnectionInfo{
		Instance: inst,
		IPAddrs: map[string]string{
			PublicIP:  static.PublicIPAddress,
			PrivateIP: static.IPAddress,
			PSC:       static.PSCInstanceConfig.PSCDNSName,
		},
		ClientCert: cc.certChain,
		RootCAs:    pool,
		Expiration: cc.expiry,
	}
	return &StaticConnectionInfoCache{
		logger: l,
		info:   info,
	}, nil
}