From fa75eca9077591fcac5f0ea7f07a2ce5e60c8294 Mon Sep 17 00:00:00 2001 From: David Garcia Date: Wed, 4 Nov 2020 18:34:41 +0100 Subject: [PATCH] Add image_username and image_password to charms This commit will allow us to pull images for OSM components from a private docker registry, protected with username and password Change-Id: I854028d6abbb1cae07c61692ba73d08825763212 Signed-off-by: David Garcia --- installers/charm/lcm-k8s/config.yaml | 8 ++++++++ installers/charm/lcm-k8s/reactive/lcm.py | 1 - .../charm/lcm-k8s/reactive/spec_template.yaml | 5 ++++- installers/charm/mon-k8s/config.yaml | 8 ++++++++ installers/charm/mon-k8s/reactive/mon_k8s.py | 1 - .../charm/mon-k8s/reactive/spec_template.yaml | 5 ++++- installers/charm/nbi-k8s/config.yaml | 8 ++++++++ installers/charm/nbi-k8s/reactive/nbi.py | 1 - .../charm/nbi-k8s/reactive/spec_template.yaml | 5 ++++- installers/charm/ng-ui/config.yaml | 8 ++++++++ installers/charm/ng-ui/hooks/start | 1 - installers/charm/ng-ui/lib/ops | 1 - installers/charm/ng-ui/mod/operator | 1 - installers/charm/ng-ui/src/charm.py | 15 ++++++++++----- installers/charm/pla/config.yaml | 8 ++++++++ installers/charm/pla/hooks/install | 1 - installers/charm/pla/hooks/start | 1 - installers/charm/pla/hooks/upgrade-charm | 1 - installers/charm/pla/lib/ops | 1 - installers/charm/pla/mod/operator | 1 - installers/charm/pla/src/charm.py | 19 +++++++++++-------- installers/charm/pol-k8s/config.yaml | 8 ++++++++ installers/charm/pol-k8s/reactive/pol_k8s.py | 1 - .../charm/pol-k8s/reactive/spec_template.yaml | 5 ++++- installers/charm/ro-k8s/config.yaml | 8 ++++++++ installers/charm/ro-k8s/reactive/ro.py | 1 - .../charm/ro-k8s/reactive/spec_template.yaml | 5 ++++- installers/charm/ui-k8s/config.yaml | 8 ++++++++ .../charm/ui-k8s/reactive/spec_template.yaml | 5 ++++- installers/charm/ui-k8s/reactive/ui.py | 1 - 30 files changed, 109 insertions(+), 33 deletions(-) delete mode 120000 installers/charm/ng-ui/hooks/start delete mode 120000 installers/charm/ng-ui/lib/ops delete mode 160000 installers/charm/ng-ui/mod/operator delete mode 120000 installers/charm/pla/hooks/install delete mode 120000 installers/charm/pla/hooks/start delete mode 120000 installers/charm/pla/hooks/upgrade-charm delete mode 120000 installers/charm/pla/lib/ops delete mode 160000 installers/charm/pla/mod/operator diff --git a/installers/charm/lcm-k8s/config.yaml b/installers/charm/lcm-k8s/config.yaml index 25f6a71e8..1f1c62bb0 100644 --- a/installers/charm/lcm-k8s/config.yaml +++ b/installers/charm/lcm-k8s/config.yaml @@ -66,3 +66,11 @@ options: type: string description: OCI image default: opensourcemano/lcm:8 + image_username: + description: Docker repository username + type: string + default: "" + image_password: + description: Docker repository password + type: string + default: "" diff --git a/installers/charm/lcm-k8s/reactive/lcm.py b/installers/charm/lcm-k8s/reactive/lcm.py index 1cb466105..87b6b2c2a 100644 --- a/installers/charm/lcm-k8s/reactive/lcm.py +++ b/installers/charm/lcm-k8s/reactive/lcm.py @@ -138,7 +138,6 @@ def make_pod_spec(ro_host, ro_port, kafka_host, kafka_port, mongo_uri): data = { "name": md.get("name"), - "docker_image": cfg.get("image"), "ro_host": ro_host, "ro_port": ro_port, "kafka_host": kafka_host, diff --git a/installers/charm/lcm-k8s/reactive/spec_template.yaml b/installers/charm/lcm-k8s/reactive/spec_template.yaml index d8b51e77a..b5f508bcb 100644 --- a/installers/charm/lcm-k8s/reactive/spec_template.yaml +++ b/installers/charm/lcm-k8s/reactive/spec_template.yaml @@ -14,7 +14,10 @@ version: 2 containers: - name: %(name)s - image: %(docker_image)s + imageDetails: + imagePath: %(image)s + username: %(image_username)s + password: %(image_password)s ports: # This is a fake port; lcm doesn't listen, since it's just reading # and responding to the kafka bus. Fix this in post. diff --git a/installers/charm/mon-k8s/config.yaml b/installers/charm/mon-k8s/config.yaml index ddf8a812d..069758fee 100644 --- a/installers/charm/mon-k8s/config.yaml +++ b/installers/charm/mon-k8s/config.yaml @@ -68,3 +68,11 @@ options: type: string description: OCI image default: opensourcemano/mon:8 + image_username: + description: Docker repository username + type: string + default: "" + image_password: + description: Docker repository password + type: string + default: "" diff --git a/installers/charm/mon-k8s/reactive/mon_k8s.py b/installers/charm/mon-k8s/reactive/mon_k8s.py index 79780e030..cd4d568d9 100644 --- a/installers/charm/mon-k8s/reactive/mon_k8s.py +++ b/installers/charm/mon-k8s/reactive/mon_k8s.py @@ -114,7 +114,6 @@ def make_pod_spec(kafka_host, kafka_port, mongo_uri, prometheus_url): data = { "name": md.get("name"), - "docker_image": cfg.get("image"), "kafka_host": kafka_host, "kafka_port": kafka_port, "mongo_uri": mongo_uri, diff --git a/installers/charm/mon-k8s/reactive/spec_template.yaml b/installers/charm/mon-k8s/reactive/spec_template.yaml index c81e5a160..bc6cb0798 100644 --- a/installers/charm/mon-k8s/reactive/spec_template.yaml +++ b/installers/charm/mon-k8s/reactive/spec_template.yaml @@ -14,7 +14,10 @@ version: 2 containers: - name: %(name)s - image: %(docker_image)s + imageDetails: + imagePath: %(image)s + username: %(image_username)s + password: %(image_password)s ports: - containerPort: %(advertised-port)s protocol: TCP diff --git a/installers/charm/nbi-k8s/config.yaml b/installers/charm/nbi-k8s/config.yaml index b94729007..a594f6e5c 100755 --- a/installers/charm/nbi-k8s/config.yaml +++ b/installers/charm/nbi-k8s/config.yaml @@ -32,6 +32,14 @@ options: type: string description: OCI image default: opensourcemano/nbi:8 + image_username: + description: Docker repository username + type: string + default: "" + image_password: + description: Docker repository password + type: string + default: "" auth-backend: type: string description: Authentication backend ('internal' or 'keystone') diff --git a/installers/charm/nbi-k8s/reactive/nbi.py b/installers/charm/nbi-k8s/reactive/nbi.py index 855d80062..50187ad81 100644 --- a/installers/charm/nbi-k8s/reactive/nbi.py +++ b/installers/charm/nbi-k8s/reactive/nbi.py @@ -222,7 +222,6 @@ def make_pod_spec(kafka_host, kafka_port, mongo_uri, prometheus_uri): prometheus_host, prometheus_port = parse_hostport(prometheus_uri) data = { "name": md.get("name"), - "docker_image": cfg.get("image"), "mongo_uri": mongo_uri, "kafka_host": "{}".format(kafka_host), "kafka_port": "{}".format(kafka_port), diff --git a/installers/charm/nbi-k8s/reactive/spec_template.yaml b/installers/charm/nbi-k8s/reactive/spec_template.yaml index 5c030d962..f9a35b697 100644 --- a/installers/charm/nbi-k8s/reactive/spec_template.yaml +++ b/installers/charm/nbi-k8s/reactive/spec_template.yaml @@ -14,7 +14,10 @@ version: 2 containers: - name: %(name)s - image: %(docker_image)s + imageDetails: + imagePath: %(image)s + username: %(image_username)s + password: %(image_password)s ports: - containerPort: %(advertised-port)s protocol: TCP diff --git a/installers/charm/ng-ui/config.yaml b/installers/charm/ng-ui/config.yaml index a80a280ec..022d150bf 100644 --- a/installers/charm/ng-ui/config.yaml +++ b/installers/charm/ng-ui/config.yaml @@ -20,6 +20,14 @@ options: description: Docker image name type: string default: opensourcemano/ng-ui:8 + image_username: + description: Docker repository username + type: string + default: "" + image_password: + description: Docker repository password + type: string + default: "" port: description: Port number type: int diff --git a/installers/charm/ng-ui/hooks/start b/installers/charm/ng-ui/hooks/start deleted file mode 120000 index 25b1f68fa..000000000 --- a/installers/charm/ng-ui/hooks/start +++ /dev/null @@ -1 +0,0 @@ -../src/charm.py \ No newline at end of file diff --git a/installers/charm/ng-ui/lib/ops b/installers/charm/ng-ui/lib/ops deleted file mode 120000 index d93419320..000000000 --- a/installers/charm/ng-ui/lib/ops +++ /dev/null @@ -1 +0,0 @@ -../mod/operator/ops \ No newline at end of file diff --git a/installers/charm/ng-ui/mod/operator b/installers/charm/ng-ui/mod/operator deleted file mode 160000 index a84ce8776..000000000 --- a/installers/charm/ng-ui/mod/operator +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a84ce8776b368a8b2bccdb173716e342db9a6b36 diff --git a/installers/charm/ng-ui/src/charm.py b/installers/charm/ng-ui/src/charm.py index d9ad8f2a0..6f5ca5b50 100755 --- a/installers/charm/ng-ui/src/charm.py +++ b/installers/charm/ng-ui/src/charm.py @@ -32,9 +32,6 @@ from ops.model import ( ) -sys.path.append("lib") - - logger = logging.getLogger(__name__) @@ -130,7 +127,11 @@ class NGUICharm(CharmBase): ] port = config["https_port"] if ssl_enabled else config["port"] ports = [ - {"name": "port", "containerPort": port, "protocol": "TCP", }, + { + "name": "port", + "containerPort": port, + "protocol": "TCP", + }, ] kubernetes = { @@ -166,7 +167,11 @@ class NGUICharm(CharmBase): "containers": [ { "name": self.framework.model.app.name, - "image": "{}".format(config["image"]), + "imageDetails": { + "imagePath": config["image"], + "username": config["image_username"], + "password": config["image_password"], + }, "ports": ports, "kubernetes": kubernetes, "files": files, diff --git a/installers/charm/pla/config.yaml b/installers/charm/pla/config.yaml index e0aeca410..f3318fc6f 100644 --- a/installers/charm/pla/config.yaml +++ b/installers/charm/pla/config.yaml @@ -20,6 +20,14 @@ options: description: Docker image name type: string default: opensourcemano/pla:8 + image_username: + description: Docker repository username + type: string + default: "" + image_password: + description: Docker repository password + type: string + default: "" port: description: Port number type: int diff --git a/installers/charm/pla/hooks/install b/installers/charm/pla/hooks/install deleted file mode 120000 index 25b1f68fa..000000000 --- a/installers/charm/pla/hooks/install +++ /dev/null @@ -1 +0,0 @@ -../src/charm.py \ No newline at end of file diff --git a/installers/charm/pla/hooks/start b/installers/charm/pla/hooks/start deleted file mode 120000 index 25b1f68fa..000000000 --- a/installers/charm/pla/hooks/start +++ /dev/null @@ -1 +0,0 @@ -../src/charm.py \ No newline at end of file diff --git a/installers/charm/pla/hooks/upgrade-charm b/installers/charm/pla/hooks/upgrade-charm deleted file mode 120000 index 25b1f68fa..000000000 --- a/installers/charm/pla/hooks/upgrade-charm +++ /dev/null @@ -1 +0,0 @@ -../src/charm.py \ No newline at end of file diff --git a/installers/charm/pla/lib/ops b/installers/charm/pla/lib/ops deleted file mode 120000 index d93419320..000000000 --- a/installers/charm/pla/lib/ops +++ /dev/null @@ -1 +0,0 @@ -../mod/operator/ops \ No newline at end of file diff --git a/installers/charm/pla/mod/operator b/installers/charm/pla/mod/operator deleted file mode 160000 index a84ce8776..000000000 --- a/installers/charm/pla/mod/operator +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a84ce8776b368a8b2bccdb173716e342db9a6b36 diff --git a/installers/charm/pla/src/charm.py b/installers/charm/pla/src/charm.py index 785766ded..16e7303f8 100755 --- a/installers/charm/pla/src/charm.py +++ b/installers/charm/pla/src/charm.py @@ -29,9 +29,6 @@ from ops.model import ( ) -sys.path.append("lib") - - logger = logging.getLogger(__name__) @@ -85,7 +82,11 @@ class PLACharm(CharmBase): config = self.framework.model.config ports = [ - {"name": "port", "containerPort": config["port"], "protocol": "TCP", }, + { + "name": "port", + "containerPort": config["port"], + "protocol": "TCP", + }, ] config_spec = { @@ -103,7 +104,11 @@ class PLACharm(CharmBase): "containers": [ { "name": self.framework.model.app.name, - "image": config["image"], + "imageDetails": { + "imagePath": config["image"], + "username": config["image_username"], + "password": config["image_password"], + }, "ports": ports, "config": config_spec, } @@ -136,9 +141,7 @@ class PLACharm(CharmBase): self._apply_spec() def on_mongo_relation_changed(self, event): - mongodb_uri = event.relation.data[event.unit].get( - "connection_string" - ) + mongodb_uri = event.relation.data[event.unit].get("connection_string") if mongodb_uri and self.state.mongodb_uri != mongodb_uri: self.state.mongodb_uri = mongodb_uri self._apply_spec() diff --git a/installers/charm/pol-k8s/config.yaml b/installers/charm/pol-k8s/config.yaml index 8cfd8bf6e..d33a715f1 100644 --- a/installers/charm/pol-k8s/config.yaml +++ b/installers/charm/pol-k8s/config.yaml @@ -24,3 +24,11 @@ options: type: string description: OCI image default: opensourcemano/pol:8 + image_username: + description: Docker repository username + type: string + default: "" + image_password: + description: Docker repository password + type: string + default: "" diff --git a/installers/charm/pol-k8s/reactive/pol_k8s.py b/installers/charm/pol-k8s/reactive/pol_k8s.py index 5629b4bad..5d56c27d4 100644 --- a/installers/charm/pol-k8s/reactive/pol_k8s.py +++ b/installers/charm/pol-k8s/reactive/pol_k8s.py @@ -100,7 +100,6 @@ def make_pod_spec(kafka_host, kafka_port, mongo_uri): cfg = config() data = { "name": md.get("name"), - "docker_image": cfg.get("image"), "kafka_host": kafka_host, "kafka_port": kafka_port, "mongo_uri": mongo_uri, diff --git a/installers/charm/pol-k8s/reactive/spec_template.yaml b/installers/charm/pol-k8s/reactive/spec_template.yaml index de7d4a219..d0c5823f3 100644 --- a/installers/charm/pol-k8s/reactive/spec_template.yaml +++ b/installers/charm/pol-k8s/reactive/spec_template.yaml @@ -14,7 +14,10 @@ version: 2 containers: - name: %(name)s - image: %(docker_image)s + imageDetails: + imagePath: %(image)s + username: %(image_username)s + password: %(image_password)s ports: # This is a fake port; lcm doesn't listen, since it's just reading # and responding to the kafka bus. Fix this in post. diff --git a/installers/charm/ro-k8s/config.yaml b/installers/charm/ro-k8s/config.yaml index a18e4958d..31eaca8af 100755 --- a/installers/charm/ro-k8s/config.yaml +++ b/installers/charm/ro-k8s/config.yaml @@ -32,3 +32,11 @@ options: type: string description: OCI image default: opensourcemano/ro:8 + image_username: + description: Docker repository username + type: string + default: "" + image_password: + description: Docker repository password + type: string + default: "" diff --git a/installers/charm/ro-k8s/reactive/ro.py b/installers/charm/ro-k8s/reactive/ro.py index 8ad6f98c8..8f91b4bd4 100644 --- a/installers/charm/ro-k8s/reactive/ro.py +++ b/installers/charm/ro-k8s/reactive/ro.py @@ -114,7 +114,6 @@ def make_pod_spec( data = { "name": md.get("name"), - "docker_image": cfg.get("image"), "mysql_host": mysql_host, "mysql_port": mysql_port, "mysql_user": mysql_user, diff --git a/installers/charm/ro-k8s/reactive/spec_template.yaml b/installers/charm/ro-k8s/reactive/spec_template.yaml index f4f7c9c3d..f2b353503 100644 --- a/installers/charm/ro-k8s/reactive/spec_template.yaml +++ b/installers/charm/ro-k8s/reactive/spec_template.yaml @@ -16,7 +16,10 @@ service: scalePolicy: serial containers: - name: %(name)s - image: %(docker_image)s + imageDetails: + imagePath: %(image)s + username: %(image_username)s + password: %(image_password)s kubernetes: readinessProbe: httpGet: diff --git a/installers/charm/ui-k8s/config.yaml b/installers/charm/ui-k8s/config.yaml index 8e24da0ac..d4321ae94 100755 --- a/installers/charm/ui-k8s/config.yaml +++ b/installers/charm/ui-k8s/config.yaml @@ -28,3 +28,11 @@ options: type: string description: OCI image default: opensourcemano/light-ui:8 + image_username: + description: Docker repository username + type: string + default: "" + image_password: + description: Docker repository password + type: string + default: "" diff --git a/installers/charm/ui-k8s/reactive/spec_template.yaml b/installers/charm/ui-k8s/reactive/spec_template.yaml index b63c21043..4b3eef3eb 100644 --- a/installers/charm/ui-k8s/reactive/spec_template.yaml +++ b/installers/charm/ui-k8s/reactive/spec_template.yaml @@ -14,7 +14,10 @@ version: 2 containers: - name: %(name)s - image: %(docker_image)s + imageDetails: + imagePath: %(image)s + username: %(image_username)s + password: %(image_password)s ports: - containerPort: %(advertised-port)s protocol: TCP diff --git a/installers/charm/ui-k8s/reactive/ui.py b/installers/charm/ui-k8s/reactive/ui.py index 5ca81433c..eb53daf2f 100644 --- a/installers/charm/ui-k8s/reactive/ui.py +++ b/installers/charm/ui-k8s/reactive/ui.py @@ -111,7 +111,6 @@ def make_pod_spec( data = { "name": md.get("name"), - "docker_image": cfg.get("image"), "mysql_host": mysql_host, "mysql_port": mysql_port, "mysql_user": mysql_user, -- 2.25.1