diff options
| author | KubeEdge Bot <48982446+kubeedge-bot@users.noreply.github.com> | 2020-01-20 12:17:16 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-20 12:17:16 +0800 |
| commit | 69039b40dccefbb8509c38c7e5656e7628a8177c (patch) | |
| tree | f7358e8b721fc7903b9ed51c10e545a1b8978c88 /edgesite | |
| parent | Merge pull request #1414 from zhuguihua/clean_up_edged_startup (diff) | |
| parent | integelengent test error (diff) | |
| download | kubeedge-69039b40dccefbb8509c38c7e5656e7628a8177c.tar.gz | |
Merge pull request #1393 from kadisi/component_use_new_config
KubeEdge Component use new config api
Diffstat (limited to 'edgesite')
| -rw-r--r-- | edgesite/cmd/app/options/options.go | 35 | ||||
| -rw-r--r-- | edgesite/cmd/app/server.go | 32 |
2 files changed, 57 insertions, 10 deletions
diff --git a/edgesite/cmd/app/options/options.go b/edgesite/cmd/app/options/options.go index 59d16fb43..3031d493e 100644 --- a/edgesite/cmd/app/options/options.go +++ b/edgesite/cmd/app/options/options.go @@ -17,19 +17,46 @@ limitations under the License. package options import ( + "fmt" + "path" + + "k8s.io/apimachinery/pkg/util/validation/field" cliflag "k8s.io/component-base/cli/flag" + + "github.com/kubeedge/kubeedge/common/constants" + "github.com/kubeedge/kubeedge/pkg/apis/edgesite/v1alpha1" + "github.com/kubeedge/kubeedge/pkg/util/validation" ) -// TODO set edgesite config type EdgeSiteOptions struct { + ConfigFile string } func NewEdgeSiteOptions() *EdgeSiteOptions { - return &EdgeSiteOptions{} + return &EdgeSiteOptions{ + ConfigFile: path.Join(constants.DefaultConfigDir, "edgesite.yaml"), + } } func (o *EdgeSiteOptions) Flags() (fss cliflag.NamedFlagSets) { - // TODO set EdgeSiteOptions field - //fs := fss.FlagSet("general") + fs := fss.FlagSet("global") + fs.StringVar(&o.ConfigFile, "config", o.ConfigFile, "The path to the configuration file. Flags override values in this file.") return } + +func (c *EdgeSiteOptions) Validate() []error { + var errs []error + if !validation.FileIsExist(c.ConfigFile) { + errs = append(errs, field.Required(field.NewPath("config"), + fmt.Sprintf("config file %v not exist. For the configuration file format, please refer to --minconfig and --defaultconfig command", c.ConfigFile))) + } + return errs +} + +func (c *EdgeSiteOptions) Config() (*v1alpha1.EdgeSiteConfig, error) { + cfg := v1alpha1.NewDefaultEdgeSiteConfig() + if err := cfg.Parse(c.ConfigFile); err != nil { + return nil, err + } + return cfg, nil +} diff --git a/edgesite/cmd/app/server.go b/edgesite/cmd/app/server.go index 8a5e9417d..6c106e5d3 100644 --- a/edgesite/cmd/app/server.go +++ b/edgesite/cmd/app/server.go @@ -2,8 +2,10 @@ package app import ( "fmt" + "os" "github.com/spf13/cobra" + utilerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/apiserver/pkg/util/term" cliflag "k8s.io/component-base/cli/flag" "k8s.io/component-base/cli/globalflag" @@ -16,6 +18,7 @@ import ( "github.com/kubeedge/kubeedge/edge/pkg/metamanager" "github.com/kubeedge/kubeedge/edgesite/cmd/app/options" "github.com/kubeedge/kubeedge/pkg/apis/edgesite/v1alpha1" + "github.com/kubeedge/kubeedge/pkg/apis/edgesite/v1alpha1/validation" "github.com/kubeedge/kubeedge/pkg/util/flag" "github.com/kubeedge/kubeedge/pkg/version" "github.com/kubeedge/kubeedge/pkg/version/verflag" @@ -36,10 +39,26 @@ runs on edge nodes and manages containerized applications.`, flag.PrintDefaultConfigAndExitIfRequested(v1alpha1.NewDefaultEdgeSiteConfig()) flag.PrintFlags(cmd.Flags()) + if errs := opts.Validate(); len(errs) > 0 { + fmt.Fprintf(os.Stderr, "%v\n", utilerrors.NewAggregate(errs)) + os.Exit(1) + } + + config, err := opts.Config() + if err != nil { + fmt.Fprintf(os.Stderr, "%v\n", err) + os.Exit(1) + } + + if errs := validation.ValidateEdgeSiteConfiguration(config); len(errs) > 0 { + fmt.Fprintf(os.Stderr, "%v\n", errs) + os.Exit(1) + } + // To help debugging, immediately log version klog.Infof("Version: %+v", version.Get()) - registerModules() + registerModules(config) // start all modules core.Run() }, @@ -68,9 +87,10 @@ runs on edge nodes and manages containerized applications.`, } // registerModules register all the modules started in edgesite -func registerModules() { - edged.Register() - edgecontroller.Register() - metamanager.Register() - dbm.InitDBManager() +func registerModules(c *v1alpha1.EdgeSiteConfig) { + edged.Register(c.Modules.Edged) + edgecontroller.Register(c.Modules.EdgeController, c.KubeAPIConfig, c.Modules.Edged.HostnameOverride, true) + metamanager.Register(c.Modules.MetaManager) + // Nodte: Need to put it to the end, and wait for all models to register before executing + dbm.InitDBConfig(c.DataBase.DriverName, c.DataBase.AliasName, c.DataBase.DataSource) } |
