Skip to content

Commit

Permalink
Merge pull request #653 from planetscale/add-region-data-imports
Browse files Browse the repository at this point in the history
Add CLI parameters for region, ssl authentication to data imports.
  • Loading branch information
Phani Raj authored Apr 19, 2023
2 parents bd872ad + a169446 commit 670d249
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 15 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ require (
github.com/mitchellh/go-homedir v1.1.0
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8
github.com/pkg/errors v0.9.1
github.com/planetscale/planetscale-go v0.85.0
github.com/planetscale/planetscale-go v0.86.0
github.com/planetscale/sql-proxy v0.13.0
github.com/spf13/cobra v1.6.1
github.com/spf13/pflag v1.0.5
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,8 @@ github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qR
github.com/planetscale/planetscale-go v0.51.0/go.mod h1:+rGpW2u7iQZZx4O/nFj4MZe4xIS22CVegEgl1IkTExQ=
github.com/planetscale/planetscale-go v0.85.0 h1:G8YQ8bKyEZq0c2QOqQI95tHBrLIUVUexOfiHqsqp7bA=
github.com/planetscale/planetscale-go v0.85.0/go.mod h1:Mnv8ntn4x1qO6f5FS+uMKZji4oWjG9PZqdTx/3uYAxM=
github.com/planetscale/planetscale-go v0.86.0 h1:vJvL4BYIVupbx36TtP7AlHWhhcoI0SQYR8faimXqpYo=
github.com/planetscale/planetscale-go v0.86.0/go.mod h1:Mnv8ntn4x1qO6f5FS+uMKZji4oWjG9PZqdTx/3uYAxM=
github.com/planetscale/sql-proxy v0.13.0 h1:NDjcdqgoNzwbZQTyoIDEoI+K7keC5RRKvdML2roAMn4=
github.com/planetscale/sql-proxy v0.13.0/go.mod h1:4Sk6JdoBqQhHv9V4FCOC27YIM3EjU8cLIsw5HqxN8x4=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
Expand Down
24 changes: 18 additions & 6 deletions internal/cmd/dataimports/lint.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,16 @@ import (

func LintExternalDataSourceCmd(ch *cmdutil.Helper) *cobra.Command {
var flags struct {
host string
username string
password string
database string
port int
sslMode string
host string
username string
password string
database string
port int
sslMode string
sslCA string
sslKey string
sslCertificate string
sslServerName string
}

testRequest := &ps.TestDataImportSourceRequest{}
Expand All @@ -38,6 +42,10 @@ func LintExternalDataSourceCmd(ch *cmdutil.Helper) *cobra.Command {
HostName: flags.host,
Port: flags.port,
SSLVerificationMode: sslMode,
SSLKey: flags.sslKey,
SSLCertificate: flags.sslCertificate,
SSLCA: flags.sslCA,
SSLServerName: flags.sslServerName,
}

client, err := ch.Client()
Expand Down Expand Up @@ -88,6 +96,10 @@ func LintExternalDataSourceCmd(ch *cmdutil.Helper) *cobra.Command {
cmd.PersistentFlags().StringVar(&flags.username, "username", "", "Username to connect to external database.")
cmd.PersistentFlags().StringVar(&flags.password, "password", "", "Password to connect to external database.")
cmd.PersistentFlags().StringVar(&flags.sslMode, "ssl-mode", "", "SSL verification mode, allowed values: disabled, preferred, required, verify_ca, verify_identity")
cmd.PersistentFlags().StringVar(&flags.sslServerName, "ssl-server-name", "", "SSL server name override")
cmd.PersistentFlags().StringVar(&flags.sslCA, "ssl-certificate-authority", "", "Provide the full CA certificate chain here")
cmd.PersistentFlags().StringVar(&flags.sslKey, "ssl-client-key", "", "Private key for the client certificate")
cmd.PersistentFlags().StringVar(&flags.sslKey, "ssl-client-certificate", "", "Client Certificate to authenticate PlanetScale with your database server")
cmd.PersistentFlags().IntVar(&flags.port, "port", 3306, "Port number to connect to external database")

cmd.MarkPersistentFlagRequired("host")
Expand Down
32 changes: 24 additions & 8 deletions internal/cmd/dataimports/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,19 @@ import (

func StartDataImportCmd(ch *cmdutil.Helper) *cobra.Command {
var flags struct {
name string
host string
username string
password string
database string
port int
dryRun bool
sslMode string
name string
host string
region string
username string
password string
database string
port int
dryRun bool
sslMode string
sslCA string
sslKey string
sslCertificate string
sslServerName string
}

startImportRequest := &ps.StartDataImportRequest{}
Expand All @@ -40,10 +45,15 @@ func StartDataImportCmd(ch *cmdutil.Helper) *cobra.Command {
HostName: flags.host,
Port: flags.port,
SSLVerificationMode: sslMode,
SSLKey: flags.sslKey,
SSLCertificate: flags.sslCertificate,
SSLCA: flags.sslCA,
SSLServerName: flags.sslServerName,
}
startImportRequest.Organization = ch.Config.Organization
startImportRequest.Database = flags.name
startImportRequest.Connection = dataSource
startImportRequest.Region = flags.region

testRequest.Organization = ch.Config.Organization
testRequest.Database = flags.database
Expand Down Expand Up @@ -96,6 +106,7 @@ func StartDataImportCmd(ch *cmdutil.Helper) *cobra.Command {
}

startImportRequest.Plan = resp.SuggestedPlan
startImportRequest.MaxPoolSize = resp.MaxPoolSize

ch.Printer.Println(fmt.Sprintf("starting import of schema and data from external database %s to PlanetScale database %s", printer.BoldBlue(flags.database), printer.BoldGreen(flags.name)))
dataImport, err := client.DataImports.StartDataImport(ctx, startImportRequest)
Expand All @@ -116,13 +127,18 @@ func StartDataImportCmd(ch *cmdutil.Helper) *cobra.Command {
}

cmd.PersistentFlags().StringVar(&flags.name, "name", "", "")
cmd.PersistentFlags().StringVar(&flags.region, "region", "", "region for the PlanetScale database.")
cmd.PersistentFlags().StringVar(&flags.host, "host", "", "Host name of the external database.")
cmd.PersistentFlags().StringVar(&flags.database, "database", "", "Name of the external database")
cmd.PersistentFlags().StringVar(&flags.username, "username", "", "Username to connect to external database.")
cmd.PersistentFlags().StringVar(&flags.password, "password", "", "Password to connect to external database.")
cmd.PersistentFlags().IntVar(&flags.port, "port", 3306, "Port number to connect to external database")
cmd.PersistentFlags().BoolVar(&flags.dryRun, "dry-run", true, "Only run compatibility check, do not start import")
cmd.PersistentFlags().StringVar(&flags.sslMode, "ssl-mode", "", "SSL verification mode, allowed values: disabled, preferred, required, verify_ca, verify_identity")
cmd.PersistentFlags().StringVar(&flags.sslServerName, "ssl-server-name", "", "SSL server name override")
cmd.PersistentFlags().StringVar(&flags.sslCA, "ssl-certificate-authority", "", "Provide the full CA certificate chain here")
cmd.PersistentFlags().StringVar(&flags.sslKey, "ssl-client-key", "", "Private key for the client certificate")
cmd.PersistentFlags().StringVar(&flags.sslKey, "ssl-client-certificate", "", "Client Certificate to authenticate PlanetScale with your database server")

cmd.MarkPersistentFlagRequired("name")
cmd.MarkPersistentFlagRequired("host")
Expand Down

0 comments on commit 670d249

Please sign in to comment.