catchup
This commit is contained in:
parent
a3093e1c8b
commit
95e00121a3
68
diagram.js
68
diagram.js
|
|
@ -30,6 +30,12 @@ const CONTROL_PANEL_STORAGE_KEY = 'label-control-panel-visible';
|
||||||
let diagramConfigOverrides = {};
|
let diagramConfigOverrides = {};
|
||||||
let initialDiagramConfig = null;
|
let initialDiagramConfig = null;
|
||||||
|
|
||||||
|
const cssEscape = (window.CSS && typeof window.CSS.escape === 'function')
|
||||||
|
? window.CSS.escape.bind(window.CSS)
|
||||||
|
: function(value) {
|
||||||
|
return String(value).replace(/(["\\\s#.:\[\]\(\)])/g, '\\$1');
|
||||||
|
};
|
||||||
|
|
||||||
// Helper to deep-clone the config so we can reset back to defaults later.
|
// Helper to deep-clone the config so we can reset back to defaults later.
|
||||||
function cloneDiagramConfig(obj) {
|
function cloneDiagramConfig(obj) {
|
||||||
return JSON.parse(JSON.stringify(obj));
|
return JSON.parse(JSON.stringify(obj));
|
||||||
|
|
@ -203,11 +209,11 @@ const cy = cytoscape({
|
||||||
'padding': '12px'
|
'padding': '12px'
|
||||||
}},
|
}},
|
||||||
{ selector: 'node[type = "sg"]', style: {
|
{ selector: 'node[type = "sg"]', style: {
|
||||||
'background-color': '#fff7ed',
|
'background-opacity': 0,
|
||||||
'border-color': '#f59e0b',
|
'border-width': 0,
|
||||||
'width': 260,
|
'width': 260,
|
||||||
'height': 90,
|
'height': 32,
|
||||||
'padding': '12px'
|
'padding': 8
|
||||||
}},
|
}},
|
||||||
{ selector: 'node[type = "igw"], node[type = "nat"]', style: { 'background-color': '#ffe4e6','border-color': '#fb7185' }},
|
{ selector: 'node[type = "igw"], node[type = "nat"]', style: { 'background-color': '#ffe4e6','border-color': '#fb7185' }},
|
||||||
{ selector: 'edge', style: {
|
{ selector: 'edge', style: {
|
||||||
|
|
@ -305,12 +311,13 @@ async function loadGraphAndBuildElements(region = 'us-west-1') {
|
||||||
}
|
}
|
||||||
// SGs
|
// SGs
|
||||||
for (const sg of sgs) {
|
for (const sg of sgs) {
|
||||||
|
const name = sg.name || sg.id;
|
||||||
|
const label = `${name}\n${sg.id}`;
|
||||||
const rin = sg.rules_in || [], rout = sg.rules_out || [];
|
const rin = sg.rules_in || [], rout = sg.rules_out || [];
|
||||||
const label = `${sg.name || sg.id}\ningress: ${(rin[0]||'—')}${rin.length>1?'…':''}`;
|
|
||||||
const fallbackAcct = vpcAccountMeta.get(sg.vpc || '') || null;
|
const fallbackAcct = vpcAccountMeta.get(sg.vpc || '') || null;
|
||||||
const acctInfo = ensureAccount(sg.accountId || (fallbackAcct && fallbackAcct.id) || null) || fallbackAcct;
|
const acctInfo = ensureAccount(sg.accountId || (fallbackAcct && fallbackAcct.id) || null) || fallbackAcct;
|
||||||
const parent = acctInfo ? acctInfo.nodeId : undefined;
|
const parent = acctInfo ? acctInfo.nodeId : undefined;
|
||||||
elements.push({ data: { id: sg.id, type: 'sg', label, rules: { in: rin, out: rout }, parent, accountId: acctInfo ? acctInfo.id : null, vpc: sg.vpc || null } });
|
elements.push({ data: { id: sg.id, type: 'sg', label, name, rules: { in: rin, out: rout }, parent, accountId: acctInfo ? acctInfo.id : null, vpc: sg.vpc || null } });
|
||||||
}
|
}
|
||||||
// SG<->SG edges based on rules referencing other SGs
|
// SG<->SG edges based on rules referencing other SGs
|
||||||
function parseSgRef(rule){
|
function parseSgRef(rule){
|
||||||
|
|
@ -351,7 +358,8 @@ async function loadGraphAndBuildElements(region = 'us-west-1') {
|
||||||
// RDS
|
// RDS
|
||||||
for (const db of rds) {
|
for (const db of rds) {
|
||||||
const parentSubnet = (db.subnetGroup && db.subnetGroup[0]) || null;
|
const parentSubnet = (db.subnetGroup && db.subnetGroup[0]) || null;
|
||||||
const label = `${db.engine}\n${db.port}\n${db.publiclyAccessible?'public':'private'}`;
|
const primaryLine = (db.engine || '').split('\n')[0];
|
||||||
|
const label = primaryLine ? `${db.id}\n${primaryLine}` : db.id;
|
||||||
const fallbackAcct = subnetAccountMeta.get(parentSubnet || '') || null;
|
const fallbackAcct = subnetAccountMeta.get(parentSubnet || '') || null;
|
||||||
const acctInfo = ensureAccount(db.accountId || (fallbackAcct && fallbackAcct.id) || null) || fallbackAcct;
|
const acctInfo = ensureAccount(db.accountId || (fallbackAcct && fallbackAcct.id) || null) || fallbackAcct;
|
||||||
elements.push({ data: { id: db.id, type:'rds', label, engine:db.engine, port:db.port, publiclyAccessible:!!db.publiclyAccessible, parent: parentSubnet, sgs: db.sgs || [], accountId: acctInfo ? acctInfo.id : null } });
|
elements.push({ data: { id: db.id, type:'rds', label, engine:db.engine, port:db.port, publiclyAccessible:!!db.publiclyAccessible, parent: parentSubnet, sgs: db.sgs || [], accountId: acctInfo ? acctInfo.id : null } });
|
||||||
|
|
@ -449,7 +457,7 @@ async function loadGraphAndBuildElements(region = 'us-west-1') {
|
||||||
const vpnChip=vpnBadge(name); if (vpnChip) badges.push(vpnChip);
|
const vpnChip=vpnBadge(name); if (vpnChip) badges.push(vpnChip);
|
||||||
const typeChip=typeBadge(type); if (typeChip) badges.push(typeChip);
|
const typeChip=typeBadge(type); if (typeChip) badges.push(typeChip);
|
||||||
const badgeHtml=badges.join('');
|
const badgeHtml=badges.join('');
|
||||||
return `<div class="ncard n-${type}" style="background:none;border:none;box-shadow:none;padding:0;margin:0;display:block;">
|
return `<div class="ncard n-${type}" data-node-id="${d.id}" style="background:none;border:none;box-shadow:none;padding:0;margin:0;display:block;">
|
||||||
<div class="n-title" style="display:flex;align-items:center;gap:8px;">${iconSvg(type)}${escapeHtml(name)}${badgeHtml}</div>
|
<div class="n-title" style="display:flex;align-items:center;gap:8px;">${iconSvg(type)}${escapeHtml(name)}${badgeHtml}</div>
|
||||||
${lines.join('')}
|
${lines.join('')}
|
||||||
</div>`;
|
</div>`;
|
||||||
|
|
@ -468,7 +476,7 @@ async function loadGraphAndBuildElements(region = 'us-west-1') {
|
||||||
const typeChip=typeBadge(d.type);
|
const typeChip=typeBadge(d.type);
|
||||||
if (typeChip) badges.push(typeChip);
|
if (typeChip) badges.push(typeChip);
|
||||||
const badgeHtml=badges.join('');
|
const badgeHtml=badges.join('');
|
||||||
return `<div class="ncard n-${d.type}" style="background:#fee2e2;border:1px solid #ef4444;box-shadow:none;padding:10px 12px;border-radius:10px;">
|
return `<div class="ncard n-${d.type}" data-node-id="${d.id}" style="background:#fee2e2;border:1px solid #ef4444;box-shadow:none;padding:10px 12px;border-radius:10px;">
|
||||||
<div class="n-title" style="display:flex;align-items:center;gap:8px;">
|
<div class="n-title" style="display:flex;align-items:center;gap:8px;">
|
||||||
${icon}
|
${icon}
|
||||||
${escapeHtml(name)}${badgeHtml}
|
${escapeHtml(name)}${badgeHtml}
|
||||||
|
|
@ -486,12 +494,11 @@ async function loadGraphAndBuildElements(region = 'us-west-1') {
|
||||||
const badges=[];
|
const badges=[];
|
||||||
const typeChip=typeBadge('sg'); if (typeChip) badges.push(typeChip);
|
const typeChip=typeBadge('sg'); if (typeChip) badges.push(typeChip);
|
||||||
const badgeHtml=badges.join('');
|
const badgeHtml=badges.join('');
|
||||||
return `<div class="ncard n-sg" style="background:#fff7ed;border:1px solid #f59e0b;box-shadow:none;padding:10px 12px;border-radius:10px;">
|
return `<div class="ncard n-sg" data-node-id="${d.id}" style="background:#fff7ed;border:1px solid #f59e0b;box-shadow:0 2px 10px rgba(245,158,11,0.25);padding:10px 12px;border-radius:10px;">
|
||||||
<div class="n-title" style="display:flex;align-items:center;gap:8px;">
|
<div class="n-title" style="display:flex;align-items:center;gap:8px;font-weight:700;">
|
||||||
${iconSvg('sg')}
|
${escapeHtml(d.name || d.id)}${badgeHtml}
|
||||||
${escapeHtml(d.name || d.label || d.id)}${badgeHtml}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="n-sub">${escapeHtml(`${rules} rule${rules===1?'':'s'}`)}</div>
|
<div class="n-sub">${escapeHtml(d.id)} · ${escapeHtml(`${rules} rule${rules===1?'':'s'}`)}</div>
|
||||||
</div>`;
|
</div>`;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -505,7 +512,7 @@ async function loadGraphAndBuildElements(region = 'us-west-1') {
|
||||||
const vpnChip=vpnBadge(name); if (vpnChip) badges.push(vpnChip);
|
const vpnChip=vpnBadge(name); if (vpnChip) badges.push(vpnChip);
|
||||||
const typeChip=typeBadge(d.type); if (typeChip) badges.push(typeChip);
|
const typeChip=typeBadge(d.type); if (typeChip) badges.push(typeChip);
|
||||||
const badgeHtml=badges.join('');
|
const badgeHtml=badges.join('');
|
||||||
return `<div class="ncard n-${d.type}" style="background:#ffe4e6;border:1px solid #fb7185;box-shadow:none;padding:8px 10px;border-radius:10px;">
|
return `<div class="ncard n-${d.type}" data-node-id="${d.id}" style="background:#ffe4e6;border:1px solid #fb7185;box-shadow:none;padding:8px 10px;border-radius:10px;">
|
||||||
<div class="n-title" style="display:flex;align-items:center;gap:8px;">
|
<div class="n-title" style="display:flex;align-items:center;gap:8px;">
|
||||||
${icon}
|
${icon}
|
||||||
${escapeHtml(name)}${badgeHtml}
|
${escapeHtml(name)}${badgeHtml}
|
||||||
|
|
@ -532,6 +539,7 @@ async function loadGraphAndBuildElements(region = 'us-west-1') {
|
||||||
tpl: function(d){ const name=d.name||(d.label||'').split('\n')[0]||d.id; return `<div class="vpc-big">${escapeHtml(name)}</div>`; }
|
tpl: function(d){ const name=d.name||(d.label||'').split('\n')[0]||d.id; return `<div class="vpc-big">${escapeHtml(name)}</div>`; }
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
|
requestAnimationFrame(ensureNodeWidthsFitLabels);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wrap subnet tabs and reset outer transform so plugin can position parent
|
// Wrap subnet tabs and reset outer transform so plugin can position parent
|
||||||
|
|
@ -602,12 +610,42 @@ async function loadGraphAndBuildElements(region = 'us-west-1') {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const NODE_MIN_WIDTH = {
|
||||||
|
alb: 260,
|
||||||
|
nlb: 260,
|
||||||
|
ec2: 260,
|
||||||
|
rds: 260,
|
||||||
|
sg: 220
|
||||||
|
};
|
||||||
|
|
||||||
|
function ensureNodeWidthsFitLabels(){
|
||||||
|
const nodes = cy.nodes('[type = "alb"], [type = "nlb"], [type = "ec2"], [type = "rds"], [type = "sg"]');
|
||||||
|
if (nodes.empty()) return;
|
||||||
|
const margin = 32;
|
||||||
|
cy.batch(() => {
|
||||||
|
nodes.forEach(node => {
|
||||||
|
const id = node.id();
|
||||||
|
const labelEl = document.querySelector(`.ncard[data-node-id="${cssEscape(id)}"]`);
|
||||||
|
if (!labelEl) return;
|
||||||
|
const rect = labelEl.getBoundingClientRect();
|
||||||
|
if (!rect || !rect.width) return;
|
||||||
|
const type = node.data('type');
|
||||||
|
const minWidth = NODE_MIN_WIDTH[type] || 220;
|
||||||
|
const desired = Math.max(minWidth, Math.ceil(rect.width) + margin);
|
||||||
|
if (Math.abs(node.width() - desired) > 1) {
|
||||||
|
node.style('width', desired);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Re-run every label sizing step so HTML overlays stay in sync with the graph.
|
// Re-run every label sizing step so HTML overlays stay in sync with the graph.
|
||||||
function refreshLabelGeometry(){
|
function refreshLabelGeometry(){
|
||||||
prepareSubnetTabs();
|
prepareSubnetTabs();
|
||||||
positionSubnetTabs();
|
positionSubnetTabs();
|
||||||
ensureEmptySubnetSizers();
|
ensureEmptySubnetSizers();
|
||||||
updateEmptySubnetSizerSizes();
|
updateEmptySubnetSizerSizes();
|
||||||
|
requestAnimationFrame(ensureNodeWidthsFitLabels);
|
||||||
}
|
}
|
||||||
|
|
||||||
let renderRefreshScheduled = false;
|
let renderRefreshScheduled = false;
|
||||||
|
|
|
||||||
232
layout.json
232
layout.json
|
|
@ -2,440 +2,440 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"account:acct-shared": {
|
"account:acct-shared": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2383.6718307806645,
|
"x": 2005.5164890789051,
|
||||||
"y": 1142.0623550975815
|
"y": 1112.2739169237752
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"account:acct-prod": {
|
"account:acct-prod": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -1257.3436368163789,
|
"x": -814.0708768306696,
|
||||||
"y": 1751.2282249012555
|
"y": 1653.4126921251755
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"vpc-87832de2": {
|
"vpc-87832de2": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2622.379364533625,
|
"x": 1659.7133575233456,
|
||||||
"y": 792.8749925626238
|
"y": 513.9754219463099
|
||||||
},
|
},
|
||||||
"lx": 77.51854351992131,
|
"lx": 73.49444680832619,
|
||||||
"ly": 139.5230395934425
|
"ly": 209.94473204635727
|
||||||
},
|
},
|
||||||
"vpc-c84eabad": {
|
"vpc-c84eabad": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -1422.5355956832366,
|
"x": -47.25,
|
||||||
"y": 280.0140805664038
|
"y": -18.25
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"vpc-331ad056": {
|
"vpc-331ad056": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -1435.3398750652455,
|
"x": -967.4533224282068,
|
||||||
"y": 1386.2361491698744
|
"y": 907.0632390302223
|
||||||
},
|
},
|
||||||
"lx": -134.22057243218103,
|
"lx": -134.22057243218103,
|
||||||
"ly": 551.6318031828098
|
"ly": 551.6318031828098
|
||||||
},
|
},
|
||||||
"vpc-afe722ca": {
|
"vpc-afe722ca": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -541.0511214212669,
|
"x": -563.6312192940503,
|
||||||
"y": 3010.339213373424
|
"y": 2990.9848437681812
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"vpc-03f799f47b766798c": {
|
"vpc-03f799f47b766798c": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2417.1718307806645,
|
"x": 1926.2412804626993,
|
||||||
"y": 1690.0755318155339
|
"y": 874.4789294499092
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"subnet-260ee27f": {
|
"subnet-260ee27f": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -1389.5898750652455,
|
"x": -1370.4494604541483,
|
||||||
"y": 1215.9751129386946
|
"y": 1184.4611007903993
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"subnet-f73afeae": {
|
"subnet-f73afeae": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -1432.185250998857,
|
"x": 0,
|
||||||
"y": 1941.279260058381
|
"y": 0
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"subnet-ebc4188e": {
|
"subnet-ebc4188e": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -492.04322569584144,
|
"x": -514.6233235686249,
|
||||||
"y": 2713.2486728912545
|
"y": 2693.894303286011
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"subnet-005bfd58e719e031f": {
|
"subnet-005bfd58e719e031f": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2795.865315418019,
|
"x": 3237.329690501032,
|
||||||
"y": 521.623811391727
|
"y": 365.41687861255815
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"subnet-035f81142068bf961": {
|
"subnet-035f81142068bf961": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2015.8700930454238,
|
"x": 2410.1141180477457,
|
||||||
"y": 1673.9235838762236
|
"y": 1742.7078588998183
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"subnet-d137fd88": {
|
"subnet-d137fd88": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2876.691988245517,
|
"x": 3334.1563633285305,
|
||||||
"y": 1014.8520069370023
|
"y": 855.6631466915302
|
||||||
},
|
},
|
||||||
"lx": -95.54884268669878,
|
"lx": -95.54884268669878,
|
||||||
"ly": -183.7839139599664
|
"ly": -183.7839139599664
|
||||||
},
|
},
|
||||||
"subnet-e98e088c": {
|
"subnet-e98e088c": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -1024.2870646187603,
|
"x": -914.4098453851616,
|
||||||
"y": 1941.0969012227074
|
"y": 1819.8764780604447
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"subnet-08e40dcdc103438b8": {
|
"subnet-08e40dcdc103438b8": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2390.5024469543973,
|
"x": 0,
|
||||||
"y": 1160.3461228120448
|
"y": 0
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"subnet-0cb2aa7457413f5fe": {
|
"subnet-0cb2aa7457413f5fe": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 1937.1896376590757,
|
"x": 0,
|
||||||
"y": 1920.0144292080076
|
"y": 0
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"subnet-247a9341": {
|
"subnet-247a9341": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -1205.4162560440936,
|
"x": 0,
|
||||||
"y": 178.27669594691727
|
"y": 0
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"subnet-34173f72": {
|
"subnet-34173f72": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -1548.6549353223795,
|
"x": 0,
|
||||||
"y": 418.2514651858903
|
"y": 0
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"subnet-05b5dcdc91a8d3da2": {
|
"subnet-05b5dcdc91a8d3da2": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2391.7963891035715,
|
"x": 0,
|
||||||
"y": 963.1972387601206
|
"y": 0
|
||||||
},
|
},
|
||||||
"lx": -56.280967047329966,
|
"lx": -56.280967047329966,
|
||||||
"ly": 12.354358620145604
|
"ly": 12.354358620145604
|
||||||
},
|
},
|
||||||
"subnet-16594550": {
|
"subnet-16594550": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -496.5590171466923,
|
"x": -519.1391150194758,
|
||||||
"y": 3267.122499752737
|
"y": 3247.768130147494
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"subnet-051f6d705e415834d": {
|
"subnet-051f6d705e415834d": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2852.1835304066703,
|
"x": 3705.1773007679885,
|
||||||
"y": 1694.1266142274605
|
"y": 1712.2760735536046
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-642cf701": {
|
"sg-642cf701": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -128.87428508740095,
|
"x": 66.55145954133057,
|
||||||
"y": 3207.5801320931114
|
"y": 3199.7588837084936
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-00600deefd8e47cd0": {
|
"sg-00600deefd8e47cd0": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 86.73398115413455,
|
"x": 1748.8526871589222,
|
||||||
"y": -110.88418680061903
|
"y": 769.1351955087487
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-da75adbf": {
|
"sg-da75adbf": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 271.174147224467,
|
"x": 248.59404935168357,
|
||||||
"y": 2826.0633311754773
|
"y": 2806.708961570234
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-c05a2ba5": {
|
"sg-c05a2ba5": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -139.91274956991595,
|
"x": 1780.7154695082147,
|
||||||
"y": 23.51131978002694
|
"y": 960.4027949655301
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-0c00315bbb744b876": {
|
"sg-0c00315bbb744b876": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 90.45962176444954,
|
"x": 2005.9176505811133,
|
||||||
"y": 173.12646633830315
|
"y": 463.7441588404479
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 201.20483557975695,
|
||||||
"ly": 0
|
"ly": 251.50604447469595
|
||||||
},
|
},
|
||||||
"sg-495ab32c": {
|
"sg-495ab32c": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 26.527694171634298,
|
"x": 1735.1781125296234,
|
||||||
"y": 307.9443846885058
|
"y": 1151.7724351676054
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-0f2465c4421c2d5c2": {
|
"sg-0f2465c4421c2d5c2": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 3737.1319279567347,
|
"x": 4197.03297815781,
|
||||||
"y": 1416.6180986742713
|
"y": 934.4545348587603
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-8b746aec": {
|
"sg-8b746aec": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -57.46491042921801,
|
"x": 1708.0576008049065,
|
||||||
"y": 798.8332334152173
|
"y": 562.0915192477415
|
||||||
},
|
},
|
||||||
"lx": -46.67202145388339,
|
"lx": -46.67202145388339,
|
||||||
"ly": 75.49885823422312
|
"ly": 75.49885823422312
|
||||||
},
|
},
|
||||||
"sg-0a872ac3a6d9132a6": {
|
"sg-0a872ac3a6d9132a6": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2449.2004574581915,
|
"x": 3233.545980714329,
|
||||||
"y": 2220.1301602993412
|
"y": 2324.5478338475505
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-076d2ea1df0054074": {
|
"sg-076d2ea1df0054074": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 3020.7762653398454,
|
"x": 3394.3395292963014,
|
||||||
"y": 2403.6912205594213
|
"y": 1948.7832081872007
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-b45a2bd1": {
|
"sg-b45a2bd1": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 3732.2813094098105,
|
"x": 4049.2497015379804,
|
||||||
"y": 823.5446930393971
|
"y": 665.4137035511877
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-4235ee27": {
|
"sg-4235ee27": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 134.85579854853708,
|
"x": 471.4854636272555,
|
||||||
"y": 3695.499049118454
|
"y": 3322.697640031519
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-04167d2e18ba15e45": {
|
"sg-04167d2e18ba15e45": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2115.6486154236227,
|
"x": 3195.468001006085,
|
||||||
"y": 2405.8871924989144
|
"y": 2109.5037824422498
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-06348763": {
|
"sg-06348763": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -770.8920039501696,
|
"x": -385.8437743498514,
|
||||||
"y": 953.8441924471215
|
"y": 801.5675421441275
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-08fb4b412f90d5913": {
|
"sg-08fb4b412f90d5913": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -729.2224680353501,
|
"x": -430.38365938247586,
|
||||||
"y": 1385.8819086010787
|
"y": 1413.7977731519345
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"sg-09621eafa81d9554d": {
|
"sg-09621eafa81d9554d": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 3699.811020652474,
|
"x": 4048.701400244682,
|
||||||
"y": 413.5355291862605
|
"y": 269.85723972518815
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"i-0dc281f8d162602c8": {
|
"i-0dc281f8d162602c8": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -1670.173475504735,
|
"x": -1643.4066448564133,
|
||||||
"y": 1265.2737998613272
|
"y": 1212.155742320591
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"i-0997a73b08f6e5862": {
|
"i-0997a73b08f6e5862": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -437.8090171466923,
|
"x": -460.38911501947575,
|
||||||
"y": 3214.5652456498806
|
"y": 3195.210876044637
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"i-0c8100e3460fa8fd0": {
|
"i-0c8100e3460fa8fd0": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -998.7591067002047,
|
"x": -971.992276051883,
|
||||||
"y": 1582.324828760348
|
"y": 1529.2067712196117
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"i-041021cd89e15282c": {
|
"i-041021cd89e15282c": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -432.29322569584144,
|
"x": -454.87332356862487,
|
||||||
"y": 2737.4986728912545
|
"y": 2718.144303286011
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"i-073b97cbda2b200c3": {
|
"i-073b97cbda2b200c3": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2873.640669480026,
|
"x": 3331.10504456304,
|
||||||
"y": 873.0643097359127
|
"y": 713.8754494904406
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"i-0669f35ab2d0fc444": {
|
"i-0669f35ab2d0fc444": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2871.2248620457804,
|
"x": 3328.689237128793,
|
||||||
"y": 1046.458986548435
|
"y": 887.2701263029628
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"i-01b3f3cd57976bdf3": {
|
"i-01b3f3cd57976bdf3": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2999.2433070110083,
|
"x": 3456.707682094021,
|
||||||
"y": 1205.139704138092
|
"y": 1045.9508438926198
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"i-0272763b46610ac1b": {
|
"i-0272763b46610ac1b": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -1672.5138621287765,
|
"x": -1645.7470314804548,
|
||||||
"y": 948.3290971162517
|
"y": 895.2110395755153
|
||||||
},
|
},
|
||||||
"lx": 238.46757499625102,
|
"lx": 238.46757499625102,
|
||||||
"ly": -50.2036999992107
|
"ly": -50.2036999992107
|
||||||
},
|
},
|
||||||
"i-0c82adf476c7c5e32": {
|
"i-0c82adf476c7c5e32": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -1662.0472894085924,
|
"x": -1635.2804587602707,
|
||||||
"y": 1105.0564398606823
|
"y": 1051.938382319946
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"i-0636fd0b033c9b32a": {
|
"i-0636fd0b033c9b32a": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -983.5062746257561,
|
"x": -1327.719116265829,
|
||||||
"y": 1393.6706243649835
|
"y": 1572.414862004494
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"i-09241599c2590b66a": {
|
"i-09241599c2590b66a": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -1023.8550722894502,
|
"x": -1409.5590614880932,
|
||||||
"y": 981.8165353124757
|
"y": 1392.4230681322329
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"i-0d7f643cb9d960645": {
|
"i-0d7f643cb9d960645": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2801.1434922974354,
|
"x": 3927.4825609253985,
|
||||||
"y": 1561.6366344230603
|
"y": 1714.8122689424063
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"i-082b27477bbe6d8b5": {
|
"i-082b27477bbe6d8b5": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2077.620093045424,
|
"x": 2471.8641180477457,
|
||||||
"y": 1698.1735838762236
|
"y": 1766.9578588998183
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"f8-db-01": {
|
"f8-db-01": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -986.5370646187603,
|
"x": -876.6598453851616,
|
||||||
"y": 1959.3469012227074
|
"y": 1832.1264780604447
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"logon-db-02": {
|
"logon-db-02": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": -439.8721002904598,
|
"x": -462.4521981632432,
|
||||||
"y": 3368.179753855594
|
"y": 3348.8253842503505
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"vault-db-production-v2": {
|
"vault-db-production-v2": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2832.5476223232313,
|
"x": 3290.0119974062445,
|
||||||
"y": 453.61028098715565
|
"y": 294.42142074168316
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 134.807239838437,
|
||||||
"ly": 0
|
"ly": -6.036145067392795
|
||||||
},
|
},
|
||||||
"vault-db-staging-v2": {
|
"vault-db-staging-v2": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 2830.6830085128063,
|
"x": 3288.1473835958195,
|
||||||
"y": 626.1373417962984
|
"y": 466.94848155082593
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
},
|
},
|
||||||
"NodeAppALB": {
|
"NodeAppALB": {
|
||||||
"position": {
|
"position": {
|
||||||
"x": 3026.2235685159053,
|
"x": 3572.372040610579,
|
||||||
"y": 1874.6165940318608
|
"y": 1757.739878164803
|
||||||
},
|
},
|
||||||
"lx": 0,
|
"lx": 0,
|
||||||
"ly": 0
|
"ly": 0
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue