2. Set up and run the mariadb docker image:
-docker run --name vid-mariadb -e MYSQL_DATABASE=vid_openecomp -e MYSQL_USER=vidadmin -e MYSQL_PASSWORD=<db password here> -e MYSQL_ROOT_PASSWORD=<root db password here> -v /path/to/vid-my.cnf:/etc/mysql/my.cnf -v /path/to/vid-pre-init.sql:/docker-entrypoint-initdb.d/vid-pre-init.sql -v /var/lib/mysql -d mariadb:10
+docker run --name vid-mariadb -e MYSQL_DATABASE=vid_openecomp_epsdk -e MYSQL_USER=vidadmin -e MYSQL_PASSWORD=<db password here> -e MYSQL_ROOT_PASSWORD=<root db password here> -v /path/to/vid-my.cnf:/etc/mysql/my.cnf -v /path/to/vid-pre-init.sql:/docker-entrypoint-initdb.d/vid-pre-init.sql -v /var/lib/mysql -d mariadb:10
3. Set up and run the vid-server docker image:
-docker run -e VID_MYSQL_DBNAME=vid_openecomp -e VID_MYSQL_PASS=<db password here> --name vid-server -p 8080:8080 --link vid-mariadb:vid-mariadb-docker-instance -d <openecomp-nexus>:<openecomp-nexus-port>/openecomp/vid:1.0.0
+docker run -e VID_MYSQL_DBNAME=vid_openecomp_epsdk -e VID_MYSQL_PASS=<db password here> --name vid-server -p 8080:8080 --link vid-mariadb:vid-mariadb-docker-instance -d <openecomp-nexus>:<openecomp-nexus-port>/openecomp/vid:1.0.0
/*-\r
- * ============LICENSE_START=======================================================
- * VID
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+ * ============LICENSE_START=======================================================\r
+ * VID\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
* Licensed under the Apache License, Version 2.0 (the "License");\r
* you may not use this file except in compliance with the License.\r
* You may obtain a copy of the License at\r
* distributed under the License is distributed on an "AS IS" BASIS,\r
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
* See the License for the specific language governing permissions and\r
- * limitations under the License.
+ * limitations under the License.\r
* ============LICENSE_END=========================================================\r
*/\r
\r
\r
try {\r
while ((line = br.readLine()) != null) {\r
- final String[] entry = line.split(":");\r
- \r
- if (entry.length != 2) throw new AsdcCatalogException("TOSCA.meta file cannot be parsed (more than 1 colon found on a single line");\r
- if (!entry[1].startsWith(" ")) throw new AsdcCatalogException("TOSCA.meta file cannot be parsed (: not immediately followed by ' ')");\r
- \r
- metadata.put(entry[0], entry[1].substring(1));\r
+ if ( line.length() > 0 ) {\r
+ final String[] entry = line.split(":");\r
+ \r
+ if (entry.length != 2) throw new AsdcCatalogException("TOSCA.meta file cannot be parsed (more than 1 colon found on a single line");\r
+ if (!entry[1].startsWith(" ")) throw new AsdcCatalogException("TOSCA.meta file cannot be parsed (: not immediately followed by ' ')");\r
+ \r
+ metadata.put(entry[0], entry[1].substring(1));\r
+ }\r
}\r
} catch (IOException e) {\r
metadata.clear();\r
\r
import java.io.IOException;\r
import java.io.InputStream;\r
+import java.io.FileInputStream;\r
+import java.io.File;\r
import java.net.URI;\r
import java.nio.file.Files;\r
import java.nio.file.Path;\r
import java.nio.file.StandardCopyOption;\r
+import java.text.DateFormat;\r
+import java.text.SimpleDateFormat;\r
import java.util.Collection;\r
import java.util.Collections;\r
import java.util.Map;\r
import java.util.Map.Entry;\r
import java.util.UUID;\r
-import java.util.logging.Logger;\r
import java.util.zip.ZipFile;\r
\r
import javax.ws.rs.NotFoundException;\r
import javax.ws.rs.core.MediaType;\r
import javax.ws.rs.core.MultivaluedHashMap;\r
\r
+import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;\r
import org.openecomp.vid.asdc.AsdcCatalogException;\r
import org.openecomp.vid.asdc.AsdcClient;\r
import org.openecomp.vid.asdc.beans.Artifact;\r
*/\r
public class RestfulAsdcClient implements AsdcClient {\r
\r
- /** The Constant LOGGER. */\r
- private static final Logger LOGGER = Logger.getLogger(RestfulAsdcClient.class.getName());\r
+ /** The Constant LOG. */\r
+ private static final EELFLoggerDelegate LOG = EELFLoggerDelegate.getLogger(RestfulAsdcClient.class);\r
+ \r
+ /** The Constant dateFormat. */\r
+ final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");\r
\r
/** The client. */\r
private final Client client;\r
*/\r
private ToscaCsar getToscaModel(InputStream csarInputStream) throws AsdcCatalogException {\r
final Path csarFile;\r
- \r
try {\r
csarFile = Files.createTempFile("csar", ".zip");\r
Files.copy(csarInputStream, csarFile, StandardCopyOption.REPLACE_EXISTING);\r
final ToscaCsar.Builder csarBuilder = new ToscaCsar.Builder(parentModel);\r
\r
for (Map<String, Map<String, String>> imports : parentModel.getImports()) {\r
+ LOG.debug("imports = " + imports.toString());\r
for (Entry<String, Map<String, String>> entry : imports.entrySet()) {\r
- final InputStream toscaChildEntryYamlStream = csar.getInputStream(csar.getEntry("Definitions/" + entry.getValue().get("file")));\r
- final ToscaModel childModel = yaml.loadAs(toscaChildEntryYamlStream, ToscaModel.class);\r
- csarBuilder.addVnf(childModel);\r
+ if ( entry.getValue() != null) {\r
+ String fname = entry.getValue().get("file");\r
+ if ( ( fname != null ) && (fname.startsWith("service") || fname.startsWith("resource")) ) {\r
+ LOG.debug("fname = " + fname);\r
+ final InputStream toscaChildEntryYamlStream = csar.getInputStream(csar.getEntry("Definitions/" + fname ));\r
+ final ToscaModel childModel = yaml.loadAs(toscaChildEntryYamlStream, ToscaModel.class);\r
+ csarBuilder.addVnf(childModel);\r
+ }\r
+ }\r
}\r
}\r
\r
User user = (User) session.getAttribute(SystemProperties.getProperty(SystemProperties.USER_ATTRIBUTE_NAME));\r
if (user != null)\r
{\r
- userId = user.getHrid();\r
+ //userId = user.getHrid();\r
+ userId = user.getLoginId();\r
+ if (userId == null)\r
+ userId = user.getOrgUserId();\r
}\r
}\r
\r
+++ /dev/null
-/*-\r
- * ============LICENSE_START=======================================================\r
- * VID\r
- * ================================================================================\r
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ============LICENSE_END=========================================================\r
- */\r
-\r
-package org.openecomp.vid.controller;\r
-\r
-\r
-import javax.servlet.ServletContext;\r
-import javax.servlet.http.HttpServletRequest;\r
-\r
-\r
-import org.springframework.beans.factory.annotation.Autowired;\r
-\r
-import org.springframework.web.bind.annotation.RequestMapping;\r
-import org.springframework.web.bind.annotation.RequestMethod;\r
-import org.springframework.web.bind.annotation.RestController;\r
-import org.springframework.web.servlet.ModelAndView;\r
-\r
-import org.openecomp.portalsdk.core.controller.RestrictedBaseController;\r
-\r
-\r
-/**\r
- * The Class VidHomeController.\r
- */\r
-@RestController\r
-public class VidHomeController extends RestrictedBaseController{\r
- \r
- /** The view name. */\r
- String viewName;\r
- \r
- \r
- /** The servlet context. */\r
- private @Autowired ServletContext servletContext;\r
- \r
- /**\r
- * Welcome.\r
- *\r
- * @param request the request\r
- * @return the model and view\r
- */\r
- @RequestMapping(value = {"/vidhome" }, method = RequestMethod.GET)\r
- public ModelAndView welcome(HttpServletRequest request) {\r
- \r
- return new ModelAndView(getViewName()); \r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see org.openecomp.portalsdk.core.controller.RestrictedBaseController#getViewName()\r
- */\r
- public String getViewName() {\r
- return viewName;\r
- }\r
- \r
- /* (non-Javadoc)\r
- * @see org.openecomp.portalsdk.core.controller.RestrictedBaseController#setViewName(java.lang.String)\r
- */\r
- public void setViewName(String viewName) {\r
- this.viewName = viewName;\r
- }\r
-\r
- \r
-\r
-}\r
-/*-\r
- * ============LICENSE_START=======================================================\r
- * VID\r
- * ================================================================================\r
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ============LICENSE_END=========================================================\r
- */\r
-\r
-"use strict";\r
-\r
-appDS2.constant("COMPONENT", (function() {\r
- return {\r
- A_LA_CARTE : "a la carte",\r
- CLOUD_REGION_ID : "cloudRegionID",\r
- COMPONENT_STATUS : "ComponentStatus",\r
- CREATE_COMPONENT : "createComponent",\r
- DELETE_COMPONENT : "deleteComponent",\r
- ENTITY : "entity",\r
- GET_COMPONENT_LIST : "getComponentList",\r
- GET_SUBS : "getSubs",\r
- GET_SUB_DETAILS : "getSubDetails",\r
- GLOBAL_CUSTOMER_ID : "globalCustomerId",\r
- MACRO : "Macro",\r
- MODEL_VERSION_1 : "1",\r
- MSO_CREATE_REQ : "createInstance",\r
- MSO_DELETE_REQ : "deleteInstance",\r
- NAME : "name",\r
- NETWORK : "network",\r
- NETWORKS : "networks",\r
-\r
- QUERY_SERVICE_INSTANCE : "queryServiceInstance",\r
- REFRESH_PROPERTIES : "refreshProperties",\r
- SERVICE : "service",\r
- SERVICE_TYPE : "serviceType",\r
- SHOW_COMPONENT_DETAILS : "showComponentDetails",\r
- STATUS : "status",\r
- SUBSCRIBER_NAME : "subscriberName",\r
- TENANT_ID : "tenantID",\r
- TENANT_NAME : "tenantName",\r
- TRUE : "true",\r
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+"use strict";
+
+appDS2.constant("COMPONENT", (function() {
+ return {
+ A_LA_CARTE : "a la carte",
+ CLOUD_REGION_ID : "cloudRegionID",
+ COMPONENT_STATUS : "ComponentStatus",
+ CREATE_COMPONENT : "createComponent",
+ DELETE_COMPONENT : "deleteComponent",
+ ENTITY : "entity",
+ GET_COMPONENT_LIST : "getComponentList",
+ GET_SUBS : "getSubs",
+ GET_SUB_DETAILS : "getSubDetails",
+ GLOBAL_CUSTOMER_ID : "globalCustomerId",
+ MACRO : "Macro",
+ MODEL_VERSION_1 : "1",
+ MSO_CREATE_REQ : "createInstance",
+ MSO_DELETE_REQ : "deleteInstance",
+ NAME : "name",
+ NETWORK : "network",
+ NETWORKS : "networks",
+
+ QUERY_SERVICE_INSTANCE : "queryServiceInstance",
+ REFRESH_PROPERTIES : "refreshProperties",
+ SERVICE : "service",
+ SERVICE_TYPE : "serviceType",
+ SHOW_COMPONENT_DETAILS : "showComponentDetails",
+ STATUS : "status",
+ SUBSCRIBER_NAME : "subscriberName",
+ TENANT_ID : "tenantID",
+ TENANT_NAME : "tenantName",
+ TRUE : "true",
\r
- VF_MODULE : "vfModule",\r
- VNF : "vnf",\r
- VNF_CODE : "vnfCode",\r
- VNF_FUNCTION : "vnfFunction",\r
- VNF_ROLE : "vnfRole",\r
- VNF_TYPE : "vnfType",\r
- VOLUME_GROUP : "volumeGroup",\r
- \r
- \r
- // IDs\r
- CIDR_MASK_1 : "255.255.255.000",\r
- //COMPONENT_LIST_NAMED_QUERY_ID : "ed0a0f5b-cf79-4784-88b2-911cd726cd3d",\r
- CUSTOMER_ID_1 : "icore9883749",\r
- DELETE_INSTANCE_ID_1 : "ff305d54-75b4-ff1b-fff1-eb6b9e5460ff",\r
- GATEWAY_ADDRESS_1 : "10.10.125.1",\r
- GLOBAL_SUBSCRIBER_ID_1 : "C12345",\r
- INSTANCE_ID_1 : "ff305d54-75b4-431b-adb2-eb6b9e5ff000",\r
- INSTANCE_ID_2 : "ff305d54-75b4-ff1b-adb2-eb6b9e5460ff",\r
- INSTANCE_ID_3 : "ff305d54-75b4-ff1b-bdb2-eb6b9e5460ff",\r
- MODEL_ID_1 : "sn5256d1-5a33-55df-13ab-12abad84e764",\r
- MODEL_ID_2 : "ff5256d1-5a33-55df-aaaa-12abad84e7ff",\r
- MODEL_ID_3 : "ff3514e3-5a33-55df-13ab-12abad84e7ff",\r
- MODEL_ID_4 : "ff5256d1-5a33-55df-13ab-12abad84e7ff",\r
- MODEL_ID_5 : "ff5256d1-5a33-55df-13ab-22abad84e7ff",\r
- MODEL_NAME_VERSION_ID_1 : "ab6478e4-ea33-3346-ac12-ab121484a333",\r
- MODEL_NAME_VERSION_ID_2 : "fe6478e4-ea33-3346-aaaa-ab121484a3fe",\r
- MODEL_NAME_VERSION_ID_3 : "fe6985cd-ea33-3346-ac12-ab121484a3fe",\r
- MODEL_NAME_VERSION_ID_4 : "fe6478e4-ea33-3346-ac12-ab121484a3fe",\r
- MODEL_NAME_VERSION_ID_5 : "fe6478e4-ea33-3346-bc12-ab121484a3fe",\r
- SERVICE_INSTANCE_ID_1 : "bc305d54-75b4-431b-adb2-eb6b9e546014",\r
- SUBSCRIBER_NAME_GED12 : "General Electric Division 12",\r
- VNF_INSTANCE_ID : "VNF_INSTANCE_ID_12345",\r
- VPN_ID_1 : "1a2b3c4d5e6f",\r
- \r
- // PATHS\r
- ASSIGN : "?r=",\r
- AAI_GET_SERVICE_INSTANCE_PATH : "aai_get_service_instance/",\r
- AAI_GET_SERVICES : "aai_get_services",\r
- AAI_GET_TENANTS : "aai_get_tenants/",\r
- AAI_SUB_DETAILS_PATH : "aai_sub_details/",\r
- AAI_SUB_VIEWEDIT_PATH : "aai_sub_viewedit",\r
- ASDC_GETMODEL_PATH : "asdc/getModel/",\r
- CREATE_INSTANCE_PATH : "/models/services/createInstance", \r
- FORWARD_SLASH : "/",\r
- GET_SYSTEM_PROP_VNF_PROV_STATUS_PATH : "get_system_prop_vnf_prov_status",\r
- GET_USER_ID : "getuserID",\r
- INSTANTIATE_ROOT_PATH : "#/instantiate?subscriberId=",\r
- INSTANTIATE_PATH : "/instantiate",\r
- INVALID_STRING : "/INVALID_STRING/",\r
- INVALID_STRING_MSO_CREATE_SVC_INSTANCE : "INVALID_STRING_mso_create_svc_instance",\r
- MSO_CREATE_NW_INSTANCE : "mso_create_nw_instance",\r
- MSO_CREATE_NW_INSTANCE_PATH : "mso_create_nw_instance/",\r
- MSO_CREATE_SVC_INSTANCE : "mso_create_svc_instance",\r
- MSO_DELETE_SVC_INSTANCE_PATH : "mso_delete_svc_instance/",\r
- SELECTED_SERVICE_SUB_PATH : "#/instances/subdetails?selectedServiceSubscription=",\r
- SELECTED_SUB_PATH : "#/instances/subdetails?selectedSubscriber=",\r
- SELECTEDSERVICEINSTANCE_SUB_PATH : "&selectedServiceInstance=",\r
- SELECTEDSUBSCRIBER_SUB_PATH : "&selectedSubscriber=",\r
- SERVICE_TYPE_LIST_PATH : "#/instances/serviceTypes?serviceTypeList=",\r
- SERVICE_MODLES_INSTANCES_SUBSCRIBERS_PATH : 'serviceModels.htm#/instances/subscribers',\r
- SERVICES_DIST_STATUS_PATH : "rest/models/services?distributionStatus=",\r
- SERVICES_PATH : "rest/models/services/",\r
- SERVICETYPE_SUB_PATH : "&serviceType=",\r
- SERVICEINSTANCEID_SUB_PATH : "&serviceInstanceId=",\r
- SERVICEMODELS_INSTANCES_SERVICES_PATH : "serviceModels.htm#/instances/services",\r
- SERVICEMODELS_MODELS_SERVICES_PATH : "serviceModels.htm#/models/services",\r
- SUBDETAILS_SELECTEDSUBSCRIBER : "#subdetails?selectedSubscriber=",\r
- SUBSCRIBERNAME_SUB_PATH : "&subscriberName=",\r
- WELCOME_PATH : "welcome.htm",\r
- \r
- //Template Urls\r
- AAI_GET_SUBS_URL : "app/vid/scripts/view-models/aaiGetSubs.htm",\r
- AAI_GET_SUBSCRIBER_URL : "app/vid/scripts/view-models/aaiGetSubscriberList.htm",\r
- AAI_SERVICE_TYPES_URL : "app/vid/scripts/view-models/aaiServiceTypes.htm",\r
- AAI_SUB_DETAILS_URL : "app/vid/scripts/view-models/aaiSubDetails.htm",\r
- CREATE_INSTANCE_SERVICE_MODELS_URL : "app/vid/scripts/view-models/createInstanceServiceModels.htm",\r
- INSTANTIATE_URL : "app/vid/scripts/view-models/instantiate.htm",\r
- SERVICE_MODELS : "app/vid/scripts/view-models/serviceModels.htm",\r
- \r
- \r
- \r
- FULL_NAME_MAP : {\r
- "model-invariant-id" : "Model ID",\r
- "model-version-id" : "Model Version ID"\r
- },\r
- PARTIAL_NAME_MAP : {\r
- "id" : "ID",\r
- "uuid" : "UUID",\r
- "vfmodule" : "VF Module",\r
- "vnf" : "VNF",\r
- "volumegroup" : "Volume Group"\r
- }\r
- \r
- };\r
-})())\r
+ VF_MODULE : "vfModule",
+ VNF : "vnf",
+ VNF_CODE : "vnfCode",
+ VNF_FUNCTION : "vnfFunction",
+ VNF_ROLE : "vnfRole",
+ VNF_TYPE : "vnfType",
+ VOLUME_GROUP : "volumeGroup",
+
+
+ // IDs
+ CIDR_MASK_1 : "255.255.255.000",
+ //COMPONENT_LIST_NAMED_QUERY_ID : "ed0a0f5b-cf79-4784-88b2-911cd726cd3d",
+ CUSTOMER_ID_1 : "icore9883749",
+ DELETE_INSTANCE_ID_1 : "ff305d54-75b4-ff1b-fff1-eb6b9e5460ff",
+ GATEWAY_ADDRESS_1 : "10.10.125.1",
+ GLOBAL_SUBSCRIBER_ID_1 : "C12345",
+ INSTANCE_ID_1 : "ff305d54-75b4-431b-adb2-eb6b9e5ff000",
+ INSTANCE_ID_2 : "ff305d54-75b4-ff1b-adb2-eb6b9e5460ff",
+ INSTANCE_ID_3 : "ff305d54-75b4-ff1b-bdb2-eb6b9e5460ff",
+ MODEL_ID_1 : "sn5256d1-5a33-55df-13ab-12abad84e764",
+ MODEL_ID_2 : "ff5256d1-5a33-55df-aaaa-12abad84e7ff",
+ MODEL_ID_3 : "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+ MODEL_ID_4 : "ff5256d1-5a33-55df-13ab-12abad84e7ff",
+ MODEL_ID_5 : "ff5256d1-5a33-55df-13ab-22abad84e7ff",
+ MODEL_NAME_VERSION_ID_1 : "ab6478e4-ea33-3346-ac12-ab121484a333",
+ MODEL_NAME_VERSION_ID_2 : "fe6478e4-ea33-3346-aaaa-ab121484a3fe",
+ MODEL_NAME_VERSION_ID_3 : "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+ MODEL_NAME_VERSION_ID_4 : "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+ MODEL_NAME_VERSION_ID_5 : "fe6478e4-ea33-3346-bc12-ab121484a3fe",
+ SERVICE_INSTANCE_ID_1 : "bc305d54-75b4-431b-adb2-eb6b9e546014",
+ SUBSCRIBER_NAME_GED12 : "General Electric Division 12",
+ VNF_INSTANCE_ID : "VNF_INSTANCE_ID_12345",
+ VPN_ID_1 : "1a2b3c4d5e6f",
+
+ // PATHS
+ ASSIGN : "?r=",
+ AAI_GET_SERVICE_INSTANCE_PATH : "aai_get_service_instance/",
+ AAI_GET_SERVICES : "aai_get_services",
+ AAI_GET_SERVICES_BY_TYPE : "aai_get_models_by_service_type",
+ AAI_GET_TENANTS : "aai_get_tenants/",
+ AAI_SUB_DETAILS_PATH : "aai_sub_details/",
+ AAI_SUB_VIEWEDIT_PATH : "aai_sub_viewedit",
+ ASDC_GETMODEL_PATH : "asdc/getModel/",
+ CREATE_INSTANCE_PATH : "/models/services/createInstance",
+ FORWARD_SLASH : "/",
+ GET_SYSTEM_PROP_VNF_PROV_STATUS_PATH : "get_system_prop_vnf_prov_status",
+ GET_USER_ID : "getuserID",
+ INSTANTIATE_ROOT_PATH : "#/instantiate?subscriberId=",
+ INSTANTIATE_PATH : "/instantiate",
+ INVALID_STRING : "/INVALID_STRING/",
+ INVALID_STRING_MSO_CREATE_SVC_INSTANCE : "INVALID_STRING_mso_create_svc_instance",
+ MSO_CREATE_NW_INSTANCE : "mso_create_nw_instance",
+ MSO_CREATE_NW_INSTANCE_PATH : "mso_create_nw_instance/",
+ MSO_CREATE_SVC_INSTANCE : "mso_create_svc_instance",
+ MSO_DELETE_SVC_INSTANCE_PATH : "mso_delete_svc_instance/",
+ SELECTED_SERVICE_SUB_PATH : "#/instances/subdetails?selectedServiceSubscription=",
+ SELECTED_SUB_PATH : "#/instances/subdetails?selectedSubscriber=",
+ SELECTEDSERVICEINSTANCE_SUB_PATH : "&selectedServiceInstance=",
+ SELECTEDSUBSCRIBER_SUB_PATH : "&selectedSubscriber=",
+ SERVICE_TYPE_LIST_PATH : "#/instances/serviceTypes?serviceTypeList=",
+ SERVICE_MODLES_INSTANCES_SUBSCRIBERS_PATH : 'serviceModels.htm#/instances/subscribers',
+ SERVICES_DIST_STATUS_PATH : "rest/models/services?distributionStatus=",
+ SERVICES_PATH : "rest/models/services/",
+ SERVICETYPE_SUB_PATH : "&serviceType=",
+ SERVICEINSTANCEID_SUB_PATH : "&serviceInstanceId=",
+ SERVICEMODELS_INSTANCES_SERVICES_PATH : "serviceModels.htm#/instances/services",
+ SERVICEMODELS_MODELS_SERVICES_PATH : "serviceModels.htm#/models/services",
+ SUBDETAILS_SELECTEDSUBSCRIBER : "#subdetails?selectedSubscriber=",
+ SUBSCRIBERNAME_SUB_PATH : "&subscriberName=",
+ WELCOME_PATH : "welcome.htm",
+
+ //Template Urls
+ AAI_GET_SUBS_URL : "app/vid/scripts/view-models/aaiGetSubs.htm",
+ AAI_GET_SUBSCRIBER_URL : "app/vid/scripts/view-models/aaiGetSubscriberList.htm",
+ AAI_SERVICE_TYPES_URL : "app/vid/scripts/view-models/aaiServiceTypes.htm",
+ AAI_SUB_DETAILS_URL : "app/vid/scripts/view-models/aaiSubDetails.htm",
+ CREATE_INSTANCE_SERVICE_MODELS_URL : "app/vid/scripts/view-models/createInstanceServiceModels.htm",
+ INSTANTIATE_URL : "app/vid/scripts/view-models/instantiate.htm",
+ SERVICE_MODELS : "app/vid/scripts/view-models/serviceModels.htm",
+
+
+
+ FULL_NAME_MAP : {
+ "model-invariant-id" : "Model ID",
+ "model-version-id" : "Model Version ID"
+ },
+ PARTIAL_NAME_MAP : {
+ "id" : "ID",
+ "uuid" : "UUID",
+ "vfmodule" : "VF Module",
+ "vnf" : "VNF",
+ "volumegroup" : "Volume Group"
+ }
+
+ };
+})())
SERVICE_INSTANCE_NAME : "service-instance-name",\r
SERVICE_SUBSCRIPTION : "service-subscription",\r
SERVICE_SUBSCRIPTIONS : "service-subscriptions",\r
- SERVICE_TYPE : "service-type",\r
+ SERVICETYPE : "service-type",\r
STATUS_MESSAGE : "statusMessage",\r
SUBNAME : "subscriber-name",\r
TIMESTAMP : "timestamp",\r
VOLUME_GROUP : "volume-group",\r
VOLUME_GROUP_ID : "volume-group-id",\r
VOLUME_GROUP_NAME : "volume-group-name",\r
+ SDN_C_PRELOAD : "sdncPreload",\r
+ UPLOAD_SUPPLEMENTORY_DATA_FILE : "uploadSupplementoryDataFile",\r
+ SUPPLEMENTORY_DATA_FILE : "supplementoryDataFile"\r
};\r
\r
var KEY = {\r
MODEL_VNF_TYPE: "NF Type",\r
MODEL_VNF_ROLE: "NF Role",\r
MODEL_VNF_FUNCTION: "NF Function",\r
- MODEL_VNF_CODE: "NF Code",\r
+ MODEL_VNF_CODE: "NF Naming Code",\r
MODEL_CUSTOMIZATION_NAME: "Resource Name",\r
PRODUCT_FAMILY : "Product Family",\r
RESOURCE_DESCRIPTION : "Resource Description",\r
SERVICE_VERSION : "Service Version",\r
SUBSCRIBER_NAME : "Subscriber Name",\r
SUPPRESS_ROLLBACK : "Suppress Rollback on Failure",\r
+ SDN_C_PRELOAD : "SDN-C Pre-Load",\r
+ UPLOAD_SUPPLEMENTORY_DATA_FILE : "Upload Supplementory Data file",\r
+ SUPPLEMENTORY_DATA_FILE : "Supplementory Data file (JSON format)",\r
TENANT : "Tenant",\r
USER_SERVICE_INSTANCE_NAME : "User Service Instance Name",\r
VF_MODULE_DESCRIPTION : "VF Module Description",\r
FETCHING_SERVICE_INSTANCE_DATA : "Failed to fetch service instance data from A&AI: Response Code: ",\r
INVALID_INSTANCE_NAME : "Invalid instance name: ",\r
INSTANCE_NAME_VALIDATE : "The instance name must contain only alphanumeric or \"_-.\" characters, and must start with an alphabetic character", \r
+ INVALID_LIST : "Invalid list parameter: ",\r
+ INVALID_MAP : "Invalid map parameter: ",\r
+ LIST_VALIDATE : "A list parameter value must have the following syntax: '[<value1>,\.\.\.,<valueN>]'",\r
+ MAP_VALIDATE : "A map parameter value must have the following syntax: '{ <entry_key_1>: <entry_value_1>, \.\.\., <entry_key_n>: <entry_value_n> }'",\r
MAX_POLLS_EXCEEDED : "Maximum number of poll attempts exceeded",\r
MISSING_DATA : "Missing data",\r
MODEL_VERSION_ID_MISSING : "Error: model-version-id is not populated in A&AI",\r
type : PARAMETER.BOOLEAN,\r
value : false\r
},\r
+ SDN_C_PRELOAD_CHECKED : {\r
+ name : NAME.SDN_C_PRELOAD,\r
+ id : ID.SDN_C_PRELOAD,\r
+ type : PARAMETER.CHECKBOX,\r
+ value : true,\r
+ isVisible:true,\r
+ isRequired:false\r
+ },\r
+ SDN_C_PRELOAD_UNCHECKED : {\r
+ name : NAME.SDN_C_PRELOAD,\r
+ id : ID.SDN_C_PRELOAD,\r
+ type : PARAMETER.CHECKBOX,\r
+ value : false,\r
+ isVisible:true,\r
+ isRequired:false\r
+ },\r
+ UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED : {\r
+ name : NAME.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
+ id : ID.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
+ type : PARAMETER.CHECKBOX,\r
+ value : true,\r
+ isVisible:true,\r
+ isRequired:false\r
+ },\r
+ UPLOAD_SUPPLEMENTORY_DATA_FILE_UNCHECKED : {\r
+ name : NAME.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
+ id : ID.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
+ type : PARAMETER.CHECKBOX,\r
+ value : false,\r
+ isVisible:true,\r
+ isRequired:false\r
+ },\r
+ SUPPLEMENTORY_DATA_FILE : {\r
+ name : NAME.SUPPLEMENTORY_DATA_FILE,\r
+ id : ID.SUPPLEMENTORY_DATA_FILE,\r
+ type : PARAMETER.FILE,\r
+ isRequired : false,\r
+ isVisible : true,\r
+ fileData:''\r
+ },\r
+\r
SUBSCRIBER_NAME : {\r
name : NAME.SUBSCRIBER_NAME,\r
id : ID.SUBSCRIBER_NAME,\r
GREATER_THAN: "greater_than",\r
LESS_THAN: "less_than",\r
GREATER_OR_EQUAL: "greater_or_equal",\r
- LESS_OR_EQUAL: "less_or_equal"\r
+ LESS_OR_EQUAL: "less_or_equal",\r
+ DISPLAY_NAME: "displayName",\r
+ CHECKBOX:'checkbox',\r
+ FILE:'file'\r
\r
};\r
})())\r
* Set to false, to disable the check.\r
*/\r
var VNF_STATUS_CHECK_ENABLED = false;\r
+ /*\r
+ * UPLOAD_SUPPLEMENTARY_STATUS_CHECK_ENABLED: Determines the Property to Govern Presence of Upload Supplementary File on Volume Group Screen.\r
+ * Set to false, to disable the check.\r
+ */\r
+ var UPLOAD_SUPPLEMENTARY_STATUS_CHECK_ENABLED = false;\r
/*\r
* List of valid VNF status combinations\r
*/\r
MSO_POLLING_INTERVAL_MSECS : MSO_POLLING_INTERVAL_MSECS,\r
VNF_STATUS_CHECK_ENABLED : VNF_STATUS_CHECK_ENABLED,\r
VNF_VALID_STATUS_LIST : vnfValidStatusList,\r
+ UPLOAD_SUPPLEMENTARY_STATUS_CHECK_ENABLED : UPLOAD_SUPPLEMENTARY_STATUS_CHECK_ENABLED,\r
MACRO_SERVICES : MACRO_SERVICES,\r
COMPONENT_LIST_NAMED_QUERY_ID : COMPONENT_LIST_NAMED_QUERY_ID\r
};\r
});\r
\r
DataService.setSubscriberName(serviceObject[FIELD.ID.SUBSCRIBER_NAME]);\r
- DataService.setServiceType(serviceObject[FIELD.ID.SERVICE_TYPE]);\r
+ DataService.setServiceType(serviceObject[COMPONENT.SERVICE_TYPE]);\r
DataService.setServiceInstanceId(serviceInstance[FIELD.ID.SERVICE_INSTANCE_ID]);\r
\r
DataService.setGlobalCustomerId(serviceObject[COMPONENT.GLOBAL_CUSTOMER_ID]);\r
var vnfModelVersion = null;\r
var vnfModelCustomizationUuid = null;\r
var vnfModel = null;\r
+ var vnfModelVersionId = null;\r
\r
vnfModelInvariantUuid = vnf.object[FIELD.ID.MODEL_INVAR_ID];\r
vnfModelVersionId = vnf.object[FIELD.ID.MODEL_VERSION_ID];\r
var vnfModelVersion = null;\r
var vnfModelCustomizationUuid = null;\r
var vnfModel = null;\r
+ var vnfModelVersionId = null;\r
\r
vnfModelInvariantUuid = vnf.object[FIELD.ID.MODEL_INVAR_ID];\r
vnfModelVersionId = vnf.object[FIELD.ID.MODEL_VERSION_ID];\r
for (var i = 0; i < response.control.length; i++) {\r
if (response.control[i].id == COMPONENT.SUBSCRIBER_NAME) {\r
subscriberId = response.control[i].value;\r
- } else if (response.control[i].id == "service-type") {\r
+ } else if (response.control[i].id == FIELD.ID.SERVICE_TYPE) {\r
serviceType = response.control[i].value;\r
}\r
}\r
if (subVal[FIELD.ID.SERVICE_SUBSCRIPTIONS] != null) {\r
angular.forEach(subVal[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION], function(serviceSubscription, key) {\r
$scope.serviceInstanceId = [];\r
- if (serviceSubscription[FIELD.ID.SERVICE_TYPE] != null) {\r
- $scope.serviceType = serviceSubscription[FIELD.ID.SERVICE_TYPE];\r
+ if (serviceSubscription[FIELD.ID.SERVICETYPE] != null) {\r
+ $scope.serviceType = serviceSubscription[FIELD.ID.SERVICETYPE];\r
} else {\r
$scope.serviceType = FIELD.STATUS.NO_SERVICE_SUBSCRIPTION_FOUND;\r
}\r
pathQuery = COMPONENT.SERVICES_PATH +globalCustomerId+"/"+$scope.serviceTypeName;\r
}\r
\r
- AaiService.getServiceModels(globalCustomerId,$scope.serviceTypeName,function(response) { // success\r
- console.log("service models : "+response.data);\r
- DataService.setServiceIdList(response);\r
- }, function(response) { // failure\r
- $scope.showError(FIELD.ERROR.AAI);\r
- $scope.errorMsg = FIELD.ERROR.FETCHING_SERVICES+ response.status;\r
- $scope.errorDetails = response.data;\r
- });\r
- \r
- /*$http.get('/aai_get_services/'+globalCustomerId+''+$scope.serviceTypeName)\r
- .then(function successCallback(response) {\r
+ var namedQueryId='6e806bc2-8f9b-4534-bb68-be91267ff6c8';\r
+ AaiService.getServiceModelsByServiceType(namedQueryId,globalCustomerId,$scope.serviceTypeName,function(response) { // success\r
$scope.services = [];\r
- if (angular.isArray(response.data)) {\r
- $scope.services = response.data;\r
+ if (angular.isArray(response.data['inventory-response-item'])) {\r
+ $scope.services = response.data['inventory-response-item'][0]['inventory-response-items']['inventory-response-item'];\r
+ $scope.serviceType = response.data['inventory-response-item'][0]['service-subscription']['service-type'];\r
$scope.viewPerPage=10;\r
$scope.totalPage=$scope.services.length/$scope.viewPerPage;\r
$scope.sortBy="name";\r
$scope.isSpinnerVisible = false;\r
$scope.isProgressVisible = false;\r
} else {\r
- $scope.status = "Failed to get service models from SDC.";\r
+ $scope.status = "Failed to get service models from ASDC.";\r
$scope.error = true;\r
$scope.isSpinnerVisible = false;\r
}\r
- }, function errorCallback(response) {\r
- console.log("Error: " + response);\r
- }); */\r
- \r
+ DataService.setServiceIdList(response);\r
+ }, function(response) { // failure\r
+ $scope.showError(FIELD.ERROR.AAI);\r
+ $scope.errorMsg = FIELD.ERROR.FETCHING_SERVICES+ response.status;\r
+ $scope.errorDetails = response.data;\r
+ });\r
+ \r
+ };\r
\r
+ $scope.createType = "a la carte";\r
+ $scope.deployService = function(service,hideServiceFields) {\r
+ hideServiceFields = hideServiceFields|| false;\r
+ var temp = service;\r
+ service.uuid = service['service-instance']['model-version-id'];\r
+ \r
+ console.log("Instantiating ASDC service " + service.uuid);\r
+ \r
+ $http.get('rest/models/services/' + service.uuid)\r
+ .then(function successCallback(getServiceResponse) {\r
+ getServiceResponse.data['service'].serviceTypeName =$scope.serviceTypeName ;\r
+ getServiceResponse.data['service'].createSubscriberName =$scope.createSubscriberName ;\r
+ var serviceModel = getServiceResponse.data;\r
+ DataService.setServiceName(serviceModel.service.name);\r
+ \r
+ DataService.setModelInfo(COMPONENT.SERVICE, {\r
+ "modelInvariantId": serviceModel.service.invariantUuid,\r
+ "modelVersion": serviceModel.service.version,\r
+ "modelNameVersionId": serviceModel.service.uuid,\r
+ "modelName": serviceModel.service.name,\r
+ "description": serviceModel.service.description,\r
+ "category":serviceModel.service.category,\r
+ "serviceTypeName":serviceModel.service.serviceTypeName,\r
+ "createSubscriberName":serviceModel.service.createSubscriberName\r
+ });\r
+ DataService.setHideServiceFields(hideServiceFields);\r
+ DataService.setALaCarte (true);\r
+ $scope.createType = "a la carte";\r
+ var broadcastType = "createComponent";\r
+ \r
+ if (UtilityService.arrayContains (VIDCONFIGURATION.MACRO_SERVICES, serviceModel.service.invariantUuid )) {\r
+ DataService.setALaCarte (false);\r
+ $scope.createType = "Macro";\r
+ var convertedAsdcModel = UtilityService.convertModel(serviceModel);\r
+ \r
+ //console.log ("display inputs "); \r
+ //console.log (JSON.stringify ( convertedAsdcModel.completeDisplayInputs));\r
+ \r
+ DataService.setModelInfo(COMPONENT.SERVICE, {\r
+ "modelInvariantId": serviceModel.service.invariantUuid,\r
+ "modelVersion": serviceModel.service.version,\r
+ "modelNameVersionId": serviceModel.service.uuid,\r
+ "modelName": serviceModel.service.name,\r
+ "description": serviceModel.service.description,\r
+ "category":serviceModel.service.category,\r
+ "inputs": serviceModel.service.inputs,\r
+ "displayInputs": convertedAsdcModel.completeDisplayInputs,\r
+ "serviceTypeName":serviceModel.service.serviceTypeName,\r
+ "createSubscriberName":serviceModel.service.createSubscriberName\r
+ });\r
+ };\r
+ \r
+ $scope.$broadcast(broadcastType, {\r
+ componentId : COMPONENT.SERVICE,\r
+ callbackFunction : function(response) {\r
+ if (response.isSuccessful) {\r
+ vidService.setModel(serviceModel);\r
+ \r
+ var subscriberId = "Not Found";\r
+ var serviceType = "Not Found";\r
+ \r
+ var serviceInstanceId = response.instanceId;\r
+ \r
+ for (var i = 0; i < response.control.length; i++) {\r
+ if (response.control[i].id == "subscriberName") {\r
+ subscriberId = response.control[i].value;\r
+ } else if (response.control[i].id == "serviceType") {\r
+ serviceType = response.control[i].value;\r
+ }\r
+ }\r
+ \r
+ \r
+ $scope.refreshSubs(subscriberId,serviceType,serviceInstanceId);\r
+ \r
+ }\r
+ }\r
+ });\r
+ \r
+ }, function errorCallback(response) {\r
+ console.log("Error: " + response);\r
+ });\r
};\r
\r
$scope.cancelCreateSIType = function(){\r
}\r
\r
$scope.refreshSubs = function() {\r
+ $scope.init();\r
$scope.fetchSubs(FIELD.PROMPT.REFRESH_SUB_LIST);\r
$scope.fetchServices();\r
};\r
\r
"use strict";\r
\r
-var creationDialogController = function( COMPONENT, FIELD, $scope, $http, $timeout, $log,\r
- CreationService, UtilityService, DataService) {\r
+var creationDialogController = function( COMPONENT, FIELD, PARAMETER, $scope, $http, $timeout, $log,\r
+ CreationService, UtilityService, DataService,VIDCONFIGURATION) {\r
\r
$scope.isDialogVisible = false;\r
$scope.summaryControl = {};\r
return false;\r
}\r
return true;\r
- }\r
-\r
+ };\r
+ var validateMap = function(mname) {\r
+ var patt1 = /^{(\s*\w+\s*:\s*\w+\s*)(\s*,\s*\w+\s*:\s*\w+\s*)*}$/im;\r
+ if ( mname == null ){\r
+ return true;\r
+ }\r
+ if ( !mname.match(patt1) ) {\r
+ return false;\r
+ }\r
+ return true;\r
+ };\r
+ \r
+ var validateList = function(lname) {\r
+ var patt1 = /^\[(\s*\w+\s*)(\s*,\s*\w+\s*)*\]$/i;\r
+ if ( lname == null ){\r
+ return true;\r
+ }\r
+ if ( !lname.match(patt1) ) {\r
+ return false;\r
+ }\r
+ return true;\r
+ };\r
+ \r
$scope.userParameterChanged = function(id) {\r
CreationService.updateUserParameterList(id, $scope.userProvidedControl);\r
}\r
return;\r
}\r
}\r
- \r
+ var arbitraryParametersList = DataService.getArbitraryParameters();\r
+ var p = null;\r
+ if (UtilityService.hasContents (arbitraryParametersList)) {\r
+ for (var i = 0; i < arbitraryParametersList.length; i++) {\r
+ p = arbitraryParametersList[i];\r
+ if (p.type === PARAMETER.MAP) {\r
+ //validate a map: { <entry_key_1>: <entry_value_1>, ... , <entry_key_n>: <entry_value_n> }\r
+ // need to find the value in paramList\r
+ for (var j = 0; j < paramList.length; j++) {\r
+ if (paramList[j].id === p.id) {\r
+ p.value = paramList[j].value;\r
+ var isValid = validateMap (p.value);\r
+ if ( isValid ) {\r
+ $scope.isErrorVisible = false;\r
+ break;\r
+ } \r
+ else {\r
+ showError(FIELD.ERROR.INVALID_MAP + p.id, \r
+ FIELD.ERROR.MAP_VALIDATE);\r
+ return;\r
+ } \r
+ }\r
+ }\r
+ } else if (p.type === PARAMETER.LIST) {\r
+ //validate a list: { value or a list of comma separated values }\r
+ // need to find the value in paramList\r
+ for (var j = 0; j < paramList.length; j++) {\r
+ if (paramList[j].id === p.id) {\r
+ p.value = paramList[j].value;\r
+ var isValid = validateList (p.value);\r
+ if ( isValid ) {\r
+ $scope.isErrorVisible = false;\r
+ break;\r
+ } \r
+ else {\r
+ showError(FIELD.ERROR.INVALID_LIST + p.id, \r
+ FIELD.ERROR.LIST_VALIDATE);\r
+ return;\r
+ } \r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
var requestDetails = CreationService\r
.getMsoRequestDetails($scope.userProvidedControl.getList());\r
\r
\r
}\r
\r
-appDS2.controller("creationDialogController", [ "COMPONENT", "FIELD", "$scope", "$http",\r
- "$timeout", "$log", "CreationService", "UtilityService", "DataService",\r
+appDS2.controller("creationDialogController", [ "COMPONENT", "FIELD", "PARAMETER", "$scope", "$http",\r
+ "$timeout", "$log", "CreationService", "UtilityService", "DataService","VIDCONFIGURATION",\r
creationDialogController ]);\r
});\r
}\r
\r
-\r
+ \r
$scope.getSubscriberDet = function(selectedCustomer){\r
window.location.href = COMPONENT.SUBDETAILS_SELECTEDSUBSCRIBER + selectedCustomer;\r
};\r
var checkboxInputStyle = "height: 18px; width: 18px; padding: 2px 5px;";\r
var selectStyle = "height: 25px; padding: 2px; text-align: center;";\r
var requiredLabelStyle = "width: 25px; padding: 5px 10px 10px 5px;";\r
- var textInputPrompt = "Enter data";\r
+ \r
\r
var getParameterHtml = function(parameter, editable) {\r
var style = valueStyle;\r
if (UtilityService.hasContents(parameter.description)) {\r
attributeString += " title=' " + parameter.description + " '";\r
}\r
- var html = "<tr><td style='" + nameStyle + "'" + attributeString + ">"\r
+ var rowstyle='';\r
+ if(parameter.type == 'file' && !parameter.isVisiblity){\r
+ rowstyle = ' style="display:none;"';\r
+ }\r
+ var html = "<tr"+rowstyle+"><td style='" + nameStyle + "'" + attributeString + ">"\r
+ getNameHtml(parameter) + "</td><td style='" + style + "'>";\r
if (editable === undefined) {\r
if (UtilityService.hasContents(parameter.value)) {\r
};\r
\r
var getValueHtml = function(parameter) {\r
+ \r
+ var textInputPrompt = "Enter data";\r
var attributeString = " parameter-id='" + parameter.id + "'";\r
var additionalStyle = "";\r
if (parameter.isEnabled === false) {\r
name = parameter.id;\r
}\r
attributeString += " parameter-name='" + name + "'";\r
+ \r
+ if ( parameter.type === PARAMETER.MAP ) {\r
+ textInputPrompt = "{<key1>: <value1>,\.\.\.,<keyN>: <valueN>}";\r
+ }\r
+ \r
+ if ( parameter.type === PARAMETER.LIST ) {\r
+ textInputPrompt = "[<value1>,\.\.\.,<valueN>]";\r
+ }\r
\r
switch (parameter.type) {\r
case PARAMETER.BOOLEAN:\r
+ "</select>";\r
}\r
break;\r
+ case PARAMETER.CHECKBOX:\r
+ if (parameter.value) {\r
+ return "<input type='checkbox' "+attributeString+ " checked='checked' style='"+checkboxInputStyle+"'" \r
+ + " value='true'/>";\r
+ }else{\r
+ return "<input type='checkbox' "+attributeString+ "' style='"+checkboxInputStyle+"'" \r
+ + " value='false'/>";\r
+ }\r
+ break;\r
+ case PARAMETER.FILE:\r
+ return "<input type='file' "+attributeString+ " id='"+parameter.id+"' value='"+parameter.value+"'/>";\r
+ break;\r
case PARAMETER.NUMBER:\r
var value=parameter.value;\r
var parameterSpec = "<input type='number'" + attributeString + " style='" + textInputStyle + additionalStyle + "'";\r
};\r
if ($(element).prop("type") === "checkbox") {\r
parameter.value = $(element).prop("checked");\r
+ }else if ($(element).prop("type") === "file") {\r
+ parameter.value = $('#'+id).attr("value");\r
+\r
} else {\r
if ($(element).prop("type") === "text") {\r
$(element).val($(element).val().trim());\r
angular.forEach(subscriber[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION], function(serviceSubscription, key) {\r
var serviceInstanceId = [];\r
var serviceType = "";\r
- if (serviceSubscription[FIELD.ID.SERVICE_TYPE] != null) {\r
- serviceType = serviceSubscription[FIELD.ID.SERVICE_TYPE];\r
+ if (serviceSubscription[FIELD.ID.SERVICETYPE] != null) {\r
+ serviceType = serviceSubscription[FIELD.ID.SERVICETYPE];\r
} else {\r
serviceType = FIELD.PROMPT.NO_SERVICE_SUB;\r
}\r
serviceType : serviceType,\r
serviceInstanceId : subVal.serviceInstanceId,\r
aaiModelInvariantId : subVal.aaiModelInvariantId,\r
- aaiModelVersionId : subVal.aaiModelVersionId,\r
+ aaiModelVersionId\r
+ : subVal.aaiModelVersionId,\r
serviceInstanceName : subVal.serviceInstanceName\r
});\r
});\r
var serviceSubscriptions = response.data[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION];\r
\r
for (var i = 0; i < serviceSubscriptions.length; i++) {\r
- serviceTypes.push(serviceSubscriptions[i][FIELD.ID.SERVICE_TYPE]);\r
+ serviceTypes.push(serviceSubscriptions[i][FIELD.ID.SERVICETYPE]);\r
}\r
successCallbackFunction(serviceTypes);\r
} else {\r
}\r
})["catch"]\r
(UtilityService.runHttpErrorHandler);\r
-}\r
+},\r
+getServiceModelsByServiceType : function(namedQueryId,globalCustomerId,serviceType,successCallbackFunction) {\r
+ $log\r
+ .debug("AaiService:getServiceModelsByServiceType");\r
+ var url = COMPONENT.AAI_GET_SERVICES_BY_TYPE+COMPONENT.FORWARD_SLASH+namedQueryId+COMPONENT.FORWARD_SLASH+globalCustomerId+COMPONENT.FORWARD_SLASH +serviceType+COMPONENT.ASSIGN + Math.random();\r
+ \r
+ $http.get(url,\r
+ {\r
+ timeout : PropertyService\r
+ .getServerResponseTimeoutMsec()\r
+ }).then(function(response) {\r
+ if (response.data) {\r
+ successCallbackFunction(response);\r
+ } else {\r
+ successCallbackFunction([]);\r
+ }\r
+ })["catch"]\r
+ (UtilityService.runHttpErrorHandler);\r
+ }\r
}\r
}\r
\r
* \r
*/\r
\r
-var CreationService = function($log, AaiService, AsdcService, DataService,\r
+var CreationService = function($log, AaiService, AsdcService, DataService,VIDCONFIGURATION,\r
ComponentService, COMPONENT, FIELD, PARAMETER, UtilityService) {\r
\r
var _this = this;\r
/*\r
* Common fields displayed at the top of all create instance screens.\r
*/\r
- addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());\r
+ if(DataService.getModelInfo(_this.componentId)["serviceTypeName"]==null \r
+ || DataService.getModelInfo(_this.componentId)["serviceTypeName"]==undefined\r
+ || DataService.getModelInfo(_this.componentId)["serviceTypeName"]==''){\r
+ addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());\r
+ }\r
\r
switch (_this.componentId) {\r
case COMPONENT.SERVICE:\r
}\r
}\r
}\r
+ if(DataService.getModelInfo(_this.componentId)["createSubscriberName"]!=null && DataService.getModelInfo(_this.componentId)["createSubscriberName"]!=''){\r
+ addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService\r
+ .getModelInfo(_this.componentId)["createSubscriberName"]);\r
+ }\r
+ if(DataService.getModelInfo(_this.componentId)["serviceTypeName"]!=null && DataService.getModelInfo(_this.componentId)["serviceTypeName"]!=''){\r
+ addToList(FIELD.NAME.SERVICE_TYPE, DataService\r
+ .getModelInfo(_this.componentId)["serviceTypeName"]);\r
+ addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());\r
+ }\r
addToList(FIELD.NAME.SERVICE_INVARIANT_UUID, DataService\r
.getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
addToList(FIELD.NAME.SERVICE_VERSION, DataService\r
addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService\r
.getServiceInstanceName());\r
addToList(FIELD.NAME.MODEL_NAME, DataService\r
- .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
+ .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);\r
addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService\r
.getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
addToList(FIELD.NAME.MODEL_VERSION, DataService\r
addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService\r
.getServiceInstanceName());\r
addToList(FIELD.NAME.MODEL_NAME, DataService\r
- .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
+ .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);\r
addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService\r
.getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
addToList(FIELD.NAME.MODEL_VERSION, DataService\r
addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService\r
.getServiceInstanceName());\r
addToList(FIELD.NAME.MODEL_NAME, DataService\r
- .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
+ .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);\r
addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService\r
.getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
addToList(FIELD.NAME.MODEL_VERSION, DataService\r
isUserProvidedNaming = true;\r
}\r
var parameterList;\r
- if (_this.componentId === COMPONENT.SERVICE) {\r
+ var hsf = DataService.getHideServiceFields() || false;\r
+ if (_this.componentId === COMPONENT.SERVICE && !hsf) { \r
if ( DataService.getALaCarte() ) {\r
parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];\r
parameterList = parameterList.concat([ getSubscribersParameter(),\r
parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];\r
\r
}\r
- parameterList = parameterList.concat([ getSubscribersParameter(),\r
- FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);\r
+ parameterList = parameterList.concat([ getSubscribersParameter() ]);\r
parameterList = parameterList.concat([ getServiceId(),\r
FIELD.PARAMETER.SERVICE_TYPE,\r
FIELD.PARAMETER.LCP_REGION,\r
+ FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
FIELD.PARAMETER.TENANT_DISABLED ]);\r
}\r
}\r
FIELD.PARAMETER.TENANT_DISABLED ]);\r
}\r
}\r
-\r
parameterList.push(FIELD.PARAMETER.SUPPRESS_ROLLBACK);\r
+ if(_this.componentId === COMPONENT.VF_MODULE ){\r
+ parameterList.push({name: "SDN-C Pre-Load",\r
+ id: "sdncPreload",\r
+ type: "checkbox",\r
+ isEnabled: true,\r
+ isRequired: false\r
+ }\r
+ );\r
+ parameterList.push({name: "Upload Supplementory Data file",\r
+ id: "uploadSupplementoryDataFile",\r
+ type: "checkbox",\r
+ isEnabled: true,\r
+ isRequired: false\r
+ }\r
+ );\r
+ \r
+ parameterList.push({name: "Supplemetory file (JSON format)",\r
+ id: "supplementoryDataFile",\r
+ type: "file",\r
+ isRequired: false,\r
+ isVisiblity: false\r
+ }\r
+ );\r
+ }\r
+ \r
+ if( VIDCONFIGURATION.UPLOAD_SUPPLEMENTARY_STATUS_CHECK_ENABLED && _this.componentId === COMPONENT.VOLUME_GROUP){\r
+ parameterList.push({name: "Upload Supplementory Data file",\r
+ id: "uploadSupplementoryDataFile",\r
+ type: "checkbox",\r
+ isEnabled: true,\r
+ isRequired: false\r
+ }\r
+ );\r
+ \r
+ parameterList.push({name: "Supplemetory file (JSON format)",\r
+ id: "supplementoryDataFile",\r
+ type: "file",\r
+ isRequired: false,\r
+ isVisiblity: false\r
+ }\r
+ );\r
+ }\r
\r
addArbitraryParameters(parameterList);\r
\r
case PARAMETER.RANGE:\r
break;\r
case PARAMETER.LIST:\r
+ parameter.type = PARAMETER.LIST;\r
break;\r
case PARAMETER.MAP:\r
parameter.type = PARAMETER.MAP;\r
parameterList.push(parameter);\r
}\r
}\r
+ DataService.setArbitraryParameters (parameterList);\r
}\r
};\r
\r
\r
var getMsoRequestDetails = function(parameterList) {\r
console.log("getMsoRequestDetails invoked, parameterList="); console.log(JSON.stringify(parameterList,null,4));\r
+ //console.log("getMsoRequestDetails invoked, DataService.getArbitraryParameters()="); \r
+ //console.log(JSON.stringify(DataService.getArbitraryParameters(),null,4));\r
+ \r
var modelInfo = DataService.getModelInfo(_this.componentId);\r
var requestorloggedInId = DataService.getLoggedInUserId();\r
if (requestorloggedInId == null)\r
\r
var getServiceId = function() {\r
var serviceIdList = DataService.getServiceIdList();\r
- var serviceTypeList = DataService.getSubscriptionServiceTypeList();\r
+ //var serviceTypeList = DataService.getSubscriptionServiceTypeList();\r
var parameter = FIELD.PARAMETER.PRODUCT_FAMILY;\r
parameter.optionList = new Array();\r
- \r
- if (serviceTypeList == null) {\r
- getSubscriptionServiceTypeList();\r
- serviceTypeList = DataService.getSubscriptionServiceTypeList();\r
- }\r
- var went = 0;\r
- if ( UtilityService.hasContents (serviceIdList) ) {\r
+ if ( UtilityService.hasContents(serviceIdList) ) {\r
+ // load them all\r
for (var i = 0; i < serviceIdList.length; i++) {\r
- var go = 0;\r
- var name = serviceIdList[i].id;\r
- \r
- if (UtilityService.hasContents(serviceTypeList) ) { \r
- console.log("STL: " + serviceTypeList);\r
- for (var k = 0; k < serviceTypeList.length; k++) {\r
- if (angular.equals(name,serviceTypeList[k])) {\r
- go = 1;\r
- went = 1;\r
- }\r
- }\r
- } else { \r
- go = 1;\r
- went = 1;\r
- }\r
- if (go == 1) {\r
- parameter.optionList.push({\r
- id : serviceIdList[i].id,\r
- name : serviceIdList[i].description\r
- });\r
- }\r
- } // load them all, ours wasn't in the list\r
- if (went == 0) { \r
- for (var i = 0; i < serviceIdList.length; i++) {\r
- parameter.optionList.push({\r
- id : serviceIdList[i].id,\r
- name : serviceIdList[i].description\r
- });\r
- }\r
+ parameter.optionList.push({\r
+ id : serviceIdList[i].id,\r
+ name : serviceIdList[i].description\r
+ });\r
}\r
}\r
+\r
return parameter;\r
};\r
\r
var getLcpRegion = function() {\r
var cloudRegionTenantList = DataService.getCloudRegionTenantList();\r
+ console.log ( "cloudRegionTenantList=");\r
+ console.log ( JSON.stringify (cloudRegionTenantList, null, 4 ));\r
+\r
var parameter = FIELD.PARAMETER.LCP_REGION;\r
if ( UtilityService.hasContents (cloudRegionTenantList) ) {\r
parameter.optionList = new Array();\r
};\r
var updateUserParameterList = function(updatedId, parameterListControl) {\r
console.log ("updateUserParameterList() updatedId=" + updatedId);\r
- if (updatedId === FIELD.ID.LCP_REGION) {\r
+ if (updatedId === FIELD.ID.SDN_C_PRELOAD) {\r
+ var list = parameterListControl.getList(updatedId);\r
+ if($('input[parameter-id="'+updatedId+'"]').is(':checked')){\r
+ FIELD.PARAMETER.SDN_C_PRELOAD_CHECKED.value=true;\r
+ parameterListControl\r
+ .updateList([ FIELD.PARAMETER.SDN_C_PRELOAD_CHECKED ]);\r
+ }else{\r
+ parameterListControl\r
+ .updateList([ FIELD.PARAMETER.SDN_C_PRELOAD_UNCHECKED ]);\r
+ }\r
+ }else if (updatedId === FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE) {\r
+ if($('input[parameter-id="'+updatedId+'"]').is(':checked')){\r
+ $('input[parameter-id="'+FIELD.ID.SUPPLEMENTORY_DATA_FILE+'"]').closest('tr').show();\r
+ FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED.value=true;\r
+ parameterListControl\r
+ .updateList([ FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED ]);\r
+ }else{\r
+ $('input[parameter-id="'+FIELD.ID.SUPPLEMENTORY_DATA_FILE+'"]').closest('tr').hide();\r
+ parameterListControl\r
+ .updateList([ FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_UNCHECKED ]);\r
+ }\r
+ } else if (updatedId === FIELD.ID.SUPPLEMENTORY_DATA_FILE) {\r
+ var filePath = $('input[parameter-id="'+updatedId+'"]').val();\r
+ var arr =filePath.split('.');\r
+ var fileExt = arr[arr.length-1];\r
+ if(fileExt!='' && fileExt.toLowerCase()!='json'){\r
+ $('input[parameter-id="'+updatedId+'"]').val('');\r
+ showError("Invalid file format.", 'Please select *.json format file.');\r
+ return false;\r
+ }\r
+ var fileJsonData={};\r
+ var fileInput = document.getElementById(updatedId);\r
+ var file = fileInput.files[0];\r
+ var reader = new FileReader();\r
+ reader.onload = function(e) {\r
+ try{\r
+ fileJsonData = JSON.parse(reader.result);\r
+ FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE['value']=(JSON.stringify(fileJsonData)).toString();\r
+ parameterListControl\r
+ .updateList([ FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE ]);\r
+ }catch(e){\r
+ alert('Invalid json format.');\r
+ showError("Invalid data format.", 'Please check your file content it is not in json format.');\r
+ }\r
+ }\r
+ reader.readAsText(file);\r
+ } else if (updatedId === FIELD.ID.LCP_REGION) {\r
var list = parameterListControl.getList(updatedId);\r
if (list[0].selectedIndex >= 0) {\r
parameterListControl\r
}\r
\r
appDS2.factory("CreationService", [ "$log", "AaiService", "AsdcService",\r
- "DataService", "ComponentService", "COMPONENT", "FIELD", "PARAMETER",\r
+ "DataService","VIDCONFIGURATION", "ComponentService", "COMPONENT", "FIELD", "PARAMETER",\r
"UtilityService", CreationService ]);\r
setServiceUuid : function(serviceUuid) {\r
_this.serviceUuid = serviceUuid;\r
},\r
+ getServiceTypeName : function() {\r
+ return _this.serviceTypeName;\r
+ },\r
+ setServiceTypeName : function(serviceTypeName) {\r
+ _this.serviceTypeName = serviceTypeName;\r
+ },\r
+ getCreateSubscriberName : function() {\r
+ return _this.createSubscriberName;\r
+ },\r
+ setCreateSubscriberName : function(createSubscriberName) {\r
+ _this.createSubscriberName = createSubscriberName;\r
+ },\r
+ getSdncPreload : function() {\r
+ return _this.sdncPreload;\r
+ },\r
+ setSdncPreload : function(sdncPreload) {\r
+ _this.sdncPreload = sdncPreload;\r
+ },\r
+ getUploadSupplementoryDataFile : function() {\r
+ return _this.uploadSupplementoryDataFile;\r
+ },\r
+ setUploadSupplementoryDataFile : function(uploadSupplementoryDataFile) {\r
+ _this.uploadSupplementoryDataFile = uploadSupplementoryDataFile;\r
+ },\r
+ getSupplementoryDataFile : function() {\r
+ return _this.supplementoryDataFile;\r
+ },\r
+ setSupplementoryDataFile : function(supplementoryDataFile) {\r
+ _this.supplementoryDataFile = supplementoryDataFile;\r
+ },\r
getSubscriberId : function() {\r
return _this.subscriberId;\r
},\r
},\r
setUpdatedVNFProvStatus : function(r) {\r
_this.updatedvnfProvStatus = r;\r
+ },\r
+ setArbitraryParameters : function (pList) {\r
+ _this.arbitraryParameters = pList;\r
+ },\r
+ getArbitraryParameters : function () {\r
+ return _this.arbitraryParameters;\r
+ },\r
+ setHideServiceFields:function(b){\r
+ _this.hideServiceFields=b;\r
+ },\r
+ getHideServiceFields:function(){\r
+ return _this.hideServiceFields;\r
}\r
}\r
}\r
* string for some known conditions.\r
*/\r
\r
-var UtilityService = function($log, DataService) {\r
+var UtilityService = function($log, DataService, PARAMETER) {\r
\r
var _this = this;\r
var convertModel = function (serviceModel) {\r
if (serviceModel.service != null && serviceModel.service.inputs != null &&\r
serviceModel.service.inputs[cmdObj.inputName] != null ) {\r
networkModelDisplayInputs[cmdObj.inputName] = (serviceModel.service.inputs[cmdObj.inputName]);\r
+ networkModelDisplayInputs[cmdObj.inputName][PARAMETER.DISPLAY_NAME] = cmdObj.displayName;\r
}\r
}\r
\r
if (serviceModel.service != null && serviceModel.service.inputs != null &&\r
serviceModel.service.inputs[cmdObj.inputName] != null ) {\r
vnfModelDisplayInputs[cmdObj.inputName] = (serviceModel.service.inputs[cmdObj.inputName]);\r
+ vnfModelDisplayInputs[cmdObj.inputName][PARAMETER.DISPLAY_NAME] = cmdObj.displayName;\r
}\r
}\r
\r
if (hasContents (vnfModel.properties.nf_function) ) {\r
vnf_function = vnfModel.properties.nf_function;\r
}\r
- if (hasContents (vnfModel.properties.nf_code) ) {\r
- vnf_code = vnfModel.properties.nf_code;\r
+ if (hasContents (vnfModel.properties.nf_naming_code) ) {\r
+ vnf_code = vnfModel.properties.nf_naming_code;\r
}\r
}\r
convertedAsdcModel.vnfs[vnfCustomizationUuid]["nfType"] = vnf_type;\r
if (serviceModel.service != null && serviceModel.service.inputs != null &&\r
serviceModel.service.inputs[cmdObj.inputName] != null ) {\r
networkModelDisplayInputs[cmdObj.inputName] = (serviceModel.service.inputs[cmdObj.inputName]);\r
+ networkModelDisplayInputs[cmdObj.inputName][PARAMETER.DISPLAY_NAME] = cmdObj.displayName;\r
}\r
}\r
\r
if (serviceModel.service != null && serviceModel.service.inputs != null &&\r
serviceModel.service.inputs[cmdObj.inputName] != null ) {\r
vnfModelDisplayInputs[cmdObj.inputName] = (serviceModel.service.inputs[cmdObj.inputName]);\r
+ vnfModelDisplayInputs[cmdObj.inputName][PARAMETER.DISPLAY_NAME] = cmdObj.displayName;\r
}\r
}\r
\r
}\r
\r
//app.factory("UtilityService", UtilityService);\r
-appDS2.factory("UtilityService", [ "$log", "DataService", UtilityService ]);\r
+appDS2.factory("UtilityService", [ "$log", "DataService", "PARAMETER", UtilityService ]);\r
<thead att-table-row type="header">\r
<tr>\r
<th att-table-header key="action">Action</th>\r
- <th att-table-header key="uuid">UUID</th>\r
- <th att-table-header key="invariantUUID">Invariant UUID</th>\r
- <th att-table-header default-sort="A" key="name">Name</th>\r
- <th att-table-header key="version">Version</th>\r
- <th att-table-header key="category">Category</th>\r
- <th att-table-header key="distributionStatus">Distribution Status</th>\r
- <th att-table-header key="lastUpdaterUserId">Last Updated By</th>\r
- <th att-table-header key="toscaModelUrl">Tosca Model</th>\r
+ <th att-table-header key="serviceInstanceName">Service Name</th>\r
+ <th att-table-header key="serviceDescription">Service Description</th>\r
+ <th att-table-header key="serviceType">Service Type</th>\r
+ <th att-table-header key="serviceUuid">Service UUID</th>\r
+ <th att-table-header key="serviceInvariantUuid">Service Invariant UUID</th>\r
+ <th att-table-header key="serviceVersion">Service Version</th>\r
+ <th att-table-header key="actions">Action</th>\r
</tr>\r
</thead>\r
<tbody att-table-row type="body" row-repeat="service in services">\r
- <tr>\r
- <td att-table-body ><button type=button ng-click="deployService(service)" att-button btn-type="primary" size="small">Deploy</button></td>\r
- <td att-table-body ng-bind="service['uuid']"></td>\r
- <td att-table-body ng-bind="service['invariantUUID']"></td>\r
- <td att-table-body ng-bind="service['name']"></td>\r
- <td att-table-body ng-bind="service['version']"></td>\r
- <td att-table-body ng-bind="service['category']"></td>\r
- <td att-table-body ng-bind="service['distributionStatus']"></td>\r
- <td att-table-body ng-bind="service['lastUpdaterUserId']"></td>\r
- <td att-table-body ng-bind="service['toscaModelUrl']"></td>\r
- </tr> \r
+ <tr>\r
+ <td att-table-body ><button type=button ng-click="deployService(service,true)" att-button btn-type="primary" size="small">Deploy</button></td>\r
+ <td att-table-body ng-bind="service['extra-properties']['extra-property'][2]['property-value']"></td>\r
+ <td att-table-body ng-bind="service['extra-properties']['extra-property'][0]['property-value']"></td>\r
+ <td att-table-body ng-bind="service['extra-properties']['extra-property'][3]['property-value']"></td>\r
+ <td att-table-body ng-bind="service['extra-properties']['extra-property'][1]['property-value']"></td>\r
+ <td att-table-body ng-bind="service['extra-properties']['extra-property'][4]['property-value']"></td>\r
+ <td att-table-body ng-bind="service['extra-properties']['extra-property'][6]['property-value']"></td>\r
+ <td att-table-body ><button type=button ng-click="deploService(service)" att-button btn-type="primary" size="small">Previous Versions</button></td>\r
+ </tr>\r
</tbody> \r
</table>\r
+ <div > \r
+ <center><button type="submit" class="btn btn-primary" size="small" ng-click="cancelCreateSIType();">Cancel</button></center>\r
+ </div>\r
<table width='100%'>\r
<tr>\r
<td width='33%' valign='middle'>\r
-<!--\r
- ============LICENSE_START=======================================================\r
- VID\r
- ================================================================================\r
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
- ================================================================================\r
- Licensed under the Apache License, Version 2.0 (the "License");\r
- you may not use this file except in compliance with the License.\r
- You may obtain a copy of the License at\r
- \r
- http://www.apache.org/licenses/LICENSE-2.0\r
- \r
- Unless required by applicable law or agreed to in writing, software\r
- distributed under the License is distributed on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- See the License for the specific language governing permissions and\r
- limitations under the License.\r
- ============LICENSE_END=========================================================\r
- -->\r
+<!--
+ ============LICENSE_START=======================================================
+ VID
+ ================================================================================
+ Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ============LICENSE_END=========================================================
+ -->
+
+<div ng-controller="creationDialogController">
+
+ <div ng-show="isDialogVisible">
+ <div class="titleLine">
+ <img src="app/vid/images/spinner.gif"
+ ngx-visible="{{isSpinnerVisible}}"></img>
+ <h3>Create {{componentName}} -- {{createType}}</h3>
+ </div>
+
+ <div class="error" ng-show="isErrorVisible">
+ <img src="app/vid/images/error.png"></img>{{error}}
+ </div>
+
+ <div ngx-visible="{{isDataVisible}}">
+ <parameter-block control="summaryControl"></parameter-block>
+ <h4>
+ User Provided Data (<img class="requiredIndicator"
+ src="app/vid/images/asterisk.png" height='10' width='10'></img> indicates required field)
+ </h4>
+ <parameter-block control="userProvidedControl"
+ callback="userParameterChanged(id);" editable></parameter-block>
\r
-<div ng-controller="creationDialogController">\r
-\r
- <div ng-show="isDialogVisible">\r
- <div class="titleLine">\r
- <img src="app/vid/images/spinner.gif"\r
- ngx-visible="{{isSpinnerVisible}}"></img>\r
- <h3>Create {{componentName}} -- {{createType}}</h3>\r
- </div>\r
-\r
- <div class="error" ng-show="isErrorVisible">\r
- <img src="app/vid/images/error.png"></img>{{error}}\r
- </div>\r
-\r
- <div ngx-visible="{{isDataVisible}}">\r
- <parameter-block control="summaryControl"></parameter-block>\r
- <h4>\r
- User Provided Data (<img class="requiredIndicator"\r
- src="app/vid/images/asterisk.png" height='10' width='10'></img> indicates required field)\r
- </h4>\r
- <parameter-block control="userProvidedControl"\r
- callback="userParameterChanged(id);" editable></parameter-block>\r
-\r
- <div class="prompt">\r
- <p>\r
- Enter Data and <span>Confirm</span> to<br />Create <span>{{componentName}}</span>\r
- </p>\r
- <p>\r
- <span>Cancel</span> to Return to Previous Page.<br />Data entered\r
- will be lost\r
- </p>\r
- </div>\r
-\r
- </div>\r
- <div class="buttonRow">\r
- <button ngx-enabled="{{isConfirmEnabled}}" att-button size="small"\r
- ng-click="confirm();">Confirm</button>\r
- <button type="button" ng-click="cancel();" att-button\r
- btn-type="primary" size="small">Cancel</button>\r
- </div>\r
- </div>\r
-\r
- <div ng-include="'app/vid/scripts/view-models/msoCommit.htm'"></div>\r
-\r
-</div>\r
+ <div class="prompt">
+ <p>
+ Enter Data and <span>Confirm</span> to<br />Create <span>{{componentName}}</span>
+ </p>
+ <p>
+ <span>Cancel</span> to Return to Previous Page.<br />Data entered
+ will be lost
+ </p>
+ </div>
+
+ </div>
+ <div class="buttonRow">
+ <button ngx-enabled="{{isConfirmEnabled}}" att-button size="small"
+ ng-click="confirm();">Confirm</button>
+ <button type="button" ng-click="cancel();" att-button
+ btn-type="primary" size="small">Cancel</button>
+ </div>
+ </div>
+
+ <div ng-include="'app/vid/scripts/view-models/msoCommit.htm'"></div>
+
+</div>
<th att-table-header key="distributionStatus">Distribution Status</th>\r
<th att-table-header key="lastUpdaterUserId">Last Updated By</th>\r
<th att-table-header key="toscaModelUrl">Tosca Model</th>\r
+ <th att-table-header key="actions">Action</th>\r
</tr>\r
</thead>\r
<tbody att-table-row type="body" row-repeat="service in services">\r
<td att-table-body ng-bind="service['distributionStatus']"></td>\r
<td att-table-body ng-bind="service['lastUpdaterUserId']"></td>\r
<td att-table-body ng-bind="service['toscaModelUrl']"></td>\r
+ <td att-table-body ><button type=button ng-click="deloyService(service)" att-button btn-type="primary" size="small">Previous Versions</button></td>\r
</tr> \r
</tbody> \r
</table>\r