174 lines
6.3 KiB
JSON
174 lines
6.3 KiB
JSON
{
|
|
"$schema": "../../shared/schemas/conductor-project.schema.json",
|
|
"schemaVersion": "0.1.0",
|
|
"project": {
|
|
"id": "proj_release_demo",
|
|
"name": "Conductor Deterministic MVP Demo",
|
|
"description": "Offline release demonstration backed by the repository mock-api service.",
|
|
"pages": [
|
|
{
|
|
"id": "page_main",
|
|
"name": "Operations",
|
|
"order": 0,
|
|
"components": [
|
|
{
|
|
"id": "cmp_title",
|
|
"type": "Label",
|
|
"name": "title",
|
|
"position": { "x": 24, "y": 20 },
|
|
"size": { "width": 520, "height": 40 },
|
|
"properties": { "label": "Deterministic workflow launcher", "value": "Deterministic workflow launcher", "visible": true }
|
|
},
|
|
{
|
|
"id": "cmp_environment",
|
|
"type": "Dropdown",
|
|
"name": "environment",
|
|
"position": { "x": 24, "y": 76 },
|
|
"size": { "width": 260, "height": 64 },
|
|
"properties": { "label": "Environment", "options": [], "defaultValue": "", "required": true, "visible": true, "disabled": false }
|
|
},
|
|
{
|
|
"id": "cmp_hostname",
|
|
"type": "TextInput",
|
|
"name": "hostname",
|
|
"position": { "x": 304, "y": 76 },
|
|
"size": { "width": 260, "height": 64 },
|
|
"properties": { "label": "Hostname", "placeholder": "host.example", "defaultValue": "alpha.example", "required": true, "visible": true, "disabled": false }
|
|
},
|
|
{
|
|
"id": "cmp_launch",
|
|
"type": "Button",
|
|
"name": "launch",
|
|
"position": { "x": 24, "y": 156 },
|
|
"size": { "width": 180, "height": 44 },
|
|
"properties": { "label": "Launch workflow", "visible": true, "disabled": false },
|
|
"events": [{ "event": "onClick", "actionId": "action_launch" }]
|
|
},
|
|
{
|
|
"id": "cmp_request_id",
|
|
"type": "StatusPanel",
|
|
"name": "requestStatus",
|
|
"position": { "x": 224, "y": 156 },
|
|
"size": { "width": 340, "height": 64 },
|
|
"properties": { "label": "Focused result", "value": "Not launched", "visible": true }
|
|
},
|
|
{
|
|
"id": "cmp_response",
|
|
"type": "JsonViewer",
|
|
"name": "fullResponse",
|
|
"position": { "x": 24, "y": 236 },
|
|
"size": { "width": 540, "height": 220 },
|
|
"properties": { "label": "Full response", "defaultValue": null, "visible": true }
|
|
},
|
|
{
|
|
"id": "cmp_refresh",
|
|
"type": "Button",
|
|
"name": "refreshInventory",
|
|
"position": { "x": 600, "y": 20 },
|
|
"size": { "width": 180, "height": 44 },
|
|
"properties": { "label": "Refresh inventory", "visible": true, "disabled": false },
|
|
"events": [{ "event": "onClick", "actionId": "action_inventory" }]
|
|
},
|
|
{
|
|
"id": "cmp_inventory",
|
|
"type": "Table",
|
|
"name": "inventory",
|
|
"position": { "x": 600, "y": 76 },
|
|
"size": { "width": 560, "height": 380 },
|
|
"properties": {
|
|
"label": "Inventory",
|
|
"columns": [
|
|
{ "key": "id", "header": "ID", "width": 110 },
|
|
{ "key": "hostname", "header": "Hostname", "width": 190 },
|
|
{ "key": "environment", "header": "Environment", "width": 120 },
|
|
{ "key": "status", "header": "Status", "width": 120 }
|
|
],
|
|
"rows": [],
|
|
"visible": true,
|
|
"disabled": false
|
|
}
|
|
},
|
|
{
|
|
"id": "cmp_inventory_detail",
|
|
"type": "JsonViewer",
|
|
"name": "inventoryDetail",
|
|
"position": { "x": 600, "y": 476 },
|
|
"size": { "width": 560, "height": 180 },
|
|
"properties": { "label": "Selected record", "defaultValue": null, "visible": true }
|
|
}
|
|
],
|
|
"events": [{ "event": "onLoad", "actionId": "action_environments" }]
|
|
}
|
|
],
|
|
"actions": [
|
|
{
|
|
"id": "action_environments",
|
|
"name": "Load environments",
|
|
"method": "GET",
|
|
"url": "http://mock-api:8787/environments",
|
|
"headers": { "Accept": "application/json" },
|
|
"queryParameters": {},
|
|
"pathParameters": {},
|
|
"bodyTemplate": "",
|
|
"authenticationType": "anonymous"
|
|
},
|
|
{
|
|
"id": "action_launch",
|
|
"name": "Launch workflow",
|
|
"method": "POST",
|
|
"url": "http://mock-api:8787/launch",
|
|
"headers": { "Accept": "application/json", "Content-Type": "application/json" },
|
|
"queryParameters": {},
|
|
"pathParameters": {},
|
|
"bodyTemplate": "{\"environment\":\"{{components.environment.value}}\",\"hostname\":\"{{components.hostname.value}}\"}",
|
|
"authenticationType": "anonymous"
|
|
},
|
|
{
|
|
"id": "action_inventory",
|
|
"name": "Refresh inventory",
|
|
"method": "GET",
|
|
"url": "http://mock-api:8787/inventory",
|
|
"headers": { "Accept": "application/json" },
|
|
"queryParameters": {},
|
|
"pathParameters": {},
|
|
"bodyTemplate": "",
|
|
"authenticationType": "anonymous"
|
|
}
|
|
],
|
|
"bindings": [
|
|
{
|
|
"id": "binding_environment_options",
|
|
"source": "actions.action_environments.response.body.environments",
|
|
"target": "components.environment.options",
|
|
"trigger": "onSuccess"
|
|
},
|
|
{
|
|
"id": "binding_launch_full",
|
|
"source": "actions.action_launch.response.body",
|
|
"target": "components.fullResponse.value",
|
|
"trigger": "onSuccess"
|
|
},
|
|
{
|
|
"id": "binding_launch_focused",
|
|
"source": "actions.action_launch.response.body.requestId",
|
|
"target": "components.requestStatus.value",
|
|
"trigger": "onSuccess"
|
|
},
|
|
{
|
|
"id": "binding_inventory_rows",
|
|
"source": "actions.action_inventory.response.body.items",
|
|
"target": "components.inventory.rows",
|
|
"trigger": "onSuccess"
|
|
},
|
|
{
|
|
"id": "binding_inventory_selection",
|
|
"source": "components.inventory.selectedRow",
|
|
"target": "components.inventoryDetail.value",
|
|
"trigger": "onChange"
|
|
}
|
|
],
|
|
"variables": {},
|
|
"settings": {}
|
|
}
|
|
}
|