Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
automation
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
bachelor-project
automation
Commits
c97d2ed8
Commit
c97d2ed8
authored
2 years ago
by
Strasser, Andreas
Browse files
Options
Downloads
Patches
Plain Diff
added flow for rcm api implementation
parent
a3761538
Branches
main
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
flows/rcm-api.json
+2774
-0
2774 additions, 0 deletions
flows/rcm-api.json
with
2774 additions
and
0 deletions
flows/rcm-api.json
0 → 100644
+
2774
−
0
View file @
c97d2ed8
[
{
"id"
:
"cd1a3aa5b0f95c03"
,
"type"
:
"tab"
,
"label"
:
"rcm-api"
,
"disabled"
:
false
,
"info"
:
""
,
"env"
:
[]
},
{
"id"
:
"e0c1be655f611144"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"let clusters = [];
\n\n
for (let key in msg.payload) {
\n
if (key !== '_id') {
\n
const cluster = {
\n
uuid: msg.payload[key].uuid,
\n
name: msg.payload[key].name
\n
};
\n
clusters.push(cluster);
\n
}
\n
}
\n\n
msg.payload = clusters;
\n
msg.statusCode = 200;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1020
,
"y"
:
120
,
"wires"
:
[
[
"ea838ae9449513a2"
]
]
},
{
"id"
:
"ea838ae9449513a2"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1230
,
"y"
:
120
,
"wires"
:
[]
},
{
"id"
:
"a7309fefd9edb232"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[get] clusters/"
,
"url"
:
"clusters/"
,
"method"
:
"get"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
150
,
"y"
:
120
,
"wires"
:
[
[
"4202f8efc990bb4b"
]
]
},
{
"id"
:
"272d1c67f10c2030"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1230
,
"y"
:
320
,
"wires"
:
[]
},
{
"id"
:
"57b8ebba50b154ce"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[post] clusters/new"
,
"url"
:
"clusters/new"
,
"method"
:
"post"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
170
,
"y"
:
320
,
"wires"
:
[
[
"fa0e9ee85f83ba12"
]
]
},
{
"id"
:
"fa0e9ee85f83ba12"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"create cluster"
,
"func"
:
"const uuid = global.get('uuid');
\n\n
var cluster = {
\n
uuid: uuid.v4().slice(-12),
\n
name: msg.payload.name
\n
};
\n\n
msg.payload = cluster;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
520
,
"y"
:
320
,
"wires"
:
[
[
"09718255f8f6741e"
]
]
},
{
"id"
:
"b17f699e373c6674"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[get] clusters/:uuid"
,
"url"
:
"clusters/:cluster_uuid"
,
"method"
:
"get"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
170
,
"y"
:
220
,
"wires"
:
[
[
"1e854f8ae9200b77"
]
]
},
{
"id"
:
"1e854f8ae9200b77"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
220
,
"wires"
:
[
[
"5a7acb94e97d4b82"
]
]
},
{
"id"
:
"9dd38453f326ee5e"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1230
,
"y"
:
220
,
"wires"
:
[]
},
{
"id"
:
"09babeec3890ae81"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"if (!msg.payload.hasOwnProperty('uuid')) {
\n
msg.statusCode = 404;
\n
msg.payload = {'message': 'Cluster not found'};
\n
} else {
\n
const cluster = {
\n
uuid: msg.payload.uuid,
\n
name: msg.payload.name
\n
};
\n
msg.payload = cluster;
\n
msg.statusCode = 200;
\n
}
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1020
,
"y"
:
220
,
"wires"
:
[
[
"9dd38453f326ee5e"
]
]
},
{
"id"
:
"77970b3b8ab1e284"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"const cluster = {
\n
uuid: msg.payload.ops[0].uuid,
\n
name: msg.payload.ops[0].name
\n
};
\n
msg.payload = cluster;
\n
msg.statusCode = 201;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1020
,
"y"
:
320
,
"wires"
:
[
[
"272d1c67f10c2030"
]
]
},
{
"id"
:
"f591f1548d119c8d"
,
"type"
:
"comment"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"clusters routes"
,
"info"
:
""
,
"x"
:
160
,
"y"
:
40
,
"wires"
:
[]
},
{
"id"
:
"6b7457bf5bc3abd6"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[delete] clusters/:uuid"
,
"url"
:
"clusters/:cluster_uuid"
,
"method"
:
"delete"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
180
,
"y"
:
520
,
"wires"
:
[
[
"d48be77db5af4929"
,
"7ebf2f661907fc1f"
]
]
},
{
"id"
:
"d48be77db5af4929"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
520
,
"wires"
:
[
[
"d4c2e5b1c98210ea"
]
]
},
{
"id"
:
"15354853a0f76f8e"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1230
,
"y"
:
520
,
"wires"
:
[]
},
{
"id"
:
"a3d42eaeb44a1d12"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"if (msg.payload.value === null) {
\n
msg.payload = {'message': 'Cluster not found'};
\n
msg.statusCode = 404;
\n
} else {
\n
msg.statusCode = 204;
\n
}
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1020
,
"y"
:
520
,
"wires"
:
[
[
"15354853a0f76f8e"
]
]
},
{
"id"
:
"d1162fd649690134"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"let devices = [];
\n\n
for (let key in msg.payload) {
\n
const device = {
\n
cluster_uuid: msg.payload[key].cluster_uuid,
\n
mac: msg.payload[key].mac,
\n
type: msg.payload[key].type,
\n
peers: msg.payload[key].peers,
\n
gatekeeper: msg.payload[key].gatekeeper,
\n
name: msg.payload[key].name
\n
};
\n
devices.push(device);
\n
}
\n\n
msg.payload = devices;
\n
msg.statusCode = 200;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
860
,
"wires"
:
[
[
"59cbc4a2396fcb07"
]
]
},
{
"id"
:
"59cbc4a2396fcb07"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
860
,
"wires"
:
[]
},
{
"id"
:
"9cf350e91795988d"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[get] clusters/:uuid/devices/"
,
"url"
:
"clusters/:cluster_uuid/devices/"
,
"method"
:
"get"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
190
,
"y"
:
860
,
"wires"
:
[
[
"7498eb3819ddf4bb"
]
]
},
{
"id"
:
"5160222454aebe76"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[get] clusters/:uuid/devices/:mac"
,
"url"
:
"clusters/:cluster_uuid/devices/:mac"
,
"method"
:
"get"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
210
,
"y"
:
960
,
"wires"
:
[
[
"ec8faba7314174ed"
]
]
},
{
"id"
:
"ec8faba7314174ed"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const mac = msg.req.params.mac.replace(/:/g, '').toLowerCase();
\n\n
const query = {
\n
cluster_uuid: msg.req.params.cluster_uuid,
\n
mac: mac
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
960
,
"wires"
:
[
[
"4899a3a25eed1561"
]
]
},
{
"id"
:
"fcc392c105ebd8c8"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
960
,
"wires"
:
[]
},
{
"id"
:
"d136cdf1d492ef68"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"if (!msg.payload.hasOwnProperty('mac')) {
\n
msg.statusCode = 404;
\n
msg.payload = {'message': 'Device not found'};
\n
} else {
\n
const device = {
\n
cluster_uuid: msg.payload.cluster_uuid,
\n
mac: msg.payload.mac,
\n
type: msg.payload.type,
\n
peers: msg.payload.peers,
\n
gatekeeper: msg.payload.gatekeeper,
\n
name: msg.payload.name
\n
};
\n
msg.payload = device;
\n
msg.statusCode = 200;
\n
}
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
960
,
"wires"
:
[
[
"fcc392c105ebd8c8"
]
]
},
{
"id"
:
"835832d57bd6f0ac"
,
"type"
:
"comment"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"device routes"
,
"info"
:
""
,
"x"
:
150
,
"y"
:
780
,
"wires"
:
[]
},
{
"id"
:
"0406a3e9415e28e0"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const mac = msg.req.params.mac.replace(/:/g, '').toLowerCase();
\n\n
const query = {
\n
cluster_uuid: msg.req.params.cluster_uuid,
\n
mac: mac
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
1740
,
"wires"
:
[
[
"168cd3decc642e07"
]
]
},
{
"id"
:
"f11fdbe14655bd62"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"if (msg.payload.value === null) {
\n
msg.payload = {'message': 'Device not found'};
\n
msg.statusCode = 404;
\n
} else {
\n
msg.statusCode = 204;
\n
}
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
1740
,
"wires"
:
[
[
"0001aa12e0168693"
]
]
},
{
"id"
:
"7498eb3819ddf4bb"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
cluster_uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
860
,
"wires"
:
[
[
"250d9638935f13bd"
]
]
},
{
"id"
:
"7e6b7e76c1c82ec9"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[post] clusters/:uuid/devices/new"
,
"url"
:
"clusters/:cluster_uuid/devices/new"
,
"method"
:
"post"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
210
,
"y"
:
1060
,
"wires"
:
[
[
"52b343a9804681a3"
]
]
},
{
"id"
:
"e076d396f4f6fc7e"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"cluster not found"
,
"property"
:
"payload"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"empty"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1020
,
"y"
:
1140
,
"wires"
:
[
[
"354aa033d8444dac"
],
[
"abae71d63cb43859"
]
]
},
{
"id"
:
"eb831647f06748c6"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
1060
,
"wires"
:
[]
},
{
"id"
:
"5ec5cceb83a35720"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Mandatory properties missing'};
\n
msg.statusCode = 400;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
1060
,
"wires"
:
[
[
"eb831647f06748c6"
]
]
},
{
"id"
:
"17c935378270b7cc"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
1140
,
"wires"
:
[
[
"f175b19af278ea53"
]
]
},
{
"id"
:
"118dcc1368a712cc"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"create device"
,
"func"
:
"const mac = msg.device.mac.replace(/:/g, '').toLowerCase();
\n\n
const device = {
\n
cluster_uuid: msg.req.params.cluster_uuid,
\n
mac: mac,
\n
type: msg.device.type,
\n
peers: msg.device.peers,
\n
gatekeeper: msg.device.gatekeeper,
\n
name: msg.device.name
\n
};
\n\n
msg.payload = device;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
510
,
"y"
:
1300
,
"wires"
:
[
[
"84821e5acf338578"
]
]
},
{
"id"
:
"52b343a9804681a3"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"validate input"
,
"func"
:
"msg.valid = true;
\n\n
if (!msg.payload.hasOwnProperty('mac') ||
\n
!msg.payload.hasOwnProperty('type') ||
\n
!msg.payload.hasOwnProperty('gatekeeper')) {
\n
msg.valid = false;
\n
}
\n\n
msg.device = msg.payload;
\n\n
if (!msg.payload.hasOwnProperty('peers')) {
\n
msg.device.peers = [];
\n
}
\n\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
510
,
"y"
:
1060
,
"wires"
:
[
[
"1c21d598ad0815cb"
]
]
},
{
"id"
:
"1c21d598ad0815cb"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"input invalid"
,
"property"
:
"valid"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"false"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1010
,
"y"
:
1060
,
"wires"
:
[
[
"5ec5cceb83a35720"
],
[
"17c935378270b7cc"
]
]
},
{
"id"
:
"354aa033d8444dac"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Cluster not found'};
\n
msg.statusCode = 404;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
1140
,
"wires"
:
[
[
"eb831647f06748c6"
]
]
},
{
"id"
:
"93efefe17363902c"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"const device = {
\n
cluster_uuid: msg.payload.ops[0].cluster_uuid,
\n
mac: msg.payload.ops[0].mac,
\n
type: msg.payload.ops[0].type,
\n
peers: msg.payload.ops[0].peers,
\n
gatekeeper: msg.payload.ops[0].gatekeeper,
\n
name: msg.payload.ops[0].name
\n
};
\n
msg.payload = device;
\n
msg.statusCode = 201;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
1300
,
"wires"
:
[
[
"eb831647f06748c6"
]
]
},
{
"id"
:
"7ebf2f661907fc1f"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
cluster_uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
580
,
"wires"
:
[
[
"b7df39d3b97df8c1"
,
"e026531a626b3444"
,
"b733024bad560aaf"
]
]
},
{
"id"
:
"e410aa38b1107029"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"cluster not found"
,
"property"
:
"payload"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"empty"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1020
,
"y"
:
1660
,
"wires"
:
[
[
"ddc998456d395149"
],
[
"0406a3e9415e28e0"
]
]
},
{
"id"
:
"fc2f9a748e2f46de"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
1660
,
"wires"
:
[
[
"5f3acf4d8f64bc66"
]
]
},
{
"id"
:
"ddc998456d395149"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Cluster not found'};
\n
msg.statusCode = 404;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
1660
,
"wires"
:
[
[
"0001aa12e0168693"
]
]
},
{
"id"
:
"0001aa12e0168693"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
1660
,
"wires"
:
[]
},
{
"id"
:
"4fa74e6c7f41aeed"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[delete] clusters/:uuid/devices/:mac"
,
"url"
:
"clusters/:cluster_uuid/devices/:mac"
,
"method"
:
"delete"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
220
,
"y"
:
1660
,
"wires"
:
[
[
"fc2f9a748e2f46de"
]
]
},
{
"id"
:
"c35bb61a594d331a"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"device exists"
,
"property"
:
"payload"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"nempty"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1010
,
"y"
:
1220
,
"wires"
:
[
[
"5201fa380816b214"
],
[
"118dcc1368a712cc"
]
]
},
{
"id"
:
"abae71d63cb43859"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const mac = msg.device.mac.replace(/:/g, '').toLowerCase();
\n\n
const query = {
\n
mac: mac
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
1220
,
"wires"
:
[
[
"affa6ac058c92d89"
]
]
},
{
"id"
:
"5201fa380816b214"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Device already exists'};
\n
msg.statusCode = 409;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
1220
,
"wires"
:
[
[
"eb831647f06748c6"
]
]
},
{
"id"
:
"7857e2f187574637"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"let devices = [];
\n\n
for (let key in msg.payload) {
\n
const device = {
\n
cluster_uuid: msg.payload[key].cluster_uuid,
\n
mac: msg.payload[key].mac,
\n
type: msg.payload[key].type,
\n
peers: msg.payload[key].peers,
\n
gatekeeper: msg.payload[key].gatekeeper,
\n
name: msg.payload[key].name
\n
};
\n
devices.push(device);
\n
}
\n\n
msg.payload = devices;
\n
msg.statusCode = 200;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
1900
,
"wires"
:
[
[
"1c756725670b2fe1"
]
]
},
{
"id"
:
"1c756725670b2fe1"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
1900
,
"wires"
:
[]
},
{
"id"
:
"c81dc1558c04f5db"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[get] clusters/:uuid/files/"
,
"url"
:
"clusters/:cluster_uuid/files/"
,
"method"
:
"get"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
180
,
"y"
:
1900
,
"wires"
:
[
[
"f825fed3b3ae98cb"
]
]
},
{
"id"
:
"b31cb4668dc9d7fc"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[get] clusters/:uuid/files/:uuid"
,
"url"
:
"clusters/:cluster_uuid/files/:file_uuid"
,
"method"
:
"get"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
200
,
"y"
:
2000
,
"wires"
:
[
[
"1259d84d5ba54448"
]
]
},
{
"id"
:
"1259d84d5ba54448"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
cluster_uuid: msg.req.params.cluster_uuid,
\n
uuid: msg.req.params.file_uuid,
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
2000
,
"wires"
:
[
[
"a4b4879712f47604"
]
]
},
{
"id"
:
"e9a0cc40050fbdd4"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
2000
,
"wires"
:
[]
},
{
"id"
:
"24ab6d7ad83581f3"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"if (!msg.payload.hasOwnProperty('uuid')) {
\n
msg.statusCode = 404;
\n
msg.payload = {'message': 'File not found'};
\n
} else {
\n
msg.headers = {
\n
\"
Content-Disposition
\"
:
\"
attachment; filename=
\"
+ msg.payload.name,
\n
\"
Content-Type
\"
:
\"
application/octet-stream
\"\n
};
\n
msg.payload = msg.payload.content.toString('ascii');
\n
msg.statusCode = 200;
\n
}
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
2000
,
"wires"
:
[
[
"e9a0cc40050fbdd4"
]
]
},
{
"id"
:
"a49c8ae78144e7a9"
,
"type"
:
"comment"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"files routes"
,
"info"
:
""
,
"x"
:
140
,
"y"
:
1820
,
"wires"
:
[]
},
{
"id"
:
"19a41948582f4f1c"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
cluster_uuid: msg.req.params.cluster_uuid,
\n
uuid: msg.req.params.file_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
2440
,
"wires"
:
[
[
"0c67fbf600095cde"
]
]
},
{
"id"
:
"8bdd3328a9f3b607"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"if (msg.payload.value === null) {
\n
msg.payload = {'message': 'File not found'};
\n
msg.statusCode = 404;
\n
} else {
\n
msg.statusCode = 204;
\n
}
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
2440
,
"wires"
:
[
[
"1bd75021fdddf3d5"
]
]
},
{
"id"
:
"f825fed3b3ae98cb"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
cluster_uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
1900
,
"wires"
:
[
[
"659948615a5f8ae9"
]
]
},
{
"id"
:
"73d9f757bc0accf3"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[post] clusters/:uuid/files/new"
,
"url"
:
"clusters/:cluster_uuid/files/new"
,
"method"
:
"post"
,
"upload"
:
true
,
"swaggerDoc"
:
""
,
"x"
:
200
,
"y"
:
2100
,
"wires"
:
[
[
"5e4e911b962d65e9"
]
]
},
{
"id"
:
"b872ed061b1b0169"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"cluster not found"
,
"property"
:
"payload"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"empty"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1020
,
"y"
:
2180
,
"wires"
:
[
[
"9bc08c21cfa5b9c3"
],
[
"1ad18860012aa07f"
]
]
},
{
"id"
:
"82ee99229a3da714"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
2100
,
"wires"
:
[]
},
{
"id"
:
"90cb98f8db293363"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
2180
,
"wires"
:
[
[
"449156b1e1645445"
]
]
},
{
"id"
:
"1ad18860012aa07f"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"create file"
,
"func"
:
"const uuid = global.get('uuid');
\n\n
const file = {
\n
cluster_uuid: msg.req.params.cluster_uuid,
\n
uuid: uuid.v4().slice(-12),
\n
name: msg.req.files[0].originalname,
\n
description: msg.req.body.description,
\n
content: msg.req.files[0].buffer
\n
};
\n\n
msg.payload = file;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
2260
,
"wires"
:
[
[
"0827ca8dd204de7a"
]
]
},
{
"id"
:
"9bc08c21cfa5b9c3"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Cluster not found'};
\n
msg.statusCode = 404;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
2180
,
"wires"
:
[
[
"82ee99229a3da714"
]
]
},
{
"id"
:
"9405da8f6960b53d"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"const file = {
\n
cluster_uuid: msg.payload.ops[0].cluster_uuid,
\n
uuid: msg.payload.ops[0].uuid,
\n
name: msg.payload.ops[0].name,
\n
description: msg.payload.ops[0].description
\n
};
\n
msg.payload = file;
\n
msg.statusCode = 201;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
2260
,
"wires"
:
[
[
"82ee99229a3da714"
]
]
},
{
"id"
:
"bdd50c9c33588485"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"cluster not found"
,
"property"
:
"payload"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"empty"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1020
,
"y"
:
2360
,
"wires"
:
[
[
"5e3ba3d9402105ca"
],
[
"19a41948582f4f1c"
]
]
},
{
"id"
:
"b1c9e26800e234b9"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
2360
,
"wires"
:
[
[
"31900f558ea92278"
]
]
},
{
"id"
:
"5e3ba3d9402105ca"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Cluster not found'};
\n
msg.statusCode = 404;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
2360
,
"wires"
:
[
[
"1bd75021fdddf3d5"
]
]
},
{
"id"
:
"1bd75021fdddf3d5"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
2360
,
"wires"
:
[]
},
{
"id"
:
"e2a7efccafcd0e49"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[delete] clusters/:uuid/files/:uuid"
,
"url"
:
"clusters/:cluster_uuid/files/:file_uuid"
,
"method"
:
"delete"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
210
,
"y"
:
2360
,
"wires"
:
[
[
"b1c9e26800e234b9"
]
]
},
{
"id"
:
"bda22bbc39de12e7"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Invalid input'};
\n
msg.statusCode = 400;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
2100
,
"wires"
:
[
[
"82ee99229a3da714"
]
]
},
{
"id"
:
"5e4e911b962d65e9"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"validate input"
,
"func"
:
"msg.valid = msg.req.files.length > 0;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
510
,
"y"
:
2100
,
"wires"
:
[
[
"0d0364a42f4b75f1"
]
]
},
{
"id"
:
"0d0364a42f4b75f1"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"input invalid"
,
"property"
:
"valid"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"false"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1010
,
"y"
:
2100
,
"wires"
:
[
[
"bda22bbc39de12e7"
],
[
"90cb98f8db293363"
]
]
},
{
"id"
:
"4202f8efc990bb4b"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find clusters"
,
"collection"
:
"clusters"
,
"operation"
:
"find.toArray"
,
"x"
:
770
,
"y"
:
120
,
"wires"
:
[
[
"e0c1be655f611144"
]
]
},
{
"id"
:
"5a7acb94e97d4b82"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find cluster"
,
"collection"
:
"clusters"
,
"operation"
:
"findOne"
,
"x"
:
770
,
"y"
:
220
,
"wires"
:
[
[
"09babeec3890ae81"
]
]
},
{
"id"
:
"d4c2e5b1c98210ea"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"delete cluster"
,
"collection"
:
"clusters"
,
"operation"
:
"findOneAndDelete"
,
"x"
:
770
,
"y"
:
520
,
"wires"
:
[
[
"a3d42eaeb44a1d12"
]
]
},
{
"id"
:
"09718255f8f6741e"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"insert cluster"
,
"collection"
:
"clusters"
,
"operation"
:
"insert"
,
"x"
:
770
,
"y"
:
320
,
"wires"
:
[
[
"77970b3b8ab1e284"
]
]
},
{
"id"
:
"250d9638935f13bd"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find devices"
,
"collection"
:
"devices"
,
"operation"
:
"find.toArray"
,
"x"
:
770
,
"y"
:
860
,
"wires"
:
[
[
"d1162fd649690134"
]
]
},
{
"id"
:
"4899a3a25eed1561"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find device"
,
"collection"
:
"devices"
,
"operation"
:
"findOne"
,
"x"
:
770
,
"y"
:
960
,
"wires"
:
[
[
"d136cdf1d492ef68"
]
]
},
{
"id"
:
"168cd3decc642e07"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"delete device"
,
"collection"
:
"devices"
,
"operation"
:
"findOneAndDelete"
,
"x"
:
770
,
"y"
:
1740
,
"wires"
:
[
[
"f11fdbe14655bd62"
]
]
},
{
"id"
:
"b7df39d3b97df8c1"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"delete devices"
,
"collection"
:
"devices"
,
"operation"
:
"deleteMany"
,
"x"
:
780
,
"y"
:
580
,
"wires"
:
[
[]
]
},
{
"id"
:
"f175b19af278ea53"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find cluster"
,
"collection"
:
"clusters"
,
"operation"
:
"findOne"
,
"x"
:
770
,
"y"
:
1140
,
"wires"
:
[
[
"e076d396f4f6fc7e"
]
]
},
{
"id"
:
"84821e5acf338578"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"insert device"
,
"collection"
:
"devices"
,
"operation"
:
"insert"
,
"x"
:
770
,
"y"
:
1300
,
"wires"
:
[
[
"93efefe17363902c"
]
]
},
{
"id"
:
"5f3acf4d8f64bc66"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find cluster"
,
"collection"
:
"clusters"
,
"operation"
:
"findOne"
,
"x"
:
770
,
"y"
:
1660
,
"wires"
:
[
[
"e410aa38b1107029"
]
]
},
{
"id"
:
"affa6ac058c92d89"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find device"
,
"collection"
:
"devices"
,
"operation"
:
"findOne"
,
"x"
:
770
,
"y"
:
1220
,
"wires"
:
[
[
"c35bb61a594d331a"
]
]
},
{
"id"
:
"659948615a5f8ae9"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find files"
,
"collection"
:
"files"
,
"operation"
:
"find.toArray"
,
"x"
:
760
,
"y"
:
1900
,
"wires"
:
[
[
"7857e2f187574637"
]
]
},
{
"id"
:
"a4b4879712f47604"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find file"
,
"collection"
:
"files"
,
"operation"
:
"findOne"
,
"x"
:
760
,
"y"
:
2000
,
"wires"
:
[
[
"24ab6d7ad83581f3"
]
]
},
{
"id"
:
"0c67fbf600095cde"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"delete file"
,
"collection"
:
"files"
,
"operation"
:
"findOneAndDelete"
,
"x"
:
760
,
"y"
:
2440
,
"wires"
:
[
[
"8bdd3328a9f3b607"
]
]
},
{
"id"
:
"449156b1e1645445"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find cluster"
,
"collection"
:
"clusters"
,
"operation"
:
"findOne"
,
"x"
:
770
,
"y"
:
2180
,
"wires"
:
[
[
"b872ed061b1b0169"
]
]
},
{
"id"
:
"0827ca8dd204de7a"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"insert files"
,
"collection"
:
"file"
,
"operation"
:
"insert"
,
"x"
:
760
,
"y"
:
2260
,
"wires"
:
[
[
"9405da8f6960b53d"
]
]
},
{
"id"
:
"31900f558ea92278"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find cluster"
,
"collection"
:
"clusters"
,
"operation"
:
"findOne"
,
"x"
:
770
,
"y"
:
2360
,
"wires"
:
[
[
"bdd50c9c33588485"
]
]
},
{
"id"
:
"e026531a626b3444"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"delete files"
,
"collection"
:
"files"
,
"operation"
:
"deleteMany"
,
"x"
:
770
,
"y"
:
640
,
"wires"
:
[
[]
]
},
{
"id"
:
"521b652f385282c6"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"let devices = [];
\n\n
for (let key in msg.payload) {
\n
if (msg.req.query.hasOwnProperty('compact')) {
\n
const configuration = {
\n
uuid: msg.payload[key].uuid,
\n
files: msg.payload[key].files,
\n
commands: msg.payload[key].commands
\n
};
\n
devices.push(configuration);
\n
}
\n
else {
\n
const configuration = {
\n
cluster_uuid: msg.payload[key].cluster_uuid,
\n
uuid: msg.payload[key].uuid,
\n
status: msg.payload[key].status,
\n
gatekeeper_mac: msg.payload[key].gatekeeper_mac,
\n
files: msg.payload[key].files,
\n
commands: msg.payload[key].commands
\n
};
\n
devices.push(configuration);
\n
}
\n
}
\n\n
msg.payload = devices;
\n
msg.statusCode = 200;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
2600
,
"wires"
:
[
[
"f436e3b4af08c19f"
]
]
},
{
"id"
:
"f436e3b4af08c19f"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
2600
,
"wires"
:
[]
},
{
"id"
:
"0c4868683d223c9a"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[get] clusters/:uuid/configurations/"
,
"url"
:
"clusters/:cluster_uuid/configurations/"
,
"method"
:
"get"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
210
,
"y"
:
2600
,
"wires"
:
[
[
"6bc05c0377927d89"
]
]
},
{
"id"
:
"b4d251e730d3453c"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[get] clusters/:uuid/configurations/:uuid"
,
"url"
:
"clusters/:cluster_uuid/configurations/:configuration_uuid"
,
"method"
:
"get"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
230
,
"y"
:
2700
,
"wires"
:
[
[
"b6d24ca4798f3e91"
]
]
},
{
"id"
:
"b6d24ca4798f3e91"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
cluster_uuid: msg.req.params.cluster_uuid,
\n
uuid: msg.req.params.configuration_uuid,
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
2700
,
"wires"
:
[
[
"8b25b7b640f6ee34"
]
]
},
{
"id"
:
"d33208d42107ebac"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
2700
,
"wires"
:
[]
},
{
"id"
:
"8c04f7b8950778d2"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"if (!msg.payload.hasOwnProperty('uuid')) {
\n
msg.statusCode = 404;
\n
msg.payload = {'message': 'Configuration not found'};
\n
} else {
\n
let configuration = {
\n
uuid: msg.payload.uuid,
\n
files: msg.payload.files,
\n
commands: msg.payload.commands
\n
};
\n\n
if (!msg.req.query.hasOwnProperty('compact')) {
\n
configuration.cluster_uuid = msg.payload.cluster_uuid,
\n
configuration.status = msg.payload.status,
\n
configuration.gatekeeper_mac = msg.payload.gatekeeper_mac,
\n
configuration.files = msg.payload.files,
\n
configuration.commands = msg.payload.commands
\n
}
\n
\n
msg.payload = configuration;
\n
msg.statusCode = 200;
\n
}
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
2700
,
"wires"
:
[
[
"d33208d42107ebac"
]
]
},
{
"id"
:
"4b1c1d47f937e7b1"
,
"type"
:
"comment"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"configurations routes"
,
"info"
:
""
,
"x"
:
170
,
"y"
:
2520
,
"wires"
:
[]
},
{
"id"
:
"13a1c5722081680e"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
cluster_uuid: msg.req.params.cluster_uuid,
\n
uuid: msg.req.params.configuration_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
3400
,
"wires"
:
[
[
"129bab5127fb1b91"
]
]
},
{
"id"
:
"d97fe010905f8a54"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"if (msg.payload.value === null) {
\n
msg.payload = {'message': 'Configuration not found'};
\n
msg.statusCode = 404;
\n
} else {
\n
msg.statusCode = 204;
\n
}
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
3400
,
"wires"
:
[
[
"7e7dbd87468ad124"
]
]
},
{
"id"
:
"6bc05c0377927d89"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"let query = {
\n
cluster_uuid: msg.req.params.cluster_uuid
\n
};
\n\n
if (msg.req.query.hasOwnProperty('gatekeeper_mac')) {
\n
query.gatekeeper_mac = msg.req.query.gatekeeper_mac.replace(/:/g, '').toLowerCase();
\n
}
\n
if (msg.req.query.hasOwnProperty('status')) {
\n
query.status = msg.req.query.status;
\n
}
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
2600
,
"wires"
:
[
[
"1dc74b141d7c211a"
]
]
},
{
"id"
:
"5e737f8b8bd443ee"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[post] clusters/:uuid/configurations/new"
,
"url"
:
"clusters/:cluster_uuid/configurations/new"
,
"method"
:
"post"
,
"upload"
:
true
,
"swaggerDoc"
:
""
,
"x"
:
230
,
"y"
:
2800
,
"wires"
:
[
[
"cc66150b17c6f92a"
]
]
},
{
"id"
:
"c02e392904f7b083"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"cluster not found"
,
"property"
:
"payload"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"empty"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1020
,
"y"
:
2880
,
"wires"
:
[
[
"20e0b3f5bd53df5c"
],
[
"464fb86dc11eaa17"
]
]
},
{
"id"
:
"945dbe575969713f"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
2800
,
"wires"
:
[]
},
{
"id"
:
"240a36c11ceb3d3c"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
2880
,
"wires"
:
[
[
"312bc44faaacc3fa"
]
]
},
{
"id"
:
"464fb86dc11eaa17"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"create configuration"
,
"func"
:
"const uuid = global.get('uuid');
\n
const gatekeeper_mac = msg.configuration.gatekeeper_mac.replace(/:/g, '').toLowerCase();
\n\n
const configuration = {
\n
cluster_uuid: msg.req.params.cluster_uuid,
\n
uuid: uuid.v4().slice(-12),
\n
status: 'pending',
\n
gatekeeper_mac: gatekeeper_mac,
\n
configurations: msg.configuration.configurations
\n
};
\n\n
msg.payload = configuration;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
530
,
"y"
:
2960
,
"wires"
:
[
[
"f7d5bd57ac377b04"
]
]
},
{
"id"
:
"20e0b3f5bd53df5c"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Cluster not found'};
\n
msg.statusCode = 404;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
2880
,
"wires"
:
[
[
"945dbe575969713f"
]
]
},
{
"id"
:
"f9355de17a4c0459"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"const configuration = {
\n
cluster_uuid: msg.payload.ops[0].cluster_uuid,
\n
uuid: msg.payload.ops[0].uuid,
\n
status: msg.payload.ops[0].status,
\n
gatekeeper_mac: msg.payload.ops[0].gatekeeper_mac,
\n
configurations: msg.payload.ops[0].configurations
\n
};
\n
msg.payload = configuration;
\n
msg.statusCode = 201;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
2960
,
"wires"
:
[
[
"945dbe575969713f"
]
]
},
{
"id"
:
"dc3b4049d5279ffb"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"cluster not found"
,
"property"
:
"payload"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"empty"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1020
,
"y"
:
3320
,
"wires"
:
[
[
"be780c12369d6509"
],
[
"13a1c5722081680e"
]
]
},
{
"id"
:
"ca0ad89e576f715c"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
3320
,
"wires"
:
[
[
"2f1f20145445d24b"
]
]
},
{
"id"
:
"be780c12369d6509"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Cluster not found'};
\n
msg.statusCode = 404;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
3320
,
"wires"
:
[
[
"7e7dbd87468ad124"
]
]
},
{
"id"
:
"7e7dbd87468ad124"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
3320
,
"wires"
:
[]
},
{
"id"
:
"dbc8337383756120"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[delete] clusters/:uuid/configurations/:uuid"
,
"url"
:
"clusters/:cluster_uuid/configurations/:configuration_uuid"
,
"method"
:
"delete"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
240
,
"y"
:
3320
,
"wires"
:
[
[
"ca0ad89e576f715c"
]
]
},
{
"id"
:
"8d35d8650db34cb6"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Invalid input'};
\n
msg.statusCode = 400;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
2800
,
"wires"
:
[
[
"945dbe575969713f"
]
]
},
{
"id"
:
"cc66150b17c6f92a"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"validate input"
,
"func"
:
"msg.valid = true;
\n\n
if (!msg.payload.hasOwnProperty('gatekeeper_mac')) {
\n
msg.valid = false;
\n
}
\n\n
msg.configuration = msg.payload;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
510
,
"y"
:
2800
,
"wires"
:
[
[
"6d6ea3cd189ceaee"
]
]
},
{
"id"
:
"6d6ea3cd189ceaee"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"input invalid"
,
"property"
:
"valid"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"false"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1010
,
"y"
:
2800
,
"wires"
:
[
[
"8d35d8650db34cb6"
],
[
"240a36c11ceb3d3c"
]
]
},
{
"id"
:
"1dc74b141d7c211a"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find configurations"
,
"collection"
:
"configurations"
,
"operation"
:
"find.toArray"
,
"x"
:
790
,
"y"
:
2600
,
"wires"
:
[
[
"521b652f385282c6"
]
]
},
{
"id"
:
"8b25b7b640f6ee34"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find configuration"
,
"collection"
:
"configurations"
,
"operation"
:
"findOne"
,
"x"
:
790
,
"y"
:
2700
,
"wires"
:
[
[
"8c04f7b8950778d2"
]
]
},
{
"id"
:
"129bab5127fb1b91"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"delete configuration"
,
"collection"
:
"configurations"
,
"operation"
:
"findOneAndDelete"
,
"x"
:
790
,
"y"
:
3400
,
"wires"
:
[
[
"d97fe010905f8a54"
]
]
},
{
"id"
:
"312bc44faaacc3fa"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find cluster"
,
"collection"
:
"clusters"
,
"operation"
:
"findOne"
,
"x"
:
770
,
"y"
:
2880
,
"wires"
:
[
[
"c02e392904f7b083"
]
]
},
{
"id"
:
"f7d5bd57ac377b04"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"insert configuration"
,
"collection"
:
"configurations"
,
"operation"
:
"insert"
,
"x"
:
790
,
"y"
:
2960
,
"wires"
:
[
[
"f9355de17a4c0459"
]
]
},
{
"id"
:
"2f1f20145445d24b"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find cluster"
,
"collection"
:
"clusters"
,
"operation"
:
"findOne"
,
"x"
:
770
,
"y"
:
3320
,
"wires"
:
[
[
"dc3b4049d5279ffb"
]
]
},
{
"id"
:
"b733024bad560aaf"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"delete configurations"
,
"collection"
:
"configurations"
,
"operation"
:
"deleteMany"
,
"x"
:
800
,
"y"
:
700
,
"wires"
:
[
[]
]
},
{
"id"
:
"460de50e61ce1c62"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[patch] clusters/:uuid/configurations/:uuid"
,
"url"
:
"clusters/:cluster_uuid/configurations/:configuration_uuid"
,
"method"
:
"patch"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
240
,
"y"
:
3060
,
"wires"
:
[
[
"6415b26b26a2f5c3"
]
]
},
{
"id"
:
"7c05ce3c8c1fa314"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
3060
,
"wires"
:
[]
},
{
"id"
:
"053df46cb9d9401c"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"if (msg.payload.result.n > 0) {
\n
msg.payload = { 'message': 'Configuration updated successfully' };
\n
msg.statusCode = 200;
\n
} else {
\n
msg.payload = { 'message': 'Configuration not found' };
\n
msg.statusCode = 404;
\n
}
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
3220
,
"wires"
:
[
[
"7c05ce3c8c1fa314"
]
]
},
{
"id"
:
"d7fc37d7b3a7ffe2"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"update configuration"
,
"collection"
:
"configurations"
,
"operation"
:
"update"
,
"x"
:
800
,
"y"
:
3220
,
"wires"
:
[
[
"053df46cb9d9401c"
]
]
},
{
"id"
:
"622ec794d84bc45b"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"update configuration"
,
"func"
:
"const query = {
\n
cluster_uuid: msg.req.params.cluster_uuid,
\n
uuid: msg.req.params.configuration_uuid
\n
};
\n\n
const update = {
\n
$set: {
\n
status: msg.configuration.status
\n
}
\n
};
\n\n
msg.payload = [query, update];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
540
,
"y"
:
3220
,
"wires"
:
[
[
"d7fc37d7b3a7ffe2"
]
]
},
{
"id"
:
"945b819bfbb033b4"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Invalid input'};
\n
msg.statusCode = 400;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
3060
,
"wires"
:
[
[
"7c05ce3c8c1fa314"
]
]
},
{
"id"
:
"6415b26b26a2f5c3"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"validate input"
,
"func"
:
"msg.valid = true;
\n\n
if (!msg.payload.hasOwnProperty('status') || (msg.payload.status !==
\"
pending
\"
&& msg.payload.status !==
\"
processing
\"
&& msg.payload.status !==
\"
finished
\"
)) {
\n
msg.valid = false;
\n
}
\n\n
msg.configuration = msg.payload;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
510
,
"y"
:
3060
,
"wires"
:
[
[
"d7f17ba41a4398d6"
]
]
},
{
"id"
:
"d7f17ba41a4398d6"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"input invalid"
,
"property"
:
"valid"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"false"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1010
,
"y"
:
3060
,
"wires"
:
[
[
"945b819bfbb033b4"
],
[
"6e053c045974807a"
]
]
},
{
"id"
:
"56f5cc4dcb84a2b0"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"cluster not found"
,
"property"
:
"payload"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"empty"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1020
,
"y"
:
3140
,
"wires"
:
[
[
"c8b6d4375c622696"
],
[
"622ec794d84bc45b"
]
]
},
{
"id"
:
"6e053c045974807a"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
3140
,
"wires"
:
[
[
"dc3aa8bd48ac0b33"
]
]
},
{
"id"
:
"c8b6d4375c622696"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Cluster not found'};
\n
msg.statusCode = 404;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
3140
,
"wires"
:
[
[
"7c05ce3c8c1fa314"
]
]
},
{
"id"
:
"dc3aa8bd48ac0b33"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find cluster"
,
"collection"
:
"clusters"
,
"operation"
:
"findOne"
,
"x"
:
770
,
"y"
:
3140
,
"wires"
:
[
[
"56f5cc4dcb84a2b0"
]
]
},
{
"id"
:
"115070324bfe512a"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[patch] clusters/:uuid/devices/:mac"
,
"url"
:
"clusters/:cluster_uuid/devices/:mac"
,
"method"
:
"patch"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
220
,
"y"
:
1400
,
"wires"
:
[
[
"266282a66c85574b"
]
]
},
{
"id"
:
"37128a192e805527"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1490
,
"y"
:
1400
,
"wires"
:
[]
},
{
"id"
:
"1fb84143090dcd74"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"if (msg.payload.result.n > 0) {
\n
msg.payload = { 'message': 'Configuration updated successfully' };
\n
msg.statusCode = 200;
\n
} else {
\n
msg.payload = { 'message': 'Configuration not found' };
\n
msg.statusCode = 404;
\n
}
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
1560
,
"wires"
:
[
[
"37128a192e805527"
]
]
},
{
"id"
:
"62d7f3d71e91d649"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"update device"
,
"collection"
:
"devices"
,
"operation"
:
"update"
,
"x"
:
780
,
"y"
:
1560
,
"wires"
:
[
[
"1fb84143090dcd74"
]
]
},
{
"id"
:
"91f73e2bca602bc0"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"update device"
,
"func"
:
"const mac = msg.req.params.mac.replace(/:/g, '').toLowerCase();
\n\n
const query = {
\n
cluster_uuid: msg.req.params.cluster_uuid,
\n
mac: mac
\n
};
\n\n
const update = {
\n
$set: {
\n
peers: msg.device.peers
\n
}
\n
};
\n\n
msg.payload = [query, update];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
520
,
"y"
:
1560
,
"wires"
:
[
[
"62d7f3d71e91d649"
]
]
},
{
"id"
:
"b07791e1a0cf3998"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Invalid input'};
\n
msg.statusCode = 400;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
1400
,
"wires"
:
[
[
"37128a192e805527"
]
]
},
{
"id"
:
"266282a66c85574b"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"validate input"
,
"func"
:
"msg.valid = true;
\n\n
if (!msg.payload.hasOwnProperty('peers')) {
\n
msg.valid = false;
\n
}
\n\n
msg.device = msg.payload;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
510
,
"y"
:
1400
,
"wires"
:
[
[
"3a220f46ebaec8b4"
]
]
},
{
"id"
:
"3a220f46ebaec8b4"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"input invalid"
,
"property"
:
"valid"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"false"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1010
,
"y"
:
1400
,
"wires"
:
[
[
"b07791e1a0cf3998"
],
[
"5207c33cfadfaec9"
]
]
},
{
"id"
:
"51b94135b902b353"
,
"type"
:
"switch"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"cluster not found"
,
"property"
:
"payload"
,
"propertyType"
:
"msg"
,
"rules"
:
[
{
"t"
:
"empty"
},
{
"t"
:
"else"
}
],
"checkall"
:
"true"
,
"repair"
:
false
,
"outputs"
:
2
,
"x"
:
1020
,
"y"
:
1480
,
"wires"
:
[
[
"7ba14089be07867e"
],
[
"91f73e2bca602bc0"
]
]
},
{
"id"
:
"5207c33cfadfaec9"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
1480
,
"wires"
:
[
[
"41d451dc6db2db34"
]
]
},
{
"id"
:
"7ba14089be07867e"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"msg.payload = { 'message': 'Cluster not found'};
\n
msg.statusCode = 404;
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1280
,
"y"
:
1480
,
"wires"
:
[
[
"37128a192e805527"
]
]
},
{
"id"
:
"41d451dc6db2db34"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find cluster"
,
"collection"
:
"clusters"
,
"operation"
:
"findOne"
,
"x"
:
770
,
"y"
:
1480
,
"wires"
:
[
[
"51b94135b902b353"
]
]
},
{
"id"
:
"05b4bbce54b79cc8"
,
"type"
:
"http in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"[patch] clusters/:uuid"
,
"url"
:
"clusters/:cluster_uuid"
,
"method"
:
"patch"
,
"upload"
:
false
,
"swaggerDoc"
:
""
,
"x"
:
170
,
"y"
:
420
,
"wires"
:
[
[
"992105113dc594a4"
]
]
},
{
"id"
:
"992105113dc594a4"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"set query"
,
"func"
:
"const query = {
\n
uuid: msg.req.params.cluster_uuid
\n
};
\n\n
msg.payload = [query, {}];
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
500
,
"y"
:
420
,
"wires"
:
[
[
"430813fd8c51758c"
]
]
},
{
"id"
:
"a003be7bc111c3c7"
,
"type"
:
"http response"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
""
,
"statusCode"
:
""
,
"headers"
:
{},
"x"
:
1230
,
"y"
:
420
,
"wires"
:
[]
},
{
"id"
:
"ef64a43b1a31da7f"
,
"type"
:
"function"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"name"
:
"format response"
,
"func"
:
"if (!msg.payload.hasOwnProperty('uuid')) {
\n
msg.statusCode = 404;
\n
msg.payload = {'message': 'Cluster not found'};
\n
} else {
\n
const cluster = {
\n
uuid: msg.payload.uuid,
\n
name: msg.payload.name
\n
};
\n
msg.payload = cluster;
\n
msg.statusCode = 200;
\n
}
\n
return msg;"
,
"outputs"
:
1
,
"noerr"
:
0
,
"initialize"
:
""
,
"finalize"
:
""
,
"libs"
:
[],
"x"
:
1020
,
"y"
:
420
,
"wires"
:
[
[
"a003be7bc111c3c7"
]
]
},
{
"id"
:
"430813fd8c51758c"
,
"type"
:
"mongodb3 in"
,
"z"
:
"cd1a3aa5b0f95c03"
,
"service"
:
"_ext_"
,
"configNode"
:
"2096b91b638576ce"
,
"name"
:
"find cluster"
,
"collection"
:
"clusters"
,
"operation"
:
"findOne"
,
"x"
:
770
,
"y"
:
420
,
"wires"
:
[
[
"ef64a43b1a31da7f"
]
]
},
{
"id"
:
"2096b91b638576ce"
,
"type"
:
"mongodb3"
,
"uri"
:
"mongodb://localhost:27017/rcm-api"
,
"name"
:
"rcm-api"
,
"options"
:
""
,
"parallelism"
:
"-1"
}
]
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment