"crypto/sha256"
"fmt"
"os"
+ "sort"
"sync"
"github.com/go-logr/logr"
var lock sync.Mutex
+// ReconcileLock - Used to sync between global and plugin controller
+var ReconcileLock sync.Mutex
+
// ResourceMap to hold objects to update/reload
type ResourceMap struct {
ConfigMap *corev1.ConfigMap
return labelSelector, nil
}
-// FindResourceMapForCR returns the configMap, collectd Daemonset and list of Collectd Plugins
-func FindResourceMapForCR(rc client.Client, reqLogger logr.Logger, ns string) (*ResourceMap, error) {
+// GetCollectdPluginList returns the list of CollectdPlugin instances in the namespace ns
+func GetCollectdPluginList(rc client.Client, ns string) (*onapv1alpha1.CollectdPluginList, error) {
+ // Get all collectd plugins in the current namespace to rebuild conf.
+ collectdPlugins := &onapv1alpha1.CollectdPluginList{}
+ cpOpts := &client.ListOptions{}
+ cpOpts.InNamespace(ns)
+ err := rc.List(context.TODO(), cpOpts, collectdPlugins)
+ if err != nil {
+ return nil, err
+ }
+ return collectdPlugins, nil
+}
+
+// GetConfigMap returns the GetConfigMap in the namespace ns
+func GetConfigMap(rc client.Client, reqLogger logr.Logger, ns string) (*corev1.ConfigMap, error) {
lock.Lock()
defer lock.Unlock()
+
+ reqLogger.Info("Get ConfigMap for collectd.conf")
+ // Get all collectd plugins in the current namespace to rebuild conf.
cmList := &corev1.ConfigMapList{}
opts := &client.ListOptions{}
- rmap := &ResourceMap{}
-
// Select ConfigMaps with label
labelSelector, err := GetWatchLabels()
if err != nil {
err = rc.List(context.TODO(), opts, cmList)
if err != nil {
- return rmap, err
+ return nil, err
}
if cmList.Items == nil || len(cmList.Items) == 0 {
- return rmap, errors.NewNotFound(corev1.Resource("configmap"), "ConfigMap")
+ return nil, errors.NewNotFound(corev1.Resource("configmap"), "ConfigMap")
}
- // Select DaemonSets with label
- dsList := &appsv1.DaemonSetList{}
- err = rc.List(context.TODO(), opts, dsList)
- if err != nil {
- return rmap, err
- }
-
- if dsList.Items == nil || len(dsList.Items) == 0 {
- return rmap, errors.NewNotFound(corev1.Resource("daemonset"), "DaemonSet")
- }
-
- rmap.ConfigMap = &cmList.Items[0]
- rmap.DaemonSet = &dsList.Items[0]
-
- return rmap, err
-}
-
-// GetCollectdPluginList returns the list of CollectdPlugin instances in the namespace ns
-func GetCollectdPluginList(rc client.Client, ns string) (*onapv1alpha1.CollectdPluginList, error) {
- // Get all collectd plugins in the current namespace to rebuild conf.
- collectdPlugins := &onapv1alpha1.CollectdPluginList{}
- cpOpts := &client.ListOptions{}
- cpOpts.InNamespace(ns)
- err := rc.List(context.TODO(), cpOpts, collectdPlugins)
- if err != nil {
- return nil, err
- }
- return collectdPlugins, nil
+ cm := &cmList.Items[0]
+ return cm, nil
}
// GetCollectdGlobal returns the CollectdGlobal instance in the namespace ns
collectdConf += collectdGlobalConf
}
- for cpName, cpConf := range loadPlugin {
+ pluginKeys := make([]string, 0, len(loadPlugin))
+ for k := range loadPlugin {
+ pluginKeys = append(pluginKeys, k)
+ }
+ sort.Strings(pluginKeys)
+
+ for _, cpName := range pluginKeys {
+ cpConf := loadPlugin[cpName]
collectdConf += "LoadPlugin" + " " + cpName + "\n"
collectdConf += cpConf + "\n"
}
- collectdConf += "#Last line (collectd requires ā\\nā at the last line)\n"
+ collectdConf += "#Last line (collectd requires '\\n' at the last line)\n"
return collectdConf, nil
}