83 lines
2.1 KiB
JavaScript
83 lines
2.1 KiB
JavaScript
import { createBoxState, createGatewayState } from "../sim/model.mjs";
|
|
import { createPatchPanelState, createWiringConfig } from "./model.mjs";
|
|
|
|
export const MVP_BOX_IDS = Object.freeze(["boxsim_alpha", "boxsim_beta"]);
|
|
export const MVP_GATEWAY_IDS = Object.freeze(["gwsimu_east", "gwsimu_west"]);
|
|
|
|
export function createMvpTopology({ now = "2026-01-01T00:00:00.000Z" } = {}) {
|
|
const gatewaySessionIds = MVP_GATEWAY_IDS.map((gatewayId) => `gws_${gatewayId}`);
|
|
const boxes = MVP_BOX_IDS.map((boxId, index) =>
|
|
createBoxState({
|
|
boxId,
|
|
gatewaySessionId: gatewaySessionIds[index],
|
|
ports: ["uart0", "eth0", "gpio0"],
|
|
includePortDefinitions: false,
|
|
now
|
|
})
|
|
);
|
|
|
|
const gateways = MVP_GATEWAY_IDS.map((gatewayId, index) =>
|
|
createGatewayState({
|
|
gatewayId,
|
|
endpoint: `http://127.0.0.1:${7101 + index}`,
|
|
boxes: [boxes[index].resource.resourceId],
|
|
now
|
|
})
|
|
);
|
|
|
|
const wiringConfig = createWiringConfig({
|
|
gatewaySessionId: gatewaySessionIds[0],
|
|
connections: [
|
|
{
|
|
from: {
|
|
resourceId: boxes[0].resource.resourceId,
|
|
port: "uart0"
|
|
},
|
|
to: {
|
|
resourceId: boxes[1].resource.resourceId,
|
|
port: "uart0"
|
|
},
|
|
mode: "exclusive"
|
|
},
|
|
{
|
|
from: {
|
|
resourceId: boxes[0].resource.resourceId,
|
|
port: "gpio0"
|
|
},
|
|
to: {
|
|
resourceId: boxes[1].resource.resourceId,
|
|
port: "gpio0"
|
|
},
|
|
mode: "monitor"
|
|
}
|
|
],
|
|
now
|
|
});
|
|
|
|
const patchPanel = createPatchPanelState({
|
|
gatewaySessionId: gatewaySessionIds[0],
|
|
wiringConfig,
|
|
now
|
|
});
|
|
|
|
return {
|
|
topologyId: "top_mvp_l2_l3_sim_patch",
|
|
projectId: "prj_mvp_topology",
|
|
environment: "dev",
|
|
services: {
|
|
boxes,
|
|
gateways,
|
|
patchPanel
|
|
},
|
|
wiringConfig,
|
|
constraints: {
|
|
patchPanelIsOnlyCrossDeviceChannel: true,
|
|
boxSimuLocalLoopbackForCrossDeviceSync: false
|
|
},
|
|
dryRunHints: {
|
|
cliTarget: "fixtures/mvp-topology/topology.json",
|
|
expectedServices: ["hwlab-box-simu", "hwlab-gateway-simu", "hwlab-patch-panel"]
|
|
}
|
|
};
|
|
}
|