Пример #1
0
  leafs.forEach(function (_ref) {
    var _ref2 = _slicedToArray(_ref, 2),
        leaf = _ref2[0],
        parent = _ref2[1];

    var curPred = nwg.predecessors(leaf) || [];
    var oldPred = g.predecessors(leaf) || [];
    walked[leaf] = true;
    nextLeafs = nextLeafs.concat(curPred.map(function (el) {
      return [el, leaf];
    }));
    if (!nwg.node(leaf)) {
      g.removeNode(leaf);
    } else if (!g.node(leaf)) {
      g.setNode(leaf, nwg.node(leaf));
      if (parent !== null) {
        g.setEdge(leaf, parent);
      }
      updateEdges(g, nwg, leaf);
    } else if (nwg.node(leaf) !== g.node(leaf)) {
      g.setNode(leaf, nwg.node(leaf));
      updateEdges(g, nwg, leaf);
    } else {
      updateEdges(g, nwg, leaf);
    }
    var diffPred = diff(oldPred, curPred);
    if (diffPred.length > 0) {
      ensureConnectivity(g, nwg, diffPred, {});
    }
  });
Пример #2
0
 const resolveHosts = () => {
   const keptHosts = filter(validHosts, host => {
     let keptBySr = false
     forEach(this.selectedSrs, sr => !(keptBySr = intersection(sr.$PBDs, host.$PBDs).length > 0))
     let keptByNetwork
     forEach(this.selectedNetworks, network => !(keptByNetwork = intersection(network.PIFs, host.PIFs).length > 0))
     return keptBySr && keptByNetwork
   })
   this.eligibleHosts = keptHosts
   this.excludedHosts = differenceBy(map(hosts), keptHosts, item => item && item.id)
 }
Пример #3
0
function updateEdges(g, nwg, leaf) {
  var oldEdges = g.inEdges(leaf) || [];
  var newEdges = nwg.inEdges(leaf) || [];
  var removedEdges = diff(oldEdges, newEdges, function (el) {
    return el.v + '__' + el.w;
  });
  removedEdges.forEach(function (edge) {
    g.removeEdge(edge.v, edge.w);
  });
  newEdges.forEach(function (edge) {
    g.setEdge(edge.v, edge.w);
  });
}