blob: ebca834123eb64a3dffac1aa43d886b1bdf4845e [file] [log] [blame]
import {
CloudConfiguration,
LineOfBusiness,
ModelInfo,
Platform,
RelatedInstanceList,
RequestDetails,
RequestInfo
} from "./models/requestDetails.model";
import * as _ from "lodash";
function extractModelInfoFromNodeTemplate(node: any, type: string) {
let modelInfo: ModelInfo = <ModelInfo>{};
if (node["customizationUuid"] !== undefined) {
modelInfo.modelCustomizationId = node["customizationUuid"];
}
if (node["modelCustomizationName"] !== undefined) {
modelInfo.modelCustomizationName = node["modelCustomizationName"];
}
modelInfo.modelVersionId = node["uuid"];
modelInfo.modelName = node["name"];
modelInfo.modelInvariantId = node["invariantUuid"];
modelInfo.modelType = type;
modelInfo.modelVersion = node["version"];
return modelInfo;
}
function extractRequestInfo(userInputs: any, userId: string): RequestInfo {
let requestInfo: RequestInfo = <RequestInfo>{};
if (userInputs["instanceName"] !== undefined) requestInfo.instanceName = userInputs["instanceName"];
requestInfo.productFamilyId = userInputs["productFamily"];
requestInfo.source = "VID";
requestInfo.suppressRollback = userInputs["rollback"] === "false";
requestInfo.requestorId = userId;
return requestInfo;
}
function extractPlatform(userInputs: any): Platform {
let platform: Platform = <Platform>{};
platform.platformName = userInputs["platformName"];
return platform;
}
function extractLineOfBusiness(userInputs: any) {
let lob: LineOfBusiness = <LineOfBusiness>{};
lob.lineOfBusinessName = userInputs["lineOfBusiness"];
return lob;
}
function extractCloudConfiguration(userInputs: any) {
let cloudConfig: CloudConfiguration = <CloudConfiguration>{};
cloudConfig.lcpCloudRegionId = userInputs["lcpRegion"];
cloudConfig.tenantId = userInputs["tenantId"];
return cloudConfig;
}
function extractModelInfoFromVfcNode(): ModelInfo {
let modelinfo: ModelInfo = <ModelInfo>{};
modelinfo.modelType = "networkInstanceGroup";
return modelinfo;
}
export function createRequest(userId: string, userInputs: any, service: any, serviceInstanceId: string, networkInstanceGroups: any, vnfCustomizationName: string, vnfCustomizationId: string) {
let request: RequestDetails = <RequestDetails>{};
request.requestInfo = extractRequestInfo(userInputs, userId);
request.lineOfBusiness = extractLineOfBusiness(userInputs);
request.cloudConfiguration = extractCloudConfiguration(userInputs);
request.platform = extractPlatform(userInputs);
request.modelInfo = extractModelInfoFromNodeTemplate(service.vnfs[vnfCustomizationName], "vnf");
request.requestParameters = { userParams: [], testApi: sessionStorage.getItem("msoRequestParametersTestApiValue")};
request.relatedInstanceList = [];
let serviceRelatedInstance: RelatedInstanceList = {
relatedInstance: {
instanceId: serviceInstanceId,
modelInfo: extractModelInfoFromNodeTemplate(service.service, "service")
}
};
request.relatedInstanceList.push(serviceRelatedInstance);
_.forOwn(networkInstanceGroups, function(group) {
let networkInstanceGroup: RelatedInstanceList = {
relatedInstance: {
instanceId: group["instance-group"].id,
modelInfo: extractModelInfoFromVfcNode()
}
};
request.relatedInstanceList.push(networkInstanceGroup);
});
return request;
}