From 80229fa1e03aeeafbc9602064e55e5a01e6987f2 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Sat, 19 Dec 2020 00:49:32 +0800 Subject: [PATCH] fix(keystone): always upload&refresh service config whenever service restart Always upload&refresh service config whenever service restart --- pkg/cloudcommon/options/manager.go | 8 ++++---- pkg/cloudcommon/options/mergeconf.go | 15 +++++++++++---- pkg/keystone/models/configs.go | 13 ++++++++----- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/pkg/cloudcommon/options/manager.go b/pkg/cloudcommon/options/manager.go index c9eed0553d..65a35402d1 100644 --- a/pkg/cloudcommon/options/manager.go +++ b/pkg/cloudcommon/options/manager.go @@ -124,10 +124,10 @@ func (manager *SOptionManager) DoSync(first bool) (time.Duration, error) { appsrv.SetExitFlag() } copyOptions(manager.options, newOpts) - if first { - // upload config for the first time ONLY - manager.session.Upload() - } + // if first { + // upload config + manager.session.Upload() + // } } return manager.refreshInterval, nil } diff --git a/pkg/cloudcommon/options/mergeconf.go b/pkg/cloudcommon/options/mergeconf.go index befe02e72c..83d514d120 100644 --- a/pkg/cloudcommon/options/mergeconf.go +++ b/pkg/cloudcommon/options/mergeconf.go @@ -66,6 +66,8 @@ type mcclientServiceConfigSession struct { session *mcclient.ClientSession serviceId string config *jsonutils.JSONDict + + commonServiceId string } func newServiceConfigSession() IServiceConfigSession { @@ -88,12 +90,12 @@ func (s *mcclientServiceConfigSession) Merge(opts interface{}, serviceType strin merged = true } else { // not initialized - s.Upload() + // s.Upload() } } - commonServiceId, _ := getServiceIdByType(s.session, consts.COMMON_SERVICE, "") - if len(commonServiceId) > 0 { - commonConf, err := getServiceConfig(s.session, commonServiceId) + s.commonServiceId, _ = getServiceIdByType(s.session, consts.COMMON_SERVICE, "") + if len(s.commonServiceId) > 0 { + commonConf, err := getServiceConfig(s.session, s.commonServiceId) if err != nil { log.Errorf("getServiceConfig for %s failed: %s", consts.COMMON_SERVICE, err) } else if commonConf != nil { @@ -123,6 +125,11 @@ func (s *mcclientServiceConfigSession) Upload() { // ignore the error log.Errorf("fail to save config: %s", err) } + _, err = modules.ServicesV3.PerformAction(s.session, s.commonServiceId, "config", nconf) + if err != nil { + // ignore the error + log.Errorf("fail to save common config: %s", err) + } } } diff --git a/pkg/keystone/models/configs.go b/pkg/keystone/models/configs.go index 85793b661d..23d0d9bef2 100644 --- a/pkg/keystone/models/configs.go +++ b/pkg/keystone/models/configs.go @@ -426,6 +426,8 @@ func saveConfigs(userCred mcclient.TokenCredential, action string, model db.IMod type dbServiceConfigSession struct { config *jsonutils.JSONDict service *SService + + commonService *SService } func NewServiceConfigSession() common_options.IServiceConfigSession { @@ -446,12 +448,12 @@ func (s *dbServiceConfigSession) Merge(opts interface{}, serviceType string, ser merged = true } else { // not initialized - uploadConfig(s.service, s.config) + // uploadConfig(s.service, s.config) } } - commonService, _ := ServiceManager.fetchServiceByType(consts.COMMON_SERVICE) - if commonService != nil { - commonConf, err := GetConfigs(commonService, false, nil, nil) + s.commonService, _ = ServiceManager.fetchServiceByType(consts.COMMON_SERVICE) + if s.commonService != nil { + commonConf, err := GetConfigs(s.commonService, false, nil, nil) if err != nil { log.Errorf("GetConfigs for %s fail: %s", consts.COMMON_SERVICE, err) } else if commonConf != nil { @@ -460,7 +462,7 @@ func (s *dbServiceConfigSession) Merge(opts interface{}, serviceType string, ser merged = true } else { // common not initialized - uploadConfig(commonService, s.config) + // uploadConfig(commonService, s.config) } } if merged { @@ -478,6 +480,7 @@ func (s *dbServiceConfigSession) Upload() { return } uploadConfig(s.service, s.config) + uploadConfig(s.commonService, s.config) } func (s *dbServiceConfigSession) IsRemote() bool {