aboutsummaryrefslogtreecommitdiffstats
path: root/dcae-controller-core/dcae-controller-platform-server/src/main/java/org/openecomp/dcae/controller/platform/servers/controller/inventory/DcaeDcaeInventoryProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'dcae-controller-core/dcae-controller-platform-server/src/main/java/org/openecomp/dcae/controller/platform/servers/controller/inventory/DcaeDcaeInventoryProvider.java')
-rw-r--r--dcae-controller-core/dcae-controller-platform-server/src/main/java/org/openecomp/dcae/controller/platform/servers/controller/inventory/DcaeDcaeInventoryProvider.java139
1 files changed, 135 insertions, 4 deletions
diff --git a/dcae-controller-core/dcae-controller-platform-server/src/main/java/org/openecomp/dcae/controller/platform/servers/controller/inventory/DcaeDcaeInventoryProvider.java b/dcae-controller-core/dcae-controller-platform-server/src/main/java/org/openecomp/dcae/controller/platform/servers/controller/inventory/DcaeDcaeInventoryProvider.java
index ba6f379..5165653 100644
--- a/dcae-controller-core/dcae-controller-platform-server/src/main/java/org/openecomp/dcae/controller/platform/servers/controller/inventory/DcaeDcaeInventoryProvider.java
+++ b/dcae-controller-core/dcae-controller-platform-server/src/main/java/org/openecomp/dcae/controller/platform/servers/controller/inventory/DcaeDcaeInventoryProvider.java
@@ -24,6 +24,8 @@ package org.openecomp.dcae.controller.platform.servers.controller.inventory;
import org.openecomp.ncomp.sirius.manager.ISiriusServer;
import org.openecomp.ncomp.sirius.manager.JavaHttpClient;
import org.openecomp.ncomp.sirius.manager.ManagementServer;
+import org.openecomp.ncomp.sirius.manager.console.Utils;
+import org.yaml.snakeyaml.Yaml;
import java.util.ArrayList;
import java.util.HashMap;
@@ -33,11 +35,14 @@ import java.util.List;
import org.apache.log4j.Logger;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
import org.json.JSONArray;
import org.json.JSONObject;
import org.mvel2.optimizers.impl.refl.nodes.ArrayLength;
+import org.openecomp.ncomp.core.DeploymentStatus;
import org.openecomp.ncomp.sirius.manager.BasicAdaptorProvider;
-
+import org.openecomp.dcae.controller.core.service.DcaeService;
+import org.openecomp.dcae.controller.core.service.DcaeServiceInstance;
import org.openecomp.dcae.controller.inventory.ApiResponseMessage;
import org.openecomp.dcae.controller.inventory.DCAEService;
import org.openecomp.dcae.controller.inventory.DCAEServiceGroupByResults;
@@ -46,10 +51,18 @@ import org.openecomp.dcae.controller.inventory.DCAEServiceType;
import org.openecomp.dcae.controller.inventory.DCAEServiceTypeRequest;
import org.openecomp.dcae.controller.inventory.DcaeInventory;
import org.openecomp.dcae.controller.inventory.DcaeServiceTypeResults;
+import org.openecomp.dcae.controller.inventory.InventoryConfigurationRule;
import org.openecomp.dcae.controller.inventory.InventoryPackage;
import org.openecomp.dcae.controller.inventory.Link;
+import org.openecomp.dcae.controller.platform.controller.DcaePlatformController;
+import org.openecomp.dcae.controller.service.cdap.CdapService;
+import org.openecomp.dcae.controller.service.cdap.CdapServiceInstance;
+import org.openecomp.dcae.controller.service.docker.DockerService;
+import org.openecomp.dcae.controller.service.vm.VirtualMachineService;
import org.openecomp.dcae.controller.inventory.DcaeServiceResults;
+import static org.openecomp.dcae.controller.platform.servers.controller.DcaeDcaePlatformControllerProvider.*;
+
public class DcaeDcaeInventoryProvider extends BasicAdaptorProvider {
private static final Logger logger = Logger.getLogger(DcaeDcaeInventoryProvider.class);
DcaeInventory o;
@@ -71,7 +84,7 @@ public class DcaeDcaeInventoryProvider extends BasicAdaptorProvider {
// TODO handle parameters, but for now only use is complete dump
addQuery(query,"offset", offset);
JSONObject json = client.httpJsonTransaction("/dcae-service-types" + queryUrl(query), "GET", headers, null);
- System.err.println(json.toString(2));
+// System.out.println(json.toString(2));
JSONArray items = json.getJSONArray("items");
for (int i = 0; i < items.length(); i++) {
JSONObject item = items.getJSONObject(i);
@@ -112,7 +125,7 @@ public class DcaeDcaeInventoryProvider extends BasicAdaptorProvider {
// TODO handle parameters, but for now only use is complete dump
addQuery(query,"offset", offset);
JSONObject json = client.httpJsonTransaction("/dcae-services" + queryUrl(query), "GET", headers, null);
- System.err.println(json.toString(2));
+// System.out.println(json.toString(2));
JSONArray items = json.getJSONArray("items");
for (int i = 0; i < items.length(); i++) {
JSONObject item = items.getJSONObject(i);
@@ -220,7 +233,7 @@ public class DcaeDcaeInventoryProvider extends BasicAdaptorProvider {
o.getServiceTypes().addAll(s.getItems());
offset = offset(s.getLinks());
}
- System.out.println(ManagementServer.ecore2json(o, 1000, null, true).toString(2));
+// System.out.println(ManagementServer.ecore2json(o, 1000, null, true).toString(2));
}
private int offset(EList<Link> links) {
@@ -231,4 +244,122 @@ public class DcaeDcaeInventoryProvider extends BasicAdaptorProvider {
}
return -1;
}
+
+
+ public void updateConfiguration() {
+ System.out.println("BBBBBBB: updateConfiguration");
+ DcaePlatformController root = (DcaePlatformController) controller.getServer().getObject();
+ for (DcaeService s : root.getServices()) {
+ for (DcaeServiceInstance i : instances(s)) {
+ if (! ( i instanceof CdapServiceInstance)) continue;
+ CdapServiceInstance i1 = (CdapServiceInstance) i;
+ for (InventoryConfigurationRule r : o.getRules()) {
+ try {
+ if (r.getServiceNameMatch() != null && ! r.getServiceNameMatch().equals(s.getName())) continue;
+ if (r.getInstanceNameMatch() != null && ! r.getInstanceNameMatch().equals(i.getName())) continue;
+ JSONObject json = findBluePrint(r);
+ System.out.println("BBBBBBB: updateConfiguration " + s.getName() + " " + i.getName() + " " + r + " " + (json ==null ? "NULL" : json.toString(2)));
+ if (json == null) {
+ System.out.println("BBBBBBB: NULL");
+ continue;
+ }
+ EObject oo = controller.getServer().json2ecore(i1.getConfiguration().eClass(), json);
+ JSONObject before = cleanJson(i1.getConfiguration());
+ ManagementServer.merge(i1.getConfiguration(), oo, json, true, null);
+ JSONObject after = cleanJson(i1.getConfiguration());
+ System.out.println("BBBBBBB before: " + before.toString(2));
+ System.out.println("BBBBBBB after: " + after.toString(2));
+ System.out.println("BBBBBBB equal: " + !before.toString(2).equals(after.toString(2)));
+ if (!before.toString(2).equals(after.toString(2))) {
+ System.out.println("BBBBBBB before: " + before.toString(2));
+ System.out.println("BBBBBBB after: " + after.toString(2));
+ if (i.getStatus() == DeploymentStatus.DEPLOYED)
+ s.pushManagerConfiguration(i.getName());
+ }
+ }
+ catch (Exception e) {
+ e.printStackTrace(System.out);
+ System.out.println("BBBBBBB: error "+ s.getName() + " " + i.getName() + " " + e);
+ }
+ }
+ }
+ }
+ }
+
+ private JSONObject findBluePrint(InventoryConfigurationRule r) {
+ DCAEServiceType t = null;
+ int version = -1;
+ for (DCAEServiceType t1 : o.getServiceTypes()) {
+ System.out.println("BBBBBBB: type match: " + t1.getTypeName() + " " + r.getTypeNameMatch());
+ if (t1.getTypeName() == null) continue;
+ if ( ! t1.getTypeName().equals(r.getTypeNameMatch())) continue;
+ System.out.println("BBBBBBB: type version: " + t1.getTypeVersion() + " " + version);
+ if (t1.getTypeVersion() != null && version > t1.getTypeVersion()) continue;
+ System.out.println("BBBBBBB: type match found: " + t1.getTypeName());
+ t = t1;
+ }
+ if (t == null) {
+ System.out.println("BBBBBBB: no type for: " + r.getServiceNameMatch());
+ return null;
+ }
+ JSONObject bp;
+ try {
+ System.out.println("BBBBBBB: bp 1=" );
+ Yaml y = new Yaml();
+ System.out.println("BBBBBBB: bp 2=");
+ bp = (JSONObject) Utils.object2json(y.load(t.getBlueprintTemplate()));
+ System.out.println("BBBBBBB: bp 3=");
+ System.out.println("BBBBBBB: bp=" + bp.toString(2));
+ JSONObject topology_template = getJSONObject(bp,"topology_template");
+ JSONObject node_templates = getJSONObject(topology_template,"node_templates");
+ JSONObject node = null;
+ for (Iterator<String> i = node_templates.keys(); i.hasNext();) {
+ String type = (String) i.next();
+ System.out.println("BBBBBBB: node: " + type);
+ if (type.matches(r.getBpNodeNameMatch())) node = getJSONObject(node_templates,type);
+ }
+ if (node == null) {
+ System.out.println("BBBBBBB: no node for: " + r.getBpNodeNameMatch());
+ return null;
+ }
+ JSONObject p = getJSONObject(node,"properties");
+ JSONObject app_preferences = getJSONObject(p ,"app_preferences");
+ System.out.println("BBBBBBB: app_preferences=" + app_preferences.toString(2));
+ JSONObject json = new JSONObject();
+ for (Iterator<String> i = app_preferences.keys(); i.hasNext();) {
+ String path = (String) i.next();
+ String a[] = path.split("\\.");
+ try {
+ updateJson(json,a,0, app_preferences.get(path));
+ }
+ catch (Exception e) {};
+ }
+ System.out.println("BBBBBBB: fixed value: " + json.toString(2));
+ return json;
+ }
+ catch (Exception e) {
+ e.printStackTrace(System.out);
+ System.out.println("BBBBBBB: bp error=" + e);
+ return null;
+ }
+ }
+
+ private void updateJson(JSONObject json, String[] a, int i, Object v) {
+ if (i == a.length - 1) {
+ json.put(a[i], v);
+ }
+ else {
+ if (! json.has(a[i]))
+ json.put(a[i], new JSONObject());
+ updateJson(json.getJSONObject(a[i]), a, i+1, v);
+ }
+ }
+
+ private JSONObject getJSONObject(JSONObject json, String key) {
+ if (json.has(key)) return json.getJSONObject(key);
+ System.out.println("BBBBBBB: json does not have key =" + json.toString(2) + " " + key);
+ throw new RuntimeException("Unable to find: " + key);
+ }
+
+
}