import {ServiceCsar, ToscaMetaEntry} from "../models";
import {load} from 'js-yaml';
-import { ComponentType } from "./constants";
+import {ComponentType} from "./constants";
export class ServiceCsarReader {
this.readToscaMeta(toscaMetaFileContent);
const entryDefinitionFileContent = await zip.file(this.serviceCsar.entryDefinitionFileName).async("string");
this.readServiceMetadata(entryDefinitionFileContent);
- const interfaceDefinitionFileContent = await zip.file(this.serviceCsar.interfaceDefinitionFileName).async("string");
- this.readServiceSubstitutionNode(interfaceDefinitionFileContent);
+ if (zip.file(this.serviceCsar.interfaceDefinitionFileName) != null) {
+ const interfaceDefinitionFileContent = await zip.file(this.serviceCsar.interfaceDefinitionFileName).async("string");
+ this.readSubstitutionNodeFromInterfaceDefinitionFile(interfaceDefinitionFileContent);
+ } else {
+ this.readSubstitutionNodeFromMainTemplateFile(entryDefinitionFileContent);
+ }
resolve(this.serviceCsar);
} catch (error) {
reject(error);
private readEntryDefinitionFileName() {
this.serviceCsar.entryDefinitionFileName = this.serviceCsar.toscaMeta.getEntry(ToscaMetaEntry.ENTRY_DEFINITIONS);
}
-
private readInterfaceDefinitionFileName() {
let fileNameArray:Array<string> = this.serviceCsar.entryDefinitionFileName.split(".");
fileNameArray.splice(fileNameArray.length - 1, 0, "-interface.");
this.setMetadata(metadata);
}
- private readServiceSubstitutionNode(interfaceDefinitionFileContent) {
+ private readSubstitutionNodeFromInterfaceDefinitionFile(interfaceDefinitionFileContent) {
const nodeTypes = load(interfaceDefinitionFileContent).node_types;
let nodeType = Object.keys(nodeTypes).values().next().value;
this.serviceCsar.substitutionNodeType = nodeTypes[nodeType]["derived_from"];
}
+ private readSubstitutionNodeFromMainTemplateFile(entryDefinitionFileContent) {
+ this.serviceCsar.substitutionNodeType = load(entryDefinitionFileContent).topology_template.substitution_mappings.node_type;
+ }
+
private setMetadata = (metadata:object) : void => {
let extraServiceMetadata: Map<string, string> = new Map<string, string>();
this.serviceCsar.serviceMetadata.componentType = ComponentType.SERVICE;