From 953e839b006f3cd78777da625edec68f80fc08c3 Mon Sep 17 00:00:00 2001 From: aguilard Date: Thu, 17 Mar 2022 18:01:19 +0000 Subject: [PATCH] Added primitive accessing a helm subchart --- .../eechart/charts.sample/mysql-8.8.26.tgz | Bin 0 -> 40369 bytes .../helm-charts/eechart/charts/.gitkeep | 0 .../helm-charts/eechart/source/install.sh | 3 ++ .../helm-charts/eechart/source/mylib.py | 34 ++++++++++++++++++ .../helm-charts/eechart/source/vnf_ee.py | 17 +++++++++ .../helm-charts/eechart/templates/secret.yaml | 9 +++++ .../eechart/templates/statefulset.yaml | 3 ++ sample_ee_vnf/helm-charts/eechart/values.yaml | 5 +++ sample_ee_vnf/sample_ee_vnfd.yaml | 6 ++++ 9 files changed, 77 insertions(+) create mode 100644 sample_ee_vnf/helm-charts/eechart/charts.sample/mysql-8.8.26.tgz create mode 100644 sample_ee_vnf/helm-charts/eechart/charts/.gitkeep create mode 100644 sample_ee_vnf/helm-charts/eechart/templates/secret.yaml diff --git a/sample_ee_vnf/helm-charts/eechart/charts.sample/mysql-8.8.26.tgz b/sample_ee_vnf/helm-charts/eechart/charts.sample/mysql-8.8.26.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2cfb9b29533b6f6837de93a2022eec32c11b0b4b GIT binary patch literal 40369 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 (int, str): + """ + Execute a query to a MySQL database. + """ + + text = "" + logger.debug("Host: '{}', user: '{}', password: '{}', query: '{}'".format(host, user, password, query)) + for i in range(0, retries): + try: + with connect( + host=host, + user=user, + password=password, + ) as connection: + with connection.cursor() as cursor: + cursor.execute(query) + for (db) in cursor: + logger.debug(db) + text = text + str(db[0]) + ", " + return 0, text[0:len(text)-2] + except Error as e: + text = str(e) + logger.debug("Error: {}".format(e)) + time.sleep(3) + continue + + return -1, text diff --git a/sample_ee_vnf/helm-charts/eechart/source/vnf_ee.py b/sample_ee_vnf/helm-charts/eechart/source/vnf_ee.py index 4c0f1cb7..2ed3c61d 100644 --- a/sample_ee_vnf/helm-charts/eechart/source/vnf_ee.py +++ b/sample_ee_vnf/helm-charts/eechart/source/vnf_ee.py @@ -125,6 +125,23 @@ class VnfEE: # else: # yield "OK", description + # This method implements the "check_database" primitive. Uncomment and modify it if a primitive requires + # accessing to a service provided by a helm subchart. Access parameters are read from environment variables + # async def check_database(self, id, params): + # self.logger.debug("Execute action check_database, params: '{}'".format(params)) + + # host = os.getenv('mysql_host') + # user = os.getenv('mysql_user') + # password = os.getenv('mysql_password') + # retries = 3 + # query = "SHOW DATABASES" + # return_code, description = mylib.mysql_query(host, user, password, retries, query) + # if return_code != 0: + # yield "ERROR", description + # else: + # yield "OK", description + + # Static method that verifies whether a parameter exists in the map @staticmethod def _check_required_params(params, required_params): diff --git a/sample_ee_vnf/helm-charts/eechart/templates/secret.yaml b/sample_ee_vnf/helm-charts/eechart/templates/secret.yaml new file mode 100644 index 00000000..62d4b267 --- /dev/null +++ b/sample_ee_vnf/helm-charts/eechart/templates/secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "eechart.fullname" . }} +type: Opaque +data: + mysql_host: {{ .Values.mysql.fullnameOverride | b64enc | quote }} + mysql_user: {{ "root" | b64enc | quote }} + mysql_password: {{ .Values.mysql.auth.rootPassword | b64enc | quote }} diff --git a/sample_ee_vnf/helm-charts/eechart/templates/statefulset.yaml b/sample_ee_vnf/helm-charts/eechart/templates/statefulset.yaml index 8b124995..a13cfa6e 100755 --- a/sample_ee_vnf/helm-charts/eechart/templates/statefulset.yaml +++ b/sample_ee_vnf/helm-charts/eechart/templates/statefulset.yaml @@ -27,6 +27,9 @@ spec: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} + envFrom: + - secretRef: + name: {{ include "eechart.fullname" . }} ports: - name: grpc containerPort: 50051 diff --git a/sample_ee_vnf/helm-charts/eechart/values.yaml b/sample_ee_vnf/helm-charts/eechart/values.yaml index 7006b5df..fa824d75 100644 --- a/sample_ee_vnf/helm-charts/eechart/values.yaml +++ b/sample_ee_vnf/helm-charts/eechart/values.yaml @@ -70,3 +70,8 @@ nodeSelector: {} tolerations: [] affinity: {} + +mysql: + auth: + rootPassword: "123456" + fullnameOverride: "eechart-mysql" diff --git a/sample_ee_vnf/sample_ee_vnfd.yaml b/sample_ee_vnf/sample_ee_vnfd.yaml index 87d6a415..d528a5c6 100644 --- a/sample_ee_vnf/sample_ee_vnfd.yaml +++ b/sample_ee_vnf/sample_ee_vnfd.yaml @@ -42,6 +42,9 @@ vnfd: # parameter: # - data-type: STRING # name: file + # - execution-environment-primitive: check_database + # execution-environment-ref: sample_ee + # name: check_database config-access: ssh-access: default-user: ubuntu @@ -86,6 +89,9 @@ vnfd: # - name: file # value: myfile.txt # seq: 6 + # - execution-environment-ref: sample_ee + # name: check_database + # seq: 7 ext-cpd: - id: vnf-mgmt-ext int-cpd: -- GitLab