python/services/sql/instance_server.go (654 lines of code) (raw):

// Copyright 2020 Google LLC. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package server import ( "context" "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl" emptypb "github.com/GoogleCloudPlatform/declarative-resource-client-library/python/proto/empty_go_proto" sqlpb "github.com/GoogleCloudPlatform/declarative-resource-client-library/python/proto/sql/sql_go_proto" "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/sql" ) // Server implements the gRPC interface for Instance. type InstanceServer struct{} // ProtoToInstanceBackendTypeEnum converts a InstanceBackendTypeEnum enum from its proto representation. func ProtoToSqlInstanceBackendTypeEnum(e sqlpb.SqlInstanceBackendTypeEnum) *sql.InstanceBackendTypeEnum { if e == 0 { return nil } if n, ok := sqlpb.SqlInstanceBackendTypeEnum_name[int32(e)]; ok { e := sql.InstanceBackendTypeEnum(n[len("InstanceBackendTypeEnum"):]) return &e } return nil } // ProtoToInstanceDatabaseVersionEnum converts a InstanceDatabaseVersionEnum enum from its proto representation. func ProtoToSqlInstanceDatabaseVersionEnum(e sqlpb.SqlInstanceDatabaseVersionEnum) *sql.InstanceDatabaseVersionEnum { if e == 0 { return nil } if n, ok := sqlpb.SqlInstanceDatabaseVersionEnum_name[int32(e)]; ok { e := sql.InstanceDatabaseVersionEnum(n[len("InstanceDatabaseVersionEnum"):]) return &e } return nil } // ProtoToInstanceInstanceTypeEnum converts a InstanceInstanceTypeEnum enum from its proto representation. func ProtoToSqlInstanceInstanceTypeEnum(e sqlpb.SqlInstanceInstanceTypeEnum) *sql.InstanceInstanceTypeEnum { if e == 0 { return nil } if n, ok := sqlpb.SqlInstanceInstanceTypeEnum_name[int32(e)]; ok { e := sql.InstanceInstanceTypeEnum(n[len("InstanceInstanceTypeEnum"):]) return &e } return nil } // ProtoToInstanceIPAddressesTypeEnum converts a InstanceIPAddressesTypeEnum enum from its proto representation. func ProtoToSqlInstanceIPAddressesTypeEnum(e sqlpb.SqlInstanceIPAddressesTypeEnum) *sql.InstanceIPAddressesTypeEnum { if e == 0 { return nil } if n, ok := sqlpb.SqlInstanceIPAddressesTypeEnum_name[int32(e)]; ok { e := sql.InstanceIPAddressesTypeEnum(n[len("InstanceIPAddressesTypeEnum"):]) return &e } return nil } // ProtoToInstanceSettingsAvailabilityTypeEnum converts a InstanceSettingsAvailabilityTypeEnum enum from its proto representation. func ProtoToSqlInstanceSettingsAvailabilityTypeEnum(e sqlpb.SqlInstanceSettingsAvailabilityTypeEnum) *sql.InstanceSettingsAvailabilityTypeEnum { if e == 0 { return nil } if n, ok := sqlpb.SqlInstanceSettingsAvailabilityTypeEnum_name[int32(e)]; ok { e := sql.InstanceSettingsAvailabilityTypeEnum(n[len("InstanceSettingsAvailabilityTypeEnum"):]) return &e } return nil } // ProtoToInstanceSettingsPricingPlanEnum converts a InstanceSettingsPricingPlanEnum enum from its proto representation. func ProtoToSqlInstanceSettingsPricingPlanEnum(e sqlpb.SqlInstanceSettingsPricingPlanEnum) *sql.InstanceSettingsPricingPlanEnum { if e == 0 { return nil } if n, ok := sqlpb.SqlInstanceSettingsPricingPlanEnum_name[int32(e)]; ok { e := sql.InstanceSettingsPricingPlanEnum(n[len("InstanceSettingsPricingPlanEnum"):]) return &e } return nil } // ProtoToInstanceSettingsReplicationTypeEnum converts a InstanceSettingsReplicationTypeEnum enum from its proto representation. func ProtoToSqlInstanceSettingsReplicationTypeEnum(e sqlpb.SqlInstanceSettingsReplicationTypeEnum) *sql.InstanceSettingsReplicationTypeEnum { if e == 0 { return nil } if n, ok := sqlpb.SqlInstanceSettingsReplicationTypeEnum_name[int32(e)]; ok { e := sql.InstanceSettingsReplicationTypeEnum(n[len("InstanceSettingsReplicationTypeEnum"):]) return &e } return nil } // ProtoToInstanceSettingsActivationPolicyEnum converts a InstanceSettingsActivationPolicyEnum enum from its proto representation. func ProtoToSqlInstanceSettingsActivationPolicyEnum(e sqlpb.SqlInstanceSettingsActivationPolicyEnum) *sql.InstanceSettingsActivationPolicyEnum { if e == 0 { return nil } if n, ok := sqlpb.SqlInstanceSettingsActivationPolicyEnum_name[int32(e)]; ok { e := sql.InstanceSettingsActivationPolicyEnum(n[len("InstanceSettingsActivationPolicyEnum"):]) return &e } return nil } // ProtoToInstanceSettingsDataDiskTypeEnum converts a InstanceSettingsDataDiskTypeEnum enum from its proto representation. func ProtoToSqlInstanceSettingsDataDiskTypeEnum(e sqlpb.SqlInstanceSettingsDataDiskTypeEnum) *sql.InstanceSettingsDataDiskTypeEnum { if e == 0 { return nil } if n, ok := sqlpb.SqlInstanceSettingsDataDiskTypeEnum_name[int32(e)]; ok { e := sql.InstanceSettingsDataDiskTypeEnum(n[len("InstanceSettingsDataDiskTypeEnum"):]) return &e } return nil } // ProtoToInstanceMaxDiskSize converts a InstanceMaxDiskSize resource from its proto representation. func ProtoToSqlInstanceMaxDiskSize(p *sqlpb.SqlInstanceMaxDiskSize) *sql.InstanceMaxDiskSize { if p == nil { return nil } obj := &sql.InstanceMaxDiskSize{ Value: dcl.Int64OrNil(p.Value), } return obj } // ProtoToInstanceCurrentDiskSize converts a InstanceCurrentDiskSize resource from its proto representation. func ProtoToSqlInstanceCurrentDiskSize(p *sqlpb.SqlInstanceCurrentDiskSize) *sql.InstanceCurrentDiskSize { if p == nil { return nil } obj := &sql.InstanceCurrentDiskSize{ Value: dcl.Int64OrNil(p.Value), } return obj } // ProtoToInstanceDiskEncryptionConfiguration converts a InstanceDiskEncryptionConfiguration resource from its proto representation. func ProtoToSqlInstanceDiskEncryptionConfiguration(p *sqlpb.SqlInstanceDiskEncryptionConfiguration) *sql.InstanceDiskEncryptionConfiguration { if p == nil { return nil } obj := &sql.InstanceDiskEncryptionConfiguration{ KmsKeyName: dcl.StringOrNil(p.KmsKeyName), Kind: dcl.StringOrNil(p.Kind), } return obj } // ProtoToInstanceFailoverReplica converts a InstanceFailoverReplica resource from its proto representation. func ProtoToSqlInstanceFailoverReplica(p *sqlpb.SqlInstanceFailoverReplica) *sql.InstanceFailoverReplica { if p == nil { return nil } obj := &sql.InstanceFailoverReplica{ Name: dcl.StringOrNil(p.Name), Available: dcl.Bool(p.Available), } return obj } // ProtoToInstanceIPAddresses converts a InstanceIPAddresses resource from its proto representation. func ProtoToSqlInstanceIPAddresses(p *sqlpb.SqlInstanceIPAddresses) *sql.InstanceIPAddresses { if p == nil { return nil } obj := &sql.InstanceIPAddresses{ Type: ProtoToSqlInstanceIPAddressesTypeEnum(p.GetType()), IPAddress: dcl.StringOrNil(p.IpAddress), TimeToRetire: ProtoToSqlInstanceIPAddressesTimeToRetire(p.GetTimeToRetire()), } return obj } // ProtoToInstanceIPAddressesTimeToRetire converts a InstanceIPAddressesTimeToRetire resource from its proto representation. func ProtoToSqlInstanceIPAddressesTimeToRetire(p *sqlpb.SqlInstanceIPAddressesTimeToRetire) *sql.InstanceIPAddressesTimeToRetire { if p == nil { return nil } obj := &sql.InstanceIPAddressesTimeToRetire{ Seconds: dcl.Int64OrNil(p.Seconds), Nanos: dcl.Int64OrNil(p.Nanos), } return obj } // ProtoToInstanceMasterInstance converts a InstanceMasterInstance resource from its proto representation. func ProtoToSqlInstanceMasterInstance(p *sqlpb.SqlInstanceMasterInstance) *sql.InstanceMasterInstance { if p == nil { return nil } obj := &sql.InstanceMasterInstance{ Name: dcl.StringOrNil(p.Name), Region: dcl.StringOrNil(p.Region), } return obj } // ProtoToInstanceReplicaConfiguration converts a InstanceReplicaConfiguration resource from its proto representation. func ProtoToSqlInstanceReplicaConfiguration(p *sqlpb.SqlInstanceReplicaConfiguration) *sql.InstanceReplicaConfiguration { if p == nil { return nil } obj := &sql.InstanceReplicaConfiguration{ Kind: dcl.StringOrNil(p.Kind), MysqlReplicaConfiguration: ProtoToSqlInstanceReplicaConfigurationMysqlReplicaConfiguration(p.GetMysqlReplicaConfiguration()), FailoverTarget: dcl.Bool(p.FailoverTarget), ReplicaPoolConfiguration: ProtoToSqlInstanceReplicaConfigurationReplicaPoolConfiguration(p.GetReplicaPoolConfiguration()), } return obj } // ProtoToInstanceReplicaConfigurationMysqlReplicaConfiguration converts a InstanceReplicaConfigurationMysqlReplicaConfiguration resource from its proto representation. func ProtoToSqlInstanceReplicaConfigurationMysqlReplicaConfiguration(p *sqlpb.SqlInstanceReplicaConfigurationMysqlReplicaConfiguration) *sql.InstanceReplicaConfigurationMysqlReplicaConfiguration { if p == nil { return nil } obj := &sql.InstanceReplicaConfigurationMysqlReplicaConfiguration{ DumpFilePath: dcl.StringOrNil(p.DumpFilePath), Username: dcl.StringOrNil(p.Username), Password: dcl.StringOrNil(p.Password), ConnectRetryInterval: dcl.Int64OrNil(p.ConnectRetryInterval), MasterHeartbeatPeriod: ProtoToSqlInstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriod(p.GetMasterHeartbeatPeriod()), CaCertificate: dcl.StringOrNil(p.CaCertificate), ClientCertificate: dcl.StringOrNil(p.ClientCertificate), ClientKey: dcl.StringOrNil(p.ClientKey), SslCipher: dcl.StringOrNil(p.SslCipher), VerifyServerCertificate: dcl.Bool(p.VerifyServerCertificate), Kind: dcl.StringOrNil(p.Kind), } return obj } // ProtoToInstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriod converts a InstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriod resource from its proto representation. func ProtoToSqlInstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriod(p *sqlpb.SqlInstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriod) *sql.InstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriod { if p == nil { return nil } obj := &sql.InstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriod{ Value: dcl.Int64OrNil(p.Value), } return obj } // ProtoToInstanceReplicaConfigurationReplicaPoolConfiguration converts a InstanceReplicaConfigurationReplicaPoolConfiguration resource from its proto representation. func ProtoToSqlInstanceReplicaConfigurationReplicaPoolConfiguration(p *sqlpb.SqlInstanceReplicaConfigurationReplicaPoolConfiguration) *sql.InstanceReplicaConfigurationReplicaPoolConfiguration { if p == nil { return nil } obj := &sql.InstanceReplicaConfigurationReplicaPoolConfiguration{ Kind: dcl.StringOrNil(p.Kind), StaticPoolConfiguration: ProtoToSqlInstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfiguration(p.GetStaticPoolConfiguration()), AutoscalingPoolConfiguration: ProtoToSqlInstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfiguration(p.GetAutoscalingPoolConfiguration()), } return obj } // ProtoToInstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfiguration converts a InstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfiguration resource from its proto representation. func ProtoToSqlInstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfiguration(p *sqlpb.SqlInstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfiguration) *sql.InstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfiguration { if p == nil { return nil } obj := &sql.InstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfiguration{ Kind: dcl.StringOrNil(p.Kind), ReplicaCount: dcl.Int64OrNil(p.ReplicaCount), ExposeReplicaIP: dcl.Bool(p.ExposeReplicaIp), } return obj } // ProtoToInstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfiguration converts a InstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfiguration resource from its proto representation. func ProtoToSqlInstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfiguration(p *sqlpb.SqlInstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfiguration) *sql.InstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfiguration { if p == nil { return nil } obj := &sql.InstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfiguration{ Kind: dcl.StringOrNil(p.Kind), MinReplicaCount: dcl.Int64OrNil(p.MinReplicaCount), MaxReplicaCount: dcl.Int64OrNil(p.MaxReplicaCount), TargetCpuUtil: dcl.Float64OrNil(p.TargetCpuUtil), } return obj } // ProtoToInstanceScheduledMaintenance converts a InstanceScheduledMaintenance resource from its proto representation. func ProtoToSqlInstanceScheduledMaintenance(p *sqlpb.SqlInstanceScheduledMaintenance) *sql.InstanceScheduledMaintenance { if p == nil { return nil } obj := &sql.InstanceScheduledMaintenance{ StartTime: ProtoToSqlInstanceScheduledMaintenanceStartTime(p.GetStartTime()), CanDefer: dcl.Bool(p.CanDefer), CanReschedule: dcl.Bool(p.CanReschedule), } return obj } // ProtoToInstanceScheduledMaintenanceStartTime converts a InstanceScheduledMaintenanceStartTime resource from its proto representation. func ProtoToSqlInstanceScheduledMaintenanceStartTime(p *sqlpb.SqlInstanceScheduledMaintenanceStartTime) *sql.InstanceScheduledMaintenanceStartTime { if p == nil { return nil } obj := &sql.InstanceScheduledMaintenanceStartTime{ Seconds: dcl.Int64OrNil(p.Seconds), Nanos: dcl.Int64OrNil(p.Nanos), } return obj } // ProtoToInstanceSettings converts a InstanceSettings resource from its proto representation. func ProtoToSqlInstanceSettings(p *sqlpb.SqlInstanceSettings) *sql.InstanceSettings { if p == nil { return nil } obj := &sql.InstanceSettings{ Tier: dcl.StringOrNil(p.Tier), Kind: dcl.StringOrNil(p.Kind), AvailabilityType: ProtoToSqlInstanceSettingsAvailabilityTypeEnum(p.GetAvailabilityType()), PricingPlan: ProtoToSqlInstanceSettingsPricingPlanEnum(p.GetPricingPlan()), ReplicationType: ProtoToSqlInstanceSettingsReplicationTypeEnum(p.GetReplicationType()), ActivationPolicy: ProtoToSqlInstanceSettingsActivationPolicyEnum(p.GetActivationPolicy()), StorageAutoResize: dcl.Bool(p.StorageAutoResize), DataDiskType: ProtoToSqlInstanceSettingsDataDiskTypeEnum(p.GetDataDiskType()), DatabaseReplicationEnabled: dcl.Bool(p.DatabaseReplicationEnabled), CrashSafeReplicationEnabled: dcl.Bool(p.CrashSafeReplicationEnabled), } for _, r := range p.GetAuthorizedGaeApplications() { obj.AuthorizedGaeApplications = append(obj.AuthorizedGaeApplications, r) } return obj } // ProtoToInstance converts a Instance resource from its proto representation. func ProtoToInstance(p *sqlpb.SqlInstance) *sql.Instance { obj := &sql.Instance{ BackendType: ProtoToSqlInstanceBackendTypeEnum(p.GetBackendType()), ConnectionName: dcl.StringOrNil(p.ConnectionName), DatabaseVersion: ProtoToSqlInstanceDatabaseVersionEnum(p.GetDatabaseVersion()), Etag: dcl.StringOrNil(p.Etag), GceZone: dcl.StringOrNil(p.GceZone), InstanceType: ProtoToSqlInstanceInstanceTypeEnum(p.GetInstanceType()), MasterInstanceName: dcl.StringOrNil(p.MasterInstanceName), MaxDiskSize: ProtoToSqlInstanceMaxDiskSize(p.GetMaxDiskSize()), Name: dcl.StringOrNil(p.Name), Project: dcl.StringOrNil(p.Project), Region: dcl.StringOrNil(p.Region), RootPassword: dcl.StringOrNil(p.RootPassword), CurrentDiskSize: ProtoToSqlInstanceCurrentDiskSize(p.GetCurrentDiskSize()), DiskEncryptionConfiguration: ProtoToSqlInstanceDiskEncryptionConfiguration(p.GetDiskEncryptionConfiguration()), FailoverReplica: ProtoToSqlInstanceFailoverReplica(p.GetFailoverReplica()), MasterInstance: ProtoToSqlInstanceMasterInstance(p.GetMasterInstance()), ReplicaConfiguration: ProtoToSqlInstanceReplicaConfiguration(p.GetReplicaConfiguration()), ScheduledMaintenance: ProtoToSqlInstanceScheduledMaintenance(p.GetScheduledMaintenance()), Settings: ProtoToSqlInstanceSettings(p.GetSettings()), } for _, r := range p.GetIpAddresses() { obj.IPAddresses = append(obj.IPAddresses, *ProtoToSqlInstanceIPAddresses(r)) } return obj } // InstanceBackendTypeEnumToProto converts a InstanceBackendTypeEnum enum to its proto representation. func SqlInstanceBackendTypeEnumToProto(e *sql.InstanceBackendTypeEnum) sqlpb.SqlInstanceBackendTypeEnum { if e == nil { return sqlpb.SqlInstanceBackendTypeEnum(0) } if v, ok := sqlpb.SqlInstanceBackendTypeEnum_value["InstanceBackendTypeEnum"+string(*e)]; ok { return sqlpb.SqlInstanceBackendTypeEnum(v) } return sqlpb.SqlInstanceBackendTypeEnum(0) } // InstanceDatabaseVersionEnumToProto converts a InstanceDatabaseVersionEnum enum to its proto representation. func SqlInstanceDatabaseVersionEnumToProto(e *sql.InstanceDatabaseVersionEnum) sqlpb.SqlInstanceDatabaseVersionEnum { if e == nil { return sqlpb.SqlInstanceDatabaseVersionEnum(0) } if v, ok := sqlpb.SqlInstanceDatabaseVersionEnum_value["InstanceDatabaseVersionEnum"+string(*e)]; ok { return sqlpb.SqlInstanceDatabaseVersionEnum(v) } return sqlpb.SqlInstanceDatabaseVersionEnum(0) } // InstanceInstanceTypeEnumToProto converts a InstanceInstanceTypeEnum enum to its proto representation. func SqlInstanceInstanceTypeEnumToProto(e *sql.InstanceInstanceTypeEnum) sqlpb.SqlInstanceInstanceTypeEnum { if e == nil { return sqlpb.SqlInstanceInstanceTypeEnum(0) } if v, ok := sqlpb.SqlInstanceInstanceTypeEnum_value["InstanceInstanceTypeEnum"+string(*e)]; ok { return sqlpb.SqlInstanceInstanceTypeEnum(v) } return sqlpb.SqlInstanceInstanceTypeEnum(0) } // InstanceIPAddressesTypeEnumToProto converts a InstanceIPAddressesTypeEnum enum to its proto representation. func SqlInstanceIPAddressesTypeEnumToProto(e *sql.InstanceIPAddressesTypeEnum) sqlpb.SqlInstanceIPAddressesTypeEnum { if e == nil { return sqlpb.SqlInstanceIPAddressesTypeEnum(0) } if v, ok := sqlpb.SqlInstanceIPAddressesTypeEnum_value["InstanceIPAddressesTypeEnum"+string(*e)]; ok { return sqlpb.SqlInstanceIPAddressesTypeEnum(v) } return sqlpb.SqlInstanceIPAddressesTypeEnum(0) } // InstanceSettingsAvailabilityTypeEnumToProto converts a InstanceSettingsAvailabilityTypeEnum enum to its proto representation. func SqlInstanceSettingsAvailabilityTypeEnumToProto(e *sql.InstanceSettingsAvailabilityTypeEnum) sqlpb.SqlInstanceSettingsAvailabilityTypeEnum { if e == nil { return sqlpb.SqlInstanceSettingsAvailabilityTypeEnum(0) } if v, ok := sqlpb.SqlInstanceSettingsAvailabilityTypeEnum_value["InstanceSettingsAvailabilityTypeEnum"+string(*e)]; ok { return sqlpb.SqlInstanceSettingsAvailabilityTypeEnum(v) } return sqlpb.SqlInstanceSettingsAvailabilityTypeEnum(0) } // InstanceSettingsPricingPlanEnumToProto converts a InstanceSettingsPricingPlanEnum enum to its proto representation. func SqlInstanceSettingsPricingPlanEnumToProto(e *sql.InstanceSettingsPricingPlanEnum) sqlpb.SqlInstanceSettingsPricingPlanEnum { if e == nil { return sqlpb.SqlInstanceSettingsPricingPlanEnum(0) } if v, ok := sqlpb.SqlInstanceSettingsPricingPlanEnum_value["InstanceSettingsPricingPlanEnum"+string(*e)]; ok { return sqlpb.SqlInstanceSettingsPricingPlanEnum(v) } return sqlpb.SqlInstanceSettingsPricingPlanEnum(0) } // InstanceSettingsReplicationTypeEnumToProto converts a InstanceSettingsReplicationTypeEnum enum to its proto representation. func SqlInstanceSettingsReplicationTypeEnumToProto(e *sql.InstanceSettingsReplicationTypeEnum) sqlpb.SqlInstanceSettingsReplicationTypeEnum { if e == nil { return sqlpb.SqlInstanceSettingsReplicationTypeEnum(0) } if v, ok := sqlpb.SqlInstanceSettingsReplicationTypeEnum_value["InstanceSettingsReplicationTypeEnum"+string(*e)]; ok { return sqlpb.SqlInstanceSettingsReplicationTypeEnum(v) } return sqlpb.SqlInstanceSettingsReplicationTypeEnum(0) } // InstanceSettingsActivationPolicyEnumToProto converts a InstanceSettingsActivationPolicyEnum enum to its proto representation. func SqlInstanceSettingsActivationPolicyEnumToProto(e *sql.InstanceSettingsActivationPolicyEnum) sqlpb.SqlInstanceSettingsActivationPolicyEnum { if e == nil { return sqlpb.SqlInstanceSettingsActivationPolicyEnum(0) } if v, ok := sqlpb.SqlInstanceSettingsActivationPolicyEnum_value["InstanceSettingsActivationPolicyEnum"+string(*e)]; ok { return sqlpb.SqlInstanceSettingsActivationPolicyEnum(v) } return sqlpb.SqlInstanceSettingsActivationPolicyEnum(0) } // InstanceSettingsDataDiskTypeEnumToProto converts a InstanceSettingsDataDiskTypeEnum enum to its proto representation. func SqlInstanceSettingsDataDiskTypeEnumToProto(e *sql.InstanceSettingsDataDiskTypeEnum) sqlpb.SqlInstanceSettingsDataDiskTypeEnum { if e == nil { return sqlpb.SqlInstanceSettingsDataDiskTypeEnum(0) } if v, ok := sqlpb.SqlInstanceSettingsDataDiskTypeEnum_value["InstanceSettingsDataDiskTypeEnum"+string(*e)]; ok { return sqlpb.SqlInstanceSettingsDataDiskTypeEnum(v) } return sqlpb.SqlInstanceSettingsDataDiskTypeEnum(0) } // InstanceMaxDiskSizeToProto converts a InstanceMaxDiskSize resource to its proto representation. func SqlInstanceMaxDiskSizeToProto(o *sql.InstanceMaxDiskSize) *sqlpb.SqlInstanceMaxDiskSize { if o == nil { return nil } p := &sqlpb.SqlInstanceMaxDiskSize{ Value: dcl.ValueOrEmptyInt64(o.Value), } return p } // InstanceCurrentDiskSizeToProto converts a InstanceCurrentDiskSize resource to its proto representation. func SqlInstanceCurrentDiskSizeToProto(o *sql.InstanceCurrentDiskSize) *sqlpb.SqlInstanceCurrentDiskSize { if o == nil { return nil } p := &sqlpb.SqlInstanceCurrentDiskSize{ Value: dcl.ValueOrEmptyInt64(o.Value), } return p } // InstanceDiskEncryptionConfigurationToProto converts a InstanceDiskEncryptionConfiguration resource to its proto representation. func SqlInstanceDiskEncryptionConfigurationToProto(o *sql.InstanceDiskEncryptionConfiguration) *sqlpb.SqlInstanceDiskEncryptionConfiguration { if o == nil { return nil } p := &sqlpb.SqlInstanceDiskEncryptionConfiguration{ KmsKeyName: dcl.ValueOrEmptyString(o.KmsKeyName), Kind: dcl.ValueOrEmptyString(o.Kind), } return p } // InstanceFailoverReplicaToProto converts a InstanceFailoverReplica resource to its proto representation. func SqlInstanceFailoverReplicaToProto(o *sql.InstanceFailoverReplica) *sqlpb.SqlInstanceFailoverReplica { if o == nil { return nil } p := &sqlpb.SqlInstanceFailoverReplica{ Name: dcl.ValueOrEmptyString(o.Name), Available: dcl.ValueOrEmptyBool(o.Available), } return p } // InstanceIPAddressesToProto converts a InstanceIPAddresses resource to its proto representation. func SqlInstanceIPAddressesToProto(o *sql.InstanceIPAddresses) *sqlpb.SqlInstanceIPAddresses { if o == nil { return nil } p := &sqlpb.SqlInstanceIPAddresses{ Type: SqlInstanceIPAddressesTypeEnumToProto(o.Type), IpAddress: dcl.ValueOrEmptyString(o.IPAddress), TimeToRetire: SqlInstanceIPAddressesTimeToRetireToProto(o.TimeToRetire), } return p } // InstanceIPAddressesTimeToRetireToProto converts a InstanceIPAddressesTimeToRetire resource to its proto representation. func SqlInstanceIPAddressesTimeToRetireToProto(o *sql.InstanceIPAddressesTimeToRetire) *sqlpb.SqlInstanceIPAddressesTimeToRetire { if o == nil { return nil } p := &sqlpb.SqlInstanceIPAddressesTimeToRetire{ Seconds: dcl.ValueOrEmptyInt64(o.Seconds), Nanos: dcl.ValueOrEmptyInt64(o.Nanos), } return p } // InstanceMasterInstanceToProto converts a InstanceMasterInstance resource to its proto representation. func SqlInstanceMasterInstanceToProto(o *sql.InstanceMasterInstance) *sqlpb.SqlInstanceMasterInstance { if o == nil { return nil } p := &sqlpb.SqlInstanceMasterInstance{ Name: dcl.ValueOrEmptyString(o.Name), Region: dcl.ValueOrEmptyString(o.Region), } return p } // InstanceReplicaConfigurationToProto converts a InstanceReplicaConfiguration resource to its proto representation. func SqlInstanceReplicaConfigurationToProto(o *sql.InstanceReplicaConfiguration) *sqlpb.SqlInstanceReplicaConfiguration { if o == nil { return nil } p := &sqlpb.SqlInstanceReplicaConfiguration{ Kind: dcl.ValueOrEmptyString(o.Kind), MysqlReplicaConfiguration: SqlInstanceReplicaConfigurationMysqlReplicaConfigurationToProto(o.MysqlReplicaConfiguration), FailoverTarget: dcl.ValueOrEmptyBool(o.FailoverTarget), ReplicaPoolConfiguration: SqlInstanceReplicaConfigurationReplicaPoolConfigurationToProto(o.ReplicaPoolConfiguration), } return p } // InstanceReplicaConfigurationMysqlReplicaConfigurationToProto converts a InstanceReplicaConfigurationMysqlReplicaConfiguration resource to its proto representation. func SqlInstanceReplicaConfigurationMysqlReplicaConfigurationToProto(o *sql.InstanceReplicaConfigurationMysqlReplicaConfiguration) *sqlpb.SqlInstanceReplicaConfigurationMysqlReplicaConfiguration { if o == nil { return nil } p := &sqlpb.SqlInstanceReplicaConfigurationMysqlReplicaConfiguration{ DumpFilePath: dcl.ValueOrEmptyString(o.DumpFilePath), Username: dcl.ValueOrEmptyString(o.Username), Password: dcl.ValueOrEmptyString(o.Password), ConnectRetryInterval: dcl.ValueOrEmptyInt64(o.ConnectRetryInterval), MasterHeartbeatPeriod: SqlInstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriodToProto(o.MasterHeartbeatPeriod), CaCertificate: dcl.ValueOrEmptyString(o.CaCertificate), ClientCertificate: dcl.ValueOrEmptyString(o.ClientCertificate), ClientKey: dcl.ValueOrEmptyString(o.ClientKey), SslCipher: dcl.ValueOrEmptyString(o.SslCipher), VerifyServerCertificate: dcl.ValueOrEmptyBool(o.VerifyServerCertificate), Kind: dcl.ValueOrEmptyString(o.Kind), } return p } // InstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriodToProto converts a InstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriod resource to its proto representation. func SqlInstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriodToProto(o *sql.InstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriod) *sqlpb.SqlInstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriod { if o == nil { return nil } p := &sqlpb.SqlInstanceReplicaConfigurationMysqlReplicaConfigurationMasterHeartbeatPeriod{ Value: dcl.ValueOrEmptyInt64(o.Value), } return p } // InstanceReplicaConfigurationReplicaPoolConfigurationToProto converts a InstanceReplicaConfigurationReplicaPoolConfiguration resource to its proto representation. func SqlInstanceReplicaConfigurationReplicaPoolConfigurationToProto(o *sql.InstanceReplicaConfigurationReplicaPoolConfiguration) *sqlpb.SqlInstanceReplicaConfigurationReplicaPoolConfiguration { if o == nil { return nil } p := &sqlpb.SqlInstanceReplicaConfigurationReplicaPoolConfiguration{ Kind: dcl.ValueOrEmptyString(o.Kind), StaticPoolConfiguration: SqlInstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfigurationToProto(o.StaticPoolConfiguration), AutoscalingPoolConfiguration: SqlInstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfigurationToProto(o.AutoscalingPoolConfiguration), } return p } // InstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfigurationToProto converts a InstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfiguration resource to its proto representation. func SqlInstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfigurationToProto(o *sql.InstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfiguration) *sqlpb.SqlInstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfiguration { if o == nil { return nil } p := &sqlpb.SqlInstanceReplicaConfigurationReplicaPoolConfigurationStaticPoolConfiguration{ Kind: dcl.ValueOrEmptyString(o.Kind), ReplicaCount: dcl.ValueOrEmptyInt64(o.ReplicaCount), ExposeReplicaIp: dcl.ValueOrEmptyBool(o.ExposeReplicaIP), } return p } // InstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfigurationToProto converts a InstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfiguration resource to its proto representation. func SqlInstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfigurationToProto(o *sql.InstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfiguration) *sqlpb.SqlInstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfiguration { if o == nil { return nil } p := &sqlpb.SqlInstanceReplicaConfigurationReplicaPoolConfigurationAutoscalingPoolConfiguration{ Kind: dcl.ValueOrEmptyString(o.Kind), MinReplicaCount: dcl.ValueOrEmptyInt64(o.MinReplicaCount), MaxReplicaCount: dcl.ValueOrEmptyInt64(o.MaxReplicaCount), TargetCpuUtil: dcl.ValueOrEmptyDouble(o.TargetCpuUtil), } return p } // InstanceScheduledMaintenanceToProto converts a InstanceScheduledMaintenance resource to its proto representation. func SqlInstanceScheduledMaintenanceToProto(o *sql.InstanceScheduledMaintenance) *sqlpb.SqlInstanceScheduledMaintenance { if o == nil { return nil } p := &sqlpb.SqlInstanceScheduledMaintenance{ StartTime: SqlInstanceScheduledMaintenanceStartTimeToProto(o.StartTime), CanDefer: dcl.ValueOrEmptyBool(o.CanDefer), CanReschedule: dcl.ValueOrEmptyBool(o.CanReschedule), } return p } // InstanceScheduledMaintenanceStartTimeToProto converts a InstanceScheduledMaintenanceStartTime resource to its proto representation. func SqlInstanceScheduledMaintenanceStartTimeToProto(o *sql.InstanceScheduledMaintenanceStartTime) *sqlpb.SqlInstanceScheduledMaintenanceStartTime { if o == nil { return nil } p := &sqlpb.SqlInstanceScheduledMaintenanceStartTime{ Seconds: dcl.ValueOrEmptyInt64(o.Seconds), Nanos: dcl.ValueOrEmptyInt64(o.Nanos), } return p } // InstanceSettingsToProto converts a InstanceSettings resource to its proto representation. func SqlInstanceSettingsToProto(o *sql.InstanceSettings) *sqlpb.SqlInstanceSettings { if o == nil { return nil } p := &sqlpb.SqlInstanceSettings{ Tier: dcl.ValueOrEmptyString(o.Tier), Kind: dcl.ValueOrEmptyString(o.Kind), AvailabilityType: SqlInstanceSettingsAvailabilityTypeEnumToProto(o.AvailabilityType), PricingPlan: SqlInstanceSettingsPricingPlanEnumToProto(o.PricingPlan), ReplicationType: SqlInstanceSettingsReplicationTypeEnumToProto(o.ReplicationType), ActivationPolicy: SqlInstanceSettingsActivationPolicyEnumToProto(o.ActivationPolicy), StorageAutoResize: dcl.ValueOrEmptyBool(o.StorageAutoResize), DataDiskType: SqlInstanceSettingsDataDiskTypeEnumToProto(o.DataDiskType), DatabaseReplicationEnabled: dcl.ValueOrEmptyBool(o.DatabaseReplicationEnabled), CrashSafeReplicationEnabled: dcl.ValueOrEmptyBool(o.CrashSafeReplicationEnabled), } for _, r := range o.AuthorizedGaeApplications { p.AuthorizedGaeApplications = append(p.AuthorizedGaeApplications, r) } return p } // InstanceToProto converts a Instance resource to its proto representation. func InstanceToProto(resource *sql.Instance) *sqlpb.SqlInstance { p := &sqlpb.SqlInstance{ BackendType: SqlInstanceBackendTypeEnumToProto(resource.BackendType), ConnectionName: dcl.ValueOrEmptyString(resource.ConnectionName), DatabaseVersion: SqlInstanceDatabaseVersionEnumToProto(resource.DatabaseVersion), Etag: dcl.ValueOrEmptyString(resource.Etag), GceZone: dcl.ValueOrEmptyString(resource.GceZone), InstanceType: SqlInstanceInstanceTypeEnumToProto(resource.InstanceType), MasterInstanceName: dcl.ValueOrEmptyString(resource.MasterInstanceName), MaxDiskSize: SqlInstanceMaxDiskSizeToProto(resource.MaxDiskSize), Name: dcl.ValueOrEmptyString(resource.Name), Project: dcl.ValueOrEmptyString(resource.Project), Region: dcl.ValueOrEmptyString(resource.Region), RootPassword: dcl.ValueOrEmptyString(resource.RootPassword), CurrentDiskSize: SqlInstanceCurrentDiskSizeToProto(resource.CurrentDiskSize), DiskEncryptionConfiguration: SqlInstanceDiskEncryptionConfigurationToProto(resource.DiskEncryptionConfiguration), FailoverReplica: SqlInstanceFailoverReplicaToProto(resource.FailoverReplica), MasterInstance: SqlInstanceMasterInstanceToProto(resource.MasterInstance), ReplicaConfiguration: SqlInstanceReplicaConfigurationToProto(resource.ReplicaConfiguration), ScheduledMaintenance: SqlInstanceScheduledMaintenanceToProto(resource.ScheduledMaintenance), Settings: SqlInstanceSettingsToProto(resource.Settings), } for _, r := range resource.IPAddresses { p.IpAddresses = append(p.IpAddresses, SqlInstanceIPAddressesToProto(&r)) } return p } // ApplyInstance handles the gRPC request by passing it to the underlying Instance Apply() method. func (s *InstanceServer) applyInstance(ctx context.Context, c *sql.Client, request *sqlpb.ApplySqlInstanceRequest) (*sqlpb.SqlInstance, error) { p := ProtoToInstance(request.GetResource()) res, err := c.ApplyInstance(ctx, p) if err != nil { return nil, err } r := InstanceToProto(res) return r, nil } // ApplyInstance handles the gRPC request by passing it to the underlying Instance Apply() method. func (s *InstanceServer) ApplySqlInstance(ctx context.Context, request *sqlpb.ApplySqlInstanceRequest) (*sqlpb.SqlInstance, error) { cl, err := createConfigInstance(ctx, request.ServiceAccountFile) if err != nil { return nil, err } return s.applyInstance(ctx, cl, request) } // DeleteInstance handles the gRPC request by passing it to the underlying Instance Delete() method. func (s *InstanceServer) DeleteSqlInstance(ctx context.Context, request *sqlpb.DeleteSqlInstanceRequest) (*emptypb.Empty, error) { cl, err := createConfigInstance(ctx, request.ServiceAccountFile) if err != nil { return nil, err } return &emptypb.Empty{}, cl.DeleteInstance(ctx, ProtoToInstance(request.GetResource())) } // ListInstance handles the gRPC request by passing it to the underlying InstanceList() method. func (s *InstanceServer) ListSqlInstance(ctx context.Context, request *sqlpb.ListSqlInstanceRequest) (*sqlpb.ListSqlInstanceResponse, error) { cl, err := createConfigInstance(ctx, request.ServiceAccountFile) if err != nil { return nil, err } resources, err := cl.ListInstance(ctx, request.Project) if err != nil { return nil, err } var protos []*sqlpb.SqlInstance for _, r := range resources.Items { rp := InstanceToProto(r) protos = append(protos, rp) } return &sqlpb.ListSqlInstanceResponse{Items: protos}, nil } func createConfigInstance(ctx context.Context, service_account_file string) (*sql.Client, error) { client, err := dcl.FromCredentialsFile(ctx, service_account_file) if err != nil { return nil, err } conf := dcl.NewConfig(client, dcl.WithUserAgent("dcl-test")) if err != nil { return nil, err } return sql.NewClient(conf), nil }