Task Details:
=============
Task ID : AETHER-2167 : Implement helm charts for deploying prom-label-proxy
Task Link : https://jira.opennetworking.org/browse/AETHER-2167
Features/Root Cause Analysis :
==============================
* config model helm chart for prom label proxy
* prom-label-proxy helm chart
* getting initial config not done deliberatlywq
Unit Test:
=============
* Integration testing with prometheus done
* Integration testing with Grafana pending
Change-Id: I1b94feee56cb7046dd1affb036c3d02585aedcaf
diff --git a/config-models/plproxy-1.x/Chart.yaml b/config-models/plproxy-1.x/Chart.yaml
new file mode 100755
index 0000000..b0d52ae
--- /dev/null
+++ b/config-models/plproxy-1.x/Chart.yaml
@@ -0,0 +1,17 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v2
+name: config-model-plproxy
+version: 1.0.0
+kubeVersion: ">=1.18.0"
+appVersion: 1.0.0
+description: Prom label proxy config model
+keywords:
+ - plproxy
+ - config
+home: https://onosproject.org
+maintainers:
+ - name: ONOS Support
+ email: support@opennetworking.org
diff --git a/config-models/plproxy-1.x/files/plproxy-1.0.0.tree b/config-models/plproxy-1.x/files/plproxy-1.0.0.tree
new file mode 100755
index 0000000..9b0fbaa
--- /dev/null
+++ b/config-models/plproxy-1.x/files/plproxy-1.0.0.tree
@@ -0,0 +1,7 @@
+module: prom-label-proxy
+ +--rw user-groups
+ +--rw user-group* [name]
+ +--rw name string
+ +--rw label* [name]
+ +--rw name string
+ +--rw value string
diff --git a/config-models/plproxy-1.x/files/yang/prom-label-proxy.yang b/config-models/plproxy-1.x/files/yang/prom-label-proxy.yang
new file mode 100755
index 0000000..294b5de
--- /dev/null
+++ b/config-models/plproxy-1.x/files/yang/prom-label-proxy.yang
@@ -0,0 +1,32 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module prom-label-proxy {
+ namespace "http://opennetworking.org/promlabelproxy/config/";
+ prefix plp;
+ organization "Open Networking Foundation.";
+ contact "Amit Wankhede";
+ description "A Aether groups and prom label configuration";
+
+ revision "2021-09-24" {
+ description "Prom label proxy user configuration";
+ reference "RFC 6087";
+ }
+
+ container user-groups {
+ description "The top level container";
+ list user-group {
+ key "name";
+ description "A list of user groups";
+ leaf name { type string;description "name of user group";}
+ list label {
+ key "name";
+ description "A list of labels";
+ leaf name { type string;mandatory true;description "name of label";}
+ leaf value { type string;mandatory true;description "value of label";}
+ }
+ }
+ }
+
+}
diff --git a/config-models/plproxy-1.x/templates/_helpers.tpl b/config-models/plproxy-1.x/templates/_helpers.tpl
new file mode 100755
index 0000000..3370042
--- /dev/null
+++ b/config-models/plproxy-1.x/templates/_helpers.tpl
@@ -0,0 +1,53 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "plproxy.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "plproxy.fullname" -}}
+{{- if contains "config-model-plproxy" .Release.Name -}}
+{{- printf "%s-%s" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s-config-model-plproxy" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "plproxy.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+Common labels
+*/}}
+{{- define "plproxy.labels" -}}
+helm.sh/chart: {{ include "plproxy.chart" . }}
+{{ include "plproxy.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "plproxy.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "plproxy.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
+}
diff --git a/config-models/plproxy-1.x/templates/model.yaml b/config-models/plproxy-1.x/templates/model.yaml
new file mode 100755
index 0000000..bc13d6f
--- /dev/null
+++ b/config-models/plproxy-1.x/templates/model.yaml
@@ -0,0 +1,25 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: config.onosproject.org/v1beta1
+kind: Model
+metadata:
+ name: {{ template "plproxy.fullname" . }}
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "plproxy.labels" . | nindent 4 }}
+spec:
+ plugin:
+ type: PLProxy
+ version: {{ .Chart.AppVersion | quote }}
+ modules:
+ - name: plproxy-service
+ organization: Open Networking Foundation
+ revision: 2021-09-24
+ file: prom-label-proxy.yang
+ files:
+ {{- range $path, $_ := $.Files.Glob "files/yang/*.yang" }}
+ {{ base $path }}: |
+{{ $.Files.Get $path | indent 6 }}
+ {{- end }}
diff --git a/config-models/plproxy-1.x/values.yaml b/config-models/plproxy-1.x/values.yaml
new file mode 100755
index 0000000..2e984ed
--- /dev/null
+++ b/config-models/plproxy-1.x/values.yaml
@@ -0,0 +1,3 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0