test(cp-gql-mock-server): unit tests
This commit is contained in:
parent
1416f5821b
commit
de68427a0c
@ -8,10 +8,10 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"lint": "eslint . --fix",
|
"lint": "eslint . --fix",
|
||||||
"lint-ci": "eslint . --format junit --output-file $CIRCLE_TEST_REPORTS/lint/cp-gql-mock-server.xml",
|
"lint-ci": "eslint . --format junit --output-file $CIRCLE_TEST_REPORTS/lint/cp-gql-mock-server.xml",
|
||||||
"test": "echo 0",
|
"test": "nyc --reporter=lcov --reporter=text ava --verbose",
|
||||||
"test-ci": "echo 0",
|
"test-ci": "nyc --report-dir=$CIRCLE_ARTIFACTS/cp-gql-mock-server --reporter=lcov --reporter=text ava --tap | tap-xunit > $CIRCLE_TEST_REPORTS/test/cp-gql-mock-server.xml",
|
||||||
"start": "node src/index.js",
|
"start": "node src/index.js",
|
||||||
"dev": "nodemon src/index.js"
|
"dev": "PORT=3000 nodemon src/index.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"build-array": "^1.0.0",
|
"build-array": "^1.0.0",
|
||||||
@ -21,6 +21,7 @@
|
|||||||
"good-squeeze": "^5.0.2",
|
"good-squeeze": "^5.0.2",
|
||||||
"graphi": "^2.2.1",
|
"graphi": "^2.2.1",
|
||||||
"hapi": "^16.4.3",
|
"hapi": "^16.4.3",
|
||||||
|
"hasha": "^3.0.0",
|
||||||
"joi": "^10.6.0",
|
"joi": "^10.6.0",
|
||||||
"joyent-cp-gql-schema": "^1.0.4",
|
"joyent-cp-gql-schema": "^1.0.4",
|
||||||
"js-yaml": "^3.8.4",
|
"js-yaml": "^3.8.4",
|
||||||
@ -33,8 +34,24 @@
|
|||||||
"uuid": "^3.1.0"
|
"uuid": "^3.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"apollo-client": "^1.9.0-1",
|
||||||
|
"ava": "^0.21.0",
|
||||||
|
"delay": "^2.0.0",
|
||||||
"eslint": "^3.19.0",
|
"eslint": "^3.19.0",
|
||||||
"eslint-config-joyent-portal": "2.0.0",
|
"eslint-config-joyent-portal": "2.0.0",
|
||||||
"nodemon": "^1.11.0"
|
"execa": "^0.7.0",
|
||||||
|
"mz": "^2.6.0",
|
||||||
|
"nodemon": "^1.11.0",
|
||||||
|
"nyc": "^11.0.3",
|
||||||
|
"tap-xunit": "^1.7.0"
|
||||||
|
},
|
||||||
|
"ava": {
|
||||||
|
"files": [
|
||||||
|
"test/*.js"
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"src/*.js"
|
||||||
|
],
|
||||||
|
"failFast": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -4,51 +4,40 @@
|
|||||||
"name": "cpexample",
|
"name": "cpexample",
|
||||||
"slug": "cpexample",
|
"slug": "cpexample",
|
||||||
"imported": true,
|
"imported": true,
|
||||||
"status": "ACTIVE",
|
"status": "ACTIVE"
|
||||||
"__typename": "DeploymentGroup"
|
|
||||||
},
|
},
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{
|
||||||
"id": "af6a5cd2-291f-490b-bf3b-141b010635db",
|
"id": "af6a5cd2-291f-490b-bf3b-141b010635db",
|
||||||
"name": "frontend",
|
"name": "frontend",
|
||||||
"slug": "frontend",
|
"slug": "frontend",
|
||||||
"status": null,
|
"status": "ACTIVE",
|
||||||
"__typename": "Service",
|
|
||||||
"branches": [],
|
"branches": [],
|
||||||
"connections": [
|
"connections": ["aea06a05-830a-46d3-bdc1-9dcba97303de"],
|
||||||
"aea06a05-830a-46d3-bdc1-9dcba97303de"
|
|
||||||
],
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67"
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
"id": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
||||||
"name": "mysql",
|
"name": "mysql",
|
||||||
"slug": "mysql",
|
"slug": "mysql",
|
||||||
"status": null,
|
"status": "ACTIVE",
|
||||||
"__typename": "Service",
|
|
||||||
"branches": [
|
"branches": [
|
||||||
{
|
{
|
||||||
"name": "mysql-primary",
|
"name": "mysql-primary",
|
||||||
"slug": "mysql-primary",
|
"slug": "mysql-primary",
|
||||||
"instances": [
|
"instances": ["1188dfa0-efac-4142-8a6d-615841dc04e7"],
|
||||||
"1188dfa0-efac-4142-8a6d-615841dc04e7"
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67"
|
||||||
],
|
|
||||||
"__typename": "Service",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
|
||||||
"id": "mysql-primary-mysql-primary"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "mysql",
|
"name": "mysql",
|
||||||
"slug": "mysql",
|
"slug": "mysql",
|
||||||
"instances": [
|
"instances": [
|
||||||
"0d757833-7912-4777-81ce-f302c653cfda",
|
"ec13cf3f-dcb4-47d4-9b87-38477a02ac9b",
|
||||||
"3ec9132f-9093-4644-a2fd-a9749d0011ca",
|
"3ec9132f-9093-4644-a2fd-a9749d0011ca",
|
||||||
"6e460ff1-7bc3-4c9b-b093-f37b1134f37b",
|
"6e460ff1-7bc3-4c9b-b093-f37b1134f37b",
|
||||||
"991cbab5-b773-4651-b5b9-b95c299cf50f"
|
"991cbab5-b773-4651-b5b9-b95c299cf50f"
|
||||||
],
|
],
|
||||||
"__typename": "Service",
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67"
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
|
||||||
"id": "mysql-mysql"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"connections": [],
|
"connections": [],
|
||||||
@ -58,8 +47,7 @@
|
|||||||
"id": "908b64d9-070b-4c9a-b7d8-757ec3c9c7f4",
|
"id": "908b64d9-070b-4c9a-b7d8-757ec3c9c7f4",
|
||||||
"name": "producer",
|
"name": "producer",
|
||||||
"slug": "producer",
|
"slug": "producer",
|
||||||
"status": null,
|
"status": "ACTIVE",
|
||||||
"__typename": "Service",
|
|
||||||
"branches": [],
|
"branches": [],
|
||||||
"connections": [
|
"connections": [
|
||||||
"2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
"2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
||||||
@ -71,8 +59,7 @@
|
|||||||
"id": "aea06a05-830a-46d3-bdc1-9dcba97303de",
|
"id": "aea06a05-830a-46d3-bdc1-9dcba97303de",
|
||||||
"name": "api",
|
"name": "api",
|
||||||
"slug": "api",
|
"slug": "api",
|
||||||
"status": null,
|
"status": "ACTIVE",
|
||||||
"__typename": "Service",
|
|
||||||
"branches": [],
|
"branches": [],
|
||||||
"connections": [
|
"connections": [
|
||||||
"2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
"2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
||||||
@ -85,8 +72,7 @@
|
|||||||
"id": "e30c9c43-5af6-4adb-b3cd-8c383d911a0a",
|
"id": "e30c9c43-5af6-4adb-b3cd-8c383d911a0a",
|
||||||
"name": "consul",
|
"name": "consul",
|
||||||
"slug": "consul",
|
"slug": "consul",
|
||||||
"status": null,
|
"status": "ACTIVE",
|
||||||
"__typename": "Service",
|
|
||||||
"branches": [],
|
"branches": [],
|
||||||
"connections": [],
|
"connections": [],
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67"
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67"
|
||||||
@ -100,132 +86,88 @@
|
|||||||
"__typename": "Instance",
|
"__typename": "Instance",
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
||||||
"serviceId": "af6a5cd2-291f-490b-bf3b-141b010635db",
|
"serviceId": "af6a5cd2-291f-490b-bf3b-141b010635db",
|
||||||
|
"machineId": "c5da7ba6-c544-4f78-9dcc-4ae418a08ed2",
|
||||||
"name": "frontend-0"
|
"name": "frontend-0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "c5c7ae33-cfe1-43cc-9e9b-6f453de3888d",
|
"id": "c5c7ae33-cfe1-43cc-9e9b-6f453de3888d",
|
||||||
"status": "FAILED",
|
"status": "FAILED",
|
||||||
"healthy": "UNAVAILABLE",
|
"healthy": "UNAVAILABLE",
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
||||||
"serviceId": "af6a5cd2-291f-490b-bf3b-141b010635db",
|
"serviceId": "af6a5cd2-291f-490b-bf3b-141b010635db",
|
||||||
|
"machineId": "4be909bb-1ee1-4503-a5d0-62e3d460bb93",
|
||||||
"name": "frontend-1"
|
"name": "frontend-1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "1188dfa0-efac-4142-8a6d-615841dc04e7",
|
"id": "ec13cf3f-dcb4-47d4-9b87-38477a02ac9b",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "UNKNOWN",
|
"healthy": "UNKNOWN",
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
|
||||||
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
|
||||||
"name": "mysql-primary-0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "0d757833-7912-4777-81ce-f302c653cfda",
|
|
||||||
"status": "RUNNING",
|
|
||||||
"healthy": "UNKNOWN",
|
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
|
||||||
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
|
||||||
"name": "mysql-0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "3ec9132f-9093-4644-a2fd-a9749d0011ca",
|
|
||||||
"status": "RUNNING",
|
|
||||||
"healthy": "UNKNOWN",
|
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
||||||
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
||||||
|
"machineId": "45d1ce78-900b-402d-9553-858e4ec55b87",
|
||||||
"name": "mysql-1"
|
"name": "mysql-1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "6e460ff1-7bc3-4c9b-b093-f37b1134f37b",
|
"id": "6e460ff1-7bc3-4c9b-b093-f37b1134f37b",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "UNKNOWN",
|
"healthy": "UNKNOWN",
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
|
||||||
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
|
||||||
"name": "mysql-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "991cbab5-b773-4651-b5b9-b95c299cf50f",
|
|
||||||
"status": "RUNNING",
|
|
||||||
"healthy": "UNKNOWN",
|
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
|
||||||
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
|
||||||
"name": "mysql-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "0d757833-7912-4777-81ce-f302c653cfda",
|
|
||||||
"status": "RUNNING",
|
|
||||||
"healthy": "UNKNOWN",
|
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
|
||||||
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
|
||||||
"name": "mysql-0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1188dfa0-efac-4142-8a6d-615841dc04e7",
|
|
||||||
"status": "RUNNING",
|
|
||||||
"healthy": "UNKNOWN",
|
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
|
||||||
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
|
||||||
"name": "mysql-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "6e460ff1-7bc3-4c9b-b093-f37b1134f37b",
|
|
||||||
"status": "RUNNING",
|
|
||||||
"healthy": "UNKNOWN",
|
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
||||||
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
||||||
|
"machineId": "11d2c82a-6092-4cac-a97a-bec81bbaffdf",
|
||||||
"name": "mysql-2"
|
"name": "mysql-2"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "3ec9132f-9093-4644-a2fd-a9749d0011ca",
|
"id": "3ec9132f-9093-4644-a2fd-a9749d0011ca",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "UNKNOWN",
|
"healthy": "UNKNOWN",
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
||||||
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
||||||
|
"machineId": "4a58eab4-3bb6-49c6-aaeb-45a7a9310af0",
|
||||||
"name": "mysql-3"
|
"name": "mysql-3"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "991cbab5-b773-4651-b5b9-b95c299cf50f",
|
"id": "991cbab5-b773-4651-b5b9-b95c299cf50f",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "UNKNOWN",
|
"healthy": "UNKNOWN",
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
||||||
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
||||||
|
"machineId": "9f6c637f-0ef5-464c-b278-55c3cf2a76f5",
|
||||||
"name": "mysql-4"
|
"name": "mysql-4"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "1188dfa0-efac-4142-8a6d-615841dc04e7",
|
||||||
|
"status": "RUNNING",
|
||||||
|
"healthy": "UNKNOWN",
|
||||||
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
||||||
|
"serviceId": "2c872d69-25d1-46e9-84d8-dcc89ea0d5a1",
|
||||||
|
"machineId": "7dd8b110-dbea-43a4-9643-316ed2a053bd",
|
||||||
|
"name": "mysql-5"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "1e3dc868-8738-41b3-a70f-ea332823429c",
|
"id": "1e3dc868-8738-41b3-a70f-ea332823429c",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "UNKNOWN",
|
"healthy": "UNKNOWN",
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
||||||
"serviceId": "908b64d9-070b-4c9a-b7d8-757ec3c9c7f4",
|
"serviceId": "908b64d9-070b-4c9a-b7d8-757ec3c9c7f4",
|
||||||
|
"machineId": "76d03576-787b-4ac9-85e7-3e6e5ea5b60c",
|
||||||
"name": "producer-0"
|
"name": "producer-0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "2ddf4ce0-0cc6-4df9-ac0e-7518e9fff19e",
|
"id": "2ddf4ce0-0cc6-4df9-ac0e-7518e9fff19e",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "UNKNOWN",
|
"healthy": "UNKNOWN",
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
||||||
"serviceId": "aea06a05-830a-46d3-bdc1-9dcba97303de",
|
"serviceId": "aea06a05-830a-46d3-bdc1-9dcba97303de",
|
||||||
|
"machineId": "949c82eb-b6bf-47e0-a7e5-d3edbc7299be",
|
||||||
"name": "api-0"
|
"name": "api-0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "c9698959-eaa2-4b32-9333-fc2591702cf7",
|
"id": "c9698959-eaa2-4b32-9333-fc2591702cf7",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "UNAVAILABLE",
|
"healthy": "UNAVAILABLE",
|
||||||
"__typename": "Instance",
|
|
||||||
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
"deploymentGroupId": "24b16df5-7553-45d9-ab7f-62d541764b67",
|
||||||
"serviceId": "e30c9c43-5af6-4adb-b3cd-8c383d911a0a",
|
"serviceId": "e30c9c43-5af6-4adb-b3cd-8c383d911a0a",
|
||||||
|
"machineId": "65b286a1-66f6-4c42-bdd5-0fdb986bfbf3",
|
||||||
"name": "consul-0"
|
"name": "consul-0"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
{
|
{
|
||||||
"datacenter": {
|
"datacenter": {
|
||||||
"id": "datacenter-uuid",
|
"id": "e84d14cc-5b49-4b4e-83ce-ae82e3994c44",
|
||||||
"region": "us-east-1"
|
"region": "us-east-1",
|
||||||
|
"name": "US East 1"
|
||||||
},
|
},
|
||||||
"portal": {
|
"portal": {
|
||||||
|
"id": "296a92bf-65cd-4787-b5a7-444489a31e04",
|
||||||
"user": {
|
"user": {
|
||||||
"id": "id",
|
"id": "daf18f20-60c3-4a17-a61e-b5aa60f9e43e",
|
||||||
"login": "juditgreskovits",
|
"login": "juditgreskovits",
|
||||||
"firstName": "Judit",
|
"firstName": "Judit",
|
||||||
"lastName": "Greskovits",
|
"lastName": "Greskovits",
|
||||||
|
@ -20,7 +20,7 @@ const handlerError = err => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
server.connection({
|
server.connection({
|
||||||
port: 3000,
|
port: process.env.PORT,
|
||||||
routes: {
|
routes: {
|
||||||
cors: true
|
cors: true
|
||||||
}
|
}
|
||||||
|
@ -8,19 +8,27 @@ const flatten = require('lodash.flatten');
|
|||||||
const random = require('lodash.random');
|
const random = require('lodash.random');
|
||||||
const uniq = require('lodash.uniq');
|
const uniq = require('lodash.uniq');
|
||||||
const yaml = require('js-yaml');
|
const yaml = require('js-yaml');
|
||||||
|
const hasha = require('hasha');
|
||||||
|
|
||||||
const wpData = require('./wp-data.json');
|
const wpData = require('./wp-data.json');
|
||||||
const cpData = require('./cp-data.json');
|
const cpData = require('./cp-data.json');
|
||||||
const complexData = require('./complex-data.json');
|
const complexData = require('./complex-data.json');
|
||||||
|
|
||||||
const {
|
const { datacenter, portal } = require('./data.json');
|
||||||
datacenter,
|
|
||||||
portal
|
|
||||||
} = require('./data.json');
|
|
||||||
|
|
||||||
const deploymentGroups = [wpData.deploymentGroup, cpData.deploymentGroup, complexData.deploymentGroup];
|
const deploymentGroups = [
|
||||||
const services = wpData.services.concat(cpData.services).concat(complexData.services);
|
wpData.deploymentGroup,
|
||||||
const instances = wpData.instances.concat(cpData.instances).concat(complexData.instances);
|
cpData.deploymentGroup,
|
||||||
|
complexData.deploymentGroup
|
||||||
|
];
|
||||||
|
|
||||||
|
const services = wpData.services
|
||||||
|
.concat(cpData.services)
|
||||||
|
.concat(complexData.services);
|
||||||
|
|
||||||
|
const instances = wpData.instances
|
||||||
|
.concat(cpData.instances)
|
||||||
|
.concat(complexData.instances);
|
||||||
|
|
||||||
const find = (query = {}) => item =>
|
const find = (query = {}) => item =>
|
||||||
Object.keys(query).every(key => item[key] === query[key]);
|
Object.keys(query).every(key => item[key] === query[key]);
|
||||||
@ -44,12 +52,15 @@ const getUnfilteredServices = query => {
|
|||||||
instances: instancesResolver(service),
|
instances: instancesResolver(service),
|
||||||
branches: (service.branches || []).map(service =>
|
branches: (service.branches || []).map(service =>
|
||||||
Object.assign({}, service, {
|
Object.assign({}, service, {
|
||||||
instances: () => {
|
id: hasha(JSON.stringify(service)),
|
||||||
return Promise.resolve(
|
instances: query =>
|
||||||
|
Promise.resolve(
|
||||||
flatten(
|
flatten(
|
||||||
service.instances.map(id => instances.filter(find({ id })))
|
service.instances.map(id =>
|
||||||
|
instances.filter(find(Object.assign({}, query, { id })))
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)}
|
)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
@ -115,12 +126,15 @@ const getPortal = () =>
|
|||||||
);
|
);
|
||||||
|
|
||||||
const createDeploymentGroup = ({ name }) => {
|
const createDeploymentGroup = ({ name }) => {
|
||||||
const dg = {
|
const _dg = {
|
||||||
id: uuid(),
|
|
||||||
slug: paramCase(name),
|
slug: paramCase(name),
|
||||||
name
|
name
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const dg = Object.assign({}, _dg, {
|
||||||
|
id: hasha(JSON.stringify(_dg))
|
||||||
|
});
|
||||||
|
|
||||||
deploymentGroups.push(dg);
|
deploymentGroups.push(dg);
|
||||||
|
|
||||||
return Promise.resolve(dg);
|
return Promise.resolve(dg);
|
||||||
@ -166,20 +180,26 @@ const createServicesFromManifest = ({ deploymentGroupId, raw }) => {
|
|||||||
const manifest = yaml.safeLoad(raw);
|
const manifest = yaml.safeLoad(raw);
|
||||||
|
|
||||||
Object.keys(manifest).forEach(name => {
|
Object.keys(manifest).forEach(name => {
|
||||||
const service = {
|
const _service = {
|
||||||
id: uuid(),
|
deploymentGroupId,
|
||||||
deploymentGroup: deploymentGroupId,
|
|
||||||
slug: paramCase(name),
|
slug: paramCase(name),
|
||||||
name
|
name
|
||||||
};
|
};
|
||||||
|
|
||||||
const instance = {
|
const service = Object.assign({}, _service, {
|
||||||
id: uuid(),
|
id: hasha(JSON.stringify(_service))
|
||||||
|
});
|
||||||
|
|
||||||
|
const _instance = {
|
||||||
name: camelCase(`${service.slug}_01`),
|
name: camelCase(`${service.slug}_01`),
|
||||||
service: service.id,
|
serviceId: service.id,
|
||||||
deploymentGroup: deploymentGroupId
|
deploymentGroupId
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const instance = Object.assign({}, _instance, {
|
||||||
|
id: hasha(JSON.stringify(_instance))
|
||||||
|
});
|
||||||
|
|
||||||
services.push(service);
|
services.push(service);
|
||||||
instances.push(instance);
|
instances.push(instance);
|
||||||
});
|
});
|
||||||
@ -207,14 +227,19 @@ const scale = ({ serviceId, replicas }) => {
|
|||||||
|
|
||||||
const up = n => {
|
const up = n => {
|
||||||
buildArray(n).forEach((_, i) => {
|
buildArray(n).forEach((_, i) => {
|
||||||
instances.push({
|
const instance = {
|
||||||
id: uuid(),
|
|
||||||
name: `${services[serviceIndex].slug}_${currentScale + i}`,
|
name: `${services[serviceIndex].slug}_${currentScale + i}`,
|
||||||
serviceId,
|
serviceId,
|
||||||
deploymentGroupId: services[serviceIndex].deploymentGroupId,
|
deploymentGroupId: services[serviceIndex].deploymentGroupId,
|
||||||
status: 'ACTIVE',
|
status: 'ACTIVE',
|
||||||
healthy: 'UNKNOWN'
|
healthy: 'UNKNOWN'
|
||||||
});
|
};
|
||||||
|
|
||||||
|
instances.push(
|
||||||
|
Object.assign({}, instance, {
|
||||||
|
id: hasha(JSON.stringify(instance))
|
||||||
|
})
|
||||||
|
);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -385,7 +410,7 @@ module.exports = {
|
|||||||
createDeploymentGroup,
|
createDeploymentGroup,
|
||||||
provisionManifest: options =>
|
provisionManifest: options =>
|
||||||
createServicesFromManifest(options).then(() => ({
|
createServicesFromManifest(options).then(() => ({
|
||||||
id: uuid(),
|
id: hasha(JSON.stringify(options)),
|
||||||
type: options.type,
|
type: options.type,
|
||||||
format: options.format
|
format: options.format
|
||||||
})),
|
})),
|
||||||
|
@ -1,19 +1,16 @@
|
|||||||
{
|
{
|
||||||
"deploymentGroup":
|
"deploymentGroup": {
|
||||||
{
|
"id": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
"id": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"slug": "wordpress-blog-example",
|
||||||
"slug": "wordpress-blog-example",
|
"name": "Wordpress Blog Example"
|
||||||
"name": "Wordpress Blog Example"
|
},
|
||||||
},
|
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{
|
||||||
"id": "081a792c-47e0-4439-924b-2efa9788ae9e",
|
"id": "081a792c-47e0-4439-924b-2efa9788ae9e",
|
||||||
"slug": "nginx",
|
"slug": "nginx",
|
||||||
"name": "Nginx",
|
"name": "Nginx",
|
||||||
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
"connections": [
|
"connections": ["be227788-74f1-4e5b-a85f-b5c71cbae8d8"]
|
||||||
"be227788-74f1-4e5b-a85f-b5c71cbae8d8"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "be227788-74f1-4e5b-a85f-b5c71cbae8d8",
|
"id": "be227788-74f1-4e5b-a85f-b5c71cbae8d8",
|
||||||
@ -43,17 +40,20 @@
|
|||||||
"slug": "percona",
|
"slug": "percona",
|
||||||
"name": "Percona",
|
"name": "Percona",
|
||||||
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
"branches": [{
|
"branches": [
|
||||||
"id": "dmklaskdls",
|
{
|
||||||
"slug": "percona",
|
"id": "dmklaskdls",
|
||||||
"name": "Percona",
|
"slug": "percona",
|
||||||
"instances": ["c3ec7633-a02b-4615-86a0-9e6faeaae94b"]
|
"name": "Percona",
|
||||||
}, {
|
"instances": ["c3ec7633-a02b-4615-86a0-9e6faeaae94b"]
|
||||||
"id": "dmklaskdls",
|
},
|
||||||
"slug": "percona-primary",
|
{
|
||||||
"name": "percona-primary",
|
"id": "dmklaskdls",
|
||||||
"instances": ["c2b5fec2-31e2-41a7-b7fc-cd0bb1822e76"]
|
"slug": "percona-primary",
|
||||||
}]
|
"name": "percona-primary",
|
||||||
|
"instances": ["c2b5fec2-31e2-41a7-b7fc-cd0bb1822e76"]
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "97c68055-db88-45c9-ad49-f26da4264777",
|
"id": "97c68055-db88-45c9-ad49-f26da4264777",
|
||||||
@ -86,6 +86,7 @@
|
|||||||
"name": "wordpress_01",
|
"name": "wordpress_01",
|
||||||
"serviceId": "be227788-74f1-4e5b-a85f-b5c71cbae8d8",
|
"serviceId": "be227788-74f1-4e5b-a85f-b5c71cbae8d8",
|
||||||
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
|
"machineId": "011f7479-2d45-442d-99bf-7f6216954cc8",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "HEALTHY"
|
"healthy": "HEALTHY"
|
||||||
},
|
},
|
||||||
@ -94,6 +95,7 @@
|
|||||||
"name": "nfs_01",
|
"name": "nfs_01",
|
||||||
"serviceId": "6a0eee76-c019-413b-9d5f-44712b55b993",
|
"serviceId": "6a0eee76-c019-413b-9d5f-44712b55b993",
|
||||||
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
|
"machineId": "991c0d29-5c99-4a45-a05f-78c213e77d4f",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "HEALTHY"
|
"healthy": "HEALTHY"
|
||||||
},
|
},
|
||||||
@ -102,6 +104,7 @@
|
|||||||
"name": "consul",
|
"name": "consul",
|
||||||
"serviceId": "97c68055-db88-45c9-ad49-f26da4264777",
|
"serviceId": "97c68055-db88-45c9-ad49-f26da4264777",
|
||||||
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
|
"machineId": "ff5dd3a0-7c12-4ea9-8a41-58b759b2c76d",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "UNHEALTHY"
|
"healthy": "UNHEALTHY"
|
||||||
},
|
},
|
||||||
@ -110,6 +113,7 @@
|
|||||||
"name": "memcache_01",
|
"name": "memcache_01",
|
||||||
"serviceId": "6d31aff4-de1e-4042-a983-fbd23d5c530c",
|
"serviceId": "6d31aff4-de1e-4042-a983-fbd23d5c530c",
|
||||||
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
|
"machineId": "8d8a2238-d981-4849-b523-a37456fbe20b",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "HEALTHY"
|
"healthy": "HEALTHY"
|
||||||
},
|
},
|
||||||
@ -118,6 +122,7 @@
|
|||||||
"name": "memcache_02",
|
"name": "memcache_02",
|
||||||
"serviceId": "6d31aff4-de1e-4042-a983-fbd23d5c530c",
|
"serviceId": "6d31aff4-de1e-4042-a983-fbd23d5c530c",
|
||||||
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
|
"machineId": "f95ad0b9-996f-4f49-8826-e08dd319d5a8",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "HEALTHY"
|
"healthy": "HEALTHY"
|
||||||
},
|
},
|
||||||
@ -126,6 +131,7 @@
|
|||||||
"name": "memcache_03",
|
"name": "memcache_03",
|
||||||
"serviceId": "6d31aff4-de1e-4042-a983-fbd23d5c530c",
|
"serviceId": "6d31aff4-de1e-4042-a983-fbd23d5c530c",
|
||||||
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
|
"machineId": "d6871ac4-6433-40c3-89e8-8853ce7f8571",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "HEALTHY"
|
"healthy": "HEALTHY"
|
||||||
},
|
},
|
||||||
@ -134,6 +140,7 @@
|
|||||||
"name": "memcache_04",
|
"name": "memcache_04",
|
||||||
"serviceId": "6d31aff4-de1e-4042-a983-fbd23d5c530c",
|
"serviceId": "6d31aff4-de1e-4042-a983-fbd23d5c530c",
|
||||||
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
|
"machineId": "d89612c8-0578-474a-b45d-98a1dcf6dd18",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "HEALTHY"
|
"healthy": "HEALTHY"
|
||||||
},
|
},
|
||||||
@ -142,6 +149,7 @@
|
|||||||
"name": "memcache_05",
|
"name": "memcache_05",
|
||||||
"serviceId": "6d31aff4-de1e-4042-a983-fbd23d5c530c",
|
"serviceId": "6d31aff4-de1e-4042-a983-fbd23d5c530c",
|
||||||
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
|
"machineId": "3a9fbaf8-722b-463a-86bd-8d3afe0dd759",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "HEALTHY"
|
"healthy": "HEALTHY"
|
||||||
},
|
},
|
||||||
@ -150,6 +158,7 @@
|
|||||||
"name": "nginx",
|
"name": "nginx",
|
||||||
"serviceId": "081a792c-47e0-4439-924b-2efa9788ae9e",
|
"serviceId": "081a792c-47e0-4439-924b-2efa9788ae9e",
|
||||||
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
|
"machineId": "76fe79b8-356b-408d-9089-93c87abdbe93",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "HEALTHY"
|
"healthy": "HEALTHY"
|
||||||
},
|
},
|
||||||
@ -158,6 +167,7 @@
|
|||||||
"name": "percona-primary",
|
"name": "percona-primary",
|
||||||
"serviceId": "4ee4103e-1a52-4099-a48e-01588f597c70",
|
"serviceId": "4ee4103e-1a52-4099-a48e-01588f597c70",
|
||||||
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
|
"machineId": "bd57fbf6-f80a-4d59-a6cd-ab3e41813796",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "UNHEALTHY"
|
"healthy": "UNHEALTHY"
|
||||||
},
|
},
|
||||||
@ -166,6 +176,7 @@
|
|||||||
"name": "percona-secondary",
|
"name": "percona-secondary",
|
||||||
"serviceId": "4ee4103e-1a52-4099-a48e-01588f597c70",
|
"serviceId": "4ee4103e-1a52-4099-a48e-01588f597c70",
|
||||||
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
"deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
|
||||||
|
"machineId": "54f56455-3b0c-4e79-882c-ff28b517d2b9",
|
||||||
"status": "RUNNING",
|
"status": "RUNNING",
|
||||||
"healthy": "HEALTHY"
|
"healthy": "HEALTHY"
|
||||||
}
|
}
|
||||||
|
840
packages/cp-gql-mock-server/test/index.js
Normal file
840
packages/cp-gql-mock-server/test/index.js
Normal file
@ -0,0 +1,840 @@
|
|||||||
|
const test = require('ava');
|
||||||
|
const gql = require('graphql-tag');
|
||||||
|
const { readFile } = require('mz/fs');
|
||||||
|
const path = require('path');
|
||||||
|
const execa = require('execa');
|
||||||
|
const wait = require('delay');
|
||||||
|
|
||||||
|
const {
|
||||||
|
default: ApolloClient,
|
||||||
|
createNetworkInterface
|
||||||
|
} = require('apollo-client');
|
||||||
|
|
||||||
|
let port = 3000;
|
||||||
|
|
||||||
|
const fetchTag = file =>
|
||||||
|
readFile(path.join(__dirname, `tags/${file}.gql`), 'utf-8');
|
||||||
|
|
||||||
|
const getClient = () =>
|
||||||
|
new Promise((resolve, reject) => {
|
||||||
|
const server = execa('node', ['.'], {
|
||||||
|
stdio: 'pipe',
|
||||||
|
cwd: path.join(__dirname, '..'),
|
||||||
|
env: {
|
||||||
|
PORT: (port += 1)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const client = new ApolloClient({
|
||||||
|
networkInterface: createNetworkInterface({
|
||||||
|
uri: `http://localhost:${port}/api/graphql`
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
const close = () => {
|
||||||
|
client.resetStore();
|
||||||
|
};
|
||||||
|
|
||||||
|
server.stdout.on('data', d => {
|
||||||
|
if (/server started at /.test(d)) {
|
||||||
|
resolve(client);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
server.stdout.pipe(process.stdout);
|
||||||
|
server.stderr.pipe(process.stderr);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should return everything', async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const res = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('all'))
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(res.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should return only Portal', async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const res = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('portal-only'))
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(res.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test("should return DeploymentGroup's", async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const dgs = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups'))
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsDirect = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct'))
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(dgs.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsDirect.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test("should return filtered DeploymentGroup's", async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const dgs = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'wordpress-blog-example'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsDirect = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'wordpress-blog-example'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(dgs.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsDirect.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should return services', async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const services = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('services'))
|
||||||
|
});
|
||||||
|
|
||||||
|
const servicesDirect = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('services-direct'))
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(services.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(servicesDirect.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should return filtered services', async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const services = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('services-filtered')),
|
||||||
|
variables: {
|
||||||
|
dgSlug: 'wordpress-blog-example',
|
||||||
|
sSlug: 'nginx'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const servicesDirect = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('services-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
sSlug: 'nginx'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(services.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(servicesDirect.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should return instances', async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const instances = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('instances'))
|
||||||
|
});
|
||||||
|
|
||||||
|
const instancesDirect = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('instances-direct'))
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(instances.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(instancesDirect.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should return filtered instances', async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const instances = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('instances-filtered')),
|
||||||
|
variables: {
|
||||||
|
dgSlug: 'cpexample',
|
||||||
|
sSlug: 'mysql',
|
||||||
|
iName: 'mysql-2',
|
||||||
|
biName: 'mysql-1'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const instancesDirect = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('instances-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
dgSlug: 'cpexample',
|
||||||
|
sSlug: 'mysql',
|
||||||
|
iName: 'mysql-2',
|
||||||
|
biName: 'mysql-1'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(instances.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(instancesDirect.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should create DeploymentGroup', async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const created = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('create-deployment-group')),
|
||||||
|
variables: {
|
||||||
|
name: 'test'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgs = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups'))
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsDirect = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct'))
|
||||||
|
});
|
||||||
|
|
||||||
|
const fDgs = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const fDgsDirect = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(created.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgs.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsDirect.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(fDgs.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(fDgsDirect.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should delete DeploymentGroup', async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const created = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('create-deployment-group')),
|
||||||
|
variables: {
|
||||||
|
name: 'test1'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsBefore = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups'))
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsDirectBefore = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct'))
|
||||||
|
});
|
||||||
|
|
||||||
|
const fDgsBefore = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test1'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const fDgsDirectBefore = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test1'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(created.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsBefore.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsDirectBefore.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(fDgsBefore.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(fDgsDirectBefore.data, null, 2));
|
||||||
|
|
||||||
|
const deleted = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('delete-deployment-group')),
|
||||||
|
variables: {
|
||||||
|
id: created.data.createDeploymentGroup.id
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsAfter = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups'))
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsDirectAfter = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct'))
|
||||||
|
});
|
||||||
|
|
||||||
|
const fDgsAfter = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test1'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const fDgsDirectAfter = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test1'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(dgsAfter.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsDirectAfter.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(fDgsAfter.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(fDgsDirectAfter.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should provisionManifest', async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const dg = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('create-deployment-group')),
|
||||||
|
variables: {
|
||||||
|
name: 'test2'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const provision = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('provision-manifest')),
|
||||||
|
variables: {
|
||||||
|
deploymentGroupId: dg.data.createDeploymentGroup.id,
|
||||||
|
type: 'COMPOSE',
|
||||||
|
format: 'YAML',
|
||||||
|
environment: {},
|
||||||
|
files: [],
|
||||||
|
raw: `
|
||||||
|
redis:
|
||||||
|
image: redis:latest
|
||||||
|
`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgs = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test2'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(dg.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(provision.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgs.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should scale up', async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const dg = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('create-deployment-group')),
|
||||||
|
variables: {
|
||||||
|
name: 'test3'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const provision = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('provision-manifest')),
|
||||||
|
variables: {
|
||||||
|
deploymentGroupId: dg.data.createDeploymentGroup.id,
|
||||||
|
type: 'COMPOSE',
|
||||||
|
format: 'YAML',
|
||||||
|
environment: {},
|
||||||
|
files: [],
|
||||||
|
raw: `
|
||||||
|
redis:
|
||||||
|
image: redis:latest
|
||||||
|
`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsBefore = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test3'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const scale = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('scale')),
|
||||||
|
variables: {
|
||||||
|
serviceId: dgsBefore.data.portal.deploymentGroups[0].services[0].id,
|
||||||
|
replicas: 10
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await wait(3100);
|
||||||
|
|
||||||
|
const dgsAfter = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test3'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(dg.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(provision.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsBefore.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsAfter.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should scale down', async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const dg = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('create-deployment-group')),
|
||||||
|
variables: {
|
||||||
|
name: 'test4'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const provision = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('provision-manifest')),
|
||||||
|
variables: {
|
||||||
|
deploymentGroupId: dg.data.createDeploymentGroup.id,
|
||||||
|
type: 'COMPOSE',
|
||||||
|
format: 'YAML',
|
||||||
|
environment: {},
|
||||||
|
files: [],
|
||||||
|
raw: `
|
||||||
|
redis:
|
||||||
|
image: redis:latest
|
||||||
|
`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgs = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test4'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const scaleUp = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('scale')),
|
||||||
|
variables: {
|
||||||
|
serviceId: dgs.data.portal.deploymentGroups[0].services[0].id,
|
||||||
|
replicas: 10
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await wait(3100);
|
||||||
|
|
||||||
|
const dgsBefore = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test4'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const scaleDown = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('scale')),
|
||||||
|
variables: {
|
||||||
|
serviceId: dgs.data.portal.deploymentGroups[0].services[0].id,
|
||||||
|
replicas: 7
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await wait(3100);
|
||||||
|
|
||||||
|
const dgsAfter = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test4'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(dg.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(provision.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgs.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsBefore.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsAfter.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test("should delete Service's", async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const dgsInitial = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test5'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dg = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('create-deployment-group')),
|
||||||
|
variables: {
|
||||||
|
name: 'test5'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const provision = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('provision-manifest')),
|
||||||
|
variables: {
|
||||||
|
deploymentGroupId: dg.data.createDeploymentGroup.id,
|
||||||
|
type: 'COMPOSE',
|
||||||
|
format: 'YAML',
|
||||||
|
environment: {},
|
||||||
|
files: [],
|
||||||
|
raw: `
|
||||||
|
redis:
|
||||||
|
image: redis:latest
|
||||||
|
`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsBefore = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test5'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const deleted = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('delete-services')),
|
||||||
|
variables: {
|
||||||
|
ids: dgsBefore.data.deploymentGroups
|
||||||
|
.filter(({ id }) => id === dg.data.createDeploymentGroup.id)[0]
|
||||||
|
.services.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await wait(5100);
|
||||||
|
|
||||||
|
const dgsAfter = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test5'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(dgsInitial.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dg.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsBefore.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(deleted.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsAfter.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test("should restart Service's", async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const dgsInitial = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test6'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dg = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('create-deployment-group')),
|
||||||
|
variables: {
|
||||||
|
name: 'test6'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const provision = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('provision-manifest')),
|
||||||
|
variables: {
|
||||||
|
deploymentGroupId: dg.data.createDeploymentGroup.id,
|
||||||
|
type: 'COMPOSE',
|
||||||
|
format: 'YAML',
|
||||||
|
environment: {},
|
||||||
|
files: [],
|
||||||
|
raw: `
|
||||||
|
redis:
|
||||||
|
image: redis:latest
|
||||||
|
`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsBefore = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test6'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const restarted = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('restart-services')),
|
||||||
|
variables: {
|
||||||
|
ids: dgsBefore.data.deploymentGroups
|
||||||
|
.filter(({ id }) => id === dg.data.createDeploymentGroup.id)[0]
|
||||||
|
.services.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsWhile = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test6'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await wait(5100);
|
||||||
|
|
||||||
|
const dgsAfter = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test6'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(dgsInitial.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dg.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsBefore.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(restarted.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsWhile.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsAfter.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test("should stop Service's", async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const dgsInitial = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test7'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dg = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('create-deployment-group')),
|
||||||
|
variables: {
|
||||||
|
name: 'test7'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const provision = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('provision-manifest')),
|
||||||
|
variables: {
|
||||||
|
deploymentGroupId: dg.data.createDeploymentGroup.id,
|
||||||
|
type: 'COMPOSE',
|
||||||
|
format: 'YAML',
|
||||||
|
environment: {},
|
||||||
|
files: [],
|
||||||
|
raw: `
|
||||||
|
redis:
|
||||||
|
image: redis:latest
|
||||||
|
`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsBefore = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test7'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const stopped = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('stop-services')),
|
||||||
|
variables: {
|
||||||
|
ids: dgsBefore.data.deploymentGroups
|
||||||
|
.filter(({ id }) => id === dg.data.createDeploymentGroup.id)[0]
|
||||||
|
.services.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsWhile = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test7'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await wait(5100);
|
||||||
|
|
||||||
|
const dgsAfter = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test7'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(dgsInitial.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dg.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsBefore.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(stopped.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsWhile.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsAfter.data, null, 2));
|
||||||
|
});
|
||||||
|
|
||||||
|
test("should start Service's", async t => {
|
||||||
|
const client = await getClient();
|
||||||
|
|
||||||
|
const dgsInitial = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test7'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dg = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('create-deployment-group')),
|
||||||
|
variables: {
|
||||||
|
name: 'test7'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const provision = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('provision-manifest')),
|
||||||
|
variables: {
|
||||||
|
deploymentGroupId: dg.data.createDeploymentGroup.id,
|
||||||
|
type: 'COMPOSE',
|
||||||
|
format: 'YAML',
|
||||||
|
environment: {},
|
||||||
|
files: [],
|
||||||
|
raw: `
|
||||||
|
redis:
|
||||||
|
image: redis:latest
|
||||||
|
`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsBeforeStop = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test7'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const stopped = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('stop-services')),
|
||||||
|
variables: {
|
||||||
|
ids: dgsBeforeStop.data.deploymentGroups
|
||||||
|
.filter(({ id }) => id === dg.data.createDeploymentGroup.id)[0]
|
||||||
|
.services.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsWhileStop = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test7'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await wait(5100);
|
||||||
|
|
||||||
|
const dgsAfterStop = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test7'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const started = await client.mutate({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
mutation: gql(await fetchTag('start-services')),
|
||||||
|
variables: {
|
||||||
|
ids: dgsBeforeStop.data.deploymentGroups
|
||||||
|
.filter(({ id }) => id === dg.data.createDeploymentGroup.id)[0]
|
||||||
|
.services.map(({ id }) => id)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dgsWhileStart = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test7'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await wait(5100);
|
||||||
|
|
||||||
|
const dgsAfterStart = await client.query({
|
||||||
|
fetchPolicy: 'network-only',
|
||||||
|
query: gql(await fetchTag('deployment-groups-direct-filtered')),
|
||||||
|
variables: {
|
||||||
|
slug: 'test7'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
t.snapshot(JSON.stringify(dgsInitial.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dg.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsBeforeStop.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(stopped.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsWhileStop.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsAfterStop.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(started.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsWhileStart.data, null, 2));
|
||||||
|
t.snapshot(JSON.stringify(dgsAfterStart.data, null, 2));
|
||||||
|
});
|
16996
packages/cp-gql-mock-server/test/snapshots/index.js.md
Normal file
16996
packages/cp-gql-mock-server/test/snapshots/index.js.md
Normal file
File diff suppressed because it is too large
Load Diff
BIN
packages/cp-gql-mock-server/test/snapshots/index.js.snap
Normal file
BIN
packages/cp-gql-mock-server/test/snapshots/index.js.snap
Normal file
Binary file not shown.
129
packages/cp-gql-mock-server/test/tags/all.gql
Normal file
129
packages/cp-gql-mock-server/test/tags/all.gql
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
query {
|
||||||
|
portal {
|
||||||
|
id
|
||||||
|
user {
|
||||||
|
id
|
||||||
|
firstName
|
||||||
|
lastName
|
||||||
|
email
|
||||||
|
login
|
||||||
|
}
|
||||||
|
datacenter {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
region
|
||||||
|
}
|
||||||
|
deploymentGroups {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
services {
|
||||||
|
id
|
||||||
|
hash
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
instances {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
machineId
|
||||||
|
status
|
||||||
|
healthy
|
||||||
|
watches
|
||||||
|
jobs
|
||||||
|
}
|
||||||
|
connections
|
||||||
|
branches {
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
instances {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
machineId
|
||||||
|
status
|
||||||
|
healthy
|
||||||
|
watches
|
||||||
|
jobs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
config {
|
||||||
|
id
|
||||||
|
environment {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
value
|
||||||
|
}
|
||||||
|
image
|
||||||
|
labels {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
value
|
||||||
|
}
|
||||||
|
ports
|
||||||
|
}
|
||||||
|
status
|
||||||
|
}
|
||||||
|
version {
|
||||||
|
id
|
||||||
|
manifest {
|
||||||
|
id
|
||||||
|
type
|
||||||
|
format
|
||||||
|
environment
|
||||||
|
files {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
value
|
||||||
|
}
|
||||||
|
raw
|
||||||
|
}
|
||||||
|
scale {
|
||||||
|
id
|
||||||
|
serviceName
|
||||||
|
replicas
|
||||||
|
}
|
||||||
|
plan {
|
||||||
|
id
|
||||||
|
type
|
||||||
|
service
|
||||||
|
toProcess
|
||||||
|
processed
|
||||||
|
machines
|
||||||
|
}
|
||||||
|
hasPlan
|
||||||
|
error
|
||||||
|
}
|
||||||
|
history {
|
||||||
|
id
|
||||||
|
manifest {
|
||||||
|
id
|
||||||
|
type
|
||||||
|
format
|
||||||
|
environment
|
||||||
|
files {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
value
|
||||||
|
}
|
||||||
|
raw
|
||||||
|
}
|
||||||
|
scale {
|
||||||
|
id
|
||||||
|
serviceName
|
||||||
|
replicas
|
||||||
|
}
|
||||||
|
plan {
|
||||||
|
id
|
||||||
|
type
|
||||||
|
service
|
||||||
|
toProcess
|
||||||
|
processed
|
||||||
|
machines
|
||||||
|
}
|
||||||
|
hasPlan
|
||||||
|
error
|
||||||
|
}
|
||||||
|
imported
|
||||||
|
status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,114 @@
|
|||||||
|
mutation createDeploymentGroup($name: String!) {
|
||||||
|
createDeploymentGroup(name: $name) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
services {
|
||||||
|
id
|
||||||
|
hash
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
instances {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
machineId
|
||||||
|
status
|
||||||
|
healthy
|
||||||
|
watches
|
||||||
|
jobs
|
||||||
|
}
|
||||||
|
connections
|
||||||
|
branches {
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
instances {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
machineId
|
||||||
|
status
|
||||||
|
healthy
|
||||||
|
watches
|
||||||
|
jobs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
config {
|
||||||
|
id
|
||||||
|
environment {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
value
|
||||||
|
}
|
||||||
|
image
|
||||||
|
labels {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
value
|
||||||
|
}
|
||||||
|
ports
|
||||||
|
}
|
||||||
|
status
|
||||||
|
}
|
||||||
|
version {
|
||||||
|
id
|
||||||
|
manifest {
|
||||||
|
id
|
||||||
|
type
|
||||||
|
format
|
||||||
|
environment
|
||||||
|
files {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
value
|
||||||
|
}
|
||||||
|
raw
|
||||||
|
}
|
||||||
|
scale {
|
||||||
|
id
|
||||||
|
serviceName
|
||||||
|
replicas
|
||||||
|
}
|
||||||
|
plan {
|
||||||
|
id
|
||||||
|
type
|
||||||
|
service
|
||||||
|
toProcess
|
||||||
|
processed
|
||||||
|
machines
|
||||||
|
}
|
||||||
|
hasPlan
|
||||||
|
error
|
||||||
|
}
|
||||||
|
history {
|
||||||
|
id
|
||||||
|
manifest {
|
||||||
|
id
|
||||||
|
type
|
||||||
|
format
|
||||||
|
environment
|
||||||
|
files {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
value
|
||||||
|
}
|
||||||
|
raw
|
||||||
|
}
|
||||||
|
scale {
|
||||||
|
id
|
||||||
|
serviceName
|
||||||
|
replicas
|
||||||
|
}
|
||||||
|
plan {
|
||||||
|
id
|
||||||
|
type
|
||||||
|
service
|
||||||
|
toProcess
|
||||||
|
processed
|
||||||
|
machines
|
||||||
|
}
|
||||||
|
hasPlan
|
||||||
|
error
|
||||||
|
}
|
||||||
|
imported
|
||||||
|
status
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
mutation deleteDeploymentGroup($id: ID!) {
|
||||||
|
deleteDeploymentGroup(id: $id) {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
mutation deleteServices($ids: [ID]!) {
|
||||||
|
deleteServices(ids: $ids) {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
query DeploymentGroups($slug: String!) {
|
||||||
|
deploymentGroups(slug: $slug) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
services {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
status
|
||||||
|
slug
|
||||||
|
instances {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
status
|
||||||
|
}
|
||||||
|
branches {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
instances {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
query {
|
||||||
|
deploymentGroups {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
services {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
status
|
||||||
|
slug
|
||||||
|
instances {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
status
|
||||||
|
}
|
||||||
|
branches {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
instances {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
query DeploymentGroups($slug: String!) {
|
||||||
|
portal {
|
||||||
|
id
|
||||||
|
deploymentGroups(slug: $slug) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
services {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
status
|
||||||
|
slug
|
||||||
|
instances {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
status
|
||||||
|
}
|
||||||
|
branches {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
instances {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
query {
|
||||||
|
portal {
|
||||||
|
id
|
||||||
|
deploymentGroups {
|
||||||
|
id
|
||||||
|
slug
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
query DeploymentGroups($iName: String!) {
|
||||||
|
instances(name: $iName) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
query {
|
||||||
|
instances {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
32
packages/cp-gql-mock-server/test/tags/instances-filtered.gql
Normal file
32
packages/cp-gql-mock-server/test/tags/instances-filtered.gql
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
query DeploymentGroups(
|
||||||
|
$dgSlug: String!
|
||||||
|
$sSlug: String!
|
||||||
|
$iName: String!
|
||||||
|
$biName: String!
|
||||||
|
) {
|
||||||
|
portal {
|
||||||
|
id
|
||||||
|
deploymentGroups(slug: $dgSlug) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
services(slug: $sSlug) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
instances(name: $iName) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
branches {
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
instances(name: $biName) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
28
packages/cp-gql-mock-server/test/tags/instances.gql
Normal file
28
packages/cp-gql-mock-server/test/tags/instances.gql
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
query {
|
||||||
|
portal {
|
||||||
|
id
|
||||||
|
deploymentGroups {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
services {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
instances {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
branches {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
instances {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
5
packages/cp-gql-mock-server/test/tags/portal-only.gql
Normal file
5
packages/cp-gql-mock-server/test/tags/portal-only.gql
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
query {
|
||||||
|
portal {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
19
packages/cp-gql-mock-server/test/tags/provision-manifest.gql
Normal file
19
packages/cp-gql-mock-server/test/tags/provision-manifest.gql
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
mutation provisionManifest(
|
||||||
|
$deploymentGroupId: ID!
|
||||||
|
$type: ManifestType!
|
||||||
|
$format: ManifestFormat!
|
||||||
|
$environment: String!
|
||||||
|
$files: [KeyValueInput]!
|
||||||
|
$raw: String!
|
||||||
|
) {
|
||||||
|
provisionManifest(
|
||||||
|
deploymentGroupId: $deploymentGroupId
|
||||||
|
type: $type
|
||||||
|
format: $format
|
||||||
|
environment: $environment
|
||||||
|
files: $files
|
||||||
|
raw: $raw
|
||||||
|
) {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
mutation restartServices($ids: [ID]!) {
|
||||||
|
restartServices(ids: $ids) {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
11
packages/cp-gql-mock-server/test/tags/scale.gql
Normal file
11
packages/cp-gql-mock-server/test/tags/scale.gql
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
mutation scale(
|
||||||
|
$serviceId: ID!
|
||||||
|
$replicas: Int!
|
||||||
|
) {
|
||||||
|
scale(
|
||||||
|
serviceId: $serviceId
|
||||||
|
replicas: $replicas
|
||||||
|
) {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
query DeploymentGroups($sSlug: String!) {
|
||||||
|
services(slug: $sSlug) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
branches {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
12
packages/cp-gql-mock-server/test/tags/services-direct.gql
Normal file
12
packages/cp-gql-mock-server/test/tags/services-direct.gql
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
query {
|
||||||
|
services {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
branches {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
19
packages/cp-gql-mock-server/test/tags/services-filtered.gql
Normal file
19
packages/cp-gql-mock-server/test/tags/services-filtered.gql
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
query DeploymentGroups($dgSlug: String!, $sSlug: String!) {
|
||||||
|
portal {
|
||||||
|
id
|
||||||
|
deploymentGroups(slug: $dgSlug) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
services(slug: $sSlug) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
branches {
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
20
packages/cp-gql-mock-server/test/tags/services.gql
Normal file
20
packages/cp-gql-mock-server/test/tags/services.gql
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
query {
|
||||||
|
portal {
|
||||||
|
id
|
||||||
|
deploymentGroups {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
services {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
branches {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
5
packages/cp-gql-mock-server/test/tags/start-services.gql
Normal file
5
packages/cp-gql-mock-server/test/tags/start-services.gql
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
mutation startServices($ids: [ID]!) {
|
||||||
|
startServices(ids: $ids) {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
5
packages/cp-gql-mock-server/test/tags/stop-services.gql
Normal file
5
packages/cp-gql-mock-server/test/tags/stop-services.gql
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
mutation stopServices($ids: [ID]!) {
|
||||||
|
stopServices(ids: $ids) {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
@ -51,8 +51,8 @@ type ConvergenceAction {
|
|||||||
id: ID!
|
id: ID!
|
||||||
type: ConvergenceActionType!
|
type: ConvergenceActionType!
|
||||||
service: String! # service name
|
service: String! # service name
|
||||||
toProcess: Int, # merely used for book keeping
|
toProcess: Int # merely used for book keeping
|
||||||
processed: [String], # merely used for book keeping
|
processed: [String] # merely used for book keeping
|
||||||
machines: [String]! # current instance machine ids
|
machines: [String]! # current instance machine ids
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,7 +122,7 @@ type Service {
|
|||||||
id: ID! # unique id for db row
|
id: ID! # unique id for db row
|
||||||
hash: String # unique id for version of service
|
hash: String # unique id for version of service
|
||||||
name: String! # human readable name
|
name: String! # human readable name
|
||||||
slug: String!
|
slug: String!
|
||||||
instances(name: String, machineId: ID, status: InstanceStatus): [Instance]!
|
instances(name: String, machineId: ID, status: InstanceStatus): [Instance]!
|
||||||
connections: [String] # list of serviceIds
|
connections: [String] # list of serviceIds
|
||||||
branches: [Service]
|
branches: [Service]
|
||||||
@ -171,7 +171,7 @@ type Instance {
|
|||||||
id: ID!
|
id: ID!
|
||||||
name: String!
|
name: String!
|
||||||
machineId: ID!
|
machineId: ID!
|
||||||
status: InstanceStatus!
|
status: InstanceStatus
|
||||||
healthy: HealthyStatus
|
healthy: HealthyStatus
|
||||||
watches: [String]
|
watches: [String]
|
||||||
jobs: [String]
|
jobs: [String]
|
||||||
@ -179,7 +179,6 @@ type Instance {
|
|||||||
|
|
||||||
type Datacenter {
|
type Datacenter {
|
||||||
id: ID!
|
id: ID!
|
||||||
url: String!
|
|
||||||
name: String!
|
name: String!
|
||||||
region: String!
|
region: String!
|
||||||
}
|
}
|
||||||
@ -193,22 +192,56 @@ type Query {
|
|||||||
deploymentGroup(id: ID, name: String, slug: String): DeploymentGroup
|
deploymentGroup(id: ID, name: String, slug: String): DeploymentGroup
|
||||||
serviceScales(serviceName: String, versionId: ID): [ServiceScale]
|
serviceScales(serviceName: String, versionId: ID): [ServiceScale]
|
||||||
serviceScale(id: ID!): ServiceScale
|
serviceScale(id: ID!): ServiceScale
|
||||||
convergenceActions(type: ConvergenceActionType, service: String, versionId: ID): [ConvergenceAction]
|
convergenceActions(
|
||||||
|
type: ConvergenceActionType
|
||||||
|
service: String
|
||||||
|
versionId: ID
|
||||||
|
): [ConvergenceAction]
|
||||||
convergenceAction(id: ID!): ConvergenceAction
|
convergenceAction(id: ID!): ConvergenceAction
|
||||||
versions(manifestId: ID, deploymentGroupId: ID): [Version]
|
versions(manifestId: ID, deploymentGroupId: ID): [Version]
|
||||||
version(id: ID, manifestId: ID): Version
|
version(id: ID, manifestId: ID): Version
|
||||||
manifests(type: String, deploymentGroupId: ID): [Manifest]
|
manifests(type: String, deploymentGroupId: ID): [Manifest]
|
||||||
manifest(id: ID!): Manifest
|
manifest(id: ID!): Manifest
|
||||||
services(name: String, slug: String, parentId: ID, deploymentGroupId: ID, deploymentGroupSlug: String): [Service]
|
services(
|
||||||
|
name: String
|
||||||
|
slug: String
|
||||||
|
parentId: ID
|
||||||
|
deploymentGroupId: ID
|
||||||
|
deploymentGroupSlug: String
|
||||||
|
): [Service]
|
||||||
service(id: ID, hash: ID): Service
|
service(id: ID, hash: ID): Service
|
||||||
packages(name: String, type: String, memory: Int, disk: Int, swap: Int, lwps: Int, vcpus: Int, version: String, group: String): [Package]
|
packages(
|
||||||
|
name: String
|
||||||
|
type: String
|
||||||
|
memory: Int
|
||||||
|
disk: Int
|
||||||
|
swap: Int
|
||||||
|
lwps: Int
|
||||||
|
vcpus: Int
|
||||||
|
version: String
|
||||||
|
group: String
|
||||||
|
): [Package]
|
||||||
package(id: ID!): Package
|
package(id: ID!): Package
|
||||||
instances(name: String!, machineId: ID, status: InstanceStatus, serviceId: ID, serviceSlug: String, deploymentGroupId: ID, deploymentGroupSlug: String): [Instance]
|
instances(
|
||||||
|
name: String
|
||||||
|
machineId: ID
|
||||||
|
status: InstanceStatus
|
||||||
|
serviceId: ID
|
||||||
|
serviceSlug: String
|
||||||
|
deploymentGroupId: ID
|
||||||
|
deploymentGroupSlug: String
|
||||||
|
): [Instance]
|
||||||
instance(id: ID!): Instance
|
instance(id: ID!): Instance
|
||||||
datacenter(id: ID, region: String): Datacenter
|
datacenter(id: ID, region: String): Datacenter
|
||||||
datacenters: [Datacenter]
|
datacenters: [Datacenter]
|
||||||
|
config(
|
||||||
config(deploymentGroupName: String!, type: ManifestType!, format: ManifestFormat!, environment: String!, files: [KeyValueInput]!, raw: String!): [Service]
|
deploymentGroupName: String!
|
||||||
|
type: ManifestType!
|
||||||
|
format: ManifestFormat!
|
||||||
|
environment: String!
|
||||||
|
files: [KeyValueInput]!
|
||||||
|
raw: String!
|
||||||
|
): [Service]
|
||||||
importableDeploymentGroups: [DeploymentGroup]
|
importableDeploymentGroups: [DeploymentGroup]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -216,19 +249,22 @@ type Mutation {
|
|||||||
createDeploymentGroup(name: String!): DeploymentGroup
|
createDeploymentGroup(name: String!): DeploymentGroup
|
||||||
updateDeploymentGroup(id: ID!, name: String!): DeploymentGroup
|
updateDeploymentGroup(id: ID!, name: String!): DeploymentGroup
|
||||||
deleteDeploymentGroup(id: ID!): DeploymentGroup
|
deleteDeploymentGroup(id: ID!): DeploymentGroup
|
||||||
|
provisionManifest(
|
||||||
provisionManifest(deploymentGroupId: ID!, type: ManifestType!, format: ManifestFormat!, environment: String!, files: [KeyValueInput]!, raw: String!): Version
|
deploymentGroupId: ID!
|
||||||
|
type: ManifestType!
|
||||||
|
format: ManifestFormat!
|
||||||
|
environment: String!
|
||||||
|
files: [KeyValueInput]!
|
||||||
|
raw: String!
|
||||||
|
): Version
|
||||||
scale(serviceId: ID!, replicas: Int!): Version
|
scale(serviceId: ID!, replicas: Int!): Version
|
||||||
|
|
||||||
stopServices(ids: [ID]!): [Service]
|
stopServices(ids: [ID]!): [Service]
|
||||||
startServices(ids: [ID]!): [Service]
|
startServices(ids: [ID]!): [Service]
|
||||||
restartServices(ids: [ID]!): [Service]
|
restartServices(ids: [ID]!): [Service]
|
||||||
deleteServices(ids: [ID]!): [Service]
|
deleteServices(ids: [ID]!): [Service]
|
||||||
|
|
||||||
stopInstances(ids: [ID]!): [Instance]
|
stopInstances(ids: [ID]!): [Instance]
|
||||||
startInstances(ids: [ID]!): [Instance]
|
startInstances(ids: [ID]!): [Instance]
|
||||||
restartInstances(ids: [ID]!): [Instance]
|
restartInstances(ids: [ID]!): [Instance]
|
||||||
|
|
||||||
importDeploymentGroup(deploymentGroupSlug: String!): DeploymentGroup
|
importDeploymentGroup(deploymentGroupSlug: String!): DeploymentGroup
|
||||||
deleteDeploymentGroup(id: ID!): DeploymentGroup
|
deleteDeploymentGroup(id: ID!): DeploymentGroup
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
"lodash.isundefined": "^3.0.1"
|
"lodash.isundefined": "^3.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"ava": "0.19.1",
|
"ava": "^0.21.0",
|
||||||
"babel-plugin-istanbul": "^4.1.4",
|
"babel-plugin-istanbul": "^4.1.4",
|
||||||
"babel-preset-env": "^1.5.2",
|
"babel-preset-env": "^1.5.2",
|
||||||
"babel-register": "^6.24.1",
|
"babel-register": "^6.24.1",
|
||||||
@ -46,7 +46,7 @@
|
|||||||
"cross-env": "^5.0.1",
|
"cross-env": "^5.0.1",
|
||||||
"eslint": "^3.19.0",
|
"eslint": "^3.19.0",
|
||||||
"eslint-config-joyent-portal": "2.0.0",
|
"eslint-config-joyent-portal": "2.0.0",
|
||||||
"nyc": "^11.0.2",
|
"nyc": "^11.0.3",
|
||||||
"redrun": "^5.9.15",
|
"redrun": "^5.9.15",
|
||||||
"tap-xunit": "^1.7.0"
|
"tap-xunit": "^1.7.0"
|
||||||
},
|
},
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
"yaml-ast-parser": "0.0.33"
|
"yaml-ast-parser": "0.0.33"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"ava": "0.19.1",
|
"ava": "^0.21.0",
|
||||||
"babel-plugin-istanbul": "^4.1.4",
|
"babel-plugin-istanbul": "^4.1.4",
|
||||||
"babel-preset-env": "^1.5.2",
|
"babel-preset-env": "^1.5.2",
|
||||||
"babel-register": "^6.24.1",
|
"babel-register": "^6.24.1",
|
||||||
@ -48,7 +48,7 @@
|
|||||||
"cross-env": "^5.0.1",
|
"cross-env": "^5.0.1",
|
||||||
"eslint": "^3.19.0",
|
"eslint": "^3.19.0",
|
||||||
"eslint-config-joyent-portal": "2.0.0",
|
"eslint-config-joyent-portal": "2.0.0",
|
||||||
"nyc": "^11.0.2",
|
"nyc": "^11.0.3",
|
||||||
"redrun": "^5.9.15",
|
"redrun": "^5.9.15",
|
||||||
"tap-xunit": "^1.7.0"
|
"tap-xunit": "^1.7.0"
|
||||||
},
|
},
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
"lodash.flatten": "^4.4.0"
|
"lodash.flatten": "^4.4.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"ava": "0.19.1",
|
"ava": "^0.21.0",
|
||||||
"babel-plugin-istanbul": "^4.1.4",
|
"babel-plugin-istanbul": "^4.1.4",
|
||||||
"babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
|
"babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
|
||||||
"babel-plugin-transform-es2015-parameters": "^6.24.1",
|
"babel-plugin-transform-es2015-parameters": "^6.24.1",
|
||||||
@ -39,7 +39,7 @@
|
|||||||
"cross-env": "^5.0.1",
|
"cross-env": "^5.0.1",
|
||||||
"eslint": "^3.19.0",
|
"eslint": "^3.19.0",
|
||||||
"eslint-config-joyent-portal": "2.0.0",
|
"eslint-config-joyent-portal": "2.0.0",
|
||||||
"nyc": "^11.0.2",
|
"nyc": "^11.0.3",
|
||||||
"tap-xunit": "^1.7.0"
|
"tap-xunit": "^1.7.0"
|
||||||
},
|
},
|
||||||
"nyc": {
|
"nyc": {
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
"random-natural": "^1.0.3"
|
"random-natural": "^1.0.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"ava": "0.19.1",
|
"ava": "^0.21.0",
|
||||||
"babel-plugin-istanbul": "^4.1.4",
|
"babel-plugin-istanbul": "^4.1.4",
|
||||||
"babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
|
"babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
|
||||||
"babel-plugin-transform-es2015-template-literals": "^6.22.0",
|
"babel-plugin-transform-es2015-template-literals": "^6.22.0",
|
||||||
@ -34,7 +34,7 @@
|
|||||||
"eslint": "^3.19.0",
|
"eslint": "^3.19.0",
|
||||||
"eslint-config-joyent-portal": "2.0.0",
|
"eslint-config-joyent-portal": "2.0.0",
|
||||||
"lodash.uniq": "^4.5.0",
|
"lodash.uniq": "^4.5.0",
|
||||||
"nyc": "^11.0.2",
|
"nyc": "^11.0.3",
|
||||||
"tap-xunit": "^1.7.0"
|
"tap-xunit": "^1.7.0"
|
||||||
},
|
},
|
||||||
"nyc": {
|
"nyc": {
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
"prepublish": "redrun build"
|
"prepublish": "redrun build"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"ava": "0.19.1",
|
"ava": "^0.21.0",
|
||||||
"babel-plugin-istanbul": "^4.1.4",
|
"babel-plugin-istanbul": "^4.1.4",
|
||||||
"babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
|
"babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
|
||||||
"babel-plugin-transform-es2015-parameters": "^6.24.1",
|
"babel-plugin-transform-es2015-parameters": "^6.24.1",
|
||||||
@ -38,7 +38,7 @@
|
|||||||
"cross-env": "^5.0.1",
|
"cross-env": "^5.0.1",
|
||||||
"eslint": "^3.19.0",
|
"eslint": "^3.19.0",
|
||||||
"eslint-config-joyent-portal": "2.0.0",
|
"eslint-config-joyent-portal": "2.0.0",
|
||||||
"nyc": "^11.0.2",
|
"nyc": "^11.0.3",
|
||||||
"react": "^15.6.1",
|
"react": "^15.6.1",
|
||||||
"redrun": "^5.9.15",
|
"redrun": "^5.9.15",
|
||||||
"styled-components": "^2.1.0",
|
"styled-components": "^2.1.0",
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
"remcalc": "^1.0.8"
|
"remcalc": "^1.0.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"ava": "0.19.1",
|
"ava": "^0.21.0",
|
||||||
"babel-plugin-istanbul": "^4.1.4",
|
"babel-plugin-istanbul": "^4.1.4",
|
||||||
"babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
|
"babel-plugin-transform-es2015-arrow-functions": "^6.22.0",
|
||||||
"babel-plugin-transform-es2015-parameters": "^6.24.1",
|
"babel-plugin-transform-es2015-parameters": "^6.24.1",
|
||||||
@ -41,7 +41,7 @@
|
|||||||
"cross-env": "^5.0.1",
|
"cross-env": "^5.0.1",
|
||||||
"eslint": "^3.19.0",
|
"eslint": "^3.19.0",
|
||||||
"eslint-config-joyent-portal": "2.0.0",
|
"eslint-config-joyent-portal": "2.0.0",
|
||||||
"nyc": "^11.0.2",
|
"nyc": "^11.0.3",
|
||||||
"tap-xunit": "^1.7.0"
|
"tap-xunit": "^1.7.0"
|
||||||
},
|
},
|
||||||
"nyc": {
|
"nyc": {
|
||||||
|
Loading…
Reference in New Issue
Block a user