feat: added operator role
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..0a79056
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,8 @@
+# Ignore everything
+*
+
+# Except the actual Python-package related files
+!atmosphere/**
+!poetry.lock
+!pyproject.toml
+!README.md
diff --git a/molecule/default/group_vars/all/molecule.yml b/molecule/default/group_vars/all/molecule.yml
index 476079d..eed6fd7 100644
--- a/molecule/default/group_vars/all/molecule.yml
+++ b/molecule/default/group_vars/all/molecule.yml
@@ -1,3 +1,5 @@
+atmosphere_image: "{{ lookup('file', lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') + '/image') }}"
+
cert_manager_issuer:
ca:
secretName: root-secret
diff --git a/molecule/default/tools/install-dependencies b/molecule/default/tools/install-dependencies
index 4d5fa6d..6477a1b 100755
--- a/molecule/default/tools/install-dependencies
+++ b/molecule/default/tools/install-dependencies
@@ -1,28 +1,18 @@
#!/bin/sh -e
+# Generate image tag file
+IMAGE_TAG_FILE="${MOLECULE_EPHEMERAL_DIRECTORY}/image"
+
+# Check if it exists, otherwise create it.
+if [ ! -f "${IMAGE_TAG_FILE}" ]; then
+ echo "ttl.sh/$(uuidgen | tr '[:upper:]' '[:lower:]'):1d" > ${IMAGE_TAG_FILE}
+fi
+
+# Build operator image
+docker buildx build --platform linux/amd64 --tag $(cat ${IMAGE_TAG_FILE}) --push .
+
# Install OpenStack SDK
pip install \
--extra-index-url https://vexxhost.github.io/wheels/alpine-3.15/ \
netaddr \
'openstacksdk<0.99.0'
-
-# Get the path for the collection
-COLLECTION_PATH="${HOME}/.ansible/collections/ansible_collections/vexxhost/atmosphere"
-
-# Clean-up old soft link to allow successful installation
-if [ -L "${COLLECTION_PATH}" ] && [ -d "${COLLECTION_PATH}" ]; then
- echo "Deleting old soft link to allow successful installation"
-
- rm ${COLLECTION_PATH}
-fi
-
-# Install Atmosphere collection
-ansible-galaxy collection install .
-
-# Switch to symbolic link after installation
-if [ ! -L "${COLLECTION_PATH}" ] && [ -d "${COLLECTION_PATH}" ]; then
- echo "Deleting installed collection and adding soft link instead."
-
- rm -rf ${COLLECTION_PATH}
- ln -s . ${COLLECTION_PATH}
-fi
diff --git a/plugins/filter/to_toml.py b/plugins/filter/to_toml.py
new file mode 100644
index 0000000..9b663cd
--- /dev/null
+++ b/plugins/filter/to_toml.py
@@ -0,0 +1,15 @@
+#!/usr/bin/python
+
+import json
+
+import toml
+
+
+class FilterModule(object):
+ def filters(self):
+ return {"to_toml": self.to_toml}
+
+ def to_toml(self, variable):
+ s = json.dumps(dict(variable))
+ d = json.loads(s)
+ return toml.dumps(d)
diff --git a/roles/atmosphere/defaults/main.yml b/roles/atmosphere/defaults/main.yml
new file mode 100644
index 0000000..91157b8
--- /dev/null
+++ b/roles/atmosphere/defaults/main.yml
@@ -0,0 +1,7 @@
+atmosphere_image: quay.io/vexxhost/atmosphere:latest
+
+atmosphere_config:
+ atmosphere:
+ memcached:
+ secret_key: "{{ openstack_helm_endpoints_memcached_secret_key }}"
+ overrides: "{{ openstack_helm_infra_memcached_values | default({}) }}"
diff --git a/roles/atmosphere/tasks/main.yml b/roles/atmosphere/tasks/main.yml
new file mode 100644
index 0000000..7d95c22
--- /dev/null
+++ b/roles/atmosphere/tasks/main.yml
@@ -0,0 +1,10 @@
+- name: Install operator
+ kubernetes.core.k8s:
+ state: present
+ template:
+ - namespace.yml
+ - role.yml
+ - service_account.yml
+ - role_binding.yml
+ - secret.yml
+ - deployment.yml
diff --git a/roles/openstack_helm_infra_memcached/defaults/main.yml b/roles/openstack_helm_infra_memcached/defaults/main.yml
deleted file mode 100644
index 7d46c47..0000000
--- a/roles/openstack_helm_infra_memcached/defaults/main.yml
+++ /dev/null
@@ -1,19 +0,0 @@
----
-# .. vim: foldmarker=[[[,]]]:foldmethod=marker
-
-# .. Copyright (C) 2022 VEXXHOST, Inc.
-# .. SPDX-License-Identifier: Apache-2.0
-
-# Default variables
-# =================
-
-# .. contents:: Sections
-# :local:
-
-
-# .. envvar:: openstack_helm_infra_memcached_values [[[
-#
-# Overrides for Helm chart values
-openstack_helm_infra_memcached_values: {}
-
- # ]]]
diff --git a/roles/openstack_helm_infra_memcached/meta/main.yml b/roles/openstack_helm_infra_memcached/meta/main.yml
index 957f2d5..8cc8938 100644
--- a/roles/openstack_helm_infra_memcached/meta/main.yml
+++ b/roles/openstack_helm_infra_memcached/meta/main.yml
@@ -22,3 +22,6 @@
- name: Ubuntu
versions:
- focal
+
+dependencies:
+ - role: atmosphere
diff --git a/roles/openstack_helm_infra_memcached/tasks/main.yml b/roles/openstack_helm_infra_memcached/tasks/main.yml
index cb482d5..379a472 100644
--- a/roles/openstack_helm_infra_memcached/tasks/main.yml
+++ b/roles/openstack_helm_infra_memcached/tasks/main.yml
@@ -12,14 +12,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-- name: Generate OpenStack-Helm endpoints
- ansible.builtin.include_role:
- name: openstack_helm_endpoints
- vars:
- openstack_helm_endpoints_repo_name: openstack-helm-infra
- openstack_helm_endpoints_repo_url: https://tarballs.opendev.org/openstack/openstack-helm-infra/
- openstack_helm_endpoints_chart: memcached
-
- name: Deploy Helm chart
kubernetes.core.k8s:
state: present
@@ -33,14 +25,6 @@
interval: 60s
url: https://tarballs.opendev.org/openstack/openstack-helm-infra/
- - apiVersion: v1
- kind: Secret
- metadata:
- name: atmosphere-memcached
- namespace: openstack
- stringData:
- values.yaml: "{{ _openstack_helm_infra_memcached_values | to_nice_yaml }}"
-
- apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
diff --git a/roles/openstack_helm_infra_memcached/vars/main.yml b/roles/openstack_helm_infra_memcached/vars/main.yml
deleted file mode 100644
index 4acb969..0000000
--- a/roles/openstack_helm_infra_memcached/vars/main.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (c) 2022 VEXXHOST, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-_openstack_helm_infra_memcached_values: "{{ __openstack_helm_infra_memcached_values | combine(openstack_helm_infra_memcached_values, recursive=True) }}"
-__openstack_helm_infra_memcached_values:
- endpoints: "{{ openstack_helm_endpoints }}"
- images:
- tags:
- memcached: quay.io/vexxhost/memcached:1.6.9
- prometheus_memcached_exporter: quay.io/vexxhost/memcached-exporter:v0.9.0-1
- monitoring:
- prometheus:
- enabled: true