public AdaptationModel plan(ContainerRoot actualModel, ContainerRoot targetModel, String nodeName) { AdaptationModel adaptationModel = compareModels(actualModel, targetModel, nodeName); return schedule(adaptationModel, nodeName); }
@Override public AdaptationModel plan(ContainerRoot current, ContainerRoot target) { return kompareBean.plan(current, target, modelService.getNodeName()); }
if (currentNode != null && targetNode != null) { traces = modelCompare.diff(currentNode, targetNode); fillAdditional(traces, targetNode, currentModel, nodeName); } else { if (targetNode != null) { traces = new TraceSequence(adaptationModelFactory); traces.populate(deepToTrace(targetNode, nodeName)); fillAdditional(traces, targetNode, currentModel, nodeName); if (!isVirtual(modelElement)) { if (trace.getRefName().equals("components") || trace.getRefName().equals("groups") TupleObjPrim addTuple = new TupleObjPrim(elemToAdd, AdaptationType.AddInstance); if (!elementAlreadyProcessed.containsKey(addTuple.getKey())) { adaptationModel.getAdaptations().add(adapt(AdaptationType.AddInstance, elemToAdd)); elementAlreadyProcessed.put(addTuple.getKey(), addTuple); adaptationModel.getAdaptations().add(adapt(AdaptationType.RemoveInstance, elemToAdd)); adaptationModel.getAdaptations().add(adapt(AdaptationType.StopInstance, elemToAdd)); MBinding binding = (MBinding) targetModel.findByPath(((ModelAddTrace) trace).getPreviousPath()); Channel channel = binding.getHub(); if (!isVirtual(channel.getTypeDefinition())) { adaptationModel.getAdaptations().add(adapt(AdaptationType.AddBinding, binding)); if (channel != null && modelRegistry.lookup(channel) == null) { TupleObjPrim newTuple = new TupleObjPrim(channel, AdaptationType.AddInstance); if (!elementAlreadyProcessed.containsKey(newTuple.getKey())) { adaptationModel.getAdaptations().add(adapt(AdaptationType.AddInstance, channel));
private void removePortBindings(AdaptationModel adaptationModel, HashMap<String, TupleObjPrim> elementAlreadyProcessed, Port port) { for (MBinding binding : port.getBindings()) { TupleObjPrim bindingTuple = new TupleObjPrim(binding, AdaptationType.RemoveBinding); if (!elementAlreadyProcessed.containsKey(bindingTuple.getKey())) { adaptationModel.getAdaptations().add(adapt(AdaptationType.RemoveBinding, binding)); elementAlreadyProcessed.put(bindingTuple.getKey(), bindingTuple); } } }
private boolean isVirtual(KMFContainer element) { if (element instanceof Instance) { return isVirtual(((Instance) element).getTypeDefinition()); } else if (element instanceof TypeDefinition) { Value virtual = ((TypeDefinition) element).findMetaDataByID("virtual"); return virtual != null; } else if (element instanceof MBinding) { MBinding binding = (MBinding) element; if (binding.getHub() != null) { return isVirtual(binding.getHub().getTypeDefinition()); } if (binding.getPort() != null) { return isVirtual(binding.getPort().eContainer()); } } return false; }
private boolean isRelatedToPlatform(String nodeName, KMFContainer elem) { if (elem instanceof MBinding) { MBinding binding = (MBinding) elem; if (isRelatedToPlatform(nodeName, binding.getPort())) { return true; return isRelatedToPlatform(nodeName, binding.getHub()); if (isRelatedToPlatform(nodeName, binding.getPort())) { return true; if (isRelatedToPlatform(nodeName, elem.eContainer())) { return true;
@Start public void startNode() { Log.info("Starting node type of {}", modelService.getNodeName()); preTime = System.currentTimeMillis(); modelService.registerModelListener(this); kompareBean = new KevoreeKompareBean(modelRegistry); wrapperFactory = createWrapperFactory(modelService.getNodeName()); modelRegistry.registerFromPath(context.getPath(), this); if (System.getProperty("node.admin") != null) { try { adminSrv = new UDPWrapper(Integer.parseInt(System.getProperty("node.admin").toString())); } catch (SocketException e) { Log.error("", e); } adminReader = new Thread(adminSrv); adminReader.start(); } }
traces.append(modelCompare.diff(previousGroup, g)); } else { traces.populate(deepToTrace(g, nodeName)); traces.append(modelCompare.diff(previousChannel, b.getHub())); } else { traces.populate(deepToTrace(b.getHub(), nodeName)); traces.append(modelCompare.diff(previousChannel, b.getHub())); } else { traces.populate(deepToTrace(b.getHub(), nodeName));
private void addPortBindings(AdaptationModel adaptationModel, HashMap<String, TupleObjPrim> elementAlreadyProcessed, Port port) { for (MBinding binding : port.getBindings()) { TupleObjPrim bindingTuple = new TupleObjPrim(binding, AdaptationType.AddBinding); if (!elementAlreadyProcessed.containsKey(bindingTuple.getKey())) { adaptationModel.getAdaptations().add(adapt(AdaptationType.AddBinding, binding)); elementAlreadyProcessed.put(bindingTuple.getKey(), bindingTuple); } } }