public AdaptationModel plan(ContainerRoot actualModel, ContainerRoot targetModel, String nodeName) { AdaptationModel adaptationModel = compareModels(actualModel, targetModel, nodeName); return schedule(adaptationModel, nodeName); }
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); } } }
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") if (trace instanceof ModelAddTrace) { KMFContainer elemToAdd = targetModel.findByPath(((ModelAddTrace) trace).getPreviousPath()); 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);
public void visit(KMFContainer elem, String refNameInParent, KMFContainer parent) { if (elem instanceof DeployUnit) { foundDeployUnitsToRemove.add(elem.path()); } //optimization purpose if ((elem instanceof ContainerNode && elem != currentNode)) { noChildrenVisit(); noReferencesVisit(); } }
public void visit(KMFContainer child, String refNameInParent, KMFContainer parent) { if (child instanceof ContainerNode && !((ContainerNode) child).getName().equals(currentNodeName)) { noChildrenVisit(); noReferencesVisit(); //protection but should not be std case } else { result.addAll(child.toTraces(true, true)); } } }, true, true, false);
public AdaptationModel schedule(AdaptationModel adaptionModel, String nodeName) { if (!adaptionModel.getAdaptations().isEmpty()) { HashMap<String, List<AdaptationPrimitive>> classedAdaptations = classify(adaptionModel.getAdaptations()); adaptionModel.setOrderedPrimitiveSet(createStep(classedAdaptations.get(AdaptationType.AddDeployUnit.name()),AdaptationType.AddDeployUnit)); Step firstStep = adaptionModel.getOrderedPrimitiveSet(); firstStep.next(createStep(classedAdaptations.get(AdaptationType.LinkDeployUnit.name()),AdaptationType.LinkDeployUnit)) .next(createStep(classedAdaptations.get(AdaptationType.StopInstance.name()),AdaptationType.StopInstance)) .next(createStep(classedAdaptations.get(AdaptationType.RemoveBinding.name()),AdaptationType.RemoveBinding)) .next(createStep(classedAdaptations.get(AdaptationType.RemoveInstance.name()),AdaptationType.RemoveInstance)) .next(createStep(classedAdaptations.get(AdaptationType.RemoveDeployUnit.name()),AdaptationType.RemoveDeployUnit)) .next(createStep(classedAdaptations.get(AdaptationType.AddInstance.name()),AdaptationType.AddInstance)) .next(createStep(classedAdaptations.get(AdaptationType.AddBinding.name()),AdaptationType.AddBinding)) .next(createStep(classedAdaptations.get(AdaptationType.UpdateDictionaryInstance.name()),AdaptationType.UpdateDictionaryInstance)) .next(createStep(classedAdaptations.get(AdaptationType.UpdateCallMethod.name()),AdaptationType.UpdateCallMethod)) .next(createStep(classedAdaptations.get(AdaptationType.StartInstance.name()),AdaptationType.StartInstance)); } else { adaptionModel.setOrderedPrimitiveSet(null); } return adaptionModel; }
public void visit(KMFContainer elem, String refNameInParent, KMFContainer parent) { if (elem instanceof DeployUnit) { DeployUnit elemDU = (DeployUnit) elem; if (elemDU.findFiltersByID("platform") == null || elemDU.findFiltersByID("platform").getValue().equals("java")) { if (modelRegistry.lookup(elem) == null) { adaptationModel.getAdaptations().add(adapt(AdaptationType.AddDeployUnit, elem)); adaptationModel.getAdaptations().add(adapt(AdaptationType.LinkDeployUnit, elem)); } foundDeployUnitsToRemove.remove(elem.path()); } } //optimization purpose if ((elem instanceof ContainerNode && elem != currentNode)) { noChildrenVisit(); noReferencesVisit(); } } }, true, true, true);
@Override public AdaptationModel plan(ContainerRoot current, ContainerRoot target) { return kompareBean.plan(current, target, modelService.getNodeName()); }
public String getKey() { return getObj().path() + "/" + p.name(); }
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); } } }