From 875b1174b9c6e6967df6e6c0ab8993784425060d Mon Sep 17 00:00:00 2001 From: ioito Date: Thu, 25 Jan 2024 16:53:01 +0800 Subject: [PATCH] fix: init service config --- pkg/manager/component/ansibleserver.go | 5 ++++- pkg/manager/component/apigateway.go | 5 ++++- pkg/manager/component/apimap.go | 5 ++++- pkg/manager/component/cloudid.go | 5 ++++- pkg/manager/component/cloudmon.go | 5 ++++- pkg/manager/component/esxi.go | 5 ++++- pkg/manager/component/glance.go | 5 ++++- pkg/manager/component/influxdb.go | 5 ++++- pkg/manager/component/keystone.go | 5 ++++- pkg/manager/component/kubeserver.go | 5 ++++- pkg/manager/component/logger.go | 5 ++++- pkg/manager/component/monitor.go | 5 ++++- pkg/manager/component/notify.go | 5 ++++- pkg/manager/component/region.go | 5 ++++- pkg/manager/component/scheduledtask.go | 5 ++++- pkg/manager/component/scheduler.go | 5 ++++- pkg/manager/component/utils.go | 5 +++-- pkg/manager/component/web.go | 5 ++++- pkg/manager/component/webconsole.go | 5 ++++- pkg/manager/component/yunionconf.go | 5 ++++- pkg/service-init/component/ansibleserver.go | 2 +- pkg/service-init/component/apigateway.go | 2 +- pkg/service-init/component/apimap.go | 2 +- pkg/service-init/component/base_service.go | 2 +- pkg/service-init/component/cloudid.go | 2 +- pkg/service-init/component/cloudmon.go | 2 +- pkg/service-init/component/component.go | 2 +- pkg/service-init/component/esxi.go | 2 +- pkg/service-init/component/glance.go | 2 +- pkg/service-init/component/host-deployer.go | 2 +- pkg/service-init/component/influxdb.go | 2 +- pkg/service-init/component/keystone.go | 2 +- pkg/service-init/component/kubeserver.go | 2 +- pkg/service-init/component/logger.go | 2 +- pkg/service-init/component/monitor.go | 2 +- pkg/service-init/component/notify.go | 2 +- pkg/service-init/component/prepare.go | 4 +++- pkg/service-init/component/region.go | 2 +- pkg/service-init/component/scheduledtask.go | 2 +- pkg/service-init/component/scheduler.go | 2 +- pkg/service-init/component/victoriametrics.go | 2 +- pkg/service-init/component/web.go | 2 +- pkg/service-init/component/webconsole.go | 7 ++++++- pkg/service-init/component/yunoinconf.go | 2 +- pkg/util/onecloud/onecloud.go | 18 ++++++++++++++++++ 45 files changed, 128 insertions(+), 45 deletions(-) diff --git a/pkg/manager/component/ansibleserver.go b/pkg/manager/component/ansibleserver.go index ab01104a4..772afb7c8 100644 --- a/pkg/manager/component/ansibleserver.go +++ b/pkg/manager/component/ansibleserver.go @@ -22,6 +22,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type ansibleManager struct { @@ -61,7 +62,9 @@ func (m *ansibleManager) getPhaseControl(man controller.ComponentManager, zone s } func (m *ansibleManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewAnsibleServer().GetConfig(oc, cfg) + opt, err := component.NewAnsibleServer().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/apigateway.go b/pkg/manager/component/apigateway.go index 83f71f195..170744208 100644 --- a/pkg/manager/component/apigateway.go +++ b/pkg/manager/component/apigateway.go @@ -23,6 +23,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type apiGatewayManager struct { @@ -63,7 +64,9 @@ func (m *apiGatewayManager) getPhaseControl(man controller.ComponentManager, zon } func (m *apiGatewayManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewApiGateway().GetConfig(oc, cfg) + opt, err := component.NewApiGateway().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/apimap.go b/pkg/manager/component/apimap.go index 5e2cc3f89..ee4cf6b8b 100644 --- a/pkg/manager/component/apimap.go +++ b/pkg/manager/component/apimap.go @@ -25,6 +25,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type apiMapManager struct { @@ -55,7 +56,9 @@ func (m *apiMapManager) getPhaseControl(man controller.ComponentManager, zone st } func (m *apiMapManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewAPIMap().GetConfig(oc, cfg) + opt, err := component.NewAPIMap().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, errors.Wrap(err, "apimap: SetOptionsDefault") } diff --git a/pkg/manager/component/cloudid.go b/pkg/manager/component/cloudid.go index cd021de44..3788495c6 100644 --- a/pkg/manager/component/cloudid.go +++ b/pkg/manager/component/cloudid.go @@ -22,6 +22,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type cloudidManager struct { @@ -60,7 +61,9 @@ func (m *cloudidManager) getPhaseControl(man controller.ComponentManager, zone s } func (m *cloudidManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewCloudId().GetConfig(oc, cfg) + opt, err := component.NewCloudId().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/cloudmon.go b/pkg/manager/component/cloudmon.go index 795136390..4f4b6c8af 100644 --- a/pkg/manager/component/cloudmon.go +++ b/pkg/manager/component/cloudmon.go @@ -12,6 +12,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type cloudmonManager struct { @@ -64,7 +65,9 @@ func (m *cloudmonManager) getCloudUser(cfg *v1alpha1.OnecloudClusterConfig) *v1a } func (m *cloudmonManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewCloudmon().GetConfig(oc, cfg) + opt, err := component.NewCloudmon().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/esxi.go b/pkg/manager/component/esxi.go index c5276252e..4bfe8b79b 100644 --- a/pkg/manager/component/esxi.go +++ b/pkg/manager/component/esxi.go @@ -28,6 +28,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type esxiManager struct { @@ -58,7 +59,9 @@ func (m *esxiManager) getCloudUser(cfg *v1alpha1.OnecloudClusterConfig) *v1alpha } func (m *esxiManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - optObj, err := component.NewEsxiAgent().GetConfig(oc, cfg) + optObj, err := component.NewEsxiAgent().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/glance.go b/pkg/manager/component/glance.go index d9c63568a..2854cad1a 100644 --- a/pkg/manager/component/glance.go +++ b/pkg/manager/component/glance.go @@ -37,6 +37,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) var s3ConfigSynced bool @@ -86,7 +87,9 @@ func (m *glanceManager) getService(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.O } func (m *glanceManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - optObj, err := component.NewGlance().GetConfig(oc, cfg) + optObj, err := component.NewGlance().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/influxdb.go b/pkg/manager/component/influxdb.go index ead8f72d9..381e70338 100644 --- a/pkg/manager/component/influxdb.go +++ b/pkg/manager/component/influxdb.go @@ -25,6 +25,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type influxdbManager struct { @@ -65,7 +66,9 @@ func (m *influxdbManager) getPVC(oc *v1alpha1.OnecloudCluster, zone string) (*co } func (m *influxdbManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - content, err := component.NewInfluxdb().GetConfig(oc, cfg) + content, err := component.NewInfluxdb().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/keystone.go b/pkg/manager/component/keystone.go index 767bae077..1deffd21b 100644 --- a/pkg/manager/component/keystone.go +++ b/pkg/manager/component/keystone.go @@ -23,6 +23,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type keystoneManager struct { @@ -81,7 +82,9 @@ func (m *keystoneManager) getService(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1 } func (m *keystoneManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewKeystone().GetConfig(oc, cfg) + opt, err := component.NewKeystone().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/kubeserver.go b/pkg/manager/component/kubeserver.go index 66add3698..603028e90 100644 --- a/pkg/manager/component/kubeserver.go +++ b/pkg/manager/component/kubeserver.go @@ -23,6 +23,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type kubeManager struct { @@ -66,7 +67,9 @@ func (m *kubeManager) getPhaseControl(man controller.ComponentManager, zone stri } func (m *kubeManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewKubeserver().GetConfig(oc, cfg) + opt, err := component.NewKubeserver().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/logger.go b/pkg/manager/component/logger.go index 1f315ea61..f9c4e362a 100644 --- a/pkg/manager/component/logger.go +++ b/pkg/manager/component/logger.go @@ -23,6 +23,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type loggerManager struct { @@ -66,7 +67,9 @@ func (m *loggerManager) getPhaseControl(man controller.ComponentManager, zone st } func (m *loggerManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewLogger().GetConfig(oc, cfg) + opt, err := component.NewLogger().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/monitor.go b/pkg/manager/component/monitor.go index 6c44e14ae..a6c39bf63 100644 --- a/pkg/manager/component/monitor.go +++ b/pkg/manager/component/monitor.go @@ -22,6 +22,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type monitorManager struct { @@ -65,7 +66,9 @@ func (m *monitorManager) getPhaseControl(man controller.ComponentManager, zone s } func (m *monitorManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewMonitor().GetConfig(oc, cfg) + opt, err := component.NewMonitor().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/notify.go b/pkg/manager/component/notify.go index 80d0650ad..59932c8f0 100644 --- a/pkg/manager/component/notify.go +++ b/pkg/manager/component/notify.go @@ -24,6 +24,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type notifyManager struct { @@ -67,7 +68,9 @@ func (m *notifyManager) getPhaseControl(man controller.ComponentManager, zone st } func (m *notifyManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewNotify().GetConfig(oc, cfg) + opt, err := component.NewNotify().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, errors.Wrap(err, "set notify option") } diff --git a/pkg/manager/component/region.go b/pkg/manager/component/region.go index 5d330b21d..4697c2d4a 100644 --- a/pkg/manager/component/region.go +++ b/pkg/manager/component/region.go @@ -23,6 +23,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type regionManager struct { @@ -68,7 +69,9 @@ func (m *regionManager) getPhaseControl(man controller.ComponentManager, zone st } func (m *regionManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewRegion().GetConfig(oc, cfg) + opt, err := component.NewRegion().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/scheduledtask.go b/pkg/manager/component/scheduledtask.go index 3b40a3282..64de96677 100644 --- a/pkg/manager/component/scheduledtask.go +++ b/pkg/manager/component/scheduledtask.go @@ -9,6 +9,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type scheduledtaskManager struct { @@ -44,7 +45,9 @@ func (m *scheduledtaskManager) getService(oc *v1alpha1.OnecloudCluster, cfg *v1a } func (m *scheduledtaskManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewScheduledTask().GetConfig(oc, cfg) + opt, err := component.NewScheduledTask().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/scheduler.go b/pkg/manager/component/scheduler.go index 72d4b39c4..fbc91a5a2 100644 --- a/pkg/manager/component/scheduler.go +++ b/pkg/manager/component/scheduler.go @@ -25,6 +25,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type schedulerManager struct { @@ -56,7 +57,9 @@ func (m *schedulerManager) getPhaseControl(man controller.ComponentManager, zone } func (m *schedulerManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewScheduler().GetConfig(oc, cfg) + opt, err := component.NewScheduler().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, errors.Wrap(err, "scheduler: SetOptionsDefault") } diff --git a/pkg/manager/component/utils.go b/pkg/manager/component/utils.go index e8429355c..fe4fe81e5 100644 --- a/pkg/manager/component/utils.go +++ b/pkg/manager/component/utils.go @@ -18,6 +18,9 @@ import ( "context" "encoding/json" "fmt" + "path" + "reflect" + "github.com/pkg/errors" apps "k8s.io/api/apps/v1" batchv1 "k8s.io/api/batch/v1beta1" @@ -29,8 +32,6 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" clientset "k8s.io/client-go/kubernetes" "k8s.io/klog" - "path" - "reflect" "yunion.io/x/onecloud-operator/pkg/apis/constants" "yunion.io/x/onecloud-operator/pkg/apis/onecloud/v1alpha1" diff --git a/pkg/manager/component/web.go b/pkg/manager/component/web.go index d54c24dc2..7b8ddf491 100644 --- a/pkg/manager/component/web.go +++ b/pkg/manager/component/web.go @@ -25,6 +25,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type webManager struct { @@ -273,7 +274,9 @@ func (m *webManager) updateIngress(oc *v1alpha1.OnecloudCluster, oldIng *unstruc } func (m *webManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - content, err := component.NewWeb().GetConfig(oc, cfg) + content, err := component.NewWeb().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/webconsole.go b/pkg/manager/component/webconsole.go index f055e72b6..3e1c619d8 100644 --- a/pkg/manager/component/webconsole.go +++ b/pkg/manager/component/webconsole.go @@ -24,6 +24,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type webconsoleManager struct { @@ -67,7 +68,9 @@ func (m *webconsoleManager) getPhaseControl(man controller.ComponentManager, zon } func (m *webconsoleManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewWebconsole().GetConfig(oc, cfg) + opt, err := component.NewWebconsole().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/manager/component/yunionconf.go b/pkg/manager/component/yunionconf.go index 42aa1555d..2b933136a 100644 --- a/pkg/manager/component/yunionconf.go +++ b/pkg/manager/component/yunionconf.go @@ -22,6 +22,7 @@ import ( "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/manager" "yunion.io/x/onecloud-operator/pkg/service-init/component" + "yunion.io/x/onecloud-operator/pkg/util/onecloud" ) type yunoinconfManager struct { @@ -61,7 +62,9 @@ func (m *yunoinconfManager) getPhaseControl(man controller.ComponentManager, zon } func (m *yunoinconfManager) getConfigMap(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, zone string) (*corev1.ConfigMap, bool, error) { - opt, err := component.NewYunionconf().GetConfig(oc, cfg) + opt, err := component.NewYunionconf().GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return nil, false, err } diff --git a/pkg/service-init/component/ansibleserver.go b/pkg/service-init/component/ansibleserver.go index a5bab542c..6fc6eb330 100644 --- a/pkg/service-init/component/ansibleserver.go +++ b/pkg/service-init/component/ansibleserver.go @@ -35,7 +35,7 @@ func (r ansibleServer) BuildClusterConfigCloudUser(clsCfg *v1alpha1.OnecloudClus return nil } -func (r ansibleServer) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (r ansibleServer) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, constants.ServiceTypeAnsibleServer); err != nil { return nil, err diff --git a/pkg/service-init/component/apigateway.go b/pkg/service-init/component/apigateway.go index 9a7c92f06..2aba608d0 100644 --- a/pkg/service-init/component/apigateway.go +++ b/pkg/service-init/component/apigateway.go @@ -33,7 +33,7 @@ func (a apiGateway) BuildClusterConfigCloudUser(clsCfg *v1alpha1.OnecloudCluster return nil } -func (a apiGateway) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (a apiGateway) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &ApiOptions{} if err := option.SetOptionsDefault(opt, "apigateway"); err != nil { return nil, err diff --git a/pkg/service-init/component/apimap.go b/pkg/service-init/component/apimap.go index 401204d5c..5865c20a5 100644 --- a/pkg/service-init/component/apimap.go +++ b/pkg/service-init/component/apimap.go @@ -18,7 +18,7 @@ func NewAPIMap() Component { return &apiMap{newBaseService(v1alpha1.APIMapComponentType, new(options.SOptions))} } -func (am *apiMap) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (am *apiMap) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := options.GetOptions() if err := option.SetOptionsDefault(opt, constants.ServiceTypeAPIMap); err != nil { return nil, errors.Wrap(err, "apimap: SetOptionsDefault") diff --git a/pkg/service-init/component/base_service.go b/pkg/service-init/component/base_service.go index 06859edb1..9f0378686 100644 --- a/pkg/service-init/component/base_service.go +++ b/pkg/service-init/component/base_service.go @@ -42,7 +42,7 @@ func (bs baseService) GetOptions() interface{} { return bs.options } -func (c baseService) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (c baseService) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { return nil, nil } diff --git a/pkg/service-init/component/cloudid.go b/pkg/service-init/component/cloudid.go index 5da0ff01c..8f76f09ce 100644 --- a/pkg/service-init/component/cloudid.go +++ b/pkg/service-init/component/cloudid.go @@ -35,7 +35,7 @@ func (r cloudid) BuildClusterConfigCloudUser(clsCfg *v1alpha1.OnecloudClusterCon return nil } -func (r cloudid) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (r cloudid) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, constants.ServiceTypeCloudId); err != nil { return nil, err diff --git a/pkg/service-init/component/cloudmon.go b/pkg/service-init/component/cloudmon.go index 180ccb75f..950660189 100644 --- a/pkg/service-init/component/cloudmon.go +++ b/pkg/service-init/component/cloudmon.go @@ -34,7 +34,7 @@ func (r cloudmon) GetDefaultCloudUser(cfg *v1alpha1.OnecloudClusterConfig) *v1al return &cfg.Cloudmon.CloudUser } -func (r cloudmon) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (r cloudmon) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, constants.ServiceTypeCloudmon); err != nil { return nil, err diff --git a/pkg/service-init/component/component.go b/pkg/service-init/component/component.go index 61e845616..333d17e0c 100644 --- a/pkg/service-init/component/component.go +++ b/pkg/service-init/component/component.go @@ -22,7 +22,7 @@ type Component interface { BuildClusterConfigDB(clsCfg *v1alpha1.OnecloudClusterConfig, dbCfg v1alpha1.DBConfig) error BuildClusterConfigCloudUser(clsCfg *v1alpha1.OnecloudClusterConfig, user v1alpha1.CloudUser) error - GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) + GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, update func(service string, opts map[string]interface{})) (interface{}, error) GetOptions() interface{} GetDefaultDBConfig(cfg *v1alpha1.OnecloudClusterConfig) *v1alpha1.DBConfig GetDefaultClickhouseConfig(cfg *v1alpha1.OnecloudClusterConfig) *v1alpha1.DBConfig diff --git a/pkg/service-init/component/esxi.go b/pkg/service-init/component/esxi.go index 60f9d6ed4..526504ab3 100644 --- a/pkg/service-init/component/esxi.go +++ b/pkg/service-init/component/esxi.go @@ -31,7 +31,7 @@ func (ea esxiAgent) GetDefaultCloudUser(cfg *v1alpha1.OnecloudClusterConfig) *v1 return &cfg.EsxiAgent.CloudUser } -func (ea esxiAgent) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (ea esxiAgent) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, ""); err != nil { return nil, err diff --git a/pkg/service-init/component/glance.go b/pkg/service-init/component/glance.go index f479ecaf2..34fd39d0e 100644 --- a/pkg/service-init/component/glance.go +++ b/pkg/service-init/component/glance.go @@ -45,7 +45,7 @@ func (r glance) GetDefaultCloudUser(cfg *v1alpha1.OnecloudClusterConfig) *v1alph return &cfg.Glance.CloudUser } -func (g glance) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (g glance) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, constants.ServiceTypeGlance); err != nil { return nil, err diff --git a/pkg/service-init/component/host-deployer.go b/pkg/service-init/component/host-deployer.go index bceb19f45..969dcddde 100644 --- a/pkg/service-init/component/host-deployer.go +++ b/pkg/service-init/component/host-deployer.go @@ -20,7 +20,7 @@ func NewHostDeployer() Component { } } -func (hd hostDeployer) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (hd hostDeployer) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := new(options.SHostBaseOptions) if err := option.SetOptionsDefault(opt, ""); err != nil { return nil, err diff --git a/pkg/service-init/component/influxdb.go b/pkg/service-init/component/influxdb.go index cae0d763c..a0daf311a 100644 --- a/pkg/service-init/component/influxdb.go +++ b/pkg/service-init/component/influxdb.go @@ -67,7 +67,7 @@ func (c InfluxdbConfig) GetContent() (string, error) { return CompileTemplateFromMap(InfluxDBConfigTemplate, c) } -func (r influxdb) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (r influxdb) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { config := InfluxdbConfig{ Port: constants.InfluxdbPort, CertPath: path.Join(constants.CertDir, constants.ServiceCertName), diff --git a/pkg/service-init/component/keystone.go b/pkg/service-init/component/keystone.go index 0132dae9b..dce443947 100644 --- a/pkg/service-init/component/keystone.go +++ b/pkg/service-init/component/keystone.go @@ -47,7 +47,7 @@ func (k keystone) BuildClusterConfigDB(clsCfg *v1alpha1.OnecloudClusterConfig, d return nil } -func (k keystone) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (k keystone) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, constants.ServiceTypeIdentity); err != nil { return nil, err diff --git a/pkg/service-init/component/kubeserver.go b/pkg/service-init/component/kubeserver.go index ec74fc75d..a3a9f50d0 100644 --- a/pkg/service-init/component/kubeserver.go +++ b/pkg/service-init/component/kubeserver.go @@ -56,7 +56,7 @@ func (r kubeServer) GetDefaultCloudUser(cfg *v1alpha1.OnecloudClusterConfig) *v1 return &cfg.KubeServer.CloudUser } -func (r kubeServer) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (r kubeServer) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &KubeOptions{} if err := option.SetOptionsDefault(opt, constants.ServiceTypeKubeServer); err != nil { return nil, err diff --git a/pkg/service-init/component/logger.go b/pkg/service-init/component/logger.go index e0f97cbf1..d49004864 100644 --- a/pkg/service-init/component/logger.go +++ b/pkg/service-init/component/logger.go @@ -44,7 +44,7 @@ func (r logger) GetDefaultCloudUser(cfg *v1alpha1.OnecloudClusterConfig) *v1alph return &cfg.Logger.CloudUser } -func (r logger) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (r logger) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, constants.ServiceTypeLogger); err != nil { return nil, err diff --git a/pkg/service-init/component/monitor.go b/pkg/service-init/component/monitor.go index 549b8781c..1da38d7e3 100644 --- a/pkg/service-init/component/monitor.go +++ b/pkg/service-init/component/monitor.go @@ -47,7 +47,7 @@ func (r monitor) GetDefaultCloudUser(cfg *v1alpha1.OnecloudClusterConfig) *v1alp return &cfg.Monitor.CloudUser } -func (r monitor) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (r monitor) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, constants.ServiceTypeMonitor); err != nil { return nil, err diff --git a/pkg/service-init/component/notify.go b/pkg/service-init/component/notify.go index 842029920..6f02fe824 100644 --- a/pkg/service-init/component/notify.go +++ b/pkg/service-init/component/notify.go @@ -45,7 +45,7 @@ func (r notify) GetDefaultClickhouseConfig(cfg *v1alpha1.OnecloudClusterConfig) func (r notify) GetDefaultCloudUser(cfg *v1alpha1.OnecloudClusterConfig) *v1alpha1.CloudUser { return &cfg.Notify.CloudUser } -func (r notify) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (r notify) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, constants.ServiceTypeNotify); err != nil { return nil, errors.Wrap(err, "set notify option") diff --git a/pkg/service-init/component/prepare.go b/pkg/service-init/component/prepare.go index ee3a8272e..91d1a9fbf 100644 --- a/pkg/service-init/component/prepare.go +++ b/pkg/service-init/component/prepare.go @@ -269,7 +269,9 @@ func (m *prepareManager) syncComponentConfig( log.Infof("config file %q exists, skip this step", cfgFilePath) return nil } - opt, err := cpnt.GetConfig(oc, cfg) + opt, err := cpnt.GetConfig(oc, cfg, func(service string, opts map[string]interface{}) { + onecloud.InitServiceConfig(service, oc.Spec.Region, opts) + }) if err != nil { return errors.Wrapf(err, "get configuration of %q", cpnt.GetType()) } diff --git a/pkg/service-init/component/region.go b/pkg/service-init/component/region.go index 0cd213360..73f7f8346 100644 --- a/pkg/service-init/component/region.go +++ b/pkg/service-init/component/region.go @@ -48,7 +48,7 @@ func (r region) GetDefaultCloudUser(cfg *v1alpha1.OnecloudClusterConfig) *v1alph return &cfg.RegionServer.CloudUser } -func (r region) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (r region) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, constants.ServiceTypeComputeV2); err != nil { return nil, err diff --git a/pkg/service-init/component/scheduledtask.go b/pkg/service-init/component/scheduledtask.go index 7ac8cbf15..6c16a178b 100644 --- a/pkg/service-init/component/scheduledtask.go +++ b/pkg/service-init/component/scheduledtask.go @@ -24,7 +24,7 @@ func NewScheduledTask() Component { baseService: newBaseService(v1alpha1.ScheduledtaskComponentType, new(options.SOption)), } } -func (s *scheduledTask) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (s *scheduledTask) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, constants.ServiceTypeScheduledtask); err != nil { return nil, err diff --git a/pkg/service-init/component/scheduler.go b/pkg/service-init/component/scheduler.go index 0c43270bd..2fd9f9cf1 100644 --- a/pkg/service-init/component/scheduler.go +++ b/pkg/service-init/component/scheduler.go @@ -22,7 +22,7 @@ func NewScheduler() Component { return &scheduler{newBaseService(v1alpha1.SchedulerComponentType, new(options.SchedulerOptions))} } -func (s *scheduler) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (s *scheduler) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, constants.ServiceTypeScheduler); err != nil { return nil, errors.Wrap(err, "scheduler: SetOptionsDefault") diff --git a/pkg/service-init/component/victoriametrics.go b/pkg/service-init/component/victoriametrics.go index 2dc2f65bb..2da0da341 100644 --- a/pkg/service-init/component/victoriametrics.go +++ b/pkg/service-init/component/victoriametrics.go @@ -20,7 +20,7 @@ func NewVictoriaMetrics() Component { } } -func (v vm) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (v vm) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { return "", nil } diff --git a/pkg/service-init/component/web.go b/pkg/service-init/component/web.go index 93f39c7fd..2700f2dc7 100644 --- a/pkg/service-init/component/web.go +++ b/pkg/service-init/component/web.go @@ -277,7 +277,7 @@ func (w web) GetConfigFilePath(targetDir string) string { return filepath.Join(targetDir, "/etc/nginx/conf.d/default.conf") } -func (w web) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (w web) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { urlF := func(ct v1alpha1.ComponentType, port int) string { return fmt.Sprintf("https://%s:%d", controller.NewClusterComponentName(oc.GetName(), ct), port) } diff --git a/pkg/service-init/component/webconsole.go b/pkg/service-init/component/webconsole.go index 227b72834..04a62af02 100644 --- a/pkg/service-init/component/webconsole.go +++ b/pkg/service-init/component/webconsole.go @@ -2,6 +2,7 @@ package component import ( "fmt" + "yunion.io/x/onecloud-operator/pkg/apis/constants" "yunion.io/x/onecloud-operator/pkg/controller" "yunion.io/x/onecloud-operator/pkg/util/option" @@ -32,7 +33,7 @@ func (r webconsole) BuildClusterConfigCloudUser(clsCfg *v1alpha1.OnecloudCluster return nil } -func (r webconsole) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (r webconsole) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, constants.ServiceTypeWebconsole); err != nil { return nil, err @@ -44,6 +45,10 @@ func (r webconsole) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.Oneclo option.SetOptionsServiceTLS(&opt.BaseOptions, false) option.SetServiceCommonOptions(&opt.CommonOptions, oc, config.ServiceCommonOptions) + initServiceConfig("webconsole", map[string]interface{}{ + "ipmitool_path": "/usr/sbin/ipmitool", + "enable_auto_login": true, + }) opt.IpmitoolPath = "/usr/sbin/ipmitool" opt.EnableAutoLogin = true address := oc.Spec.LoadBalancerEndpoint diff --git a/pkg/service-init/component/yunoinconf.go b/pkg/service-init/component/yunoinconf.go index 02b678e05..aeaa2baa6 100644 --- a/pkg/service-init/component/yunoinconf.go +++ b/pkg/service-init/component/yunoinconf.go @@ -47,7 +47,7 @@ func (r yunionconfSvc) GetDefaultCloudUser(cfg *v1alpha1.OnecloudClusterConfig) return &cfg.Yunionconf.CloudUser } -func (r yunionconfSvc) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig) (interface{}, error) { +func (r yunionconfSvc) GetConfig(oc *v1alpha1.OnecloudCluster, cfg *v1alpha1.OnecloudClusterConfig, initServiceConfig func(service string, opts map[string]interface{})) (interface{}, error) { opt := &options.Options if err := option.SetOptionsDefault(opt, constants.ServiceTypeYunionConf); err != nil { return nil, err diff --git a/pkg/util/onecloud/onecloud.go b/pkg/util/onecloud/onecloud.go index dd3421755..3eb345555 100644 --- a/pkg/util/onecloud/onecloud.go +++ b/pkg/util/onecloud/onecloud.go @@ -15,6 +15,7 @@ package onecloud import ( + "context" "net/http" "reflect" "strings" @@ -32,6 +33,7 @@ import ( identityapi "yunion.io/x/onecloud/pkg/apis/identity" monitorapi "yunion.io/x/onecloud/pkg/apis/monitor" "yunion.io/x/onecloud/pkg/mcclient" + "yunion.io/x/onecloud/pkg/mcclient/auth" "yunion.io/x/onecloud/pkg/mcclient/modulebase" ansible_modules "yunion.io/x/onecloud/pkg/mcclient/modules/ansible" "yunion.io/x/onecloud/pkg/mcclient/modules/compute" @@ -910,3 +912,19 @@ func GetConfig(opt interface{}) jsonutils.JSONObject { } return options } + +func InitServiceConfig(service, region string, opts map[string]interface{}) { + s := auth.GetAdminSession(context.Background(), region) + resp, err := identity.ServicesV3.GetSpecific(s, service, "config", nil) + if err != nil { + return + } + values := jsonutils.NewDict() + for k, v := range opts { + if resp.Contains("config", "default", k) { + continue + } + values.Add(jsonutils.Marshal(v), "config", "default", k) + } + identity.ServicesV3.PerformAction(s, service, "config", values) +}