@AllArgsConstructor
public class InputParameter {
private String name;
- private EnumDataType type = EnumDataType.STRING;
+ private String type = "string";
private String description;
private Object defaultValue;
private boolean required;
*/
package org.openo.commontosca.catalog.model.parser.yaml.aria;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
import org.openo.commontosca.catalog.common.ToolUtil;
import org.openo.commontosca.catalog.db.exception.CatalogResourceException;
import org.openo.commontosca.catalog.db.resource.TemplateManager;
import org.openo.commontosca.catalog.entity.response.CsarFileUriResponse;
import org.openo.commontosca.catalog.model.common.TemplateDataHelper;
-import org.openo.commontosca.catalog.model.entity.EnumDataType;
import org.openo.commontosca.catalog.model.entity.InputParameter;
import org.openo.commontosca.catalog.model.entity.NodeTemplate;
import org.openo.commontosca.catalog.model.entity.OutputParameter;
import org.openo.commontosca.catalog.model.parser.yaml.aria.entity.AriaParserResult.Substitution.Mapping;
import org.openo.commontosca.catalog.model.parser.yaml.aria.service.AriaParserServiceConsumer;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
/**
* @author 10090474
*
* @param serviceTemplateId
* @param result
* @return
+ * @throws CatalogResourceException
*/
private List<NodeTemplate> parseNodeTemplates(String packageId, String serviceTemplateId,
- AriaParserResult result) {
+ AriaParserResult result) throws CatalogResourceException {
Node[] nodes = result.getNodes();
if (nodes == null || nodes.length == 0) {
return null;
List<NodeTemplate> retList = new ArrayList<>();
for (Node node : nodes) {
NodeTemplate ret = new NodeTemplate();
- ret.setId(node.getName());
- ret.setName(node.getName());
+ ret.setId(node.getTemplate_name());
+ ret.setName(node.getTemplate_name());
ret.setType(node.getType_name());
ret.setProperties(node.getPropertyAssignments());
List<RelationShip> relationShipList =
- parseNodeTemplateRelationShip(node.getRelationships(), node);
+ parseNodeTemplateRelationShip(node.getRelationships(), node, nodes);
ret.setRelationShips(relationShipList);
retList.add(ret);
/**
* @param relationships
* @param sourceNode
+ * @param nodes
* @return
+ * @throws CatalogResourceException
*/
- private List<RelationShip> parseNodeTemplateRelationShip(Relationship[] relationships, Node sourceNode) {
+ private List<RelationShip> parseNodeTemplateRelationShip(Relationship[] relationships, Node sourceNode, Node[] nodes) throws CatalogResourceException {
List<RelationShip> retList = new ArrayList<>();
if (relationships == null || relationships.length == 0) {
for (Relationship relationship : relationships) {
RelationShip ret = new RelationShip();
- ret.setSourceNodeId(sourceNode.getName());
- ret.setSourceNodeName(sourceNode.getName());
- ret.setTargetNodeId(relationship.getTemplate_name());
- ret.setTargetNodeName(relationship.getTemplate_name());
+ ret.setSourceNodeId(sourceNode.getTemplate_name());
+ ret.setSourceNodeName(sourceNode.getTemplate_name());
+ Node targetNode = getNodeById(nodes, relationship.getTarget_node_id());
+ ret.setTargetNodeId(targetNode.getTemplate_name());
+ ret.setTargetNodeName(targetNode.getTemplate_name());
ret.setType(relationship.getType_name());
retList.add(ret);
}
}
+ /**
+ * @param nodes
+ * @param nodeId
+ * @return
+ * @throws CatalogResourceException
+ */
+ private Node getNodeById(Node[] nodes, String nodeId) throws CatalogResourceException {
+ if (nodeId == null) {
+ throw new CatalogResourceException("Target node id is null.");
+ }
+ if (nodes == null || nodes.length == 0) {
+ throw new CatalogResourceException("Can't find target node. nodeId = " + nodeId);
+ }
+
+ for (Node node : nodes) {
+ if (nodeId.equals(node.getId())) {
+ return node;
+ }
+ }
+
+ throw new CatalogResourceException("Can't find target node. nodeId = " + nodeId);
+ }
+
+
/**
* @param result
* @param packageId
retList.add(
new InputParameter(
e.getKey(),
- getEnumDataType(e.getValue().getType_name()),
+ e.getValue().getType_name(),
e.getValue().getDescription(),
e.getValue().getValue(),
false));
}
return retList.toArray(new InputParameter[0]);
}
-
- /**
- * @param type
- * @return
- */
- private EnumDataType getEnumDataType(String type) {
- if (EnumDataType.INTEGER.toString().equalsIgnoreCase(type)) {
- return EnumDataType.INTEGER;
- }
-
- if (EnumDataType.FLOAT.toString().equalsIgnoreCase(type)) {
- return EnumDataType.FLOAT;
- }
-
- if (EnumDataType.BOOLEAN.toString().equalsIgnoreCase(type)) {
- return EnumDataType.BOOLEAN;
- }
-
- return EnumDataType.STRING;
- }
-
/**
* @param result
* limitations under the License.
*/
-package org.openo.commontosca.catalog.model.entity;
+package org.openo.commontosca.catalog.model.parser.yaml.aria.entity;
import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+@Data
+@NoArgsConstructor
@AllArgsConstructor
-public enum EnumDataType {
- STRING("String"), INTEGER("Integer"), FLOAT("Float"), BOOLEAN("Boolean");
+public class AriaParserExceptionResult {
+ private Issue[] issues;
- private String value;
-
- public String getValue() {
- return value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
- @Override
- public String toString() {
- return value;
+ @Data
+ public class Issue {
+ private int level;
+ private String message;
+// private String location;
+// private String line;
+// private String column;
+// private String snippet;
+ private String exception;
}
}
+
import lombok.Data;
import lombok.NoArgsConstructor;
-import com.google.gson.JsonObject;
-
@Data
@NoArgsConstructor
@AllArgsConstructor
private String description;
private Map<String, String> metadata;
private Node[] nodes;
- private JsonObject groups;
- private JsonObject policies;
+ private Group[] groups;
+ private Policy[] policies;
private Substitution substitution;
private Map<String, Input> inputs;
private Map<String, Output> outpus;
- @Data
- public class Substitution {
- private String node_type_name;
- private Mapping[] requirement;
- private Mapping[] capabilities;
-
- @Data
- public class Mapping {
- private String mapped_name;
- private String node_id;
- private String name;
-
- }
- }
-
- @Data
- public class Input {
- private String type_name;
- private Object value;
- private String description;
- }
- @Data
- public class Output {
- private String type_name;
- private Object value;
- private String description;
- }
-
@Data
public class Node {
private String id;
- private String name;
private String type_name;
+ private String template_name;
private Map<String, Property> properties;
- private JsonObject[] interfaces;
- private JsonObject[] artifacts;
- private JsonObject[] capabilities;
+ private Interface[] interfaces;
+ private Artifact[] artifacts;
+ private Capability[] capabilities;
private Relationship[] relationships;
@Data
- public class Property {
+ public class Artifact {
+ private String name;
+ private String type_name;
+ private String source_path;
+ private String target_path;
+ private String repository_url;
+ private Credential repository_credential;
+ private Map<String, Property> properties;
+
+ @Data
+ public class Credential {
+ private String protocol;
+ private String token_type;
+ private Map<String, String> keys;
+ private String user;
+ }
+ }
+
+ @Data
+ public class Capability {
+ private String name;
private String type_name;
- private Object value;
- private String description;
+ private Map<String, Property> properties;
}
@Data
private String type_name;
private String template_name;
private Map<String, Property> properties;
- private JsonObject[] source_interfaces;
- private JsonObject[] target_interfaces;
-
- @Data
- public class Property {
- private String type_name;
- private Object value;
- private String description;
- }
+ private Interface[] source_interfaces;
+ private Interface[] target_interfaces;
}
/**
return ret;
}
}
+
+ @Data
+ public class Group {
+ private String id;
+ private String type_name;
+ private String template_name;
+ private Map<String, Property> properties;
+ private Interface[] interfaces;
+ private GroupPolicy[] policies;
+ private String[] member_node_ids;
+
+ @Data
+ public class GroupPolicy {
+ private String id;
+ private String type_name;
+ private Map<String, Property> properties;
+ private Trigger[] triggers;
+
+ @Data
+ public class Trigger {
+ private String name;
+ private String implementation;
+ private Map<String, Property> properties;
+ }
+ }
+
+ }
+
+
+ @Data
+ public class Policy {
+ private String name;
+ private String type_name;
+ private Map<String, Property> properties;
+ private String[] target_node_ids;
+ private String[] target_group_ids;
+ }
+
+ @Data
+ public class Substitution {
+ private String node_type_name;
+ private Mapping[] requirement;
+ private Mapping[] capabilities;
+
+ @Data
+ public class Mapping {
+ private String mapped_name;
+ private String node_id;
+ private String name;
+
+ }
+ }
+
+ @Data
+ public class Input {
+ private String type_name;
+ private Object value;
+ private String description;
+ }
+
+ @Data
+ public class Output {
+ private String type_name;
+ private Object value;
+ private String description;
+ }
}
+
+
+@Data
+class Property {
+ private String type_name;
+ private Object value;
+ private String description;
+}
+
+@Data
+class Interface {
+ private String name;
+ private String type_name;
+ private Map<String, Property> inputs;
+ private Operation[] operation;
+
+ @Data
+ class Operation {
+ private String name;
+ private String implementation;
+ private String[] dependencies;
+ private String executor;
+ private int max_retries;
+ private int retry_interval;
+ private Map<String, Property> inputs;
+ }
+}
+
import org.glassfish.jersey.client.ClientConfig;
import org.openo.commontosca.catalog.common.Config;
import org.openo.commontosca.catalog.db.exception.CatalogResourceException;
+import org.openo.commontosca.catalog.model.parser.yaml.aria.entity.AriaParserExceptionResult;
import org.openo.commontosca.catalog.model.parser.yaml.aria.entity.AriaParserRequest;
import org.openo.commontosca.catalog.model.parser.yaml.aria.entity.AriaParserResult;
Config.getConfigration().getMsbServerAddr(),
new ClientConfig(),
IAriaParserRest.class);
- String jsonStr = parseProxy.parse(request);
- return new Gson().fromJson(jsonStr, AriaParserResult.class);
+ String strResult = parseProxy.parse(request);
+ validateResult(strResult);
+ return new Gson().fromJson(strResult, AriaParserResult.class);
} catch (Exception e) {
throw new CatalogResourceException("Call aria parser api failed.", e);
}
}
+ private static void validateResult(String strResult) throws CatalogResourceException {
+ AriaParserExceptionResult except = new Gson().fromJson(strResult, AriaParserExceptionResult.class);
+ if (except.getIssues() != null && except.getIssues().length > 0) {
+ throw new CatalogResourceException("Aria parser return failure message: " + except.getIssues()[0].getMessage());
+ }
+ }
}
import org.openo.commontosca.catalog.db.resource.TemplateManager;
import org.openo.commontosca.catalog.entity.response.CsarFileUriResponse;
import org.openo.commontosca.catalog.model.common.TemplateDataHelper;
-import org.openo.commontosca.catalog.model.entity.EnumDataType;
import org.openo.commontosca.catalog.model.entity.InputParameter;
import org.openo.commontosca.catalog.model.entity.NodeTemplate;
import org.openo.commontosca.catalog.model.entity.OutputParameter;
}
List<InputParameter> retList = new ArrayList<InputParameter>();
for (Input input : inputList) {
- retList.add(new InputParameter(input.getName(), getEnumDataType(input.getType()),
+ retList.add(new InputParameter(input.getName(), input.getType(),
input.getDescription(), input.getDefault(), input.isRequired()));
}
return retList.toArray(new InputParameter[0]);
List<InputParameter> retList = new ArrayList<>();
for (PlanInput input : inputList) {
- retList.add(new InputParameter(input.getName(), getEnumDataType(input.getType()),
+ retList.add(new InputParameter(input.getName(), input.getType(),
input.getDescription(), input.getDefault(), input.isRequired()));
}
return retList.toArray(new InputParameter[0]);
}
- private EnumDataType getEnumDataType(String type) {
- if (EnumDataType.INTEGER.toString().equalsIgnoreCase(type)) {
- return EnumDataType.INTEGER;
- }
-
- if (EnumDataType.FLOAT.toString().equalsIgnoreCase(type)) {
- return EnumDataType.FLOAT;
- }
-
- if (EnumDataType.BOOLEAN.toString().equalsIgnoreCase(type)) {
- return EnumDataType.BOOLEAN;
- }
-
- return EnumDataType.STRING;
- }
-
private List<NodeTemplate> parseNodeTemplates(String csarId, String templateId,
ParseYamlResult result) {
List<ParseYamlResult.TopologyTemplate.NodeTemplate> nodetemplateList =
package org.openo.commontosca.catalog.resources;
-import com.codahale.metrics.annotation.Timed;
-
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
-
-import org.eclipse.jetty.http.HttpStatus;
import org.openo.commontosca.catalog.common.CommonErrorResponse;
import org.openo.commontosca.catalog.common.ToolUtil;
import org.openo.commontosca.catalog.db.exception.CatalogResourceException;
import org.openo.commontosca.catalog.model.entity.ServiceTemplate;
import org.openo.commontosca.catalog.model.entity.ServiceTemplateOperation;
import org.openo.commontosca.catalog.model.entity.ServiceTemplateRawData;
+import org.openo.commontosca.catalog.model.parser.AbstractModelParser;
+import org.openo.commontosca.catalog.model.parser.yaml.aria.AriaModelParser;
import org.openo.commontosca.catalog.model.parser.yaml.zte.ToscaYamlModelParser;
import org.openo.commontosca.catalog.model.service.ModelService;
import org.openo.commontosca.catalog.model.wrapper.ServiceTemplateWrapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import org.eclipse.jetty.http.HttpStatus;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+
+import com.codahale.metrics.annotation.Timed;
+
/**
* model template service.
*
@Timed
public Response test() {
try {
- ToscaYamlModelParser parser = new ToscaYamlModelParser();
- parser.parse("pk11111", "C:\\Users\\10090474\\Desktop\\1\\bm\\bm.zip");
- String[] strs = {"111", "222", null, null, "555"};
- Response.status(Response.Status.OK).entity(strs).build();
+ AbstractModelParser parser1 = new ToscaYamlModelParser();
+// parser1.parse("pk11111", "C:\\Users\\10090474\\Desktop\\1\\bm\\bm.zip");
+
+ AbstractModelParser parser = new AriaModelParser();
+ parser.parse("pk11111", "/home/b/common-tosca-aria/blueprints/tosca/node-cellar.yaml");
ModelService.getInstance().delete("pk11111");
- throw new CatalogResourceException("test failed.");
+
+ String[] strs = {"111", "222", null, null, "555"};
+ return Response.status(Response.Status.OK).entity(strs).build();
} catch (CatalogResourceException e1) {
logger.error("test failed.", e1);
throw RestUtils.newInternalServerErrorException(e1);