From 83714f905f0483a84b8af8132a14ea1464bd0355 Mon Sep 17 00:00:00 2001 From: Dileep Ranganathan Date: Fri, 21 Jun 2019 10:14:05 -0700 Subject: Rebuild conf from CollectdPlugins CRD Added feature to rebuild collectd conf and rolling update the Daemonset Issue-ID: ONAPARC-461 Signed-off-by: Dileep Ranganathan Change-Id: I24e25b2afc61e18e04be91d7de4b41f928e845ee --- .../collectdplugin/collectdplugin_controller.go | 37 ++++++++++++++++++---- 1 file changed, 31 insertions(+), 6 deletions(-) (limited to 'vnfs/DAaaS/microservices/collectd-operator/pkg/controller/collectdplugin/collectdplugin_controller.go') diff --git a/vnfs/DAaaS/microservices/collectd-operator/pkg/controller/collectdplugin/collectdplugin_controller.go b/vnfs/DAaaS/microservices/collectd-operator/pkg/controller/collectdplugin/collectdplugin_controller.go index 3a7d2ea4..a7990a0d 100644 --- a/vnfs/DAaaS/microservices/collectd-operator/pkg/controller/collectdplugin/collectdplugin_controller.go +++ b/vnfs/DAaaS/microservices/collectd-operator/pkg/controller/collectdplugin/collectdplugin_controller.go @@ -25,8 +25,8 @@ var log = logf.Log.WithName("controller_collectdplugin") // ResourceMap to hold objects to update/reload type ResourceMap struct { - configMap *corev1.ConfigMap - daemonSet *extensionsv1beta1.DaemonSet + configMap *corev1.ConfigMap + daemonSet *extensionsv1beta1.DaemonSet collectdPlugins *[]onapv1alpha1.CollectdPlugin } @@ -111,13 +111,15 @@ func (r *ReconcileCollectdPlugin) Reconcile(request reconcile.Request) (reconcil cm := rmap.configMap ds := rmap.daemonSet + collectPlugins := rmap.collectdPlugins reqLogger.V(1).Info("Found ResourceMap") reqLogger.V(1).Info("ConfigMap.Namespace", cm.Namespace, "ConfigMap.Name", cm.Name) reqLogger.V(1).Info("DaemonSet.Namespace", ds.Namespace, "DaemonSet.Name", ds.Name) - //hasChanged, err := buildCollectdConf(r, instance) + collectdConf, err := rebuildCollectdConf(collectPlugins) //Restart Collectd Pods + ts := time.Now().Format(time.RFC850) reqLogger.V(1).Info("Timestamp : ", ts) ds.Spec.Template.SetAnnotations(map[string]string{ @@ -127,6 +129,8 @@ func (r *ReconcileCollectdPlugin) Reconcile(request reconcile.Request) (reconcil "daaas-random": ComputeSHA256([]byte(ts)), }) + cm.Data["node-collectd.conf"] = collectdConf + // Update the ConfigMap with new Spec and reload DaemonSets reqLogger.Info("Updating the ConfigMap", "ConfigMap.Namespace", cm.Namespace, "ConfigMap.Name", cm.Name) log.Info("ConfigMap Data", "Map: ", cm.Data) @@ -139,7 +143,6 @@ func (r *ReconcileCollectdPlugin) Reconcile(request reconcile.Request) (reconcil if err != nil { return reconcile.Result{}, err } - // Reconcile success reqLogger.Info("Updated the ConfigMap", "ConfigMap.Namespace", cm.Namespace, "ConfigMap.Name", cm.Name) return reconcile.Result{}, nil @@ -196,6 +199,28 @@ func findResourceMapForCR(r *ReconcileCollectdPlugin, cr *onapv1alpha1.CollectdP } // Get all collectd plugins and reconstruct, compute Hash and check for changes -func buildCollectdConf() { - +func rebuildCollectdConf(cpList *[]onapv1alpha1.CollectdPlugin) (string, error) { + var collectdConf string + if *cpList == nil || len(*cpList) == 0 { + return "", errors.NewNotFound(corev1.Resource("collectdplugin"), "CollectdPlugin") + } + loadPlugin := make(map[string]string) + for _, cp := range *cpList { + if cp.Spec.PluginName == "global" { + collectdConf += cp.Spec.PluginConf + "\n" + } else { + loadPlugin[cp.Spec.PluginName] = cp.Spec.PluginConf + } + } + + log.V(1).Info("::::::: Plugins Map ::::::: ", "PluginMap ", loadPlugin) + + for cpName, cpConf := range loadPlugin { + collectdConf += "LoadPlugin" + " " + cpName + "\n" + collectdConf += cpConf + "\n" + } + + collectdConf += "\n#Last line (collectd requires ā€˜\\nā€™ at the last line)" + + return collectdConf, nil } -- cgit 1.2.3-korg