From 5d7ba0baba5c059f934a94bf22f9da1b2079018c Mon Sep 17 00:00:00 2001 From: Chaim Lev-Ari Date: Tue, 16 Jun 2020 10:55:45 +0300 Subject: [PATCH] feat(edge-compute): add flag to auto enable Edge compute features (#3922) --- api/cli/cli.go | 43 ++++++++++++++++++++------------------- api/cmd/portainer/main.go | 1 + api/portainer.go | 43 ++++++++++++++++++++------------------- 3 files changed, 45 insertions(+), 42 deletions(-) diff --git a/api/cli/cli.go b/api/cli/cli.go index 13e20e94b..fed9b46d0 100644 --- a/api/cli/cli.go +++ b/api/cli/cli.go @@ -27,27 +27,28 @@ func (*Service) ParseFlags(version string) (*portainer.CLIFlags, error) { kingpin.Version(version) flags := &portainer.CLIFlags{ - Addr: kingpin.Flag("bind", "Address and port to serve Portainer").Default(defaultBindAddress).Short('p').String(), - TunnelAddr: kingpin.Flag("tunnel-addr", "Address to serve the tunnel server").Default(defaultTunnelServerAddress).String(), - TunnelPort: kingpin.Flag("tunnel-port", "Port to serve the tunnel server").Default(defaultTunnelServerPort).String(), - Assets: kingpin.Flag("assets", "Path to the assets").Default(defaultAssetsDirectory).Short('a').String(), - Data: kingpin.Flag("data", "Path to the folder where the data is stored").Default(defaultDataDirectory).Short('d').String(), - EndpointURL: kingpin.Flag("host", "Endpoint URL").Short('H').String(), - NoAnalytics: kingpin.Flag("no-analytics", "Disable Analytics in app").Default(defaultNoAnalytics).Bool(), - TLS: kingpin.Flag("tlsverify", "TLS support").Default(defaultTLS).Bool(), - TLSSkipVerify: kingpin.Flag("tlsskipverify", "Disable TLS server verification").Default(defaultTLSSkipVerify).Bool(), - TLSCacert: kingpin.Flag("tlscacert", "Path to the CA").Default(defaultTLSCACertPath).String(), - TLSCert: kingpin.Flag("tlscert", "Path to the TLS certificate file").Default(defaultTLSCertPath).String(), - TLSKey: kingpin.Flag("tlskey", "Path to the TLS key").Default(defaultTLSKeyPath).String(), - SSL: kingpin.Flag("ssl", "Secure Portainer instance using SSL").Default(defaultSSL).Bool(), - SSLCert: kingpin.Flag("sslcert", "Path to the SSL certificate used to secure the Portainer instance").Default(defaultSSLCertPath).String(), - SSLKey: kingpin.Flag("sslkey", "Path to the SSL key used to secure the Portainer instance").Default(defaultSSLKeyPath).String(), - SnapshotInterval: kingpin.Flag("snapshot-interval", "Duration between each endpoint snapshot job").Default(defaultSnapshotInterval).String(), - AdminPassword: kingpin.Flag("admin-password", "Hashed admin password").String(), - AdminPasswordFile: kingpin.Flag("admin-password-file", "Path to the file containing the password for the admin user").String(), - Labels: pairs(kingpin.Flag("hide-label", "Hide containers with a specific label in the UI").Short('l')), - Logo: kingpin.Flag("logo", "URL for the logo displayed in the UI").String(), - Templates: kingpin.Flag("templates", "URL to the templates definitions.").Short('t').String(), + Addr: kingpin.Flag("bind", "Address and port to serve Portainer").Default(defaultBindAddress).Short('p').String(), + TunnelAddr: kingpin.Flag("tunnel-addr", "Address to serve the tunnel server").Default(defaultTunnelServerAddress).String(), + TunnelPort: kingpin.Flag("tunnel-port", "Port to serve the tunnel server").Default(defaultTunnelServerPort).String(), + Assets: kingpin.Flag("assets", "Path to the assets").Default(defaultAssetsDirectory).Short('a').String(), + Data: kingpin.Flag("data", "Path to the folder where the data is stored").Default(defaultDataDirectory).Short('d').String(), + EndpointURL: kingpin.Flag("host", "Endpoint URL").Short('H').String(), + EnableEdgeComputeFeatures: kingpin.Flag("edge-compute", "Enable Edge Compute features").Bool(), + NoAnalytics: kingpin.Flag("no-analytics", "Disable Analytics in app").Default(defaultNoAnalytics).Bool(), + TLS: kingpin.Flag("tlsverify", "TLS support").Default(defaultTLS).Bool(), + TLSSkipVerify: kingpin.Flag("tlsskipverify", "Disable TLS server verification").Default(defaultTLSSkipVerify).Bool(), + TLSCacert: kingpin.Flag("tlscacert", "Path to the CA").Default(defaultTLSCACertPath).String(), + TLSCert: kingpin.Flag("tlscert", "Path to the TLS certificate file").Default(defaultTLSCertPath).String(), + TLSKey: kingpin.Flag("tlskey", "Path to the TLS key").Default(defaultTLSKeyPath).String(), + SSL: kingpin.Flag("ssl", "Secure Portainer instance using SSL").Default(defaultSSL).Bool(), + SSLCert: kingpin.Flag("sslcert", "Path to the SSL certificate used to secure the Portainer instance").Default(defaultSSLCertPath).String(), + SSLKey: kingpin.Flag("sslkey", "Path to the SSL key used to secure the Portainer instance").Default(defaultSSLKeyPath).String(), + SnapshotInterval: kingpin.Flag("snapshot-interval", "Duration between each endpoint snapshot job").Default(defaultSnapshotInterval).String(), + AdminPassword: kingpin.Flag("admin-password", "Hashed admin password").String(), + AdminPasswordFile: kingpin.Flag("admin-password-file", "Path to the file containing the password for the admin user").String(), + Labels: pairs(kingpin.Flag("hide-label", "Hide containers with a specific label in the UI").Short('l')), + Logo: kingpin.Flag("logo", "URL for the logo displayed in the UI").String(), + Templates: kingpin.Flag("templates", "URL to the templates definitions.").Short('t').String(), } kingpin.Parse() diff --git a/api/cmd/portainer/main.go b/api/cmd/portainer/main.go index 0598b0c6a..55f65bb6b 100644 --- a/api/cmd/portainer/main.go +++ b/api/cmd/portainer/main.go @@ -203,6 +203,7 @@ func updateSettingsFromFlags(dataStore portainer.DataStore, flags *portainer.CLI settings.LogoURL = *flags.Logo settings.SnapshotInterval = *flags.SnapshotInterval + settings.EnableEdgeComputeFeatures = *flags.EnableEdgeComputeFeatures if *flags.Templates != "" { settings.TemplatesURL = *flags.Templates diff --git a/api/portainer.go b/api/portainer.go index 0f3b3fed0..4182ce66d 100644 --- a/api/portainer.go +++ b/api/portainer.go @@ -36,27 +36,28 @@ type ( // CLIFlags represents the available flags on the CLI CLIFlags struct { - Addr *string - TunnelAddr *string - TunnelPort *string - AdminPassword *string - AdminPasswordFile *string - Assets *string - Data *string - EndpointURL *string - Labels *[]Pair - Logo *string - NoAnalytics *bool - Templates *string - TLS *bool - TLSSkipVerify *bool - TLSCacert *string - TLSCert *string - TLSKey *string - SSL *bool - SSLCert *string - SSLKey *string - SnapshotInterval *string + Addr *string + TunnelAddr *string + TunnelPort *string + AdminPassword *string + AdminPasswordFile *string + Assets *string + Data *string + EnableEdgeComputeFeatures *bool + EndpointURL *string + Labels *[]Pair + Logo *string + NoAnalytics *bool + Templates *string + TLS *bool + TLSSkipVerify *bool + TLSCacert *string + TLSCert *string + TLSKey *string + SSL *bool + SSLCert *string + SSLKey *string + SnapshotInterval *string } // CLIService represents a service for managing CLI