Skip to content

Commit

Permalink
resource_customizations/db.atlasgo.io: atlas operator resources (argo…
Browse files Browse the repository at this point in the history
…proj#16364)

Signed-off-by: Rotem Tamir <[email protected]>
  • Loading branch information
rotemtam authored Dec 7, 2023
1 parent 710777e commit 35f1ee7
Show file tree
Hide file tree
Showing 10 changed files with 301 additions and 0 deletions.
37 changes: 37 additions & 0 deletions resource_customizations/db.atlasgo.io/AtlasMigration/health.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
hs = {}

local function readyCond(obj)
if obj.status ~= nil and obj.status.conditions ~= nil then
for _, condition in ipairs(obj.status.conditions) do
if condition.type == "Ready" then
return condition
end
end
end
return nil
end

local ready = readyCond(obj)

if ready == nil then
hs.status = "Progressing"
hs.message = "Waiting for Atlas Operator"
return hs
end

if ready.status == "True" then
hs.status = "Healthy"
hs.message = ready.reason
return hs
end

if ready.reason == "Reconciling" then
hs.status = "Progressing"
else
hs.status = "Degraded"
end

hs.message = ready.reason

return hs

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
tests:
- healthStatus:
status: Progressing
message: "Reconciling"
inputPath: testdata/progressing.yaml
- healthStatus:
status: Degraded
message: "Migrating"
inputPath: testdata/degraded.yaml
- healthStatus:
status: Healthy
message: "Applied"
inputPath: testdata/healthy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
apiVersion: db.atlasgo.io/v1alpha1
kind: AtlasMigration
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"db.atlasgo.io/v1alpha1","kind":"AtlasMigration","metadata":{"annotations":{},"name":"atlasmigration-sample","namespace":"default"},"spec":{"dir":{"configMapRef":{"name":"migration-dir"}},"urlFrom":{"secretKeyRef":{"key":"url","name":"mysql-credentials"}}}}
creationTimestamp: "2023-11-16T08:37:23Z"
generation: 1
name: atlasmigration-sample
namespace: default
resourceVersion: "49923"
uid: 0d5bc3d6-750e-4f5a-82a3-8b9173106ef4
spec:
dir:
configMapRef:
name: migration-dir
urlFrom:
secretKeyRef:
key: url
name: mysql-credentials
status:
conditions:
- lastTransitionTime: "2023-11-16T08:37:23Z"
message: 'Error: checksum mismatch'
reason: Migrating
status: "False"
type: Ready
lastApplied: 0
observed_hash: ""
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
apiVersion: db.atlasgo.io/v1alpha1
kind: AtlasMigration
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"db.atlasgo.io/v1alpha1","kind":"AtlasMigration","metadata":{"annotations":{},"name":"atlasmigration-sample","namespace":"default"},"spec":{"dir":{"configMapRef":{"name":"migration-dir"}},"urlFrom":{"secretKeyRef":{"key":"url","name":"mysql-credentials"}}}}
creationTimestamp: "2023-11-16T08:37:23Z"
generation: 1
name: atlasmigration-sample
namespace: default
resourceVersion: "50387"
uid: 0d5bc3d6-750e-4f5a-82a3-8b9173106ef4
spec:
dir:
configMapRef:
name: migration-dir
urlFrom:
secretKeyRef:
key: url
name: mysql-credentials
status:
conditions:
- lastTransitionTime: "2023-11-16T08:46:27Z"
message: ""
reason: Applied
status: "True"
type: Ready
lastApplied: 1700124387
lastAppliedVersion: "20230316085611"
observed_hash: 4969b3c84c097ff61a9f9722b595a66c1a4473bd85fdd282107b98a92db8a43b
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
apiVersion: db.atlasgo.io/v1alpha1
kind: AtlasMigration
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"db.atlasgo.io/v1alpha1","kind":"AtlasMigration","metadata":{"annotations":{},"name":"atlasmigration-sample","namespace":"default"},"spec":{"dir":{"configMapRef":{"name":"migration-dir"}},"urlFrom":{"secretKeyRef":{"key":"url","name":"mysql-credentials"}}}}
creationTimestamp: "2023-11-16T08:37:23Z"
generation: 1
name: atlasmigration-sample
namespace: default
resourceVersion: "50387"
uid: 0d5bc3d6-750e-4f5a-82a3-8b9173106ef4
spec:
dir:
configMapRef:
name: migration-dir
urlFrom:
secretKeyRef:
key: url
name: mysql-credentials
status:
conditions:
- lastTransitionTime: "2023-11-16T08:46:27Z"
message: "Current migration data has changed"
reason: "Reconciling"
status: "False"
type: Ready
lastApplied: 1700124387
lastAppliedVersion: "20230316085611"
observed_hash: 4969b3c84c097ff61a9f9722b595a66c1a4473bd85fdd282107b98a92db8a43b
37 changes: 37 additions & 0 deletions resource_customizations/db.atlasgo.io/AtlasSchema/health.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
hs = {}

local function readyCond(obj)
if obj.status ~= nil and obj.status.conditions ~= nil then
for _, condition in ipairs(obj.status.conditions) do
if condition.type == "Ready" then
return condition
end
end
end
return nil
end

local ready = readyCond(obj)

if ready == nil then
hs.status = "Progressing"
hs.message = "Waiting for Atlas Operator"
return hs
end

if ready.status == "True" then
hs.status = "Healthy"
hs.message = ready.reason
return hs
end

if ready.message == "Reconciling" or ready.message == "GettingDevDB" then
hs.status = "Progressing"
else
hs.status = "Degraded"
end

hs.message = ready.reason

return hs

13 changes: 13 additions & 0 deletions resource_customizations/db.atlasgo.io/AtlasSchema/health_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
tests:
- healthStatus:
status: Progressing
message: "Reconciling"
inputPath: testdata/progressing.yaml
- healthStatus:
status: Degraded
message: "ApplyingSchema"
inputPath: testdata/degraded.yaml
- healthStatus:
status: Healthy
message: "Applied"
inputPath: testdata/healthy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apiVersion: db.atlasgo.io/v1alpha1
kind: AtlasSchema
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"db.atlasgo.io/v1alpha1","kind":"AtlasSchema","metadata":{"annotations":{},"name":"atlasschema-mysql","namespace":"default"},"spec":{"schema":{"sql":"create table users (\n id int not null auto_increment,\n name varchar(255) not null,\n email varchar(255) unique not null,\n short_bio varchar(255) not null,\n primary key (id)\n);\n"},"urlFrom":{"secretKeyRef":{"key":"url","name":"mysql-credentials"}}}}
creationTimestamp: "2023-11-15T14:33:18Z"
generation: 2
name: atlasschema-mysql
namespace: default
resourceVersion: "46659"
uid: 54a4cdfc-e4f9-4c3d-934c-e08b6122e38a
spec:
schema:
sql: |
xcreate table users (
id int not null auto_increment,
name varchar(255) not null,
email varchar(255) unique not null,
short_bio varchar(255) not null,
primary key (id)
);
urlFrom:
secretKeyRef:
key: url
name: mysql-credentials
status:
conditions:
- lastTransitionTime: "2023-11-15T14:38:41Z"
message: |-
Error: sql/migrate: read migration directory state: sql/migrate: execute: executing statement "xcreate table users (\n id int not null auto_increment,\n name varchar(255) not null,\n email varchar(255) unique not null,\n short_bio varchar(255) not null,\n primary key (id)\n);" from version "schema": Error 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'xcreate table users (
id int not null auto_increment,
name varchar(255) not ' at line 1
reason: ApplyingSchema
status: "False"
type: Ready
last_applied: 1700058814
observed_hash: ddfe666707ddf5c2cc7625c2a0de89da51e54fc7caa6403db307146430d20d85
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
apiVersion: db.atlasgo.io/v1alpha1
kind: AtlasSchema
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"db.atlasgo.io/v1alpha1","kind":"AtlasSchema","metadata":{"annotations":{},"name":"atlasschema-mysql","namespace":"default"},"spec":{"schema":{"sql":"create table users (\n id int not null auto_increment,\n name varchar(255) not null,\n email varchar(255) unique not null,\n short_bio varchar(255) not null,\n primary key (id)\n);\n"},"urlFrom":{"secretKeyRef":{"key":"url","name":"mysql-credentials"}}}}
creationTimestamp: "2023-11-15T14:33:18Z"
generation: 1
name: atlasschema-mysql
namespace: default
resourceVersion: "46390"
uid: 54a4cdfc-e4f9-4c3d-934c-e08b6122e38a
spec:
schema:
sql: |
create table users (
id int not null auto_increment,
name varchar(255) not null,
email varchar(255) unique not null,
short_bio varchar(255) not null,
primary key (id)
);
urlFrom:
secretKeyRef:
key: url
name: mysql-credentials
status:
conditions:
- lastTransitionTime: "2023-11-15T14:33:34Z"
message: 'The schema has been applied successfully. Apply response: {"Driver":"mysql","URL":{"Scheme":"mysql","Opaque":"","User":{},"Host":"mysql.default:3306","Path":"/myapp","RawPath":"","OmitHost":false,"ForceQuery":false,"RawQuery":"parseTime=true","Fragment":"","RawFragment":"","Schema":"myapp"},"Changes":{"Applied":["CREATE
TABLE `users` (\n `id` int NOT NULL AUTO_INCREMENT,\n `name` varchar(255)
NOT NULL,\n `email` varchar(255) NOT NULL,\n `short_bio` varchar(255) NOT
NULL,\n PRIMARY KEY (`id`),\n UNIQUE INDEX `email` (`email`)\n) CHARSET utf8mb4
COLLATE utf8mb4_0900_ai_ci"]}}'
reason: Applied
status: "True"
type: Ready
last_applied: 1700058814
observed_hash: ddfe666707ddf5c2cc7625c2a0de89da51e54fc7caa6403db307146430d20d85
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
apiVersion: db.atlasgo.io/v1alpha1
kind: AtlasSchema
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"db.atlasgo.io/v1alpha1","kind":"AtlasSchema","metadata":{"annotations":{},"name":"atlasschema-mysql","namespace":"default"},"spec":{"schema":{"sql":"create table users (\n id int not null auto_increment,\n name varchar(255) not null,\n email varchar(255) unique not null,\n short_bio varchar(255) not null,\n primary key (id)\n);\n"},"urlFrom":{"secretKeyRef":{"key":"url","name":"mysql-credentials"}}}}
creationTimestamp: "2023-11-15T14:33:18Z"
generation: 1
name: atlasschema-mysql
namespace: default
resourceVersion: "46390"
uid: 54a4cdfc-e4f9-4c3d-934c-e08b6122e38a
spec:
schema:
sql: |
create table users (
id int not null auto_increment,
name varchar(255) not null,
email varchar(255) unique not null,
short_bio varchar(255) not null,
primary key (id)
);
urlFrom:
secretKeyRef:
key: url
name: mysql-credentials
status:
conditions:
- lastTransitionTime: "2023-11-15T14:33:34Z"
message: 'Reconciling'
reason: Reconciling
status: "False"
type: Ready
last_applied: 1700058814
observed_hash: ddfe666707ddf5c2cc7625c2a0de89da51e54fc7caa6403db307146430d20d85

0 comments on commit 35f1ee7

Please sign in to comment.