if (groupList.get(0).equals("*")) { groups.addAll(model.getGroups()); } else { Group group = model.findGroupsByID(groupList.get(0)); if (group != null) { groups.add(group); if (instancePath.get(0).equals("*")) { for (ContainerNode node : model.getNodes()) { for (Group group : groups) { apply(node, group); ContainerNode node = model.findNodesByID(instancePath.get(0)); if (node != null) { for (Group group : groups) {
/** * Allow to find the corresponding element into the model * * @return the node corresponding to this */ public ContainerNode getModelElement() { return getModelService().getLastModel().findByPath("nodes[" + getName() + "]", ContainerNode.class); }
private ContainerRoot readDU(TypeFQN fqn, String platform, String version) { Path path = getDUPath(fqn, platform, version); KMFContainer duModel = readFile(path.toFile()); if (duModel != null) { DeployUnit du = (DeployUnit) duModel; ContainerRoot model = factory.createContainerRoot().withGenerated_KMF_ID("0"); factory.root(model); org.kevoree.Package pkg = (org.kevoree.Package) factory.createPackage().withName(fqn.namespace); model.addPackages(pkg); pkg.addDeployUnits(du); return model; } return null; }
@NotNull private static List<ContainerNode> getContainerNodes(ContainerRoot model, List<String> targetNodes) { List<ContainerNode> nodes = new ArrayList<>(); if (targetNodes.get(0).equals("*")) { // select all nodes in the model nodes.addAll(model.getNodes()); } else { // specific node ContainerNode node = model.findNodesByID(targetNodes.get(0)); if (node != null) { nodes.add(node); } else { throw new KevScriptError("Unable to find node instance \"" + targetNodes.get(0) + "\". Move failed"); } } return nodes; }
private void processModel(final ContainerRoot model) throws MojoExecutionException { this.getLog().info("Model: " + this.model); List<KMFContainer> tdefs = model.select("**/typeDefinitions[]"); if (tdefs.isEmpty()) { throw new MojoExecutionException("You must define at least one TypeDefinition. None found."); ContainerRoot clonedModel = cloner.clone(model); for (KMFContainer elem : tdefs) { processTypeDefinition((TypeDefinition) clonedModel.findByPath(elem.path())); this.getLog().debug(" -> " + deployUnitPath); DeployUnit du = (DeployUnit) model.findByPath(deployUnitPath); if (du != null) {
final String newNodeName = InterpretExpr.interpret(name.getChildren().get(0), ctxVars); instance.setName(newNodeName); if (model.findNodesByID(newNodeName) != null) { throw new KevScriptError("Node already exist for name : " + newNodeName); model.addNodes(instance); i = instance; } else { final String newNodeName = InterpretExpr.interpret(name.getChildren().get(1), ctxVars); instance.setName(newNodeName); final ContainerNode parentNode = model.findNodesByID(parentNodeName); if (parentNode == null) { throw new KevScriptError("Node not exist for name : " + parentNodeName); model.addNodes(instance); parentNode.addHosts(instance); i = instance; final ContainerNode parentNode = model.findNodesByID(nodeName); if (parentNode == null) { throw new KevScriptError( model.addHubs(instance); i = instance; } else { model.addGroups(instance); i = instance;
} else { ContainerNode node = model.findNodesByID(instancePath.get(0)); if (node != null) { for (ContainerNode targetNode : targets) {
KevoreeFactory factory = new DefaultKevoreeFactory(); ModelCompare compare = factory.createModelCompare(); ContainerRoot tmpModel = factory.createContainerRoot().withGenerated_KMF_ID("0"); factory.root(tmpModel); compare.merge(tmpModel, duModel).applyOn(tmpModel); String path = pkg.path() + "/deployUnits[name=" + regDu.getName() + ",version=" + regDu.getVersion() + "]"; for (KMFContainer elem : tmpModel.select(path)) { tdef.addDeployUnits((DeployUnit) elem); Log.debug("DeployUnit " + regDu.getName() + "/" + regDu.getVersion() + "/" + regDu.getPlatform() + " added to " + fqn); return (TypeDefinition) model.findByPath(tdef.path());
public AdaptationModel compareModels(ContainerRoot currentModel, ContainerRoot targetModel, String nodeName) { final AdaptationModel adaptationModel = new AdaptationModel(); HashMap<String, TupleObjPrim> elementAlreadyProcessed = new HashMap<String, TupleObjPrim>(); final ContainerNode currentNode = currentModel.findNodesByID(nodeName); ContainerNode targetNode = targetModel.findNodesByID(nodeName); TraceSequence traces = null; if (currentNode != null && targetNode != null) { KMFContainer modelElement = targetModel.findByPath(trace.getSrcPath()); if (trace.getSrcPath().equals(targetNode.path())) { if (trace instanceof ModelAddTrace) { KMFContainer elemToAdd = targetModel.findByPath(((ModelAddTrace) trace).getPreviousPath()); TupleObjPrim addTuple = new TupleObjPrim(elemToAdd, AdaptationType.AddInstance); if (!elementAlreadyProcessed.containsKey(addTuple.getKey())) { KMFContainer elemToAdd = currentModel.findByPath(((ModelRemoveTrace) trace).getObjPath()); adaptationModel.getAdaptations().add(adapt(AdaptationType.RemoveInstance, elemToAdd)); adaptationModel.getAdaptations().add(adapt(AdaptationType.StopInstance, elemToAdd)); if (!(targetModel.findByPath(trace.getSrcPath()) instanceof Channel)) { if (trace instanceof ModelAddTrace) { MBinding binding = (MBinding) targetModel.findByPath(((ModelAddTrace) trace).getPreviousPath()); Channel channel = binding.getHub(); if (!isVirtual(channel.getTypeDefinition())) { org.kevoree.MBinding binding = (org.kevoree.MBinding) currentModel.findByPath(((ModelRemoveTrace) trace).getObjPath()); if (binding != null) { Channel chan = (Channel) targetModel.findByPath(binding.getHub().path());
if (currentModel.findNodesByID(getNodeName()) != null) { ContainerRoot stopModel = modelCloner.clone(currentModel); ContainerNode nodeToStop = stopModel.findNodesByID(getNodeName()); nodeToStop.setStarted(false); for (ContainerNode childNode : nodeToStop.getHosts()) { childNode.setStarted(false); for (Group group : stopModel.getGroups()) { group.setStarted(false); for (Channel hub : stopModel.getHubs()) { hub.setStarted(false);
Log.info("Found {}.{}/{} in {}", fqn.namespace, fqn.name, fqn.version.tdef, this.client.baseUrl()); TypeDefinition tdef = (TypeDefinition) loader.loadModelFromString(regTdef.getModel()).get(0); Package pkg = model.findPackagesByID(fqn.namespace); if (pkg == null) { pkg = (Package) factory.createPackage().withName(fqn.namespace); model.addPackages(pkg); pkg.addDeployUnits(duModel); String path = "/packages[" + fqn.namespace + "]" + "/deployUnits[name=" + regDu.getName() + ",version=" + regDu.getVersion() + "]"; for (KMFContainer elem : model.select(path)) { DeployUnit du = (DeployUnit) elem; tdef.addDeployUnits(du);
monkeyPatchKMF(proposedModel); if (proposedModel.findNodesByID(getNodeName()) == null) { throw new KevoreeDeployException("Unable to find node \""+getNodeName()+"\" in given model"); if (result.getError() == null) { if (!proposedModel.isReadOnly()) { proposedModel.setRecursiveReadOnly();
public static Package fqnCreate(String groupName, ContainerRoot model, KevoreeFactory factory) { String[] packages = groupName.split("\\."); org.kevoree.Package pack = null; for (int i = 0; i < packages.length; i++) { if (!packages[i].equals("")) { if (pack == null) { pack = model.findPackagesByID(packages[i]); if (pack == null) { pack = (org.kevoree.Package) factory.createPackage().withName(packages[i]); model.addPackages(pack); } } else { org.kevoree.Package packNew = pack.findPackagesByID(packages[i]); if (packNew == null) { packNew = (org.kevoree.Package) factory.createPackage().withName(packages[i]); pack.addPackages(packNew); } pack = packNew; } } } if (pack == null) { Log.error("Namespace not created for name {}", groupName); } return pack; } }
TypeDefinition tdef = (TypeDefinition) model.findByPath(fqn.toKevoreePath()); duModels.forEach(duModel -> { if (duModel != null) { DeployUnit du = duModel.getPackages().get(0).getDeployUnits().get(0); compare.merge(model, duModel).applyOn(model); tdef.addDeployUnits((DeployUnit) model.findByPath(du.path()));
List<KMFContainer> parentNodes = model.select("nodes[" + nodeName + "]"); if (parentNodes.isEmpty()) { throw new Exception("No nodes found with name : " + nodeName); List<KMFContainer> instancefounds = model.select("groups[" + instanceName + "]"); if (instancefounds.isEmpty()) { instancefounds = model.select("hubs[" + instanceName + "]"); instancefounds = model.select("nodes[" + instanceName + "]");
private org.kevoree.Package createPackage(KevoreeFactory factory, ContainerRoot model, String namespace) { org.kevoree.Package deepestPkg = null; org.kevoree.Package pkg = null; String[] splitted = namespace.split("\\."); for (int i=0; i < splitted.length; i++) { org.kevoree.Package newPkg = factory.createPackage(); newPkg.setName(splitted[i]); if (pkg != null) { pkg.addPackages(newPkg); } else { model.addPackages(newPkg); } pkg = newPkg; if (i + 1 == splitted.length) { deepestPkg = pkg; } } return deepestPkg; }
/** * Allow to find the corresponding element into the model * Be careful, this method use the KevoreeModelHandlerService#getLastModel but this method is locked in some cases * * @return the group corresponding to this */ public Group getModelElement() { return getModelService().getLastModel().findGroupsByID(getName()); }
final String newNodeName = InterpretExpr.interpret(name.getChildren().get(0), ctxVars); instance.setName(newNodeName); if (model.findNodesByID(newNodeName) != null) { throw new KevScriptException("Node already exist for name : " + newNodeName); model.addNodes(instance); i = instance; } else { final String newNodeName = InterpretExpr.interpret(name.getChildren().get(1), ctxVars); instance.setName(newNodeName); final ContainerNode parentNode = model.findNodesByID(parentNodeName); if (parentNode == null) { throw new KevScriptException("Node not exist for name : " + parentNodeName); model.addNodes(instance); parentNode.addHosts(instance); i = instance; final ContainerNode parentNode = model.findNodesByID(nodeName); if (parentNode == null) { throw new KevScriptException( model.addHubs(instance); i = instance; } else { model.addGroups(instance); i = instance;
} else { ContainerNode node = model.findNodesByID(instancePath.get(0)); if (node != null) { for (ContainerNode targetNode : targets) {
@NotNull private static List<ContainerNode> getContainerNodes(ContainerRoot model, List<String> targetNodes) throws KevScriptException{ List<ContainerNode> nodes = new ArrayList<>(); if (targetNodes.get(0).equals("*")) { // select all nodes in the model nodes.addAll(model.getNodes()); } else { // specific node ContainerNode node = model.findNodesByID(targetNodes.get(0)); if (node != null) { nodes.add(node); } else { throw new KevScriptException("Unable to find node instance \"" + targetNodes.get(0) + "\". Move failed"); } } return nodes; }