diff --git a/lib/aws/chart_values/mongodb/q-values.j2.yaml b/lib/aws/chart_values/mongodb/q-values.j2.yaml index 64a34332..461ed841 100644 --- a/lib/aws/chart_values/mongodb/q-values.j2.yaml +++ b/lib/aws/chart_values/mongodb/q-values.j2.yaml @@ -207,19 +207,18 @@ annotations: {} # Additional abels to apply to the deployment or statefulsets labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: {{ sanitized_name }} + databaseLongId: {{ long_id }} # Annotations to be added to MongoDB pods podAnnotations: {} # Additional pod labels to apply podLabels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} ## Use an alternate scheduler, e.g. "stork". ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ @@ -345,10 +344,9 @@ persistence: - ReadWriteOnce size: {{ database_disk_size_in_gib }}Gi annotations: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: {{ sanitized_name }} + databaseLongId: {{ long_id }} ## Configure the ingress resource that allows you to access the ## MongoDB installation. Set up the URL diff --git a/lib/aws/chart_values/mysql/q-values.j2.yaml b/lib/aws/chart_values/mysql/q-values.j2.yaml index 51cb92c3..15e57bad 100644 --- a/lib/aws/chart_values/mysql/q-values.j2.yaml +++ b/lib/aws/chart_values/mysql/q-values.j2.yaml @@ -44,10 +44,9 @@ fullnameOverride: {{ sanitized_name }} clusterDomain: cluster.local commonLabels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: {{ sanitized_name }} + databaseLongId: {{ long_id }} ## Init containers parameters: ## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section. @@ -315,10 +314,9 @@ master: ## PVC annotations ## annotations: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: {{ sanitized_name }} + databaseLongId: {{ long_id }} ## Persistent Volume Access Mode ## diff --git a/lib/aws/chart_values/postgresql/q-values.j2.yaml b/lib/aws/chart_values/postgresql/q-values.j2.yaml index 348a611c..be1475e2 100644 --- a/lib/aws/chart_values/postgresql/q-values.j2.yaml +++ b/lib/aws/chart_values/postgresql/q-values.j2.yaml @@ -326,10 +326,9 @@ persistence: - ReadWriteOnce size: {{ database_disk_size_in_gib }}Gi annotations: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: {{ sanitized_name }} + databaseLongId: {{ long_id }} ## updateStrategy for PostgreSQL StatefulSet and its slaves StatefulSets ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies @@ -349,14 +348,14 @@ master: affinity: {} tolerations: [] labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} annotations: {} podLabels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} podAnnotations: {} priorityClassName: "" ## Extra init containers diff --git a/lib/aws/chart_values/redis/q-values.j2.yaml b/lib/aws/chart_values/redis/q-values.j2.yaml index 69d7d354..4de95952 100644 --- a/lib/aws/chart_values/redis/q-values.j2.yaml +++ b/lib/aws/chart_values/redis/q-values.j2.yaml @@ -132,9 +132,9 @@ sentinel: ## annotations: {} labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} loadBalancerIP: ## Specifies the Kubernetes Cluster's Domain Name. @@ -291,10 +291,9 @@ master: ## Redis Master additional pod labels and annotations ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ podLabels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: {{ sanitized_name }} + databaseLongId: {{ long_id }} podAnnotations: {} ## Redis Master resource requests and limits @@ -388,9 +387,9 @@ master: external-dns.alpha.kubernetes.io/ttl: "300" {% endif %} labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} loadBalancerIP: # loadBalancerSourceRanges: ["10.0.0.0/8"] @@ -425,9 +424,9 @@ master: ## https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets statefulset: labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} updateStrategy: RollingUpdate ## Partition update strategy ## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions diff --git a/lib/aws/charts/q-ingress-tls/templates/cert-issuer.j2.yaml b/lib/aws/charts/q-ingress-tls/templates/cert-issuer.j2.yaml index cfb54db6..5a4d0ae4 100644 --- a/lib/aws/charts/q-ingress-tls/templates/cert-issuer.j2.yaml +++ b/lib/aws/charts/q-ingress-tls/templates/cert-issuer.j2.yaml @@ -6,7 +6,7 @@ metadata: name: {{ id }} namespace: {{ namespace }} labels: - ownerId: {{ owner_id }} + routerLongId: {{ long_id }} spec: acme: server: {{ spec_acme_server }} diff --git a/lib/aws/charts/q-ingress-tls/templates/ingress-qovery.j2.yaml b/lib/aws/charts/q-ingress-tls/templates/ingress-qovery.j2.yaml index 5cf11a24..8e4c688e 100644 --- a/lib/aws/charts/q-ingress-tls/templates/ingress-qovery.j2.yaml +++ b/lib/aws/charts/q-ingress-tls/templates/ingress-qovery.j2.yaml @@ -6,9 +6,8 @@ metadata: name: {{ sanitized_name }} namespace: {{ namespace }} labels: - ownerId: {{ owner_id }} - routerName: {{ sanitized_name }} routerId: {{ id }} + routerLongId: {{ long_id }} envId: {{ environment_id }} fqdn: "{{ router_default_domain }}" annotations: diff --git a/lib/digitalocean/chart_values/mongodb/q-values.j2.yaml b/lib/digitalocean/chart_values/mongodb/q-values.j2.yaml index 46506ac1..273f0404 100644 --- a/lib/digitalocean/chart_values/mongodb/q-values.j2.yaml +++ b/lib/digitalocean/chart_values/mongodb/q-values.j2.yaml @@ -210,19 +210,18 @@ annotations: {} # Additional abels to apply to the deployment or statefulsets labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: '{{ sanitized_name }}' + databaseLongId: {{ long_id }} # Annotations to be added to MongoDB pods podAnnotations: {} # Additional pod labels to apply podLabels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} ## Use an alternate scheduler, e.g. "stork". ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ @@ -348,10 +347,9 @@ persistence: - ReadWriteOnce size: {{ database_disk_size_in_gib }}Gi annotations: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: '{{ sanitized_name }}' + databaseLongId: {{ long_id }} ## Configure the ingress resource that allows you to access the ## MongoDB installation. Set up the URL diff --git a/lib/digitalocean/chart_values/mysql/q-values.j2.yaml b/lib/digitalocean/chart_values/mysql/q-values.j2.yaml index 5e288642..4a68de80 100644 --- a/lib/digitalocean/chart_values/mysql/q-values.j2.yaml +++ b/lib/digitalocean/chart_values/mysql/q-values.j2.yaml @@ -44,10 +44,9 @@ fullnameOverride: '{{ sanitized_name }}' clusterDomain: cluster.local commonLabels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: '{{ sanitized_name }}' + databaseLongId: {{ long_id }} ## Init containers parameters: ## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section. @@ -315,10 +314,9 @@ master: ## PVC annotations ## annotations: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: '{{ sanitized_name }}' + databaseLongId: {{ long_id }} ## Persistent Volume Access Mode ## diff --git a/lib/digitalocean/chart_values/postgresql/q-values.j2.yaml b/lib/digitalocean/chart_values/postgresql/q-values.j2.yaml index a3757916..ad87ddcc 100644 --- a/lib/digitalocean/chart_values/postgresql/q-values.j2.yaml +++ b/lib/digitalocean/chart_values/postgresql/q-values.j2.yaml @@ -328,10 +328,9 @@ persistence: - ReadWriteOnce size: {{ database_disk_size_in_gib }}Gi annotations: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: '{{ sanitized_name }}' + databaseLongId: {{ long_id }} ## updateStrategy for PostgreSQL StatefulSet and its slaves StatefulSets ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies @@ -351,14 +350,14 @@ master: affinity: {} tolerations: [] labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} annotations: {} podLabels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} podAnnotations: {} priorityClassName: "" ## Extra init containers diff --git a/lib/digitalocean/chart_values/redis/q-values.j2.yaml b/lib/digitalocean/chart_values/redis/q-values.j2.yaml index e1db86e7..2f44304e 100644 --- a/lib/digitalocean/chart_values/redis/q-values.j2.yaml +++ b/lib/digitalocean/chart_values/redis/q-values.j2.yaml @@ -132,9 +132,9 @@ sentinel: ## annotations: {} labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} loadBalancerIP: ## Specifies the Kubernetes Cluster's Domain Name. @@ -291,10 +291,9 @@ master: ## Redis Master additional pod labels and annotations ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ podLabels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: '{{ sanitized_name }}' + databaseLongId: {{ long_id }} podAnnotations: {} ## Redis Master resource requests and limits @@ -391,9 +390,9 @@ master: external-dns.alpha.kubernetes.io/ttl: "300" {% endif %} labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} loadBalancerIP: # loadBalancerSourceRanges: ["10.0.0.0/8"] @@ -428,9 +427,9 @@ master: ## https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets statefulset: labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} updateStrategy: RollingUpdate ## Partition update strategy ## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions diff --git a/lib/digitalocean/charts/q-ingress-tls/templates/cert-issuer.j2.yaml b/lib/digitalocean/charts/q-ingress-tls/templates/cert-issuer.j2.yaml index 96623d12..23b35f81 100644 --- a/lib/digitalocean/charts/q-ingress-tls/templates/cert-issuer.j2.yaml +++ b/lib/digitalocean/charts/q-ingress-tls/templates/cert-issuer.j2.yaml @@ -6,7 +6,7 @@ metadata: name: {{ id }} namespace: {{ namespace }} labels: - ownerId: {{ owner_id }} + routerLongId: {{ long_id }} spec: acme: server: {{ spec_acme_server }} diff --git a/lib/digitalocean/charts/q-ingress-tls/templates/ingress-qovery.j2.yaml b/lib/digitalocean/charts/q-ingress-tls/templates/ingress-qovery.j2.yaml index 5cf11a24..8e4c688e 100644 --- a/lib/digitalocean/charts/q-ingress-tls/templates/ingress-qovery.j2.yaml +++ b/lib/digitalocean/charts/q-ingress-tls/templates/ingress-qovery.j2.yaml @@ -6,9 +6,8 @@ metadata: name: {{ sanitized_name }} namespace: {{ namespace }} labels: - ownerId: {{ owner_id }} - routerName: {{ sanitized_name }} routerId: {{ id }} + routerLongId: {{ long_id }} envId: {{ environment_id }} fqdn: "{{ router_default_domain }}" annotations: diff --git a/lib/scaleway/chart_values/mongodb/q-values.j2.yaml b/lib/scaleway/chart_values/mongodb/q-values.j2.yaml index 12baf9b3..e1a609f6 100644 --- a/lib/scaleway/chart_values/mongodb/q-values.j2.yaml +++ b/lib/scaleway/chart_values/mongodb/q-values.j2.yaml @@ -145,17 +145,16 @@ replicaSet: # Additional abels to apply to the deployment or statefulsets labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: '{{ sanitized_name }}' + databaseLongId: {{ long_id }} # Additional pod labels to apply podLabels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} ## updateStrategy for MongoDB Primary, Secondary and Arbitrer statefulsets ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies @@ -197,10 +196,9 @@ persistence: - ReadWriteOnce size: {{ database_disk_size_in_gib }}Gi annotations: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: '{{ sanitized_name }}' + databaseLongId: {{ long_id }} # volume.beta.kubernetes.io/storage-class=scw-sbv-ssd-0: ## Prometheus Exporter / Metrics diff --git a/lib/scaleway/chart_values/mysql/q-values.j2.yaml b/lib/scaleway/chart_values/mysql/q-values.j2.yaml index 614cb3d2..7d66a8f4 100644 --- a/lib/scaleway/chart_values/mysql/q-values.j2.yaml +++ b/lib/scaleway/chart_values/mysql/q-values.j2.yaml @@ -44,10 +44,9 @@ fullnameOverride: '{{ sanitized_name }}' clusterDomain: cluster.local commonLabels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: '{{ sanitized_name }}' + databaseLongId: {{ long_id }} ## Init containers parameters: ## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section. @@ -293,10 +292,9 @@ master: ## PVC annotations ## annotations: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: '{{ sanitized_name }}' + databaseLongId: {{ long_id }} ## Persistent Volume Access Mode ## diff --git a/lib/scaleway/chart_values/postgresql/q-values.j2.yaml b/lib/scaleway/chart_values/postgresql/q-values.j2.yaml index 81a64782..b1a83685 100644 --- a/lib/scaleway/chart_values/postgresql/q-values.j2.yaml +++ b/lib/scaleway/chart_values/postgresql/q-values.j2.yaml @@ -169,10 +169,9 @@ persistence: - ReadWriteOnce size: {{ database_disk_size_in_gib }}Gi annotations: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: '{{ sanitized_name }}' + databaseLongId: {{ long_id }} ## ## PostgreSQL Master parameters @@ -187,14 +186,14 @@ master: affinity: {} tolerations: [] labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} annotations: {} podLabels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} podAnnotations: {} priorityClassName: "" ## Extra init containers diff --git a/lib/scaleway/chart_values/redis/q-values.j2.yaml b/lib/scaleway/chart_values/redis/q-values.j2.yaml index 80619204..f1b92cb8 100644 --- a/lib/scaleway/chart_values/redis/q-values.j2.yaml +++ b/lib/scaleway/chart_values/redis/q-values.j2.yaml @@ -121,9 +121,9 @@ sentinel: ## annotations: {} labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} loadBalancerIP: networkPolicy: @@ -248,10 +248,9 @@ master: ## Redis Master additional pod labels and annotations ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ podLabels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} - databaseName: '{{ sanitized_name }}' + databaseLongId: {{ long_id }} podAnnotations: {} ## Redis Master resource requests and limits @@ -350,9 +349,9 @@ master: external-dns.alpha.kubernetes.io/ttl: "300" {% endif %} labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} loadBalancerIP: # loadBalancerSourceRanges: ["10.0.0.0/8"] @@ -387,9 +386,9 @@ master: ## https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets statefulset: labels: - ownerId: {{ owner_id }} envId: {{ environment_id }} databaseId: {{ id }} + databaseLongId: {{ long_id }} updateStrategy: RollingUpdate ## Partition update strategy ## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions diff --git a/lib/scaleway/charts/q-ingress-tls/templates/cert-issuer.j2.yaml b/lib/scaleway/charts/q-ingress-tls/templates/cert-issuer.j2.yaml index cfb54db6..5a4d0ae4 100644 --- a/lib/scaleway/charts/q-ingress-tls/templates/cert-issuer.j2.yaml +++ b/lib/scaleway/charts/q-ingress-tls/templates/cert-issuer.j2.yaml @@ -6,7 +6,7 @@ metadata: name: {{ id }} namespace: {{ namespace }} labels: - ownerId: {{ owner_id }} + routerLongId: {{ long_id }} spec: acme: server: {{ spec_acme_server }} diff --git a/lib/scaleway/charts/q-ingress-tls/templates/ingress-qovery.j2.yaml b/lib/scaleway/charts/q-ingress-tls/templates/ingress-qovery.j2.yaml index 5cf11a24..8e4c688e 100644 --- a/lib/scaleway/charts/q-ingress-tls/templates/ingress-qovery.j2.yaml +++ b/lib/scaleway/charts/q-ingress-tls/templates/ingress-qovery.j2.yaml @@ -6,9 +6,8 @@ metadata: name: {{ sanitized_name }} namespace: {{ namespace }} labels: - ownerId: {{ owner_id }} - routerName: {{ sanitized_name }} routerId: {{ id }} + routerLongId: {{ long_id }} envId: {{ environment_id }} fqdn: "{{ router_default_domain }}" annotations: diff --git a/src/cloud_provider/service.rs b/src/cloud_provider/service.rs index 05ac86df..defbddf2 100644 --- a/src/cloud_provider/service.rs +++ b/src/cloud_provider/service.rs @@ -6,6 +6,7 @@ use std::thread; use std::time::Duration; use tera::Context as TeraContext; +use uuid::Uuid; use crate::cloud_provider::environment::Environment; use crate::cloud_provider::helm::ChartInfo; @@ -31,6 +32,7 @@ pub trait Service: ToTransmitter { fn context(&self) -> &Context; fn service_type(&self) -> ServiceType; fn id(&self) -> &str; + fn long_id(&self) -> &Uuid; fn name(&self) -> &str; fn sanitized_name(&self) -> String; fn name_with_id(&self) -> String { @@ -328,6 +330,7 @@ pub fn default_tera_context( ) -> TeraContext { let mut context = TeraContext::new(); context.insert("id", service.id()); + context.insert("long_id", service.id()); context.insert("owner_id", environment.owner_id.as_str()); context.insert("project_id", environment.project_id.as_str()); context.insert("organization_id", environment.organization_id.as_str()); diff --git a/src/io_models.rs b/src/io_models.rs index 8985fe90..06f6bb4a 100644 --- a/src/io_models.rs +++ b/src/io_models.rs @@ -500,7 +500,7 @@ impl Storage { #[derive(Serialize, Deserialize, Clone, Eq, PartialEq, Hash)] pub struct Router { - pub id: String, + pub long_id: Uuid, pub name: String, pub action: Action, pub default_domain: String, @@ -544,7 +544,7 @@ impl Router { CPKind::Aws => { let router = Box::new(models::router::Router::::new( context.clone(), - self.id.as_str(), + self.long_id, self.name.as_str(), self.action.to_service_action(), self.default_domain.as_str(), @@ -560,7 +560,7 @@ impl Router { CPKind::Do => { let router = Box::new(models::router::Router::::new( context.clone(), - self.id.as_str(), + self.long_id, self.name.as_str(), self.action.to_service_action(), self.default_domain.as_str(), @@ -576,7 +576,7 @@ impl Router { CPKind::Scw => { let router = Box::new(models::router::Router::::new( context.clone(), - self.id.as_str(), + self.long_id, self.name.as_str(), self.action.to_service_action(), self.default_domain.as_str(), @@ -615,7 +615,7 @@ pub enum DatabaseMode { pub struct Database { pub kind: DatabaseKind, pub action: Action, - pub id: String, + pub long_id: Uuid, pub name: String, pub version: String, pub fqdn_id: String, @@ -666,7 +666,7 @@ impl Database { (CPKind::Aws, DatabaseKind::Postgresql, DatabaseMode::MANAGED) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -687,7 +687,7 @@ impl Database { (CPKind::Aws, DatabaseKind::Postgresql, DatabaseMode::CONTAINER) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -709,7 +709,7 @@ impl Database { (CPKind::Aws, DatabaseKind::Mysql, DatabaseMode::MANAGED) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -730,7 +730,7 @@ impl Database { (CPKind::Aws, DatabaseKind::Mysql, DatabaseMode::CONTAINER) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -751,7 +751,7 @@ impl Database { (CPKind::Aws, DatabaseKind::Redis, DatabaseMode::MANAGED) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -772,7 +772,7 @@ impl Database { (CPKind::Aws, DatabaseKind::Redis, DatabaseMode::CONTAINER) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -793,7 +793,7 @@ impl Database { (CPKind::Aws, DatabaseKind::Mongodb, DatabaseMode::MANAGED) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -814,7 +814,7 @@ impl Database { (CPKind::Aws, DatabaseKind::Mongodb, DatabaseMode::CONTAINER) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -836,7 +836,7 @@ impl Database { (CPKind::Do, DatabaseKind::Postgresql, DatabaseMode::CONTAINER) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -857,7 +857,7 @@ impl Database { (CPKind::Do, DatabaseKind::Mysql, DatabaseMode::CONTAINER) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -878,7 +878,7 @@ impl Database { (CPKind::Do, DatabaseKind::Redis, DatabaseMode::CONTAINER) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -899,7 +899,7 @@ impl Database { (CPKind::Do, DatabaseKind::Mongodb, DatabaseMode::CONTAINER) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -936,7 +936,7 @@ impl Database { (CPKind::Scw, DatabaseKind::Postgresql, DatabaseMode::MANAGED) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -957,7 +957,7 @@ impl Database { (CPKind::Scw, DatabaseKind::Postgresql, DatabaseMode::CONTAINER) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -978,7 +978,7 @@ impl Database { (CPKind::Scw, DatabaseKind::Mysql, DatabaseMode::MANAGED) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -999,7 +999,7 @@ impl Database { (CPKind::Scw, DatabaseKind::Mysql, DatabaseMode::CONTAINER) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -1020,7 +1020,7 @@ impl Database { (CPKind::Scw, DatabaseKind::Redis, DatabaseMode::CONTAINER) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, @@ -1041,7 +1041,7 @@ impl Database { (CPKind::Scw, DatabaseKind::Mongodb, DatabaseMode::CONTAINER) => { let db = models::database::Database::::new( context.clone(), - self.id.as_str(), + self.long_id, self.action.to_service_action(), self.name.as_str(), version, diff --git a/src/models/application.rs b/src/models/application.rs index 4fe82864..3a3c5218 100644 --- a/src/models/application.rs +++ b/src/models/application.rs @@ -337,6 +337,10 @@ where fn selector(&self) -> Option { self.selector() } + + fn long_id(&self) -> &Uuid { + &self.long_id + } } impl Helm for Application { diff --git a/src/models/aws/database.rs b/src/models/aws/database.rs index a5237851..71c90b11 100644 --- a/src/models/aws/database.rs +++ b/src/models/aws/database.rs @@ -176,6 +176,7 @@ where ); context.insert("namespace", environment.namespace()); + context.insert("long_id", &self.long_id); let version = self .get_version_aws_managed(event_details)? diff --git a/src/models/database.rs b/src/models/database.rs index 4555e335..8d937bbd 100644 --- a/src/models/database.rs +++ b/src/models/database.rs @@ -15,10 +15,12 @@ use crate::models::database_utils::{ get_self_hosted_redis_version, }; use crate::models::types::{CloudProvider, ToTeraContext, VersionsNumber}; +use crate::utilities::to_short_id; use function_name::named; use std::borrow::Borrow; use std::marker::PhantomData; use tera::Context as TeraContext; +use uuid::Uuid; ///////////////////////////////////////////////////////////////// // Database mode @@ -71,6 +73,7 @@ pub struct Database> { _marker: PhantomData<(C, M, T)>, pub(super) context: Context, pub(super) id: String, + pub(super) long_id: Uuid, pub(super) action: Action, pub(super) name: String, pub(super) version: VersionsNumber, @@ -89,7 +92,7 @@ pub struct Database> { impl> Database { pub fn new( context: Context, - id: &str, + long_id: Uuid, action: Action, name: &str, version: VersionsNumber, @@ -110,7 +113,8 @@ impl> Database _marker: PhantomData, context, action, - id: id.to_string(), + id: to_short_id(&long_id), + long_id, name: name.to_string(), version, fqdn: fqdn.to_string(), @@ -178,6 +182,10 @@ where &self.id } + fn long_id(&self) -> &Uuid { + &self.long_id + } + fn name(&self) -> &str { &self.name } @@ -479,6 +487,7 @@ where context.insert("kubernetes_cluster_id", kubernetes.id()); context.insert("kubernetes_cluster_name", kubernetes.name()); + context.insert("long_id", &self.long_id); context.insert("fqdn_id", self.fqdn_id.as_str()); context.insert("fqdn", self.fqdn(target, &self.fqdn, M::is_managed()).as_str()); context.insert("service_name", self.fqdn_id.as_str()); diff --git a/src/models/router.rs b/src/models/router.rs index 73a9a44d..2ed5bf31 100644 --- a/src/models/router.rs +++ b/src/models/router.rs @@ -14,10 +14,12 @@ use crate::io_models::{Context, Listen, Listener, Listeners}; use crate::logger::Logger; use crate::models::types::CloudProvider; use crate::models::types::ToTeraContext; +use crate::utilities::to_short_id; use function_name::named; use std::borrow::Borrow; use std::marker::PhantomData; use tera::Context as TeraContext; +use uuid::Uuid; #[derive(thiserror::Error, Debug)] pub enum RouterError { @@ -29,6 +31,7 @@ pub struct Router { _marker: PhantomData, pub(crate) context: Context, pub(crate) id: String, + pub(crate) long_id: Uuid, pub(crate) action: Action, pub(crate) name: String, pub(crate) default_domain: String, @@ -43,7 +46,7 @@ pub struct Router { impl Router { pub fn new( context: Context, - id: &str, + long_id: Uuid, name: &str, action: Action, default_domain: &str, @@ -57,7 +60,8 @@ impl Router { Ok(Self { _marker: PhantomData, context, - id: id.to_string(), + id: to_short_id(&long_id), + long_id, name: name.to_string(), action, default_domain: default_domain.to_string(), @@ -243,6 +247,10 @@ where &self.id } + fn long_id(&self) -> &Uuid { + &self.long_id + } + fn name(&self) -> &str { &self.name } diff --git a/src/models/scaleway/database.rs b/src/models/scaleway/database.rs index 2649942a..30efe5a5 100644 --- a/src/models/scaleway/database.rs +++ b/src/models/scaleway/database.rs @@ -139,6 +139,7 @@ impl> Database { ); context.insert("namespace", environment.namespace()); + context.insert("long_id", &self.long_id); let version = get_version(event_details)?.matched_version(); context.insert("version_major", &version.to_major_version_string()); diff --git a/test_utilities/src/common.rs b/test_utilities/src/common.rs index fa05703b..a4c2275f 100644 --- a/test_utilities/src/common.rs +++ b/test_utilities/src/common.rs @@ -402,7 +402,7 @@ pub fn environment_3_apps_3_routers_3_databases( ], routers: vec![ Router { - id: generate_id(), + long_id: Uuid::new_v4(), name: "main".to_string(), action: Action::Create, default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id().to_string(), test_domain), @@ -415,7 +415,7 @@ pub fn environment_3_apps_3_routers_3_databases( sticky_sessions_enabled: false, }, Router { - id: generate_id(), + long_id: Uuid::new_v4(), name: "second-router".to_string(), action: Action::Create, default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id().to_string(), test_domain), @@ -428,7 +428,7 @@ pub fn environment_3_apps_3_routers_3_databases( sticky_sessions_enabled: false, }, Router { - id: generate_id(), + long_id: Uuid::new_v4(), name: "third-router".to_string(), action: Action::Create, default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id().to_string(), test_domain), @@ -445,7 +445,7 @@ pub fn environment_3_apps_3_routers_3_databases( Database { kind: DatabaseKind::Postgresql, action: Action::Create, - id: generate_id(), + long_id: Uuid::new_v4(), name: database_name.clone(), version: "11.8.0".to_string(), fqdn_id: fqdn.clone(), @@ -467,7 +467,7 @@ pub fn environment_3_apps_3_routers_3_databases( Database { kind: DatabaseKind::Postgresql, action: Action::Create, - id: generate_id(), + long_id: Uuid::new_v4(), name: database_name_2.clone(), version: "11.8.0".to_string(), fqdn_id: fqdn_2.clone(), @@ -489,7 +489,7 @@ pub fn environment_3_apps_3_routers_3_databases( Database { kind: DatabaseKind::Mongodb, action: Action::Create, - id: generate_id(), + long_id: Uuid::new_v4(), name: database_db_name_mongo.clone(), version: version_mongo.to_string(), fqdn_id: database_host_mongo.clone(), @@ -517,7 +517,6 @@ pub fn working_minimal_environment(context: &Context, test_domain: &str) -> Envi let suffix = generate_id(); let application_id = generate_id(); let application_name = format!("{}-{}", "simple-app".to_string(), &suffix); - let router_id = generate_id(); let router_name = "main".to_string(); let application_domain = format!("{}.{}.{}", application_id, context.cluster_id().to_string(), test_domain); EnvironmentRequest { @@ -561,7 +560,7 @@ pub fn working_minimal_environment(context: &Context, test_domain: &str) -> Envi advance_settings: Default::default(), }], routers: vec![Router { - id: router_id, + long_id: Uuid::new_v4(), name: router_name, action: Action::Create, default_domain: application_domain, @@ -661,7 +660,7 @@ pub fn environnement_2_app_2_routers_1_psql( databases: vec![Database { kind: DatabaseKind::Postgresql, action: Action::Create, - id: generate_id(), + long_id: Uuid::new_v4(), name: database_name.clone(), version: "11.8.0".to_string(), fqdn_id: fqdn.clone(), @@ -778,7 +777,7 @@ pub fn environnement_2_app_2_routers_1_psql( ], routers: vec![ Router { - id: generate_id(), + long_id: Uuid::new_v4(), name: "main".to_string(), action: Action::Create, default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id().to_string(), test_domain), @@ -791,7 +790,7 @@ pub fn environnement_2_app_2_routers_1_psql( sticky_sessions_enabled: false, }, Router { - id: generate_id(), + long_id: Uuid::new_v4(), name: "second-router".to_string(), action: Action::Create, default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id().to_string(), test_domain), @@ -873,7 +872,7 @@ pub fn echo_app_environment(context: &Context, test_domain: &str) -> Environment advance_settings: Default::default(), }], routers: vec![Router { - id: generate_id(), + long_id: Uuid::new_v4(), name: "main".to_string(), action: Action::Create, default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id().to_string(), test_domain), @@ -984,7 +983,7 @@ pub fn environment_only_http_server_router(context: &Context, test_domain: &str) advance_settings: Default::default(), }], routers: vec![Router { - id: generate_id(), + long_id: Uuid::new_v4(), name: "main".to_string(), action: Action::Create, default_domain: format!("{}.{}.{}", generate_id(), context.cluster_id(), test_domain), @@ -1087,7 +1086,7 @@ pub fn test_db( let db = Database { kind: db_kind.clone(), action: Action::Create, - id: db_id.clone(), + long_id: Uuid::new_v4(), name: db_id.clone(), version: version.to_string(), fqdn_id: database_host.clone(), diff --git a/test_utilities/src/utilities.rs b/test_utilities/src/utilities.rs index 9ec311e6..1d16b621 100644 --- a/test_utilities/src/utilities.rs +++ b/test_utilities/src/utilities.rs @@ -53,6 +53,7 @@ use qovery_engine::io_models::DatabaseMode::MANAGED; use qovery_engine::logger::{Logger, StdIoLogger}; use qovery_engine::models::scaleway::ScwZone; use qovery_engine::runtime::block_on; +use qovery_engine::utilities::to_short_id; use time::Instant; use url::Url; @@ -897,7 +898,7 @@ pub fn db_fqnd(db: Database) -> String { match db.publicly_accessible { true => db.fqdn, false => match db.mode == MANAGED { - true => format!("{}-dns", db.id), + true => format!("{}-dns", to_short_id(&db.long_id)), false => match db.kind { DatabaseKind::Postgresql => "postgresqlpostgres", DatabaseKind::Mysql => "mysqlmysqldatabase", diff --git a/tests/aws/aws_databases.rs b/tests/aws/aws_databases.rs index 72c3450a..30346270 100644 --- a/tests/aws/aws_databases.rs +++ b/tests/aws/aws_databases.rs @@ -5,6 +5,7 @@ use qovery_engine::cloud_provider::Kind; use qovery_engine::io_models::{Action, CloneForTest, Database, DatabaseKind, DatabaseMode, Port, Protocol}; use test_utilities::aws::aws_default_engine_config; use tracing::{span, Level}; +use uuid::Uuid; use self::test_utilities::aws::{AWS_DATABASE_DISK_TYPE, AWS_DATABASE_INSTANCE_TYPE}; use self::test_utilities::utilities::{ @@ -12,6 +13,7 @@ use self::test_utilities::utilities::{ }; use qovery_engine::io_models::DatabaseMode::{CONTAINER, MANAGED}; use qovery_engine::transaction::TransactionResult; +use qovery_engine::utilities::to_short_id; use test_utilities::common::{test_db, Infrastructure}; /** @@ -261,7 +263,7 @@ fn postgresql_deploy_a_working_environment_and_redeploy() { environment.databases = vec![Database { kind: DatabaseKind::Postgresql, action: Action::Create, - id: generate_id(), + long_id: Uuid::new_v4(), name: database_db_name.clone(), version: "11.8.0".to_string(), fqdn_id: database_host.clone(), @@ -323,7 +325,7 @@ fn postgresql_deploy_a_working_environment_and_redeploy() { assert!(matches!(ret, TransactionResult::Ok)); // TO CHECK: DATABASE SHOULDN'T BE RESTARTED AFTER A REDEPLOY - let database_name = format!("postgresql{}-0", &environment_check.databases[0].id); + let database_name = format!("postgresql{}-0", to_short_id(&environment_check.databases[0].long_id)); match is_pod_restarted_env(context, Kind::Aws, environment_check, database_name.as_str(), secrets) { (true, _) => assert!(true), (false, _) => assert!(false), diff --git a/tests/digitalocean/do_databases.rs b/tests/digitalocean/do_databases.rs index e806c2c2..6feefd0a 100644 --- a/tests/digitalocean/do_databases.rs +++ b/tests/digitalocean/do_databases.rs @@ -1,5 +1,6 @@ use ::function_name::named; use tracing::{span, warn, Level}; +use uuid::Uuid; use qovery_engine::cloud_provider::{Kind as ProviderKind, Kind}; use qovery_engine::io_models::{Action, CloneForTest, Database, DatabaseKind, DatabaseMode, Port, Protocol}; @@ -9,6 +10,7 @@ use test_utilities::utilities::{ }; use qovery_engine::io_models::DatabaseMode::{CONTAINER, MANAGED}; +use qovery_engine::utilities::to_short_id; use test_utilities::common::{database_test_environment, test_db, Infrastructure}; use test_utilities::digitalocean::{ clean_environments, do_default_engine_config, DO_MANAGED_DATABASE_DISK_TYPE, DO_MANAGED_DATABASE_INSTANCE_TYPE, @@ -279,7 +281,7 @@ fn postgresql_deploy_a_working_environment_and_redeploy() { environment.databases = vec![Database { kind: DatabaseKind::Postgresql, action: Action::Create, - id: generate_id(), + long_id: Uuid::new_v4(), name: database_db_name.clone(), version: "11.8.0".to_string(), fqdn_id: database_host.clone(), @@ -355,7 +357,7 @@ fn postgresql_deploy_a_working_environment_and_redeploy() { assert!(matches!(ret, TransactionResult::Ok)); // TO CHECK: DATABASE SHOULDN'T BE RESTARTED AFTER A REDEPLOY - let database_name = format!("postgresql-{}-0", &environment_check.databases[0].id); + let database_name = format!("postgresql-{}-0", to_short_id(&environment_check.databases[0].long_id)); match is_pod_restarted_env( context.clone(), ProviderKind::Do, diff --git a/tests/scaleway/scw_databases.rs b/tests/scaleway/scw_databases.rs index 8de7ff7e..c56ab6bf 100644 --- a/tests/scaleway/scw_databases.rs +++ b/tests/scaleway/scw_databases.rs @@ -1,5 +1,6 @@ use ::function_name::named; use tracing::{span, warn, Level}; +use uuid::Uuid; use qovery_engine::cloud_provider::{Kind as ProviderKind, Kind}; use qovery_engine::io_models::{Action, CloneForTest, Database, DatabaseKind, DatabaseMode, Port, Protocol}; @@ -10,6 +11,7 @@ use test_utilities::utilities::{ }; use qovery_engine::io_models::DatabaseMode::{CONTAINER, MANAGED}; +use qovery_engine::utilities::to_short_id; use test_utilities::common::test_db; use test_utilities::common::{database_test_environment, Infrastructure}; use test_utilities::scaleway::{ @@ -284,7 +286,7 @@ fn postgresql_deploy_a_working_environment_and_redeploy() { environment.databases = vec![Database { kind: DatabaseKind::Postgresql, action: Action::Create, - id: generate_id(), + long_id: Uuid::new_v4(), name: database_db_name.clone(), version: "11.8.0".to_string(), fqdn_id: database_host.clone(), @@ -360,7 +362,7 @@ fn postgresql_deploy_a_working_environment_and_redeploy() { assert!(matches!(result, TransactionResult::Ok)); // TO CHECK: DATABASE SHOULDN'T BE RESTARTED AFTER A REDEPLOY - let database_name = format!("postgresql-{}-0", &environment_check.databases[0].id); + let database_name = format!("postgresql-{}-0", to_short_id(&environment_check.databases[0].long_id)); match is_pod_restarted_env( context.clone(), ProviderKind::Scw,