chore: move monitoring to offline install
diff --git a/.ansible-lint b/.ansible-lint
index dcd1f0f..0462af1 100644
--- a/.ansible-lint
+++ b/.ansible-lint
@@ -5,6 +5,7 @@
   - charts
   - molecule
   - playbooks
+  - roles/kube_prometheus_stack/files/jsonnet
 
 warn_list:
   - jinja[invalid]
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index a5985f5..e2e33db 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,4 +1,4 @@
-exclude: '^(atmosphere/jsonnet/vendor|charts)'
+exclude: '^(roles/kube_prometheus_stack/files/jsonnet|charts)'
 
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks
@@ -35,14 +35,6 @@
     hooks:
       - id: isort
 
-  - repo: https://github.com/google/go-jsonnet
-    rev: v0.18.0
-    hooks:
-      - id: jsonnet-format
-        files: atmosphere/jsonnet/\w\.(jsonnet|libsonnet)$
-      - id: jsonnet-lint
-        files: atmosphere/jsonnet/\w\.(jsonnet|libsonnet)$
-
   - repo: https://github.com/igorshubovych/markdownlint-cli
     rev: v0.32.2
     hooks:
diff --git a/atmosphere/models/__init__.py b/atmosphere/models/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/atmosphere/models/__init__.py
+++ /dev/null
diff --git a/atmosphere/models/base.py b/atmosphere/models/base.py
deleted file mode 100644
index 025ba20..0000000
--- a/atmosphere/models/base.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from schematics import models
-
-
-class Model(models.Model):
-    class Options:
-        serialize_when_none = False
diff --git a/atmosphere/models/config.py b/atmosphere/models/config.py
deleted file mode 100644
index c63e235..0000000
--- a/atmosphere/models/config.py
+++ /dev/null
@@ -1,60 +0,0 @@
-import os
-
-import tomli
-from schematics import types
-from schematics.exceptions import ValidationError
-
-from atmosphere.models import base
-
-CONFIG_FILE = os.environ.get("ATMOSPHERE_CONFIG", "/etc/atmosphere/config.toml")
-
-
-class ChartConfig(base.Model):
-    enabled = types.BooleanType(default=True, required=True)
-    overrides = types.DictType(types.BaseType(), default={})
-
-
-class KubePrometheusStackChartConfig(ChartConfig):
-    namespace = types.StringType(default="monitoring", required=True)
-
-
-class OpsGenieConfig(base.Model):
-    enabled = types.BooleanType(default=False, required=True)
-    api_key = types.StringType()
-    heartbeat = types.StringType()
-
-    def validate_api_key(self, data, value):
-        if data["enabled"] and not value:
-            raise ValidationError(types.BaseType.MESSAGES["required"])
-        return value
-
-    def validate_heartbeat(self, data, value):
-        if data["enabled"] and not value:
-            raise ValidationError(types.BaseType.MESSAGES["required"])
-        return value
-
-
-class Config(base.Model):
-    image_repository = types.StringType()
-    kube_prometheus_stack = types.ModelType(
-        KubePrometheusStackChartConfig, default=KubePrometheusStackChartConfig()
-    )
-    opsgenie = types.ModelType(OpsGenieConfig, default=OpsGenieConfig())
-
-    @classmethod
-    def from_toml(cls, data, validate=True):
-        c = cls(data, validate=validate)
-        if validate:
-            c.validate()
-        return c
-
-    @classmethod
-    def from_file(cls, path=CONFIG_FILE):
-        with open(path, "rb") as fd:
-            data = tomli.load(fd)
-            return cls.from_toml(data)
-
-    @classmethod
-    def from_string(cls, data: str, validate=True):
-        data = tomli.loads(data)
-        return cls.from_toml(data, validate)
diff --git a/atmosphere/operator/api/__init__.py b/atmosphere/operator/api/__init__.py
index 2eeaeee..e69de29 100644
--- a/atmosphere/operator/api/__init__.py
+++ b/atmosphere/operator/api/__init__.py
@@ -1,7 +0,0 @@
-import pykube
-
-
-class Cloud(pykube.objects.NamespacedAPIObject):
-    version = "atmosphere.vexxhost.com/v1alpha1"
-    endpoint = "clouds"
-    kind = "Cloud"
diff --git a/atmosphere/operator/api/objects.py b/atmosphere/operator/api/objects.py
deleted file mode 100644
index c9d60bd..0000000
--- a/atmosphere/operator/api/objects.py
+++ /dev/null
@@ -1,34 +0,0 @@
-from typing import ClassVar
-
-from pydantic import Field
-
-from atmosphere.operator.api import types
-
-# Kubernetes API
-
-
-class Namespace(types.KubernetesObject):
-    endpoint: ClassVar[str] = "namespaces"
-
-    version: str = Field("v1", alias="apiVersion", const=True)
-    kind: str = Field("Namespace", const=True)
-
-
-class HelmRepository(types.NamespacedKubernetesObject):
-    endpoint: ClassVar[str] = "helmrepositories"
-
-    version: str = Field(
-        "source.toolkit.fluxcd.io/v1beta2", alias="apiVersion", const=True
-    )
-    kind: str = Field("HelmRepository", const=True)
-    spec: types.HelmRepositorySpec
-
-
-class HelmRelease(types.NamespacedKubernetesObject):
-    endpoint: ClassVar[str] = "helmreleases"
-
-    version: str = Field(
-        "helm.toolkit.fluxcd.io/v2beta1", alias="apiVersion", const=True
-    )
-    kind: str = Field("HelmRelease", const=True)
-    spec: types.HelmReleaseSpec
diff --git a/atmosphere/operator/api/types.py b/atmosphere/operator/api/types.py
deleted file mode 100644
index 964890e..0000000
--- a/atmosphere/operator/api/types.py
+++ /dev/null
@@ -1,164 +0,0 @@
-import json
-from enum import Enum
-
-import kopf
-import pydantic
-import pykube
-import requests
-
-from atmosphere.operator import constants
-
-# Kubernetes API
-
-
-class ObjectMeta(pydantic.BaseModel):
-    name: pydantic.constr(min_length=1)
-    annotations: dict[str, str] = {}
-    labels: dict[str, str] = {}
-
-
-class NamespacedObjectMeta(ObjectMeta):
-    namespace: pydantic.constr(min_length=1)
-
-
-class KubernetesObject(pydantic.BaseModel):
-    api: pykube.http.HTTPClient = None
-
-    version: str = pydantic.Field(
-        constants.API_VERSION_ATMOSPHERE, alias="apiVersion", const=True
-    )
-    metadata: ObjectMeta
-
-    class Config:
-        allow_population_by_field_name = True
-        arbitrary_types_allowed = True
-        fields = {"api": {"exclude": True}}
-
-    @property
-    def obj(self) -> dict:
-        return self.dict(by_alias=True)
-
-    def set_obj(self, *_):
-        pass
-
-    @property
-    def namespace(self) -> str:
-        return None
-
-    @property
-    def name(self) -> str:
-        return self.metadata.name
-
-    @property
-    def base(self) -> None:
-        return None
-
-    def api_kwargs(self, **kwargs):
-        return pykube.objects.APIObject.api_kwargs(self, **kwargs)
-
-    def apply(self):
-        resp = self.api.patch(
-            **self.api_kwargs(
-                headers={
-                    "Content-Type": "application/apply-patch+yaml",
-                },
-                params={
-                    "fieldManager": "atmosphere-operator",
-                    "force": True,
-                },
-                data=json.dumps(self.obj),
-            )
-        )
-
-        try:
-            self.api.raise_for_status(resp)
-        except requests.exceptions.HTTPError:
-            if resp.status_code == 404:
-                raise kopf.TemporaryError("CRD is not yet installed", delay=1)
-            raise
-
-        self.set_obj(resp.json())
-        return self
-
-
-class NamespacedKubernetesObject(KubernetesObject):
-    metadata: NamespacedObjectMeta
-
-    @property
-    def namespace(self) -> str:
-        return self.metadata.namespace
-
-
-class NamespacedObjectReference(pydantic.BaseModel):
-    name: pydantic.constr(min_length=1)
-    namespace: pydantic.constr(min_length=1) = None
-
-
-class CrossNamespaceObjectReference(NamespacedObjectReference):
-    kind: pydantic.constr(min_length=1)
-
-
-class HelmRepositorySpec(pydantic.BaseModel):
-    url: pydantic.HttpUrl
-    interval: str = "60s"
-
-
-class HelmChartTemplateSpec(pydantic.BaseModel):
-    chart: pydantic.constr(min_length=1)
-    version: pydantic.constr(min_length=1) = None
-    source_ref: CrossNamespaceObjectReference = pydantic.Field(alias="sourceRef")
-
-    class Config:
-        allow_population_by_field_name = True
-
-
-class HelmChartTemplate(pydantic.BaseModel):
-    spec: HelmChartTemplateSpec
-
-
-class HelmReleaseActionRemediation(pydantic.BaseModel):
-    retries: int = 3
-
-
-class HelmReleaseActionSpecCRDsPolicy(str, Enum):
-    SKIP = "Skip"
-    CREATE = "Create"
-    CREATE_REPLACE = "CreateReplace"
-
-
-class HelmReleaseActionSpec(pydantic.BaseModel):
-    crds: HelmReleaseActionSpecCRDsPolicy = (
-        HelmReleaseActionSpecCRDsPolicy.CREATE_REPLACE
-    )
-    disable_wait: bool = pydantic.Field(default=True, alias="disableWait")
-    remediation: HelmReleaseActionRemediation = HelmReleaseActionRemediation()
-
-    class Config:
-        allow_population_by_field_name = True
-
-
-class HelmReleaseValuesReference(pydantic.BaseModel):
-    kind: pydantic.constr(min_length=1)
-    name: pydantic.constr(min_length=1)
-    values_key: str = pydantic.Field(default=None, alias="valuesKey")
-    target_path: str = pydantic.Field(default=None, alias="targetPath")
-
-    class Config:
-        allow_population_by_field_name = True
-
-
-class HelmReleaseSpec(pydantic.BaseModel):
-    chart: HelmChartTemplate
-    interval: str = "60s"
-    depends_on: list[NamespacedObjectReference] = pydantic.Field(
-        default=[], alias="dependsOn"
-    )
-    install: HelmReleaseActionSpec = HelmReleaseActionSpec()
-    upgrade: HelmReleaseActionSpec = HelmReleaseActionSpec()
-    values: dict = {}
-    values_from: list[HelmReleaseValuesReference] = pydantic.Field(
-        default=[], alias="valuesFrom"
-    )
-
-    class Config:
-        allow_population_by_field_name = True
diff --git a/atmosphere/operator/constants.py b/atmosphere/operator/constants.py
deleted file mode 100644
index 8f45dbf..0000000
--- a/atmosphere/operator/constants.py
+++ /dev/null
@@ -1,147 +0,0 @@
-API_VERSION_ATMOSPHERE = "atmosphere.vexxhost.com/v1alpha1"
-
-IMAGE_LIST = {
-    "alertmanager": "quay.io/prometheus/alertmanager:v0.24.0",
-    "atmosphere": "quay.io/vexxhost/atmosphere:0.13.0",  # x-release-please-version
-    "barbican_api": "quay.io/vexxhost/barbican:wallaby",
-    "barbican_db_sync": "quay.io/vexxhost/barbican:wallaby",
-    "bootstrap": "quay.io/vexxhost/heat:zed",
-    "ceph_config_helper": "quay.io/vexxhost/libvirtd:yoga-focal",
-    "cilium_node": "quay.io/cilium/cilium:v1.10.7@sha256:e23f55e80e1988db083397987a89967aa204ad6fc32da243b9160fbcea29b0ca",  # noqa
-    "cilium_operator": "quay.io/cilium/operator-generic:v1.10.7@sha256:d0b491d8d8cb45862ed7f0410f65e7c141832f0f95262643fa5ff1edfcddcafe",  # noqa
-    "cinder_api": "quay.io/vexxhost/cinder:zed",
-    "cinder_backup_storage_init": "quay.io/vexxhost/cinder:zed",
-    "cinder_backup": "quay.io/vexxhost/cinder:zed",
-    "cinder_db_sync": "quay.io/vexxhost/cinder:zed",
-    "cinder_scheduler": "quay.io/vexxhost/cinder:zed",
-    "cinder_storage_init": "quay.io/vexxhost/cinder:zed",
-    "cinder_volume_usage_audit": "quay.io/vexxhost/cinder:zed",
-    "cinder_volume": "quay.io/vexxhost/cinder:zed",
-    "csi_node_driver_registrar": "k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.4.0",
-    "csi_rbd_attacher": "k8s.gcr.io/sig-storage/csi-attacher:v3.4.0",
-    "csi_rbd_plugin": "quay.io/cephcsi/cephcsi:v3.5.1",
-    "csi_rbd_provisioner": "k8s.gcr.io/sig-storage/csi-provisioner:v3.1.0",
-    "csi_rbd_resizer": "k8s.gcr.io/sig-storage/csi-resizer:v1.3.0",
-    "csi_rbd_snapshotter": "k8s.gcr.io/sig-storage/csi-snapshotter:v4.2.0",
-    "db_drop": "quay.io/vexxhost/heat:zed",
-    "db_init": "quay.io/vexxhost/heat:zed",
-    "dep_check": "quay.io/vexxhost/kubernetes-entrypoint:latest",
-    "designate_api": "quay.io/vexxhost/designate:zed",
-    "designate_central": "quay.io/vexxhost/designate:zed",
-    "designate_db_sync": "quay.io/vexxhost/designate:zed",
-    "designate_mdns": "quay.io/vexxhost/designate:zed",
-    "designate_producer": "quay.io/vexxhost/designate:zed",
-    "designate_sink": "quay.io/vexxhost/designate:zed",
-    "designate_worker": "quay.io/vexxhost/designate:zed",
-    "flux_helm_controller": "ghcr.io/fluxcd/helm-controller:v0.22.2",
-    "flux_kustomize_controller": "ghcr.io/fluxcd/kustomize-controller:v0.27.0",
-    "flux_notification_controller": "ghcr.io/fluxcd/notification-controller:v0.25.1",
-    "flux_source_controller": "ghcr.io/fluxcd/source-controller:v0.26.1",
-    "glance_api": "quay.io/vexxhost/glance:zed",
-    "glance_db_sync": "quay.io/vexxhost/glance:zed",
-    "glance_metadefs_load": "quay.io/vexxhost/glance:zed",
-    "glance_registry": "quay.io/vexxhost/glance:zed",
-    "glance_storage_init": "quay.io/vexxhost/glance:zed",
-    "grafana_sidecar": "quay.io/kiwigrid/k8s-sidecar:1.19.2",
-    "grafana": "docker.io/grafana/grafana:9.2.3",
-    "haproxy": "docker.io/library/haproxy:2.5",
-    "heat_api": "us-docker.pkg.dev/vexxhost-infra/openstack/heat:wallaby",
-    "heat_cfn": "us-docker.pkg.dev/vexxhost-infra/openstack/heat:wallaby",
-    "heat_cloudwatch": "us-docker.pkg.dev/vexxhost-infra/openstack/heat:wallaby",
-    "heat_db_sync": "us-docker.pkg.dev/vexxhost-infra/openstack/heat:wallaby",
-    "heat_engine_cleaner": "us-docker.pkg.dev/vexxhost-infra/openstack/heat:wallaby",
-    "heat_engine": "us-docker.pkg.dev/vexxhost-infra/openstack/heat:wallaby",
-    "heat_purge_deleted": "us-docker.pkg.dev/vexxhost-infra/openstack/heat:wallaby",
-    "horizon_db_sync": "us-docker.pkg.dev/vexxhost-infra/openstack/horizon:wallaby",
-    "horizon": "us-docker.pkg.dev/vexxhost-infra/openstack/horizon:wallaby",
-    "keepalived": "us-docker.pkg.dev/vexxhost-infra/openstack/keepalived:2.0.19",
-    "keystone_api": "quay.io/vexxhost/keystone:wallaby",
-    "keystone_credential_cleanup": "quay.io/vexxhost/heat:zed",
-    "keystone_credential_rotate": "quay.io/vexxhost/keystone:wallaby",
-    "keystone_credential_setup": "quay.io/vexxhost/keystone:wallaby",
-    "keystone_db_sync": "quay.io/vexxhost/keystone:wallaby",
-    "keystone_domain_manage": "quay.io/vexxhost/heat:zed",
-    "keystone_fernet_rotate": "quay.io/vexxhost/keystone:wallaby",
-    "keystone_fernet_setup": "quay.io/vexxhost/keystone:wallaby",
-    "ks_endpoints": "quay.io/vexxhost/heat:zed",
-    "ks_service": "quay.io/vexxhost/heat:zed",
-    "ks_user": "quay.io/vexxhost/heat:zed",
-    "kube_apiserver": "k8s.gcr.io/kube-apiserver:v1.22.17",
-    "kube_controller_manager": "k8s.gcr.io/kube-controller-manager:v1.22.17",
-    "kube_coredns": "k8s.gcr.io/coredns/coredns:v1.8.4",
-    "kube_etcd": "k8s.gcr.io/etcd:3.5.6-0",
-    "kube_proxy": "k8s.gcr.io/kube-proxy:v1.22.17",
-    "kube_scheduler": "k8s.gcr.io/kube-scheduler:v1.22.17",
-    "kube_state_metrics": "registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.6.0",
-    "libvirt": "quay.io/vexxhost/libvirtd:yoga-focal",
-    "magnum_api": "quay.io/vexxhost/magnum:zed",
-    "magnum_conductor": "quay.io/vexxhost/magnum:zed",
-    "magnum_db_sync": "quay.io/vexxhost/magnum:zed",
-    "magnum_registry": "docker.io/library/registry:2.7.1",
-    "memcached": "docker.io/library/memcached:1.6.17",
-    "neutron_bagpipe_bgp": "us-docker.pkg.dev/vexxhost-infra/openstack/neutron:wallaby",
-    "neutron_coredns": "docker.io/coredns/coredns:1.9.3",
-    "neutron_db_sync": "us-docker.pkg.dev/vexxhost-infra/openstack/neutron:wallaby",
-    "neutron_dhcp": "us-docker.pkg.dev/vexxhost-infra/openstack/neutron:wallaby",
-    "neutron_ironic_agent": "us-docker.pkg.dev/vexxhost-infra/openstack/neutron:wallaby",
-    "neutron_l2gw": "us-docker.pkg.dev/vexxhost-infra/openstack/neutron:wallaby",
-    "neutron_l3": "us-docker.pkg.dev/vexxhost-infra/openstack/neutron:wallaby",
-    "neutron_linuxbridge_agent": "us-docker.pkg.dev/vexxhost-infra/openstack/neutron:wallaby",
-    "neutron_metadata": "us-docker.pkg.dev/vexxhost-infra/openstack/neutron:wallaby",
-    "neutron_netns_cleanup_cron": "us-docker.pkg.dev/vexxhost-infra/openstack/neutron:wallaby",
-    "neutron_openvswitch_agent": "us-docker.pkg.dev/vexxhost-infra/openstack/neutron:wallaby",
-    "neutron_server": "us-docker.pkg.dev/vexxhost-infra/openstack/neutron:wallaby",
-    "neutron_sriov_agent_init": "us-docker.pkg.dev/vexxhost-infra/openstack/neutron:wallaby",
-    "neutron_sriov_agent": "us-docker.pkg.dev/vexxhost-infra/openstack/neutron:wallaby",
-    "nova_api": "quay.io/vexxhost/nova:wallaby",
-    "nova_archive_deleted_rows": "quay.io/vexxhost/nova:wallaby",
-    "nova_cell_setup_init": "quay.io/vexxhost/heat:zed",
-    "nova_cell_setup": "quay.io/vexxhost/nova:wallaby",
-    "nova_compute_ironic": "docker.io/kolla/ubuntu-source-nova-compute-ironic:wallaby",
-    "nova_compute_ssh": "quay.io/vexxhost/nova-ssh:wallaby",
-    "nova_compute": "quay.io/vexxhost/nova:wallaby",
-    "nova_conductor": "quay.io/vexxhost/nova:wallaby",
-    "nova_consoleauth": "quay.io/vexxhost/nova:wallaby",
-    "nova_db_sync": "quay.io/vexxhost/nova:wallaby",
-    "nova_novncproxy_assets": "quay.io/vexxhost/nova:wallaby",
-    "nova_novncproxy": "quay.io/vexxhost/nova:wallaby",
-    "nova_placement": "quay.io/vexxhost/nova:wallaby",
-    "nova_scheduler": "quay.io/vexxhost/nova:wallaby",
-    "nova_service_cleaner": "quay.io/vexxhost/cli:latest",
-    "nova_spiceproxy_assets": "quay.io/vexxhost/nova:wallaby",
-    "nova_spiceproxy": "quay.io/vexxhost/nova:wallaby",
-    "octavia_api": "quay.io/vexxhost/octavia:zed",
-    "octavia_db_sync": "quay.io/vexxhost/octavia:zed",
-    "octavia_health_manager_init": "quay.io/vexxhost/heat:zed",
-    "octavia_health_manager": "quay.io/vexxhost/octavia:zed",
-    "octavia_housekeeping": "quay.io/vexxhost/octavia:zed",
-    "octavia_worker": "quay.io/vexxhost/octavia:zed",
-    "openvswitch_db_server": "quay.io/vexxhost/openvswitch:2.17.3",
-    "openvswitch_vswitchd": "quay.io/vexxhost/openvswitch:2.17.3",
-    "pause": "k8s.gcr.io/pause:3.5",
-    "percona_xtradb_cluster_haproxy": "docker.io/percona/percona-xtradb-cluster-operator:1.10.0-haproxy",
-    "percona_xtradb_cluster_operator": "docker.io/percona/percona-xtradb-cluster-operator:1.10.0",
-    "percona_xtradb_cluster": "docker.io/percona/percona-xtradb-cluster:5.7.39-31.61",
-    "placement_db_sync": "quay.io/vexxhost/placement:wallaby",
-    "placement": "quay.io/vexxhost/placement:wallaby",
-    "prometheus_config_reloader": "quay.io/prometheus-operator/prometheus-config-reloader:v0.60.1",
-    "prometheus_ethtool_exporter": "quay.io/vexxhost/ethtool-exporter:5f05120a743a71adcbceb9f8ee1d43ecc7c4183a",
-    "prometheus_ipmi_exporter": "us-docker.pkg.dev/vexxhost-infra/openstack/ipmi-exporter:1.4.0",
-    "prometheus_memcached_exporter": "quay.io/prometheus/memcached-exporter:v0.10.0",
-    "prometheus_mysqld_exporter": "quay.io/prometheus/mysqld-exporter:v0.14.0",
-    "prometheus_node_exporter": "quay.io/prometheus/node-exporter:v1.3.1",
-    "prometheus_openstack_exporter": "ghcr.io/openstack-exporter/openstack-exporter:1.6.0",
-    "prometheus_operator_kube_webhook_certgen": "k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.3.0",
-    "prometheus_operator": "quay.io/prometheus-operator/prometheus-operator:v0.60.1",
-    "prometheus_pushgateway": "docker.io/prom/pushgateway:v1.4.2",
-    "prometheus": "quay.io/prometheus/prometheus:v2.39.1",
-    "rabbit_init": "docker.io/library/rabbitmq:3.10.2-management",
-    "senlin_api": "us-docker.pkg.dev/vexxhost-infra/openstack/senlin:wallaby",
-    "senlin_conductor": "us-docker.pkg.dev/vexxhost-infra/openstack/senlin:wallaby",
-    "senlin_db_sync": "us-docker.pkg.dev/vexxhost-infra/openstack/senlin:wallaby",
-    "senlin_engine_cleaner": "us-docker.pkg.dev/vexxhost-infra/openstack/senlin:wallaby",
-    "senlin_engine": "us-docker.pkg.dev/vexxhost-infra/openstack/senlin:wallaby",
-    "senlin_health_manager": "us-docker.pkg.dev/vexxhost-infra/openstack/senlin:wallaby",
-    "skopeo": "quay.io/skopeo/stable:latest",
-    "tempest_run_tests": "us-docker.pkg.dev/vexxhost-infra/openstack/tempest:30.1.0-4",
-}
diff --git a/atmosphere/operator/controllers/__init__.py b/atmosphere/operator/controllers/__init__.py
index 2e2e8ae..89e0cdf 100644
--- a/atmosphere/operator/controllers/__init__.py
+++ b/atmosphere/operator/controllers/__init__.py
@@ -1,2 +1 @@
-from atmosphere.operator.controllers import cloud  # noqa: F401
 from atmosphere.operator.controllers import openstack  # noqa: F401
diff --git a/atmosphere/operator/controllers/cloud.py b/atmosphere/operator/controllers/cloud.py
deleted file mode 100644
index 573edca..0000000
--- a/atmosphere/operator/controllers/cloud.py
+++ /dev/null
@@ -1,64 +0,0 @@
-import kopf
-
-from atmosphere import clients
-from atmosphere.models import config
-from atmosphere.operator.api import Cloud, objects, types
-from atmosphere.tasks import constants
-from atmosphere.tasks.composite import openstack_helm
-
-
-@kopf.on.resume(Cloud.version, Cloud.kind)
-@kopf.on.create(Cloud.version, Cloud.kind)
-def create_fn(namespace: str, name: str, spec: dict, **_):
-    cfg = config.Config.from_file()
-    api = clients.get_pykube_api()
-
-    objects.Namespace(
-        api=api,
-        metadata=types.ObjectMeta(
-            name=constants.NAMESPACE_MONITORING,
-        ),
-    ).apply()
-
-    if cfg.kube_prometheus_stack.enabled:
-        objects.HelmRepository(
-            api=api,
-            metadata=types.NamespacedObjectMeta(
-                name=constants.HELM_REPOSITORY_PROMETHEUS_COMMUINTY,
-                namespace=cfg.kube_prometheus_stack.namespace,
-            ),
-            spec=types.HelmRepositorySpec(
-                url=constants.HELM_REPOSITORY_PROMETHEUS_COMMUINTY_URL,
-            ),
-        ).apply()
-        objects.HelmRelease(
-            api=api,
-            metadata=types.NamespacedObjectMeta(
-                name=constants.HELM_RELEASE_KUBE_PROMETHEUS_STACK_NAME,
-                namespace=cfg.kube_prometheus_stack.namespace,
-            ),
-            spec=types.HelmReleaseSpec(
-                chart=types.HelmChartTemplate(
-                    spec=types.HelmChartTemplateSpec(
-                        chart=constants.HELM_RELEASE_KUBE_PROMETHEUS_STACK_NAME,
-                        version=constants.HELM_RELEASE_KUBE_PROMETHEUS_STACK_VERSION,
-                        source_ref=types.CrossNamespaceObjectReference(
-                            kind="HelmRepository",
-                            name=constants.HELM_REPOSITORY_PROMETHEUS_COMMUINTY,
-                            namespace=cfg.kube_prometheus_stack.namespace,
-                        ),
-                    )
-                ),
-                values={
-                    **constants.HELM_RELEASE_KUBE_PROMETHEUS_STACK_VALUES,
-                    **cfg.kube_prometheus_stack.overrides,
-                    **{
-                        "alertmanager": {
-                            "config": openstack_helm.generate_alertmanager_config_for_opsgenie(
-                                cfg.opsgenie
-                            )
-                        }
-                    },
-                },
-            ),
-        ).apply()
diff --git a/atmosphere/tasks/composite/openstack_helm.py b/atmosphere/tasks/composite/openstack_helm.py
index 4b5926b..031a571 100644
--- a/atmosphere/tasks/composite/openstack_helm.py
+++ b/atmosphere/tasks/composite/openstack_helm.py
@@ -3,6 +3,17 @@
 from atmosphere.models import config
 
 
+# values={
+#     **constants.HELM_RELEASE_KUBE_PROMETHEUS_STACK_VALUES,
+#     **cfg.kube_prometheus_stack.overrides,
+#     **{
+#         "alertmanager": {
+#             "config": openstack_helm.generate_alertmanager_config_for_opsgenie(
+#                 cfg.opsgenie
+#             )
+#         }
+#     },
+# },
 def generate_alertmanager_config_for_opsgenie(
     opsgenie: config.OpsGenieConfig,
 ) -> dict:
diff --git a/atmosphere/tasks/constants.py b/atmosphere/tasks/constants.py
deleted file mode 100644
index 09e40f8..0000000
--- a/atmosphere/tasks/constants.py
+++ /dev/null
@@ -1,385 +0,0 @@
-import pkg_resources
-
-from atmosphere import utils
-
-NODE_SELECTOR_CONTROL_PLANE = {
-    "openstack-control-plane": "enabled",
-}
-
-NAMESPACE_CERT_MANAGER = "cert-manager"
-NAMESPACE_MONITORING = "monitoring"
-
-HELM_REPOSITORY_PROMETHEUS_COMMUINTY = "prometheus-community"
-HELM_REPOSITORY_PROMETHEUS_COMMUINTY_URL = (
-    "https://prometheus-community.github.io/helm-charts"
-)
-
-PROMETHEUS_MONITOR_RELABELING_SET_NODE_NAME_TO_INSTANCE = {
-    "sourceLabels": ["__meta_kubernetes_pod_node_name"],
-    "targetLabel": "instance",
-}
-PROMETHEUS_MONITOR_RELABELING_SET_POD_NAME_TO_INSTANCE = {
-    "sourceLabels": ["__meta_kubernetes_pod_name"],
-    "targetLabel": "instance",
-}
-PROMETHEUS_MONITOR_RELABELING_DROP_ALL_KUBERNETES_LABELS = {
-    "action": "labeldrop",
-    "regex": "^(container|endpoint|namespace|pod|node|service)$",
-}
-
-PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_POD_NAME = [
-    PROMETHEUS_MONITOR_RELABELING_SET_POD_NAME_TO_INSTANCE,
-    PROMETHEUS_MONITOR_RELABELING_DROP_ALL_KUBERNETES_LABELS,
-]
-PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_NODE_NAME = [
-    PROMETHEUS_MONITOR_RELABELING_SET_NODE_NAME_TO_INSTANCE,
-    PROMETHEUS_MONITOR_RELABELING_DROP_ALL_KUBERNETES_LABELS,
-]
-PROMETHEUS_MONITOR_RELABELINGS_KUBELET = [
-    {"sourceLabels": ["__metrics_path__"], "targetLabel": "metrics_path"},
-    {"sourceLabels": ["node"], "targetLabel": "instance"},
-    PROMETHEUS_MONITOR_RELABELING_DROP_ALL_KUBERNETES_LABELS,
-]
-
-HELM_RELEASE_KUBE_PROMETHEUS_STACK_NAME = "kube-prometheus-stack"
-HELM_RELEASE_KUBE_PROMETHEUS_STACK_VERSION = "41.7.3"
-HELM_RELEASE_KUBE_PROMETHEUS_STACK_VALUES = {
-    "defaultRules": {
-        "disabled": {
-            # NOTE(mnaser): https://github.com/prometheus-community/helm-charts/issues/144
-            #               https://github.com/openshift/cluster-monitoring-operator/issues/248
-            "etcdHighNumberOfFailedGRPCRequests": True
-        }
-    },
-    "alertmanager": {
-        "serviceMonitor": {
-            "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_POD_NAME
-        },
-        "alertmanagerSpec": {
-            "image": {
-                "repository": utils.get_image_ref_using_legacy_image_repository(
-                    "alertmanager"
-                )["name"],
-                "tag": utils.get_image_ref_using_legacy_image_repository(
-                    "alertmanager"
-                )["tag"],
-            },
-            "storage": {
-                "volumeClaimTemplate": {
-                    "spec": {
-                        "storageClassName": "general",
-                        "accessModes": ["ReadWriteOnce"],
-                        "resources": {"requests": {"storage": "40Gi"}},
-                    }
-                }
-            },
-            "nodeSelector": NODE_SELECTOR_CONTROL_PLANE,
-        },
-    },
-    "grafana": {
-        "image": {
-            "repository": utils.get_image_ref_using_legacy_image_repository("grafana")[
-                "name"
-            ],
-            "tag": utils.get_image_ref_using_legacy_image_repository("grafana")["tag"],
-        },
-        "sidecar": {
-            "image": {
-                "repository": utils.get_image_ref_using_legacy_image_repository(
-                    "grafana_sidecar"
-                )["name"],
-                "tag": utils.get_image_ref_using_legacy_image_repository(
-                    "grafana_sidecar"
-                )["tag"],
-            }
-        },
-        "serviceMonitor": {
-            "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_POD_NAME
-        },
-        "nodeSelector": NODE_SELECTOR_CONTROL_PLANE,
-    },
-    "kubeApiServer": {
-        "serviceMonitor": {
-            "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_NODE_NAME
-        }
-    },
-    "kubelet": {
-        "serviceMonitor": {
-            "cAdvisorRelabelings": PROMETHEUS_MONITOR_RELABELINGS_KUBELET,
-            "probesRelabelings": PROMETHEUS_MONITOR_RELABELINGS_KUBELET,
-            "relabelings": PROMETHEUS_MONITOR_RELABELINGS_KUBELET,
-        }
-    },
-    "kubeControllerManager": {
-        "serviceMonitor": {
-            "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_NODE_NAME,
-        }
-    },
-    "coreDns": {
-        "serviceMonitor": {
-            "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_POD_NAME
-        }
-    },
-    "kubeEtcd": {
-        "service": {
-            "port": 2379,
-            "targetPort": 2379,
-        },
-        "serviceMonitor": {
-            "scheme": "https",
-            "serverName": "localhost",
-            "insecureSkipVerify": False,
-            "caFile": "/etc/prometheus/secrets/kube-prometheus-stack-etcd-client-cert/ca.crt",
-            "certFile": "/etc/prometheus/secrets/kube-prometheus-stack-etcd-client-cert/healthcheck-client.crt",
-            "keyFile": "/etc/prometheus/secrets/kube-prometheus-stack-etcd-client-cert/healthcheck-client.key",
-            "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_NODE_NAME,
-        },
-    },
-    "kubeScheduler": {
-        "service": {"port": 10259, "targetPort": 10259},
-        "serviceMonitor": {
-            "https": True,
-            "insecureSkipVerify": True,
-            "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_NODE_NAME,
-        },
-    },
-    "kubeProxy": {
-        "serviceMonitor": {
-            "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_NODE_NAME
-        }
-    },
-    "kube-state-metrics": {
-        "image": {
-            "repository": utils.get_image_ref_using_legacy_image_repository(
-                "kube_state_metrics"
-            )["name"],
-            "tag": utils.get_image_ref_using_legacy_image_repository(
-                "kube_state_metrics"
-            )["tag"],
-        },
-        "prometheus": {
-            "monitor": {
-                "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_POD_NAME
-            }
-        },
-        "nodeSelector": NODE_SELECTOR_CONTROL_PLANE,
-    },
-    "prometheus": {
-        "serviceMonitor": {
-            "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_POD_NAME
-        },
-        "prometheusSpec": {
-            "image": {
-                "repository": utils.get_image_ref_using_legacy_image_repository(
-                    "prometheus"
-                )["name"],
-                "tag": utils.get_image_ref_using_legacy_image_repository("prometheus")[
-                    "tag"
-                ],
-            },
-            "nodeSelector": NODE_SELECTOR_CONTROL_PLANE,
-            "secrets": ["kube-prometheus-stack-etcd-client-cert"],
-        },
-        "additionalServiceMonitors": [
-            {
-                "name": "ceph",
-                "jobLabel": "application",
-                "selector": {"matchLabels": {"application": "ceph"}},
-                "namespaceSelector": {"matchNames": ["openstack"]},
-                "endpoints": [
-                    {
-                        "port": "metrics",
-                        "honorLabels": True,
-                        "relabelings": [
-                            {
-                                "action": "replace",
-                                "regex": "(.*)",
-                                "replacement": "ceph",
-                                "targetLabel": "cluster",
-                            },
-                            PROMETHEUS_MONITOR_RELABELING_DROP_ALL_KUBERNETES_LABELS,
-                        ],
-                    }
-                ],
-            },
-            {
-                "name": "coredns",
-                "jobLabel": "app.kubernetes.io/name",
-                "namespaceSelector": {"matchNames": ["openstack"]},
-                "selector": {
-                    "matchLabels": {
-                        "app.kubernetes.io/name": "coredns",
-                        "app.kubernetes.io/component": "metrics",
-                    }
-                },
-                "endpoints": [
-                    {
-                        "port": "metrics",
-                        "relabelings": [
-                            {
-                                "sourceLabels": [
-                                    "__meta_kubernetes_pod_label_application"
-                                ],
-                                "targetLabel": "application",
-                            },
-                        ]
-                        + PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_POD_NAME,
-                    }
-                ],
-            },
-            {
-                "name": "memcached",
-                "jobLabel": "application",
-                "namespaceSelector": {"matchNames": ["openstack"]},
-                "selector": {
-                    "matchLabels": {"application": "memcached", "component": "server"}
-                },
-                "endpoints": [
-                    {
-                        "port": "metrics",
-                        "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_POD_NAME,
-                    }
-                ],
-            },
-            {
-                "name": "openstack-exporter",
-                "jobLabel": "jobLabel",
-                "namespaceSelector": {"matchNames": ["openstack"]},
-                "selector": {"matchLabels": {"application": "openstack-exporter"}},
-                "endpoints": [
-                    {
-                        "interval": "1m",
-                        "scrapeTimeout": "30s",
-                        "port": "metrics",
-                        "relabelings": [
-                            {
-                                "action": "replace",
-                                "regex": "(.*)",
-                                "replacement": "default",
-                                "targetLabel": "instance",
-                            }
-                        ],
-                    }
-                ],
-            },
-        ],
-        "additionalPodMonitors": [
-            {
-                "name": "ethtool-exporter",
-                "jobLabel": "job",
-                "selector": {"matchLabels": {"application": "ethtool-exporter"}},
-                "podMetricsEndpoints": [
-                    {
-                        "port": "metrics",
-                        "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_NODE_NAME,
-                    }
-                ],
-            },
-            {
-                "name": "ipmi-exporter",
-                "jobLabel": "job",
-                "selector": {"matchLabels": {"application": "ipmi-exporter"}},
-                "podMetricsEndpoints": [
-                    {
-                        "port": "metrics",
-                        "interval": "60s",
-                        "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_NODE_NAME,
-                    }
-                ],
-            },
-            {
-                "name": "percona-xtradb-pxc",
-                "jobLabel": "app.kubernetes.io/component",
-                "namespaceSelector": {"matchNames": ["openstack"]},
-                "selector": {
-                    "matchLabels": {
-                        "app.kubernetes.io/component": "pxc",
-                        "app.kubernetes.io/instance": "percona-xtradb",
-                    }
-                },
-                "podMetricsEndpoints": [
-                    {
-                        "port": "metrics",
-                        "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_POD_NAME,
-                    }
-                ],
-            },
-            {
-                "name": "rabbitmq",
-                "jobLabel": "app.kubernetes.io/component",
-                "namespaceSelector": {"matchNames": ["openstack"]},
-                "selector": {
-                    "matchLabels": {"app.kubernetes.io/component": "rabbitmq"}
-                },
-                "podMetricsEndpoints": [
-                    {
-                        "port": "prometheus",
-                        "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_POD_NAME,
-                    }
-                ],
-            },
-        ],
-    },
-    "prometheusOperator": {
-        "admissionWebhooks": {
-            "patch": {
-                "image": {
-                    "repository": utils.get_image_ref_using_legacy_image_repository(
-                        "prometheus_operator_kube_webhook_certgen"
-                    )["name"],
-                    "tag": utils.get_image_ref_using_legacy_image_repository(
-                        "prometheus_operator_kube_webhook_certgen"
-                    )["tag"],
-                },
-                "nodeSelector": NODE_SELECTOR_CONTROL_PLANE,
-            }
-        },
-        "serviceMonitor": {
-            "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_POD_NAME
-        },
-        "nodeSelector": NODE_SELECTOR_CONTROL_PLANE,
-        "image": {
-            "repository": utils.get_image_ref_using_legacy_image_repository(
-                "prometheus_operator"
-            )["name"],
-            "tag": utils.get_image_ref_using_legacy_image_repository(
-                "prometheus_operator"
-            )["tag"],
-        },
-        "prometheusConfigReloader": {
-            "image": {
-                "repository": utils.get_image_ref_using_legacy_image_repository(
-                    "prometheus_config_reloader"
-                )["name"],
-                "tag": utils.get_image_ref_using_legacy_image_repository(
-                    "prometheus_config_reloader"
-                )["tag"],
-            }
-        },
-    },
-    "prometheus-node-exporter": {
-        "image": {
-            "repository": utils.get_image_ref_using_legacy_image_repository(
-                "prometheus_node_exporter"
-            )["name"],
-            "tag": utils.get_image_ref_using_legacy_image_repository(
-                "prometheus_node_exporter"
-            )["tag"],
-        },
-        "extraArgs": [
-            "--collector.diskstats.ignored-devices=^(ram|loop|nbd|fd|(h|s|v|xv)d[a-z]|nvme\\d+n\\d+p)\\d+$",
-            "--collector.filesystem.fs-types-exclude=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|fuse.squashfuse_ll|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$",  # noqa: E501
-            "--collector.filesystem.mount-points-exclude=^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+|var/lib/kubelet/pods/.+|var/lib/kubelet/plugins/kubernetes.io/csi/.+|run/containerd/.+)($|/)",  # noqa: E501
-            "--collector.netclass.ignored-devices=^(lxc|cilium_|qbr|qvb|qvo|tap|ovs-system|br|tbr|gre_sys).*$",
-            "--collector.netdev.device-exclude=^(lxc|cilium_|qbr|qvb|qvo|tap|ovs-system|br|tbr|gre_sys).*$",
-        ],
-        "prometheus": {
-            "monitor": {
-                "relabelings": PROMETHEUS_MONITOR_RELABELINGS_INSTANCE_TO_NODE_NAME
-            }
-        },
-    },
-    "additionalPrometheusRulesMap": utils.load_jsonnet_from_path(
-        pkg_resources.resource_filename("atmosphere.jsonnet", "rules.jsonnet")
-    ),
-}
diff --git a/atmosphere/tests/conftest.py b/atmosphere/tests/conftest.py
deleted file mode 100644
index f318749..0000000
--- a/atmosphere/tests/conftest.py
+++ /dev/null
@@ -1,47 +0,0 @@
-import pytest
-import responses
-
-
-@pytest.fixture
-def kubeconfig(tmpdir):
-    kubeconfig = tmpdir.join("kubeconfig")
-    kubeconfig.write(
-        """
-apiVersion: v1
-clusters:
-- cluster: {server: 'https://localhost:9443'}
-  name: test
-contexts:
-- context: {cluster: test, user: test}
-  name: test
-current-context: test
-kind: Config
-preferences: {}
-users:
-- name: test
-  user: {token: testtoken}
-    """
-    )
-    return kubeconfig
-
-
-@pytest.fixture
-def requests_mock():
-    return responses.RequestsMock(target="pykube.http.KubernetesHTTPAdapter._do_send")
-
-
-@pytest.fixture
-def api(kubeconfig):
-    import pykube
-
-    config = pykube.KubeConfig.from_file(str(kubeconfig))
-    return pykube.HTTPClient(config)
-
-
-@pytest.fixture
-def pykube(mocker):
-    # TODO(mnaser): We should get rid of this fixture and rename the other one
-    #               to pykube.
-    mocked_api = mocker.MagicMock()
-    mocker.patch("atmosphere.clients.get_pykube_api", return_value=mocked_api)
-    return mocked_api
diff --git a/atmosphere/tests/unit/operator/test_objects.py b/atmosphere/tests/unit/operator/test_objects.py
deleted file mode 100644
index 5434138..0000000
--- a/atmosphere/tests/unit/operator/test_objects.py
+++ /dev/null
@@ -1,219 +0,0 @@
-import json
-
-import responses
-from hypothesis import given
-from hypothesis import provisional as prov
-from hypothesis import strategies as st
-
-from atmosphere.operator.api import objects, types
-
-
-class TestNamespace:
-    @given(st.builds(objects.Namespace))
-    def test_property(self, instance):
-        assert isinstance(instance, objects.Namespace)
-        assert isinstance(instance.metadata, types.ObjectMeta)
-
-    def test_apply(self, api, requests_mock):
-        instance = objects.Namespace(
-            api=api,
-            metadata=types.ObjectMeta(
-                name="openstack",
-                annotations={
-                    "annotate": "this",
-                },
-                labels={
-                    "foo": "bar",
-                },
-            ),
-        )
-
-        with requests_mock as rsps:
-            rsps.add(
-                responses.PATCH,
-                "https://localhost:9443/api/v1/namespaces/openstack?fieldManager=atmosphere-operator&force=True",
-                json={},
-            )
-
-            instance.apply()
-
-            assert len(rsps.calls) == 1
-            assert json.loads(rsps.calls[0].request.body) == {
-                "apiVersion": "v1",
-                "kind": "Namespace",
-                "metadata": {
-                    "name": "openstack",
-                    "annotations": {
-                        "annotate": "this",
-                    },
-                    "labels": {
-                        "foo": "bar",
-                    },
-                },
-            }
-
-
-class TestHelmRepository:
-    @given(
-        st.builds(
-            objects.HelmRepository,
-            spec=st.builds(types.HelmRepositorySpec, url=prov.urls()),
-        )
-    )
-    def test_property(self, instance):
-        assert isinstance(instance, objects.HelmRepository)
-        assert isinstance(instance.spec, types.HelmRepositorySpec)
-
-    def test_apply(self, api, requests_mock):
-        instance = objects.HelmRepository(
-            api=api,
-            metadata=types.NamespacedObjectMeta(
-                name="openstack-helm",
-                namespace="openstack",
-                annotations={
-                    "annotate": "this",
-                },
-                labels={
-                    "foo": "bar",
-                },
-            ),
-            spec=types.HelmRepositorySpec(
-                url="https://tarballs.opendev.org/openstack/openstack-helm/",
-            ),
-        )
-
-        with requests_mock as rsps:
-            rsps.add(
-                responses.PATCH,
-                "https://localhost:9443/apis/source.toolkit.fluxcd.io/v1beta2/namespaces/openstack/helmrepositories/openstack-helm?fieldManager=atmosphere-operator&force=True",  # noqa E501
-                json={},
-            )
-
-            instance.apply()
-
-            assert len(rsps.calls) == 1
-            assert json.loads(rsps.calls[0].request.body) == {
-                "apiVersion": "source.toolkit.fluxcd.io/v1beta2",
-                "kind": "HelmRepository",
-                "metadata": {
-                    "name": "openstack-helm",
-                    "namespace": "openstack",
-                    "annotations": {
-                        "annotate": "this",
-                    },
-                    "labels": {
-                        "foo": "bar",
-                    },
-                },
-                "spec": {
-                    "interval": "60s",
-                    "url": "https://tarballs.opendev.org/openstack/openstack-helm/",
-                },
-            }
-
-
-class TestHelmRelease:
-    @given(st.builds(objects.HelmRelease))
-    def test_property(self, instance):
-        assert isinstance(instance, objects.HelmRelease)
-        assert isinstance(instance.spec, types.HelmReleaseSpec)
-
-    def test_apply(self, api, requests_mock):
-        instance = objects.HelmRelease(
-            api=api,
-            metadata=types.NamespacedObjectMeta(
-                name="neutron",
-                namespace="openstack",
-                annotations={
-                    "annotate": "this",
-                },
-                labels={
-                    "foo": "bar",
-                },
-            ),
-            spec=types.HelmReleaseSpec(
-                chart=types.HelmChartTemplate(
-                    spec=types.HelmChartTemplateSpec(
-                        chart="neutron",
-                        version="0.1.0",
-                        source_ref=types.CrossNamespaceObjectReference(
-                            kind="HelmRepository",
-                            name="openstack-helm",
-                            namespace="openstack",
-                        ),
-                    )
-                ),
-                values={
-                    "foo": "bar",
-                },
-                values_from=[
-                    types.HelmReleaseValuesReference(
-                        kind="Secret",
-                        name="rabbitmq-neutron-default-user",
-                        values_key="username",
-                        target_path="rabbitmq.username",
-                    )
-                ],
-            ),
-        )
-
-        with requests_mock as rsps:
-            rsps.add(
-                responses.PATCH,
-                "https://localhost:9443/apis/helm.toolkit.fluxcd.io/v2beta1/namespaces/openstack/helmreleases/neutron?fieldManager=atmosphere-operator&force=True",  # noqa E501
-                json={},
-            )
-
-            instance.apply()
-
-            assert len(rsps.calls) == 1
-            assert json.loads(rsps.calls[0].request.body) == {
-                "apiVersion": "helm.toolkit.fluxcd.io/v2beta1",
-                "kind": "HelmRelease",
-                "metadata": {
-                    "name": instance.metadata.name,
-                    "namespace": instance.metadata.namespace,
-                    "labels": instance.metadata.labels,
-                    "annotations": instance.metadata.annotations,
-                },
-                "spec": {
-                    "chart": {
-                        "spec": {
-                            "chart": "neutron",
-                            "version": "0.1.0",
-                            "sourceRef": {
-                                "kind": "HelmRepository",
-                                "name": "openstack-helm",
-                                "namespace": "openstack",
-                            },
-                        },
-                    },
-                    "dependsOn": [],
-                    "install": {
-                        "crds": "CreateReplace",
-                        "disableWait": True,
-                        "remediation": {
-                            "retries": 3,
-                        },
-                    },
-                    "interval": "60s",
-                    "upgrade": {
-                        "crds": "CreateReplace",
-                        "disableWait": True,
-                        "remediation": {
-                            "retries": 3,
-                        },
-                    },
-                    "values": {
-                        "foo": "bar",
-                    },
-                    "valuesFrom": [
-                        {
-                            "kind": "Secret",
-                            "name": "rabbitmq-neutron-default-user",
-                            "valuesKey": "username",
-                            "targetPath": "rabbitmq.username",
-                        },
-                    ],
-                },
-            }
diff --git a/atmosphere/tests/unit/operator/test_types.py b/atmosphere/tests/unit/operator/test_types.py
deleted file mode 100644
index 8e5bf42..0000000
--- a/atmosphere/tests/unit/operator/test_types.py
+++ /dev/null
@@ -1,120 +0,0 @@
-from hypothesis import given
-from hypothesis import provisional as prov
-from hypothesis import strategies as st
-
-from atmosphere.operator.api import types
-
-
-class TestObjectMeta:
-    @given(st.builds(types.ObjectMeta))
-    def test_property(self, instance):
-        assert isinstance(instance, types.ObjectMeta)
-        assert isinstance(instance.name, str)
-        assert instance.name != ""
-
-
-class TestNamespacedObjectMeta:
-    @given(st.builds(types.NamespacedObjectMeta))
-    def test_property(self, instance):
-        assert isinstance(instance, types.NamespacedObjectMeta)
-        assert isinstance(instance.name, str)
-        assert instance.name != ""
-        assert isinstance(instance.namespace, str)
-        assert instance.namespace != ""
-
-
-class TestKubernetesObject:
-    @given(st.builds(types.KubernetesObject))
-    def test_property(self, instance):
-        assert isinstance(instance, types.KubernetesObject)
-        assert isinstance(instance.metadata, types.ObjectMeta)
-
-
-class TestNamespacedKubernetesObject:
-    @given(st.builds(types.NamespacedKubernetesObject))
-    def test_property(self, instance):
-        assert isinstance(instance, types.NamespacedKubernetesObject)
-        assert isinstance(instance.metadata, types.NamespacedObjectMeta)
-
-
-class TestCrossNamespaceObjectReference:
-    @given(st.builds(types.CrossNamespaceObjectReference))
-    def test_property(self, instance):
-        assert isinstance(instance, types.CrossNamespaceObjectReference)
-        assert isinstance(instance.kind, str)
-        assert instance.kind != ""
-        assert isinstance(instance.name, str)
-        assert instance.name != ""
-        assert isinstance(instance.namespace, str) or instance.namespace is None
-        assert instance.namespace != ""
-
-
-class TestHelmRepositorySpec:
-    @given(st.builds(types.HelmRepositorySpec, url=prov.urls()))
-    def test_property(self, instance):
-        assert isinstance(instance, types.HelmRepositorySpec)
-        assert isinstance(instance.url, str)
-        assert instance.url != ""
-        assert isinstance(instance.interval, str)
-        assert instance.interval != ""
-
-
-class TestHelmChartTemplateSpec:
-    @given(st.builds(types.HelmChartTemplateSpec))
-    def test_property(self, instance):
-        assert isinstance(instance, types.HelmChartTemplateSpec)
-        assert isinstance(instance.chart, str)
-        assert instance.chart != ""
-        assert isinstance(instance.version, str) or instance.version is None
-        assert instance.version != ""
-
-
-class TestHelmChartTemplate:
-    @given(st.builds(types.HelmChartTemplate))
-    def test_property(self, instance):
-        assert isinstance(instance, types.HelmChartTemplate)
-        assert isinstance(instance.spec, types.HelmChartTemplateSpec)
-
-
-class HelmReleaseActionRemediation:
-    @given(st.builds(types.HelmReleaseActionRemediation))
-    def test_property(self, instance):
-        assert isinstance(instance, types.HelmReleaseActionRemediation)
-        assert isinstance(instance.retries, int)
-
-
-class TestHelmReleaseActionSpec:
-    @given(st.builds(types.HelmReleaseActionSpec))
-    def test_property(self, instance):
-        assert isinstance(instance, types.HelmReleaseActionSpec)
-        assert isinstance(instance.crds, types.HelmReleaseActionSpecCRDsPolicy)
-        assert isinstance(instance.disable_wait, bool)
-        assert instance.disable_wait in [True, False]
-        assert isinstance(instance.remediation, types.HelmReleaseActionRemediation)
-
-
-class TestHelmReleaseValuesReference:
-    @given(st.builds(types.HelmReleaseValuesReference))
-    def test_property(self, instance):
-        assert isinstance(instance, types.HelmReleaseValuesReference)
-        assert isinstance(instance.kind, str)
-        assert instance.kind != ""
-        assert isinstance(instance.name, str)
-        assert instance.name != ""
-        assert isinstance(instance.values_key, str) or instance.values_key is None
-        assert instance.values_key != ""
-        assert isinstance(instance.target_path, str) or instance.target_path is None
-        assert instance.target_path != ""
-
-
-class TestHelmReleaseSpec:
-    @given(st.builds(types.HelmReleaseSpec))
-    def test_property(self, instance):
-        assert isinstance(instance, types.HelmReleaseSpec)
-        assert isinstance(instance.interval, str)
-        assert instance.interval != ""
-        assert isinstance(instance.chart, types.HelmChartTemplate)
-        assert isinstance(instance.install, types.HelmReleaseActionSpec)
-        assert isinstance(instance.upgrade, types.HelmReleaseActionSpec)
-        assert isinstance(instance.values, dict)
-        assert isinstance(instance.values_from, list)
diff --git a/atmosphere/utils.py b/atmosphere/utils.py
deleted file mode 100644
index e1b7614..0000000
--- a/atmosphere/utils.py
+++ /dev/null
@@ -1,50 +0,0 @@
-import json
-import os
-
-import _jsonnet
-import tomli
-from docker_image import reference
-
-from atmosphere.operator import constants
-
-CONFIG_FILE = os.environ.get("ATMOSPHERE_CONFIG", "/etc/atmosphere/config.toml")
-
-
-def load_jsonnet_from_path(path: str) -> any:
-    raw = _jsonnet.evaluate_file(path)
-    return json.loads(raw)
-
-
-def get_legacy_image_repository(config_path: str = CONFIG_FILE) -> str or None:
-    try:
-        with open(config_path, "rb") as fd:
-            data = tomli.load(fd)
-    except FileNotFoundError:
-        return None
-
-    if data.get("image_repository", ""):
-        return data["image_repository"]
-
-    return None
-
-
-def get_image_ref_using_legacy_image_repository(image_name: str) -> str:
-    override_registry = get_legacy_image_repository()
-
-    ref = reference.Reference.parse(constants.IMAGE_LIST[image_name])
-    if not override_registry:
-        return ref
-
-    # NOTE(mnaser): We re-write the name of a few images to make sense of them
-    #               in the context of the override registry.
-    ref_name = ref.repository["path"].split("/")[-1]
-    if image_name == "skopeo":
-        ref_name = "skopeo-stable"
-
-    # NOTE(mnaser): Since the attributes inside of reference.Reference are not
-    #               determined during parse time, we need to re-parse the
-    #               string to get the correct attributes.
-    ref["name"] = "{}/{}".format(override_registry, ref_name)
-    ref = reference.Reference.parse(ref.string())
-
-    return ref
diff --git a/jsonnetfile.lock.json b/jsonnetfile.lock.json
deleted file mode 100644
index 2c79f2f..0000000
--- a/jsonnetfile.lock.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
-  "version": 1,
-  "dependencies": [
-    {
-      "source": {
-        "git": {
-          "remote": "https://github.com/ceph/ceph.git",
-          "subdir": "monitoring/ceph-mixin"
-        }
-      },
-      "version": "296ba0641a161e6f809a03f39d85faf9d695315b",
-      "sum": "ZnyCIu25NBI6Q3Ru7QK1DHf7DBMEURSMQdEJXzCyIgA="
-    },
-    {
-      "source": {
-        "git": {
-          "remote": "https://github.com/grafana/grafonnet-lib.git",
-          "subdir": "grafonnet"
-        }
-      },
-      "version": "30280196507e0fe6fa978a3e0eaca3a62844f817",
-      "sum": "342u++/7rViR/zj2jeJOjshzglkZ1SY+hFNuyCBFMdc="
-    },
-    {
-      "source": {
-        "git": {
-          "remote": "https://github.com/grafana/jsonnet-libs.git",
-          "subdir": "grafana-builder"
-        }
-      },
-      "version": "d73aff453c9784cd6922119f3ce33d8d355a79e1",
-      "sum": "tDR6yT2GVfw0wTU12iZH+m01HrbIr6g/xN+/8nzNkU0="
-    },
-    {
-      "source": {
-        "git": {
-          "remote": "https://github.com/grafana/jsonnet-libs.git",
-          "subdir": "memcached-mixin"
-        }
-      },
-      "version": "d73aff453c9784cd6922119f3ce33d8d355a79e1",
-      "sum": "kl5GJvwAVAh0qIKsAFpNXm/jhHhv/8tBbpri7VCpZ2I="
-    },
-    {
-      "source": {
-        "git": {
-          "remote": "https://github.com/povilasv/coredns-mixin.git",
-          "subdir": ""
-        }
-      },
-      "version": "8b121c41b6c0741f1603b2d75ccd324050c4bd03",
-      "sum": "4CxwtfVX/OIS5w5+FkExG5evxiatOEMhaWChWaFc9S4="
-    },
-    {
-      "source": {
-        "git": {
-          "remote": "https://github.com/prometheus/mysqld_exporter.git",
-          "subdir": "mysqld-mixin"
-        }
-      },
-      "version": "503f1fa222f0afc74a1dcf4a0ef5a7c2dfa4d105",
-      "sum": "G69++5ExKgQ9niW0Owmw0orc8voP0Qll2WZJ1fHAqzE="
-    }
-  ],
-  "legacyImports": false
-}
diff --git a/playbooks/openstack.yml b/playbooks/openstack.yml
index 8543a0d..9166ef8 100644
--- a/playbooks/openstack.yml
+++ b/playbooks/openstack.yml
@@ -32,6 +32,11 @@
   gather_facts: false
   become: true
   roles:
+    # TODO(mnaser): We should get rid of this very soon.
+    - role: atmosphere
+      tags:
+        - atmosphere
+
     - role: csi
       tags:
         - csi
diff --git a/plugins/filter/to_toml.py b/plugins/filter/to_toml.py
deleted file mode 100644
index 341da4e..0000000
--- a/plugins/filter/to_toml.py
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/python
-
-import json
-
-import tomli_w
-
-
-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 tomli_w.dumps(d)
diff --git a/plugins/lookup/jsonnet.py b/plugins/lookup/jsonnet.py
new file mode 100644
index 0000000..925d994
--- /dev/null
+++ b/plugins/lookup/jsonnet.py
@@ -0,0 +1,84 @@
+# Copyright (c) 2023 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.
+
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+import json
+import os
+
+from ansible.errors import AnsibleLookupError
+from ansible.plugins.lookup import LookupBase
+
+try:
+    import rjsonnet
+
+    HAS_RJSONNET = True
+except ImportError:
+    HAS_RJSONNET = False
+
+
+DOCUMENTATION = """
+  name: jsonnet
+  author: Mohammed Naser (@mnaser) <mnaser@vexxhost.com>
+  version_added: "0.13"
+  short_description: Compile jsonnet file
+  description:
+    - This lookup returns the compiled jsonnet file
+  options:
+    _terms:
+      description: jsonnet file path
+      required: True
+"""
+
+
+def import_callback(base, rel):
+    """
+    :param base: The directory containing the code that did the import.
+    :param rel: The path imported by the code.
+    """
+    path = os.path.join(base, rel)
+    with open(path, "r") as f:
+        return path, f.read()
+
+
+class LookupModule(LookupBase):
+    def run(self, terms, variables=None, **kwargs):
+        if not HAS_RJSONNET:
+            raise AnsibleLookupError("rjsonnet is required for this lookup")
+
+        ret = []
+
+        for term in terms:
+            file = self.find_file_in_search_path(variables, "files", term)
+            if not file:
+                raise AnsibleLookupError("Could not find file %s" % term)
+
+            def import_callback(base, rel):
+                """
+                :param base: The directory containing the code that did the import.
+                :param rel: The path imported by the code.
+                """
+                path = self.find_file_in_search_path(variables, base, rel)
+                with open(path, "r") as f:
+                    return path, f.read()
+
+            compiled_string = rjsonnet.evaluate_file(
+                file, import_callback=import_callback
+            )
+            compiled = json.loads(compiled_string)
+            ret.append(compiled)
+
+        return ret
diff --git a/poetry.lock b/poetry.lock
index ba01ff2..4c33614 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -467,14 +467,6 @@
 python-versions = ">=3.7"
 
 [[package]]
-name = "jsonnet"
-version = "0.18.0"
-description = "Python bindings for Jsonnet - The data templating language"
-category = "main"
-optional = true
-python-versions = "*"
-
-[[package]]
 name = "jsonpatch"
 version = "1.32"
 description = "Apply JSON-Patches (RFC 6902)"
@@ -874,21 +866,6 @@
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 
 [[package]]
-name = "pydantic"
-version = "1.10.4"
-description = "Data validation and settings management using python type hints"
-category = "main"
-optional = true
-python-versions = ">=3.7"
-
-[package.dependencies]
-typing-extensions = ">=4.2.0"
-
-[package.extras]
-dotenv = ["python-dotenv (>=0.10.4)"]
-email = ["email-validator (>=1.0.3)"]
-
-[[package]]
 name = "pyflakes"
 version = "2.5.0"
 description = "passive checker of Python programs"
@@ -1173,11 +1150,11 @@
 jupyter = ["ipywidgets (>=7.5.1,<9)"]
 
 [[package]]
-name = "schematics"
-version = "2.1.1"
-description = "Python Data Structures for Humans"
+name = "rjsonnet"
+version = "0.5.2"
+description = "Python bindings to Rust jrsonnet crate"
 category = "main"
-optional = true
+optional = false
 python-versions = "*"
 
 [[package]]
@@ -1238,7 +1215,7 @@
 name = "tomli"
 version = "2.0.1"
 description = "A lil' TOML parser"
-category = "main"
+category = "dev"
 optional = false
 python-versions = ">=3.7"
 
@@ -1324,12 +1301,12 @@
 multidict = ">=4.0"
 
 [extras]
-operator = ["schematics", "pydantic", "pykube-ng", "tomli", "jsonnet", "kopf"]
+operator = ["pykube-ng", "jsonnet", "kopf"]
 
 [metadata]
 lock-version = "1.1"
 python-versions = "^3.10"
-content-hash = "034ac062f5dca8bb749b33d8a4cd4d646a41e7c0da24771ea1522041fa183413"
+content-hash = "30ef77f5ad337a807a63b695477163d8d7ee19bd2c7a4e58921a56c5570049c3"
 
 [metadata.files]
 aiohttp = [
@@ -1773,9 +1750,6 @@
     {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"},
     {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"},
 ]
-jsonnet = [
-    {file = "jsonnet-0.18.0.tar.gz", hash = "sha256:4ccd13427e9097b6b7d6d38f78f638a55ab8b452a257639e8e9af2178ec235d4"},
-]
 jsonpatch = [
     {file = "jsonpatch-1.32-py2.py3-none-any.whl", hash = "sha256:26ac385719ac9f54df8a2f0827bb8253aa3ea8ab7b3368457bcdb8c14595a397"},
     {file = "jsonpatch-1.32.tar.gz", hash = "sha256:b6ddfe6c3db30d81a96aaeceb6baf916094ffa23d7dd5fa2c13e13f8b6e600c2"},
@@ -2098,44 +2072,6 @@
     {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
     {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
 ]
-pydantic = [
-    {file = "pydantic-1.10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5635de53e6686fe7a44b5cf25fcc419a0d5e5c1a1efe73d49d48fe7586db854"},
-    {file = "pydantic-1.10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6dc1cc241440ed7ca9ab59d9929075445da6b7c94ced281b3dd4cfe6c8cff817"},
-    {file = "pydantic-1.10.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51bdeb10d2db0f288e71d49c9cefa609bca271720ecd0c58009bd7504a0c464c"},
-    {file = "pydantic-1.10.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78cec42b95dbb500a1f7120bdf95c401f6abb616bbe8785ef09887306792e66e"},
-    {file = "pydantic-1.10.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8775d4ef5e7299a2f4699501077a0defdaac5b6c4321173bcb0f3c496fbadf85"},
-    {file = "pydantic-1.10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:572066051eeac73d23f95ba9a71349c42a3e05999d0ee1572b7860235b850cc6"},
-    {file = "pydantic-1.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:7feb6a2d401f4d6863050f58325b8d99c1e56f4512d98b11ac64ad1751dc647d"},
-    {file = "pydantic-1.10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:39f4a73e5342b25c2959529f07f026ef58147249f9b7431e1ba8414a36761f53"},
-    {file = "pydantic-1.10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:983e720704431a6573d626b00662eb78a07148c9115129f9b4351091ec95ecc3"},
-    {file = "pydantic-1.10.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75d52162fe6b2b55964fbb0af2ee58e99791a3138588c482572bb6087953113a"},
-    {file = "pydantic-1.10.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fdf8d759ef326962b4678d89e275ffc55b7ce59d917d9f72233762061fd04a2d"},
-    {file = "pydantic-1.10.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:05a81b006be15655b2a1bae5faa4280cf7c81d0e09fcb49b342ebf826abe5a72"},
-    {file = "pydantic-1.10.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d88c4c0e5c5dfd05092a4b271282ef0588e5f4aaf345778056fc5259ba098857"},
-    {file = "pydantic-1.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:6a05a9db1ef5be0fe63e988f9617ca2551013f55000289c671f71ec16f4985e3"},
-    {file = "pydantic-1.10.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:887ca463c3bc47103c123bc06919c86720e80e1214aab79e9b779cda0ff92a00"},
-    {file = "pydantic-1.10.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdf88ab63c3ee282c76d652fc86518aacb737ff35796023fae56a65ced1a5978"},
-    {file = "pydantic-1.10.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a48f1953c4a1d9bd0b5167ac50da9a79f6072c63c4cef4cf2a3736994903583e"},
-    {file = "pydantic-1.10.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a9f2de23bec87ff306aef658384b02aa7c32389766af3c5dee9ce33e80222dfa"},
-    {file = "pydantic-1.10.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:cd8702c5142afda03dc2b1ee6bc358b62b3735b2cce53fc77b31ca9f728e4bc8"},
-    {file = "pydantic-1.10.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6e7124d6855b2780611d9f5e1e145e86667eaa3bd9459192c8dc1a097f5e9903"},
-    {file = "pydantic-1.10.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b53e1d41e97063d51a02821b80538053ee4608b9a181c1005441f1673c55423"},
-    {file = "pydantic-1.10.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:55b1625899acd33229c4352ce0ae54038529b412bd51c4915349b49ca575258f"},
-    {file = "pydantic-1.10.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:301d626a59edbe5dfb48fcae245896379a450d04baeed50ef40d8199f2733b06"},
-    {file = "pydantic-1.10.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6f9d649892a6f54a39ed56b8dfd5e08b5f3be5f893da430bed76975f3735d15"},
-    {file = "pydantic-1.10.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d7b5a3821225f5c43496c324b0d6875fde910a1c2933d726a743ce328fbb2a8c"},
-    {file = "pydantic-1.10.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f2f7eb6273dd12472d7f218e1fef6f7c7c2f00ac2e1ecde4db8824c457300416"},
-    {file = "pydantic-1.10.4-cp38-cp38-win_amd64.whl", hash = "sha256:4b05697738e7d2040696b0a66d9f0a10bec0efa1883ca75ee9e55baf511909d6"},
-    {file = "pydantic-1.10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a9a6747cac06c2beb466064dda999a13176b23535e4c496c9d48e6406f92d42d"},
-    {file = "pydantic-1.10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eb992a1ef739cc7b543576337bebfc62c0e6567434e522e97291b251a41dad7f"},
-    {file = "pydantic-1.10.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:990406d226dea0e8f25f643b370224771878142155b879784ce89f633541a024"},
-    {file = "pydantic-1.10.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e82a6d37a95e0b1b42b82ab340ada3963aea1317fd7f888bb6b9dfbf4fff57c"},
-    {file = "pydantic-1.10.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9193d4f4ee8feca58bc56c8306bcb820f5c7905fd919e0750acdeeeef0615b28"},
-    {file = "pydantic-1.10.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2b3ce5f16deb45c472dde1a0ee05619298c864a20cded09c4edd820e1454129f"},
-    {file = "pydantic-1.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:9cbdc268a62d9a98c56e2452d6c41c0263d64a2009aac69246486f01b4f594c4"},
-    {file = "pydantic-1.10.4-py3-none-any.whl", hash = "sha256:4948f264678c703f3877d1c8877c4e3b2e12e549c57795107f08cf70c6ec7774"},
-    {file = "pydantic-1.10.4.tar.gz", hash = "sha256:b9a3859f24eb4e097502a3be1fb4b2abb79b6103dd9e2e0edb70613a4459a648"},
-]
 pyflakes = [
     {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"},
     {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"},
@@ -2377,9 +2313,22 @@
     {file = "rich-13.3.0-py3-none-any.whl", hash = "sha256:dd62e48284e540ae03235258699c07d5b48dbc1fd1905c6091b5ce72d7c69195"},
     {file = "rich-13.3.0.tar.gz", hash = "sha256:98ce3ede653f23fbc02b0f8bd8a16a6b2bb4cfbdcfccf736eb28ba2810af241e"},
 ]
-schematics = [
-    {file = "schematics-2.1.1-py2.py3-none-any.whl", hash = "sha256:be2d451bfb86789975e5ec0864aec569b63cea9010f0d24cbbd992a4e564c647"},
-    {file = "schematics-2.1.1.tar.gz", hash = "sha256:34c87f51a25063bb498ae1cc201891b134cfcb329baf9e9f4f3ae869b767560f"},
+rjsonnet = [
+    {file = "rjsonnet-0.5.2-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:f6e72ea6859cd7d64dd04a7c6ba53d7abe6437336b8e51768e482b82f352b380"},
+    {file = "rjsonnet-0.5.2-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:162e3a5a01591ccc4b0e589a1afcbbe01abab3762fef110cb25f6dbd5be18b1f"},
+    {file = "rjsonnet-0.5.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2fdf3f967b924020a752c45e772c107586f458c71dff1de18977cf5cc84de48"},
+    {file = "rjsonnet-0.5.2-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a3159d1309bbff4e34406e1f0259191bba5d7b7f91021061f6211298bdc22307"},
+    {file = "rjsonnet-0.5.2-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:357a75e5ea45c674c430b7a7146d3be182e64a1b4fcb569ba9878e0ca04e8369"},
+    {file = "rjsonnet-0.5.2-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d14d5245c0448676125556578d489b93c13525ceb4313aa6ddfba9677b5342c5"},
+    {file = "rjsonnet-0.5.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5a8b72d318b2f1f24df3f7f5ed5436522f02aaf3ee8b8f4d635417fe863f6a7"},
+    {file = "rjsonnet-0.5.2-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4bae1eb251b4e2cd7aadcc57ba99e009f1a0bb257d348095f18e7fb3f882ab36"},
+    {file = "rjsonnet-0.5.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6b01c34690d64068fb01ad62356b5b7b40bdc1b8804cfbcc6fa6a80ee86e6905"},
+    {file = "rjsonnet-0.5.2-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:1a8a7e587fcab68253d47bb8b76b7fe75821f649612dbca9bc43caccd8d883b9"},
+    {file = "rjsonnet-0.5.2-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:1388aeb0b3caa6ce206517f8da95ed22ccca074b6f8eca94a91d526bb76bb392"},
+    {file = "rjsonnet-0.5.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e0f5f447ea76fb279d3310ff695cee6fee52c0101d2260bafb62de2abdc44c8d"},
+    {file = "rjsonnet-0.5.2-cp37-abi3-win32.whl", hash = "sha256:f402453f6051893ddc83377afbda6bcf6cc2a81613a65090d8dc50327ab8996c"},
+    {file = "rjsonnet-0.5.2-cp37-abi3-win_amd64.whl", hash = "sha256:6b7c5d2d1ee0fed32f448681cc011b93bfb718290173a15f5f055124c089ecec"},
+    {file = "rjsonnet-0.5.2.tar.gz", hash = "sha256:95062261ffdef831a9e44a35e2d3a97a91d3870dac364ed6beae57d0851eeecd"},
 ]
 six = [
     {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
diff --git a/pyproject.toml b/pyproject.toml
index 6948ea2..a717c2a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -10,25 +10,16 @@
 
 [tool.poetry.dependencies]
 python = "^3.10"
-pydantic = { version = "^1.10.4", optional = true }
-schematics = { version = "^2.1.1", optional = true }
 pykube-ng = { version = "^22.7.0", optional = true }
-tomli = { version = "^2.0.1", optional = true }
-jsonnet = { version = "^0.18.0", optional = true }
 kopf = { version = "^1.36.0", optional = true, extras = ["uvloop"] }
 openstacksdk = "<0.99.0"
 docker-image-py = "^0.1.12"
 "oslo.serialization" = "^5.0.0"
+rjsonnet = "^0.5.2"
 
 [tool.poetry.extras]
 operator = [
-  "schematics",
-  "pydantic",
   "pykube-ng",
-  "structlog",
-  "taskflow",
-  "tomli",
-  "jsonnet",
   "kopf",
 ]
 
@@ -36,14 +27,11 @@
 ansible-core = "^2.13.4"
 flake8 = "^5.0.4"
 flake8-isort = "^4.2.0"
-hypothesis = "6.61.0"
 jmespath = "^1.0.1"
 molecule = "^4.0.1"
 pytest = "^7.1.3"
 pytest-cov = "^3.0.0"
 pytest-mock = "^3.8.2"
-tomli-w = "^1.0.0"
-responses = "^0.22.0"
 pytest-forked = "^1.4.0"
 pytest-xdist = "^3.1.0"
 
diff --git a/roles/atmosphere/defaults/main.yml b/roles/atmosphere/defaults/main.yml
index 377ff32..34db33e 100644
--- a/roles/atmosphere/defaults/main.yml
+++ b/roles/atmosphere/defaults/main.yml
@@ -1,9 +1 @@
 atmosphere_image: "{{ atmosphere_images['atmosphere'] | vexxhost.atmosphere.docker_image('ref') }}"
-
-atmosphere_config:
-  image_repository: "{{ atmosphere_image_repository | default('') }}"
-  kube_prometheus_stack:
-    overrides: "{{ kube_prometheus_stack_values | default({}) }}"
-  opsgenie: "{{ atmosphere_opsgenie_config | default({}) }}"
-
-atmosphere_cloud_spec: {}
diff --git a/roles/atmosphere/tasks/main.yml b/roles/atmosphere/tasks/main.yml
index e6ac04b..9a6cbd0 100644
--- a/roles/atmosphere/tasks/main.yml
+++ b/roles/atmosphere/tasks/main.yml
@@ -11,6 +11,5 @@
       - cluster_role_binding.yml
       - namespace.yml
       - service_account.yml
-      - secret.yml
       - deployment.yml
       - resources.yml
diff --git a/roles/atmosphere/templates/crds.yml b/roles/atmosphere/templates/crds.yml
index 2a31263..2507006 100644
--- a/roles/atmosphere/templates/crds.yml
+++ b/roles/atmosphere/templates/crds.yml
@@ -2,32 +2,6 @@
 apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
-  name: clouds.atmosphere.vexxhost.com
-spec:
-  scope: Namespaced
-  group: atmosphere.vexxhost.com
-  names:
-    kind: Cloud
-    plural: clouds
-    singular: cloud
-  versions:
-    - name: v1alpha1
-      served: true
-      storage: true
-      schema:
-        openAPIV3Schema:
-          type: object
-          properties:
-            spec:
-              type: object
-              x-kubernetes-preserve-unknown-fields: true
-            status:
-              type: object
-              x-kubernetes-preserve-unknown-fields: true
----
-apiVersion: apiextensions.k8s.io/v1
-kind: CustomResourceDefinition
-metadata:
   name: endpoints.identity.openstack.atmosphere.vexxhost.com
 spec:
   scope: Namespaced
diff --git a/roles/atmosphere/templates/resources.yml b/roles/atmosphere/templates/resources.yml
index c52dbc1..6e7dc4d 100644
--- a/roles/atmosphere/templates/resources.yml
+++ b/roles/atmosphere/templates/resources.yml
@@ -23,10 +23,3 @@
     name: member
   impliedRoleRef:
     name: load-balancer-member
----
-apiVersion: atmosphere.vexxhost.com/v1alpha1
-kind: Cloud
-metadata:
-  name: atmosphere
-  namespace: openstack
-spec: {{ _atmosphere_cloud_spec | combine(atmosphere_cloud_spec, recursive=True) | to_json }}
diff --git a/roles/atmosphere/templates/secret.yml b/roles/atmosphere/templates/secret.yml
deleted file mode 100644
index 1ea5263..0000000
--- a/roles/atmosphere/templates/secret.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-apiVersion: v1
-kind: Secret
-metadata:
-  name: atmosphere-config
-  namespace: openstack
-data:
-  config.toml: "{{ atmosphere_config | vexxhost.atmosphere.to_toml | b64encode }}"
diff --git a/roles/atmosphere/vars/main.yml b/roles/atmosphere/vars/main.yml
deleted file mode 100644
index 2710cb7..0000000
--- a/roles/atmosphere/vars/main.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-_atmosphere_cloud_spec:
-  imageRepository: "{{ atmosphere_image_repository | default(None) }}"
-  ingressClassName: "{{ atmosphere_ingress_class_name }}"
-  certManagerClusterIssuer: "{{ atmosphere_ingress_cluster_issuer }}"
-  regionName: "{{ openstack_helm_endpoints_region_name }}"
diff --git a/roles/ipmi_exporter/tasks/main.yml b/roles/ipmi_exporter/tasks/main.yml
index 578dccd..9e9ad80 100644
--- a/roles/ipmi_exporter/tasks/main.yml
+++ b/roles/ipmi_exporter/tasks/main.yml
@@ -74,10 +74,3 @@
                           - key: feature.node.kubernetes.io/cpu-cpuid.HYPERVISOR
                             operator: NotIn
                             values: ["true"]
-  # NOTE(mnaser): Since we haven't moved to the operator pattern yet, we need to
-  #               keep retrying a few times as the CRDs might not be installed
-  #               yet.
-  retries: 60
-  delay: 5
-  register: _result
-  until: _result is not failed
diff --git a/roles/kube_prometheus_stack/defaults/main.yml b/roles/kube_prometheus_stack/defaults/main.yml
new file mode 100644
index 0000000..7b904fd
--- /dev/null
+++ b/roles/kube_prometheus_stack/defaults/main.yml
@@ -0,0 +1,20 @@
+# Copyright (c) 2023 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.
+
+kube_prometheus_stack_helm_release_name: kube-prometheus-stack
+kube_prometheus_stack_helm_chart_path: "{{ role_path }}/../../charts/kube-prometheus-stack/"
+kube_prometheus_stack_helm_chart_ref: /usr/local/src/kube-prometheus-stack
+
+kube_prometheus_stack_helm_release_namespace: monitoring
+kube_prometheus_stack_helm_values: {}
diff --git a/atmosphere/jsonnet/__init__.py b/roles/kube_prometheus_stack/files/jsonnet/__init__.py
similarity index 100%
rename from atmosphere/jsonnet/__init__.py
rename to roles/kube_prometheus_stack/files/jsonnet/__init__.py
diff --git a/atmosphere/jsonnet/ceph.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/ceph.libsonnet
similarity index 89%
rename from atmosphere/jsonnet/ceph.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/ceph.libsonnet
index b72a889..b803d02 100644
--- a/atmosphere/jsonnet/ceph.libsonnet
+++ b/roles/kube_prometheus_stack/files/jsonnet/ceph.libsonnet
@@ -1,4 +1,4 @@
-local ceph = import 'vendor/ceph-mixin/mixin.libsonnet';
+local ceph = import 'vendor/github.com/ceph/ceph/monitoring/ceph-mixin/mixin.libsonnet';
 
 local DISABLED_NODE_ALERTS = [
   // * Dropped `CephNodeDiskspaceWarning` because we already have a
diff --git a/atmosphere/jsonnet/jsonnetfile.json b/roles/kube_prometheus_stack/files/jsonnet/jsonnetfile.json
similarity index 100%
rename from atmosphere/jsonnet/jsonnetfile.json
rename to roles/kube_prometheus_stack/files/jsonnet/jsonnetfile.json
diff --git a/atmosphere/jsonnet/jsonnetfile.lock.json b/roles/kube_prometheus_stack/files/jsonnet/jsonnetfile.lock.json
similarity index 100%
rename from atmosphere/jsonnet/jsonnetfile.lock.json
rename to roles/kube_prometheus_stack/files/jsonnet/jsonnetfile.lock.json
diff --git a/atmosphere/jsonnet/legacy.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/legacy.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/legacy.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/legacy.libsonnet
diff --git a/atmosphere/jsonnet/mysqld.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/mysqld.libsonnet
similarity index 77%
rename from atmosphere/jsonnet/mysqld.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/mysqld.libsonnet
index 9ddf46b..034f2aa 100644
--- a/atmosphere/jsonnet/mysqld.libsonnet
+++ b/roles/kube_prometheus_stack/files/jsonnet/mysqld.libsonnet
@@ -46,9 +46,9 @@
   prometheusAlerts: {
     groups:
       (
-        std.parseYaml(importstr 'vendor/mysqld-mixin/alerts/general.yaml').groups +
-        std.parseYaml(importstr 'vendor/mysqld-mixin/alerts/galera.yaml').groups +
-        std.parseYaml(importstr 'vendor/mysqld-mixin/rules/rules.yaml').groups
+        std.parseYaml(importstr 'vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/alerts/general.yaml').groups +
+        std.parseYaml(importstr 'vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/alerts/galera.yaml').groups +
+        std.parseYaml(importstr 'vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/rules/rules.yaml').groups
       ),
   },
 } + addAlerts
diff --git a/atmosphere/jsonnet/rules.jsonnet b/roles/kube_prometheus_stack/files/jsonnet/rules.jsonnet
similarity index 65%
rename from atmosphere/jsonnet/rules.jsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/rules.jsonnet
index 610332f..e562e6e 100644
--- a/atmosphere/jsonnet/rules.jsonnet
+++ b/roles/kube_prometheus_stack/files/jsonnet/rules.jsonnet
@@ -2,9 +2,9 @@
 
 local ceph = import 'ceph.libsonnet';
 local mysqld = import 'mysqld.libsonnet';
-local memcached = import 'vendor/memcached-mixin/mixin.libsonnet';
+local memcached = import 'vendor/github.com/grafana/jsonnet-libs/memcached-mixin/mixin.libsonnet';
 
-local coredns = (import 'vendor/coredns-mixin/mixin.libsonnet') + {
+local coredns = (import 'vendor/github.com/povilasv/coredns-mixin/mixin.libsonnet') + {
   _config+:: {
     corednsSelector: 'job="coredns"',
   },
diff --git a/atmosphere/jsonnet/vendor/ceph-mixin b/roles/kube_prometheus_stack/files/jsonnet/vendor/ceph-mixin
similarity index 100%
rename from atmosphere/jsonnet/vendor/ceph-mixin
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/ceph-mixin
diff --git a/atmosphere/jsonnet/vendor/coredns-mixin b/roles/kube_prometheus_stack/files/jsonnet/vendor/coredns-mixin
similarity index 100%
rename from atmosphere/jsonnet/vendor/coredns-mixin
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/coredns-mixin
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/.gitignore b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/.gitignore
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/.gitignore
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/.gitignore
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/CMakeLists.txt b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/CMakeLists.txt
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/CMakeLists.txt
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/CMakeLists.txt
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/Makefile b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/Makefile
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/Makefile
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/Makefile
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/README.md b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/README.md
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/README.md
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/README.md
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/alerts.jsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/alerts.jsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/alerts.jsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/alerts.jsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/alerts.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/alerts.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/alerts.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/alerts.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/config.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/config.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/config.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/config.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards.jsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards.jsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards.jsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards.jsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/cephfs.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/cephfs.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/cephfs.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/cephfs.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/host.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/host.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/host.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/host.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/osd.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/osd.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/osd.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/osd.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/pool.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/pool.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/pool.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/pool.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/rbd.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/rbd.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/rbd.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/rbd.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/rgw.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/rgw.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/rgw.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/rgw.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/utils.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/utils.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/utils.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards/utils.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/.lint b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/.lint
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/.lint
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/.lint
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/ceph-cluster.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/ceph-cluster.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/ceph-cluster.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/ceph-cluster.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/cephfs-overview.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/cephfs-overview.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/cephfs-overview.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/cephfs-overview.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/host-details.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/host-details.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/host-details.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/host-details.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/hosts-overview.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/hosts-overview.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/hosts-overview.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/hosts-overview.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/osd-device-details.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/osd-device-details.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/osd-device-details.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/osd-device-details.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/osds-overview.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/osds-overview.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/osds-overview.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/osds-overview.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/pool-detail.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/pool-detail.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/pool-detail.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/pool-detail.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/pool-overview.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/pool-overview.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/pool-overview.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/pool-overview.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/radosgw-detail.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/radosgw-detail.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/radosgw-detail.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/radosgw-detail.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/radosgw-overview.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/radosgw-overview.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/radosgw-overview.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/radosgw-overview.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/radosgw-sync-overview.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/radosgw-sync-overview.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/radosgw-sync-overview.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/radosgw-sync-overview.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/rbd-details.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/rbd-details.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/rbd-details.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/rbd-details.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/rbd-overview.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/rbd-overview.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/rbd-overview.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/dashboards_out/rbd-overview.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/jsonnet-bundler-build.sh b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/jsonnet-bundler-build.sh
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/jsonnet-bundler-build.sh
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/jsonnet-bundler-build.sh
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/jsonnetfile.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/jsonnetfile.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/jsonnetfile.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/jsonnetfile.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/jsonnetfile.lock.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/jsonnetfile.lock.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/jsonnetfile.lock.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/jsonnetfile.lock.json
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/lint-jsonnet.sh b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/lint-jsonnet.sh
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/lint-jsonnet.sh
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/lint-jsonnet.sh
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/mixin.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/mixin.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/mixin.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/mixin.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/prometheus_alerts.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/prometheus_alerts.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/prometheus_alerts.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/prometheus_alerts.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/prometheus_alerts.yml b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/prometheus_alerts.yml
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/prometheus_alerts.yml
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/prometheus_alerts.yml
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/requirements-alerts.txt b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/requirements-alerts.txt
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/requirements-alerts.txt
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/requirements-alerts.txt
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/requirements-grafonnet.txt b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/requirements-grafonnet.txt
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/requirements-grafonnet.txt
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/requirements-grafonnet.txt
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/requirements-lint.txt b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/requirements-lint.txt
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/requirements-lint.txt
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/requirements-lint.txt
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/test-jsonnet.sh b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/test-jsonnet.sh
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/test-jsonnet.sh
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/test-jsonnet.sh
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/README.md b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/README.md
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/README.md
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/README.md
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/__init__.py b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/__init__.py
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/__init__.py
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/__init__.py
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/settings.py b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/settings.py
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/settings.py
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/settings.py
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/test_alerts.yml b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/test_alerts.yml
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/test_alerts.yml
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/test_alerts.yml
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/test_syntax.py b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/test_syntax.py
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/test_syntax.py
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/test_syntax.py
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/test_unittests.py b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/test_unittests.py
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/test_unittests.py
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/test_unittests.py
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/utils.py b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/utils.py
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/utils.py
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/utils.py
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/validate_rules.py b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/validate_rules.py
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/validate_rules.py
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_alerts/validate_rules.py
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/__init__.py b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/__init__.py
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/__init__.py
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/__init__.py
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/__init__.py b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/__init__.py
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/__init__.py
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/__init__.py
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/ceph-cluster.feature b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/ceph-cluster.feature
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/ceph-cluster.feature
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/ceph-cluster.feature
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/environment.py b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/environment.py
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/environment.py
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/environment.py
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/host-details.feature b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/host-details.feature
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/host-details.feature
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/host-details.feature
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/hosts_overview.feature b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/hosts_overview.feature
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/hosts_overview.feature
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/hosts_overview.feature
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/osd-device-details.feature b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/osd-device-details.feature
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/osd-device-details.feature
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/osd-device-details.feature
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/osds-overview.feature b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/osds-overview.feature
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/osds-overview.feature
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/osds-overview.feature
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/radosgw-detail.feature b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/radosgw-detail.feature
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/radosgw-detail.feature
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/radosgw-detail.feature
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/radosgw_overview.feature b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/radosgw_overview.feature
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/radosgw_overview.feature
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/radosgw_overview.feature
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/self.feature b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/self.feature
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/self.feature
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/self.feature
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/steps/__init__.py b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/steps/__init__.py
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/steps/__init__.py
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/features/steps/__init__.py
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/requirements.txt b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/requirements.txt
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/requirements.txt
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/requirements.txt
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/util.py b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/util.py
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/util.py
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tests_dashboards/util.py
diff --git a/atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tox.ini b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tox.ini
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tox.ini
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/ceph/ceph/monitoring/ceph-mixin/tox.ini
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/alert_condition.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/alert_condition.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/alert_condition.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/alert_condition.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/alertlist.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/annotation.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/bar_gauge_panel.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/bar_gauge_panel.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/bar_gauge_panel.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/bar_gauge_panel.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudmonitoring.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudmonitoring.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudmonitoring.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudmonitoring.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/cloudwatch.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashboard.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/dashlist.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/elasticsearch.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge_panel.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge_panel.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge_panel.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/gauge_panel.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/graph_panel.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/graphite.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/heatmap_panel.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/link.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/log_panel.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/loki.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/pie_chart_panel.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/pie_chart_panel.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/pie_chart_panel.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/pie_chart_panel.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/pluginlist.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/prometheus.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/row.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/singlestat.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/sql.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/stat_panel.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/stat_panel.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/stat_panel.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/stat_panel.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/table_panel.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/template.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/text.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/timepicker.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/transformation.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/transformation.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/transformation.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/grafonnet-lib/grafonnet/transformation.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/grafana-builder/grafana.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/grafana-builder/grafana.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/grafana-builder/grafana.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/grafana-builder/grafana.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/README.md b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/README.md
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/README.md
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/README.md
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/alerts.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/alerts.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/alerts.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/alerts.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/dashboard.png b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/dashboard.png
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/dashboard.png
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/dashboard.png
Binary files differ
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/dashboards.jsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/dashboards.jsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/dashboards.jsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/dashboards.jsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/dashboards.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/dashboards.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/dashboards.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/dashboards.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/jsonnetfile.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/jsonnetfile.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/jsonnetfile.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/jsonnetfile.json
diff --git a/atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/mixin.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/mixin.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/mixin.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/grafana/jsonnet-libs/memcached-mixin/mixin.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/.circleci/config.yml b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/.circleci/config.yml
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/.circleci/config.yml
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/.circleci/config.yml
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/.gitignore b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/.gitignore
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/.gitignore
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/.gitignore
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/LICENSE b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/LICENSE
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/LICENSE
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/LICENSE
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/Makefile b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/Makefile
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/Makefile
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/Makefile
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/README.md b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/README.md
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/README.md
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/README.md
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/add-runbook-links.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/add-runbook-links.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/add-runbook-links.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/add-runbook-links.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/alerts.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/alerts.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/alerts.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/alerts.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/coredns.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/coredns.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/coredns.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/coredns.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/forward.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/forward.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/forward.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/alerts/forward.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/config.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/config.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/config.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/config.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/dashboards/coredns.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/dashboards/coredns.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/dashboards/coredns.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/dashboards/coredns.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/dashboards/dashboards.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/dashboards/dashboards.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/dashboards/dashboards.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/dashboards/dashboards.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/jsonnetfile.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/jsonnetfile.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/jsonnetfile.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/jsonnetfile.json
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/lib/alerts.jsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/lib/alerts.jsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/lib/alerts.jsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/lib/alerts.jsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/lib/dashboards.jsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/lib/dashboards.jsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/lib/dashboards.jsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/lib/dashboards.jsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/lib/utils.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/lib/utils.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/lib/utils.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/lib/utils.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/mixin.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/mixin.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/mixin.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/mixin.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/tests.yaml b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/tests.yaml
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/povilasv/coredns-mixin/tests.yaml
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/povilasv/coredns-mixin/tests.yaml
diff --git a/atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/.gitignore b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/.gitignore
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/.gitignore
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/.gitignore
diff --git a/atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/Makefile b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/Makefile
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/Makefile
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/Makefile
diff --git a/atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/README.md b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/README.md
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/README.md
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/README.md
diff --git a/atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/alerts/galera.yaml b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/alerts/galera.yaml
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/alerts/galera.yaml
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/alerts/galera.yaml
diff --git a/atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/alerts/general.yaml b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/alerts/general.yaml
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/alerts/general.yaml
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/alerts/general.yaml
diff --git a/atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/dashboards/mysql-overview.json b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/dashboards/mysql-overview.json
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/dashboards/mysql-overview.json
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/dashboards/mysql-overview.json
diff --git a/atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/mixin.libsonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/mixin.libsonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/mixin.libsonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/mixin.libsonnet
diff --git a/atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/rules/rules.yaml b/roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/rules/rules.yaml
similarity index 100%
rename from atmosphere/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/rules/rules.yaml
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/github.com/prometheus/mysqld_exporter/mysqld-mixin/rules/rules.yaml
diff --git a/atmosphere/jsonnet/vendor/grafana-builder b/roles/kube_prometheus_stack/files/jsonnet/vendor/grafana-builder
similarity index 100%
rename from atmosphere/jsonnet/vendor/grafana-builder
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/grafana-builder
diff --git a/atmosphere/jsonnet/vendor/grafonnet b/roles/kube_prometheus_stack/files/jsonnet/vendor/grafonnet
similarity index 100%
rename from atmosphere/jsonnet/vendor/grafonnet
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/grafonnet
diff --git a/atmosphere/jsonnet/vendor/memcached-mixin b/roles/kube_prometheus_stack/files/jsonnet/vendor/memcached-mixin
similarity index 100%
rename from atmosphere/jsonnet/vendor/memcached-mixin
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/memcached-mixin
diff --git a/atmosphere/jsonnet/vendor/mysqld-mixin b/roles/kube_prometheus_stack/files/jsonnet/vendor/mysqld-mixin
similarity index 100%
rename from atmosphere/jsonnet/vendor/mysqld-mixin
rename to roles/kube_prometheus_stack/files/jsonnet/vendor/mysqld-mixin
diff --git a/roles/kube_prometheus_stack/meta/main.yml b/roles/kube_prometheus_stack/meta/main.yml
index 8dc536b..c5fe74f 100644
--- a/roles/kube_prometheus_stack/meta/main.yml
+++ b/roles/kube_prometheus_stack/meta/main.yml
@@ -25,4 +25,7 @@
 
 dependencies:
   - role: defaults
-  - role: atmosphere
+  - role: upload_helm_chart
+    vars:
+      upload_helm_chart_src: "{{ kube_prometheus_stack_helm_chart_path }}"
+      upload_helm_chart_dest: "{{ kube_prometheus_stack_helm_chart_ref }}"
diff --git a/roles/kube_prometheus_stack/tasks/main.yml b/roles/kube_prometheus_stack/tasks/main.yml
index 6eebd3f..3d4bd07 100644
--- a/roles/kube_prometheus_stack/tasks/main.yml
+++ b/roles/kube_prometheus_stack/tasks/main.yml
@@ -40,10 +40,35 @@
         ca.crt: "{{ _etcd_ca_crt.content }}"
         healthcheck-client.crt: "{{ _etcd_healthcheck_client_crt.content }}"
         healthcheck-client.key: "{{ _etcd_healthcheck_client_key.content }}"
-  # NOTE(mnaser): Since we haven't moved to the operator pattern yet, we need to
-  #               keep retrying a few times as the namespace might not be
-  #               created yet.
-  retries: 60
-  delay: 5
-  register: _result
-  until: _result is not failed
+
+- name: Uninstall the legacy HelmRelease
+  run_once: true
+  block:
+    - name: Suspend the existing HelmRelease
+      kubernetes.core.k8s:
+        state: patched
+        api_version: helm.toolkit.fluxcd.io/v2beta1
+        kind: HelmRelease
+        name: "{{ kube_prometheus_stack_helm_release_name }}"
+        namespace: "{{ kube_prometheus_stack_helm_release_namespace }}"
+        definition:
+          spec:
+            suspend: true
+
+    - name: Remove the existing HelmRelease
+      kubernetes.core.k8s:
+        state: absent
+        api_version: helm.toolkit.fluxcd.io/v2beta1
+        kind: HelmRelease
+        name: "{{ kube_prometheus_stack_helm_release_name }}"
+        namespace: "{{ kube_prometheus_stack_helm_release_namespace }}"
+
+- name: Deploy Helm chart
+  run_once: true
+  kubernetes.core.helm:
+    name: "{{ kube_prometheus_stack_helm_release_name }}"
+    chart_ref: "{{ kube_prometheus_stack_helm_chart_ref }}"
+    release_namespace: "{{ kube_prometheus_stack_helm_release_namespace }}"
+    create_namespace: true
+    kubeconfig: /etc/kubernetes/admin.conf
+    values: "{{ _kube_prometheus_stack_helm_values | combine(kube_prometheus_stack_helm_values, recursive=True) }}"
diff --git a/roles/kube_prometheus_stack/vars/main.yml b/roles/kube_prometheus_stack/vars/main.yml
new file mode 100644
index 0000000..ba9ee9b
--- /dev/null
+++ b/roles/kube_prometheus_stack/vars/main.yml
@@ -0,0 +1,244 @@
+_kube_prometheus_stack_helm_values:
+  defaultRules:
+    disabled:
+      # NOTE(mnaser): https://github.com/prometheus-community/helm-charts/issues/144
+      #               https://github.com/openshift/cluster-monitoring-operator/issues/248
+      etcdHighNumberOfFailedGRPCRequests: true
+  alertmanager:
+    serviceMonitor:
+      relabelings: &relabelings_instance_to_pod_name
+        - &relabeling_set_pod_name_to_instance
+          sourceLabels:
+            - __meta_kubernetes_pod_name
+          targetLabel: instance
+        - &relabeling_drop_all_kubernetes_labels
+          action: labeldrop
+          regex: ^(container|endpoint|namespace|pod|node|service)$
+    alertmanagerSpec:
+      image:
+        repository: "{{ atmosphere_images['alertmanager'] | vexxhost.atmosphere.docker_image('name') }}"
+        tag: "{{ atmosphere_images['alertmanager'] | vexxhost.atmosphere.docker_image('tag') }}"
+      storage:
+        volumeClaimTemplate:
+          spec:
+            storageClassName: general
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 40Gi
+      nodeSelector: &node_selector
+        openstack-control-plane: enabled
+  grafana:
+    image:
+      repository: "{{ atmosphere_images['grafana'] | vexxhost.atmosphere.docker_image('name') }}"
+      tag: "{{ atmosphere_images['grafana'] | vexxhost.atmosphere.docker_image('tag') }}"
+    sidecar:
+      image:
+        repository: "{{ atmosphere_images['grafana_sidecar'] | vexxhost.atmosphere.docker_image('name') }}"
+        tag: "{{ atmosphere_images['grafana_sidecar'] | vexxhost.atmosphere.docker_image('tag') }}"
+    serviceMonitor:
+      relabelings: *relabelings_instance_to_pod_name
+    nodeSelector: *node_selector
+  kubeApiServer:
+    serviceMonitor:
+      relabelings: &relabelings_instance_to_node_name
+        - sourceLabels:
+            - __meta_kubernetes_pod_node_name
+          targetLabel: instance
+        - *relabeling_drop_all_kubernetes_labels
+  kubelet:
+    serviceMonitor:
+      cAdvisorRelabelings: &relabelings_kubelet
+        - sourceLabels:
+            - __metrics_path__
+          targetLabel: metrics_path
+        - sourceLabels:
+            - node
+          targetLabel: instance
+        - *relabeling_drop_all_kubernetes_labels
+      probesRelabelings: *relabelings_kubelet
+      relabelings: *relabelings_kubelet
+  kubeControllerManager:
+    serviceMonitor:
+      relabelings: *relabelings_instance_to_node_name
+  coreDns:
+    serviceMonitor:
+      relabelings: *relabelings_instance_to_pod_name
+  kubeEtcd:
+    service:
+      port: 2379
+      targetPort: 2379
+    serviceMonitor:
+      scheme: https
+      serverName: localhost
+      insecureSkipVerify: false
+      caFile: /etc/prometheus/secrets/kube-prometheus-stack-etcd-client-cert/ca.crt
+      certFile: /etc/prometheus/secrets/kube-prometheus-stack-etcd-client-cert/healthcheck-client.crt
+      keyFile: /etc/prometheus/secrets/kube-prometheus-stack-etcd-client-cert/healthcheck-client.key
+      relabelings: *relabelings_instance_to_node_name
+  kubeScheduler:
+    service:
+      port: 10259
+      targetPort: 10259
+    serviceMonitor:
+      https: true
+      insecureSkipVerify: true
+      relabelings: *relabelings_instance_to_node_name
+  kubeProxy:
+    serviceMonitor:
+      relabelings: *relabelings_instance_to_node_name
+  kube-state-metrics:
+    image:
+      repository: "{{ atmosphere_images['kube_state_metrics'] | vexxhost.atmosphere.docker_image('name') }}"
+      tag: "{{ atmosphere_images['kube_state_metrics'] | vexxhost.atmosphere.docker_image('tag') }}"
+    prometheus:
+      monitor:
+        relabelings: *relabelings_instance_to_pod_name
+    nodeSelector: *node_selector
+  prometheus:
+    serviceMonitor:
+      relabelings: *relabelings_instance_to_pod_name
+    prometheusSpec:
+      image:
+        repository: "{{ atmosphere_images['prometheus'] | vexxhost.atmosphere.docker_image('name') }}"
+        tag: "{{ atmosphere_images['prometheus'] | vexxhost.atmosphere.docker_image('tag') }}"
+      nodeSelector: *node_selector
+      secrets:
+        - kube-prometheus-stack-etcd-client-cert
+    additionalServiceMonitors:
+      - name: ceph
+        jobLabel: application
+        namespaceSelector:
+          matchNames:
+            - openstack
+        selector:
+          matchLabels:
+            application: ceph
+        endpoints:
+          - port: metrics
+            honorLabels: true
+            relabelings:
+              - action: replace
+                regex: (.*)
+                replacement: ceph
+                targetLabel: cluster
+              - *relabeling_drop_all_kubernetes_labels
+      - name: coredns
+        jobLabel: app.kubernetes.io/name
+        namespaceSelector:
+          matchNames:
+            - openstack
+        selector:
+          matchLabels:
+            app.kubernetes.io/component: metrics
+            app.kubernetes.io/name: coredns
+        endpoints:
+          - port: metrics
+            relabelings:
+              - sourceLabels:
+                  - __meta_kubernetes_pod_label_application
+                targetLabel: application
+              - *relabeling_set_pod_name_to_instance
+              - *relabeling_drop_all_kubernetes_labels
+      - name: memcached
+        jobLabel: application
+        namespaceSelector:
+          matchNames:
+            - openstack
+        selector:
+          matchLabels:
+            application: memcached
+            component: server
+        endpoints:
+          - port: metrics
+            relabelings: *relabelings_instance_to_pod_name
+      - name: openstack-exporter
+        jobLabel: jobLabel
+        namespaceSelector:
+          matchNames:
+            - openstack
+        selector:
+          matchLabels:
+            application: openstack-exporter
+        endpoints:
+          - port: metrics
+            interval: 1m
+            relabelings:
+              - action: replace
+                regex: (.*)
+                replacement: default
+                targetLabel: instance
+            scrapeTimeout: 30s
+    additionalPodMonitors:
+      - name: ethtool-exporter
+        jobLabel: job
+        selector:
+          matchLabels:
+            application: ethtool-exporter
+        podMetricsEndpoints:
+          - port: metrics
+            relabelings: *relabelings_instance_to_node_name
+      - name: ipmi-exporter
+        jobLabel: job
+        selector:
+          matchLabels:
+            application: ipmi-exporter
+        podMetricsEndpoints:
+          - interval: 60s
+            port: metrics
+            relabelings: *relabelings_instance_to_node_name
+      - name: percona-xtradb-pxc
+        jobLabel: app.kubernetes.io/component
+        namespaceSelector:
+          matchNames:
+            - openstack
+        selector:
+          matchLabels:
+            app.kubernetes.io/component: pxc
+            app.kubernetes.io/instance: percona-xtradb
+        podMetricsEndpoints:
+          - port: metrics
+            relabelings: *relabelings_instance_to_pod_name
+      - name: rabbitmq
+        jobLabel: app.kubernetes.io/component
+        namespaceSelector:
+          matchNames:
+            - openstack
+        selector:
+          matchLabels:
+            app.kubernetes.io/component: rabbitmq
+        podMetricsEndpoints:
+          - port: prometheus
+            relabelings: *relabelings_instance_to_pod_name
+  prometheusOperator:
+    admissionWebhooks:
+      patch:
+        image:
+          repository: "{{ atmosphere_images['prometheus_operator_kube_webhook_certgen'] | vexxhost.atmosphere.docker_image('name') }}"
+          tag: "{{ atmosphere_images['prometheus_operator_kube_webhook_certgen'] | vexxhost.atmosphere.docker_image('tag') }}"
+        nodeSelector: *node_selector
+    serviceMonitor:
+      relabelings: *relabelings_instance_to_pod_name
+    nodeSelector: *node_selector
+    image:
+      repository: "{{ atmosphere_images['prometheus_operator'] | vexxhost.atmosphere.docker_image('name') }}"
+      tag: "{{ atmosphere_images['prometheus_operator'] | vexxhost.atmosphere.docker_image('tag') }}"
+    prometheusConfigReloader:
+      image:
+        repository: "{{ atmosphere_images['prometheus_config_reloader'] | vexxhost.atmosphere.docker_image('name') }}"
+        tag: "{{ atmosphere_images['prometheus_config_reloader'] | vexxhost.atmosphere.docker_image('tag') }}"
+  prometheus-node-exporter:
+    image:
+      repository: "{{ atmosphere_images['prometheus_node_exporter'] | vexxhost.atmosphere.docker_image('name') }}"
+      tag: "{{ atmosphere_images['prometheus_node_exporter'] | vexxhost.atmosphere.docker_image('tag') }}"
+    extraArgs:
+      - --collector.diskstats.ignored-devices=^(ram|loop|nbd|fd|(h|s|v|xv)d[a-z]|nvme\\d+n\\d+p)\\d+$
+      - --collector.filesystem.fs-types-exclude=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|fuse.squashfuse_ll|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$
+      - --collector.filesystem.mount-points-exclude=^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+|var/lib/kubelet/pods/.+|var/lib/kubelet/plugins/kubernetes.io/csi/.+|run/containerd/.+)($|/)
+      - --collector.netclass.ignored-devices=^(lxc|cilium_|qbr|qvb|qvo|tap|ovs-system|br|tbr|gre_sys).*$
+      - --collector.netdev.device-exclude=^(lxc|cilium_|qbr|qvb|qvo|tap|ovs-system|br|tbr|gre_sys).*$
+    prometheus:
+      monitor:
+        relabelings: *relabelings_instance_to_node_name
+  additionalPrometheusRulesMap: "{{ lookup('vexxhost.atmosphere.jsonnet', 'jsonnet/rules.jsonnet') }}"
diff --git a/roles/openstack_exporter/tasks/main.yml b/roles/openstack_exporter/tasks/main.yml
index 202054c..bf20d2b 100644
--- a/roles/openstack_exporter/tasks/main.yml
+++ b/roles/openstack_exporter/tasks/main.yml
@@ -129,10 +129,3 @@
               targetPort: metrics
           selector:
             application: openstack-exporter
-  # NOTE(mnaser): Since we haven't moved to the operator pattern yet, we need to
-  #               keep retrying a few times as the CRDs might not be installed
-  #               yet.
-  retries: 60
-  delay: 5
-  register: _result
-  until: _result is not failed
diff --git a/roles/openstack_helm_ingress/tasks/main.yml b/roles/openstack_helm_ingress/tasks/main.yml
index ae13029..1b70b19 100644
--- a/roles/openstack_helm_ingress/tasks/main.yml
+++ b/roles/openstack_helm_ingress/tasks/main.yml
@@ -39,10 +39,3 @@
           - secretName: "{{ openstack_helm_ingress_secret_name }}"
             hosts:
               - "{{ openstack_helm_ingress_host }}"
-  # NOTE(mnaser): The Atmosphere operator is so fast that the Ingress webhook
-  #               is not up yet by the time we run this for the first time, so
-  #               we retry until we let the operator handle creating the ingress.
-  retries: 60
-  delay: 5
-  register: _result
-  until: _result is not failed
diff --git a/roles/prometheus_pushgateway/tasks/main.yml b/roles/prometheus_pushgateway/tasks/main.yml
index 9270594..f617f14 100644
--- a/roles/prometheus_pushgateway/tasks/main.yml
+++ b/roles/prometheus_pushgateway/tasks/main.yml
@@ -43,10 +43,3 @@
     create_namespace: true
     kubeconfig: /etc/kubernetes/admin.conf
     values: "{{ _prometheus_pushgateway_helm_values | combine(prometheus_pushgateway_helm_values, recursive=True) }}"
-  # NOTE(mnaser): The Atmosphere operator is so fast that the CRDs for ServiceMonitor
-  #               are not installed yet by the time we run this for the first
-  #               time, so we retry until we let the operator handle deploy.
-  retries: 60
-  delay: 5
-  register: _result
-  until: _result is not failed