diff options
31 files changed, 1876 insertions, 28 deletions
diff --git a/appc-inbound/appc-interfaces-service/.gitignore b/appc-inbound/appc-interfaces-service/.gitignore new file mode 100644 index 000000000..75b68b80e --- /dev/null +++ b/appc-inbound/appc-interfaces-service/.gitignore @@ -0,0 +1,22 @@ +# Target dirs in all projects
+**/target/*
+
+# Generated models and features
+**/bin/*
+
+# MANIFEST.MF is updated on every clean install
+**/src/main/resources/META-INF/
+**/src/main/yang-gen-sal
+**/src/main/yang-gen-config
+
+.project
+
+*.prefs
+.classpath
+**/.classpath
+/target/
+logs/
+debug-logs/
+/.settings/
+**/*.iml
+/.idea/
diff --git a/appc-inbound/appc-interfaces-service/.pydevproject b/appc-inbound/appc-interfaces-service/.pydevproject new file mode 100644 index 000000000..40e9f40a0 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/.pydevproject @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?eclipse-pydev version="1.0"?><pydev_project> +<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property> +<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property> +</pydev_project> diff --git a/appc-inbound/appc-interfaces-service/bundle/.gitignore b/appc-inbound/appc-interfaces-service/bundle/.gitignore new file mode 100644 index 000000000..b83d22266 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/bundle/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/appc-inbound/appc-interfaces-service/bundle/pom.xml b/appc-inbound/appc-interfaces-service/bundle/pom.xml new file mode 100644 index 000000000..db24f603c --- /dev/null +++ b/appc-inbound/appc-interfaces-service/bundle/pom.xml @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <artifactId>appc-interfaces-service</artifactId> + <groupId>org.onap.appc</groupId> + <version>1.3.0-SNAPSHOT</version> + </parent> + <artifactId>appc-interfaces-service-bundle</artifactId> + <packaging>bundle</packaging> + + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Export-Package>org.onap.appc.interfaces.services</Export-Package> + <Import-Package>org.onap.appc.aai.client,*;resolution:=optional</Import-Package> + <DynamicImport-Package>*</DynamicImport-Package> + <Embed-Transitive>true</Embed-Transitive> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + + <dependencies> + <dependency> + <groupId>org.onap.appc</groupId> + <artifactId>appc-interfaces-service-model</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.onap.appc</groupId> + <artifactId>appc-aai-client-provider</artifactId> + <version>${project.version}</version> + </dependency> + <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.8.0</version> + </dependency> + <dependency> + <groupId>org.onap.ccsdk.sli.adaptors</groupId> + <artifactId>aai-service-provider</artifactId> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.opendaylight.controller</groupId> + <artifactId>config-api</artifactId> + </dependency> + <dependency> + <groupId>org.opendaylight.controller</groupId> + <artifactId>sal-binding-config</artifactId> + </dependency> + <dependency> + <groupId>org.opendaylight.controller</groupId> + <artifactId>sal-binding-api</artifactId> + </dependency> + <dependency> + <groupId>org.opendaylight.controller</groupId> + <artifactId>sal-common-util</artifactId> + </dependency> + <dependency> + <artifactId>sal-test-model</artifactId> + <groupId>org.opendaylight.controller</groupId> + <scope>test</scope> + </dependency> + <dependency> + <artifactId>sal-rest-connector</artifactId> + <groupId>org.opendaylight.netconf</groupId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.opendaylight.controller</groupId> + <artifactId>sal-binding-broker-impl</artifactId> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>com.att.eelf</groupId> + <artifactId>eelf-core</artifactId> + </dependency> + <dependency> + <groupId>com.sun.jersey</groupId> + <artifactId>jersey-client</artifactId> + <version>1.17</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>com.fasterxml.jackson.dataformat</groupId> + <artifactId>jackson-dataformat-yaml</artifactId> + <version>2.3.0</version> + </dependency> + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-databind</artifactId> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + </dependency> + <dependency> + <groupId>org.apache.velocity</groupId> + <artifactId>velocity</artifactId> + <version>1.7</version> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + </dependency> + </dependencies> +</project> diff --git a/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/InterfacesServiceProvider.java b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/InterfacesServiceProvider.java new file mode 100644 index 000000000..df9371f66 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/InterfacesServiceProvider.java @@ -0,0 +1,66 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.interfaces.service; + +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration; +import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.opendaylight.yang.gen.v1.org.onap.appc.interfaces.service.rev170818.InterfacesServiceService; +import org.onap.appc.interfaces.service.InterfacesServiceProviderImpl; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +public class InterfacesServiceProvider{ + + private static final EELFLogger log = EELFManager.getInstance().getLogger(InterfacesServiceProvider.class); + + private final DataBroker dataBroker; + private final RpcProviderRegistry rpcProviderRegistry; + private RpcRegistration <InterfacesServiceService> serviceRegistration; + + public InterfacesServiceProvider(final DataBroker dataBroker, RpcProviderRegistry rpcProviderRegistry) { + this.dataBroker = dataBroker; + this.rpcProviderRegistry = rpcProviderRegistry; + } + /** + * Method called when the blueprint container is created. + */ + public void init() { + // initialize data broker + this.serviceRegistration = this.rpcProviderRegistry.addRpcImplementation(InterfacesServiceService.class, + new InterfacesServiceProviderImpl()); + log.info("DataCollectorProvider Session Initiated"); + } + /** + * Method called when the blueprint container is destroyed. + */ + public void close() { + if(this.serviceRegistration != null){ + this.serviceRegistration.close(); + } + log.info("DataCollectorProvider Closed"); + } +} diff --git a/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/InterfacesServiceProviderImpl.java b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/InterfacesServiceProviderImpl.java new file mode 100644 index 000000000..8e114a3c6 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/InterfacesServiceProviderImpl.java @@ -0,0 +1,76 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.interfaces.service; + +import java.util.concurrent.Future; + +import org.opendaylight.yang.gen.v1.org.onap.appc.interfaces.service.rev170818.ExecuteServiceInput; +import org.opendaylight.yang.gen.v1.org.onap.appc.interfaces.service.rev170818.ExecuteServiceOutput; +import org.opendaylight.yang.gen.v1.org.onap.appc.interfaces.service.rev170818.ExecuteServiceOutputBuilder; +import org.opendaylight.yang.gen.v1.org.onap.appc.interfaces.service.rev170818.InterfacesServiceService; +import org.opendaylight.yang.gen.v1.org.onap.appc.interfaces.service.rev170818.response.info.ResponseInfoBuilder; +import org.opendaylight.yang.gen.v1.org.onap.appc.interfaces.service.rev170818.status.StatusBuilder; +import org.opendaylight.yangtools.yang.common.RpcResult; +import org.opendaylight.yangtools.yang.common.RpcResultBuilder; +import org.onap.appc.interfaces.service.executor.ServiceExecutor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.common.util.concurrent.Futures; + +public class InterfacesServiceProviderImpl implements InterfacesServiceService{ + + private static final Logger log = LoggerFactory.getLogger(InterfacesServiceProviderImpl.class); + + @Override + public Future<RpcResult<ExecuteServiceOutput>> executeService(ExecuteServiceInput input) { + + log.info("Received Request: " + input.getRequest().getRequestId() + " Action : " + + input.getRequest().getAction() + " with RequestData :" + input.getRequest().getRequestData() + " and data-Type : " + input.getRequest().getRequestDataType()); + String request_id = input.getRequest().getRequestId(); + String action = input.getRequest().getAction(); + ResponseInfoBuilder responseInfoBuilder = new ResponseInfoBuilder(); + ExecuteServiceOutputBuilder executeServicebuilder = new ExecuteServiceOutputBuilder(); + ServiceExecutor serviceExecutor = new ServiceExecutor(); + StatusBuilder statusBuilder = new StatusBuilder(); + try{ + String response = serviceExecutor.execute(action, input.getRequest().getRequestData(), input.getRequest().getRequestDataType()); + responseInfoBuilder.setBlock(response); + responseInfoBuilder.setRequestId(request_id); + statusBuilder.setCode("400"); + statusBuilder.setMessage("success"); + } + catch(Exception e){ + log.error("Error" + e.getMessage()); + e.printStackTrace(); + statusBuilder.setCode("401"); + statusBuilder.setMessage("failuer"); + } + executeServicebuilder.setResponseInfo(responseInfoBuilder.build()); + executeServicebuilder.setStatus(statusBuilder.build()); + RpcResult<ExecuteServiceOutput> result = RpcResultBuilder.<ExecuteServiceOutput>status(true).withResult(executeServicebuilder.build()).build(); + return Futures.immediateFuture(result); + } +} diff --git a/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/data/ActionIdentifier.java b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/data/ActionIdentifier.java new file mode 100644 index 000000000..50a47831d --- /dev/null +++ b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/data/ActionIdentifier.java @@ -0,0 +1,86 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.interfaces.service.data; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class ActionIdentifier { + + @JsonProperty("service-instance-id") + private String serviceInstanceID; + + @JsonProperty("vnf-id") + private String vnfId; + + @JsonProperty("vf-module-id") + private String vfModuleId; + + @JsonProperty("vserver-id") + private String vServerId; + + @JsonProperty("vnfc-name") + private String vnfcName; + + public String getServiceInstanceID() { + return serviceInstanceID; + } + + public void setServiceInstanceID(String serviceInstanceID) { + this.serviceInstanceID = serviceInstanceID; + } + + public String getVnfId() { + return vnfId; + } + + public void setVnfId(String vnfId) { + this.vnfId = vnfId; + } + + public String getVfModuleId() { + return vfModuleId; + } + + public void setVfModuleId(String vfModuleId) { + this.vfModuleId = vfModuleId; + } + + public String getvServerId() { + return vServerId; + } + + public void setvServerId(String vServerId) { + this.vServerId = vServerId; + } + + public String getVnfcName() { + return vnfcName; + } + + public void setVnfcName(String vnfcName) { + this.vnfcName = vnfcName; + } + +} diff --git a/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/data/Request.java b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/data/Request.java new file mode 100644 index 000000000..eff4814de --- /dev/null +++ b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/data/Request.java @@ -0,0 +1,53 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.interfaces.service.data; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class Request { + + @JsonProperty("action") + private String action; + + @JsonProperty("action-identifiers") + private ActionIdentifier actionIdentifiers; + + public String getAction() { + return action; + } + + public void setAction(String action) { + this.action = action; + } + + public ActionIdentifier getActionIdentifiers() { + return actionIdentifiers; + } + + public void setActionIdentifiers(ActionIdentifier actionIdentifiers) { + this.actionIdentifiers = actionIdentifiers; + } + +} diff --git a/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/data/ScopeOverlap.java b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/data/ScopeOverlap.java new file mode 100644 index 000000000..bfeb70fce --- /dev/null +++ b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/data/ScopeOverlap.java @@ -0,0 +1,76 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.interfaces.service.data; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class ScopeOverlap { + + @JsonProperty("vnf-id") + private String vnfId; + + @JsonProperty("current-request") + private Request currentRequest; + + @JsonProperty("in-progress-requests") + private List<Request> inProgressRequests; + + private String overlap; + + public String getVnfId() { + return vnfId; + } + + public void setVnfId(String vnfId) { + this.vnfId = vnfId; + } + + public Request getCurrentRequest() { + return currentRequest; + } + + public void setCurrentRequest(Request currentRequest) { + this.currentRequest = currentRequest; + } + + public List<Request> getInProgressRequest() { + return inProgressRequests; + } + + public void setInProgressRequest(List<Request> inProgressRequests) { + this.inProgressRequests = inProgressRequests; + } + + public String getOverlap() { + return overlap; + } + + public void setOverlap(String overlap) { + this.overlap = overlap; + } + +} diff --git a/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/executor/RequestValidator.java b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/executor/RequestValidator.java new file mode 100644 index 000000000..b37a5e4c8 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/executor/RequestValidator.java @@ -0,0 +1,78 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.interfaces.service.executor; + +import java.util.ArrayList; +import java.util.List; + +import org.onap.appc.interfaces.service.utils.ServiceConstants; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class RequestValidator { + + private static final Logger log = LoggerFactory.getLogger(RequestValidator.class); + + public static void validate(String action, String requestData, String requestDataType) throws Exception { + log.debug("Received validation for action= " + action + " Data :" + requestData); + try { + if (requestData.isEmpty()) { + throw new Exception("Request Data is Empty"); + } + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode payloadObject = objectMapper.readTree(requestData); + log.info("payloadObject" + payloadObject); + if (payloadObject.get(ServiceConstants.VNF) == null) + throw new Exception("VNF-ID is null"); + String vnfId = payloadObject.get(ServiceConstants.VNF).toString(); + if (vnfId.isEmpty()) + throw new Exception("VNF-ID is blank"); + if (payloadObject.get(ServiceConstants.CURRENTREQUEST) == null) + throw new Exception("Current request is null"); + String cRequest = payloadObject.get(ServiceConstants.CURRENTREQUEST).toString(); + if (cRequest.isEmpty()) + throw new Exception("Current Request is blank"); + JsonNode currentRequest = payloadObject.get(ServiceConstants.CURRENTREQUEST); + if (currentRequest.get(ServiceConstants.ACTION) == null) + throw new Exception("Action is null in Current Request"); + String cRequestAction = currentRequest.get(ServiceConstants.ACTION).toString(); + if (cRequestAction.isEmpty()) + throw new Exception("Action is blank in Current Request"); + if (currentRequest.get(ServiceConstants.ACTIONIDENTIFIER) == null) + throw new Exception("Action Identifier is null in Current Request"); + String cRequestActionIdentifier = currentRequest.get(ServiceConstants.ACTIONIDENTIFIER).toString(); + if (cRequestActionIdentifier.isEmpty()) + throw new Exception("Action Identifier is blank in Current Request"); + } catch (Exception e) { + e.printStackTrace(); + log.debug("Error while validating: " + e.getMessage()); + throw e; + } + } + +} diff --git a/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/executor/ServiceExecutor.java b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/executor/ServiceExecutor.java new file mode 100644 index 000000000..f72157656 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/executor/ServiceExecutor.java @@ -0,0 +1,79 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.interfaces.service.executor; + +import java.io.IOException; + +import org.onap.appc.interfaces.service.InterfacesServiceProviderImpl; +import org.onap.appc.interfaces.service.executorImpl.ServiceExecutorImpl; +import org.onap.appc.interfaces.service.utils.ServiceConstants; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; + +public class ServiceExecutor { + + private static final Logger log = LoggerFactory.getLogger(ServiceExecutor.class); + public String execute(String action, String requestData, String requestDataType) throws Exception{ + String response = null; + log.info("Received execute request for action : " + action + " with Payload : " + requestData); + try{ + RequestValidator.validate(action, requestData, requestData); + switch (action) { + case ServiceConstants.REQUESTOVERLAP: + response = isRequestOverLap(requestData); + break; + case ServiceConstants.GEDATABYMODEL: + response = getDataByModel(action, requestData, requestDataType); + break; + default: + throw new Exception(" Action " + action + " not found while processing request "); + } + }catch(Exception e){ + log.info("Error while checking for ScopeOverlap " + e.getMessage()); + e.printStackTrace(); + throw e; + } + return response; + } + + private String getDataByModel(String action, String requestData, String requestDataType) { + + return null; + } + + private String isRequestOverLap(String requestData) throws Exception { + + ServiceExecutorImpl serviceExecutor = new ServiceExecutorImpl(); + try { + return serviceExecutor.isRequestOverLap(requestData); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } +} diff --git a/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/executorImpl/ServiceExecutorImpl.java b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/executorImpl/ServiceExecutorImpl.java new file mode 100644 index 000000000..3b30c3e8c --- /dev/null +++ b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/executorImpl/ServiceExecutorImpl.java @@ -0,0 +1,156 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.interfaces.service.executorImpl; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.onap.appc.aai.client.aai.AaiService; +import org.onap.appc.interfaces.service.data.Request; +import org.onap.appc.interfaces.service.data.ScopeOverlap; +import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.adaptors.aai.AAIClient; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Strings; + +public class ServiceExecutorImpl { + + private static final EELFLogger log = EELFManager.getInstance().getLogger(ServiceExecutorImpl.class); + private AAIClient aaiClient; + public String isRequestOverLap(String requestData) throws Exception { + String response = "\"requestOverlap\" : "; + log.info("Response from ServiceExecutorImpl"); + ScopeOverlap scopeOverlap = new ScopeOverlap(); + ObjectMapper mapper = new ObjectMapper(); + scopeOverlap = mapper.readValue(requestData, ScopeOverlap.class); + // return response + String.valueOf(checkForOverLap(scopeOverlap)); + boolean isOverlap = checkForOverLap(scopeOverlap); + scopeOverlap.setOverlap(String.valueOf(isOverlap)); + if (scopeOverlap.getOverlap() != null && scopeOverlap.getOverlap().equalsIgnoreCase("false")){ + log.info(response + "false"); + return response + "false"; + } + else{ + log.info(response + "true"); + return response + "true"; + } + } + + private boolean checkForOverLap(ScopeOverlap scopeOverlap) throws Exception { + log.info("Checking for isScopeOverlap"); + if (scopeOverlap.getInProgressRequest() == null) { + return Boolean.FALSE; + }else if ( scopeOverlap.getInProgressRequest().isEmpty()){ + return Boolean.FALSE; + } + else if (scopeOverlap.getInProgressRequest().size() == 0) { + return Boolean.FALSE; + } + if (scopeOverlap.getCurrentRequest().getActionIdentifiers().getVnfId() != null) { + return Boolean.TRUE; + } else if (scopeOverlap.getCurrentRequest().getActionIdentifiers().getVfModuleId() != null) { + return Boolean.TRUE; + } else if (scopeOverlap.getCurrentRequest().getActionIdentifiers().getvServerId() != null) { + return isVserverOrVnfcIdOverLap(scopeOverlap); + } else if (scopeOverlap.getCurrentRequest().getActionIdentifiers().getVnfcName() != null) { + return isVserverOrVnfcIdOverLap(scopeOverlap); + } else { + throw new Exception(" Action Identifier doesn't have VnfId, VfModuleId, VServerId, VnfcName "); + } + } + + private boolean isVnfcNameOverLap(ScopeOverlap scopeOverlap) throws Exception { + + AaiService aaiService =new AaiService(aaiClient); + SvcLogicContext ctx = new SvcLogicContext(); + Map<String, String> params = new HashMap<String, String>(); + List<String> inProgressVServerIds = new ArrayList<String>(); + String currentVnfcVserverId = new String(); + String currentRequestVnfcName = scopeOverlap.getCurrentRequest().getActionIdentifiers().getVnfcName(); + String currentRequestVServerId = scopeOverlap.getCurrentRequest().getActionIdentifiers().getvServerId(); + List<Request> inProgressRequests = scopeOverlap.getInProgressRequest(); + params.put("vnfId", scopeOverlap.getVnfId()); + try { + aaiService.getGenericVnfInfo(params, ctx); + int vm_count = Integer.parseInt(ctx.getAttribute("vm-count")); + for(Request inprogressRequest:inProgressRequests){ + if(inprogressRequest.getActionIdentifiers().getVnfcName() != null){ + for (int i = 0; i < vm_count; i++){ + if (ctx.getAttribute("vm[" + i + "].vnfc-name") != null && ctx.getAttribute("vm[" + i + "].vnfc-name") + .equals(inprogressRequest.getActionIdentifiers().getVnfcName())) + inProgressVServerIds.add(ctx.getAttribute("vm[" + i + "].vserver-id")); + log.debug("Received vserver-id from AAI: "+ inProgressVServerIds); + } + } + } + for(Request inProgVserverIds:inProgressRequests) + if(inProgVserverIds.getActionIdentifiers().getvServerId()!=null) + inProgressVServerIds.add(inProgVserverIds.getActionIdentifiers().getvServerId()); + if(currentRequestVnfcName != null){ + for (int i = 0; i < vm_count; i++) + if (ctx.getAttribute("vm[" + i + "].vnfc-name") != null && ctx.getAttribute("vm[" + i + "].vnfc-name") + .equals(currentRequestVnfcName)) + currentVnfcVserverId = ctx.getAttribute("vm[" + i + "].vserver-id"); + log.debug("Received vserver-id from AAI: "+ currentVnfcVserverId); + return inProgressVServerIds.contains(currentVnfcVserverId); + } + for (Request request : inProgressRequests) { + if(!Strings.isNullOrEmpty(currentRequestVServerId) && currentRequestVServerId.equalsIgnoreCase(request.getActionIdentifiers().getvServerId())) + return Boolean.TRUE; + } + if(currentRequestVServerId != null) { + return inProgressVServerIds.contains(currentRequestVServerId); + } + return Boolean.FALSE; + } catch (Exception e) { + e.printStackTrace(); + log.debug(e.getMessage()); + throw e; + } + } + + private boolean isVserverOrVnfcIdOverLap(ScopeOverlap scopeOverlap) throws Exception { + List<Request> inProgressRequests = scopeOverlap.getInProgressRequest(); + for (Request request : inProgressRequests) { + if(request.getActionIdentifiers().getVnfId()!= null) + return Boolean.TRUE ; + } + for (Request request : inProgressRequests) { + if(request.getActionIdentifiers().getVfModuleId()!= null) + return Boolean.TRUE ; + } + String currentVserverID = scopeOverlap.getCurrentRequest().getActionIdentifiers().getvServerId(); + for (Request request : inProgressRequests) { + if(currentVserverID != null && currentVserverID.equalsIgnoreCase(request.getActionIdentifiers().getvServerId())) + return Boolean.TRUE ; + } + return isVnfcNameOverLap(scopeOverlap); + } +} diff --git a/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/utils/ServiceConstants.java b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/utils/ServiceConstants.java new file mode 100644 index 000000000..2ac4172a8 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/bundle/src/main/java/org/onap/appc/interfaces/service/utils/ServiceConstants.java @@ -0,0 +1,40 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.interfaces.service.utils; + +public class ServiceConstants { + + public static final String REQUESTOVERLAP = "isScopeOverlap"; + public static final String GEDATABYMODEL = "getdatabymodel"; + public static final String VNF = "vnf-id"; + public static final String VNFCNAME = "vnfc-name"; + public static final String VFMODULE = "vf-module-id"; + public static final String VSERVER = "vserver-id"; + public static final String CURRENTREQUEST = "current-request"; + public static final String INPROGRESSREQUEST = "in-progress-requests"; + public static final String ACTION = "action"; + public static final String ACTIONIDENTIFIER = "action-identifiers"; + public static final String SERVICEINSTANCEID = "service-instance-id"; +} diff --git a/appc-inbound/appc-interfaces-service/bundle/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml b/appc-inbound/appc-interfaces-service/bundle/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml new file mode 100644 index 000000000..239aa2354 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/bundle/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============LICENSE_START======================================================= + ONAP : APPC + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + ================================================================================ + Copyright (C) 2017 Amdocs + ============================================================================= + 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. + + ECOMP is a trademark and service mark of AT&T Intellectual Property. + ============LICENSE_END========================================================= + --> + +<!-- vi: set et smarttab sw=4 tabstop=4: --> +<!-- Copyright ? 2016 AT&T and others. All rights reserved. --> +<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" + xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" + odl:use-default-for-reference-types="true"> + + <reference id="dataBroker" + interface="org.opendaylight.controller.md.sal.binding.api.DataBroker" + odl:type="default" /> + + <reference id="rpcRegistry" + interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry" /> + + <bean id="provider" class="org.onap.appc.interfaces.service.InterfacesServiceProvider" + init-method="init" destroy-method="close"> + <argument ref="dataBroker" /> + <argument ref="rpcRegistry" /> + </bean> +</blueprint> diff --git a/appc-inbound/appc-interfaces-service/bundle/src/test/java/org/onap/appc/interfaceService/serviceExecutor/TestServiceExecutor.java b/appc-inbound/appc-interfaces-service/bundle/src/test/java/org/onap/appc/interfaceService/serviceExecutor/TestServiceExecutor.java new file mode 100644 index 000000000..0c91964c2 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/bundle/src/test/java/org/onap/appc/interfaceService/serviceExecutor/TestServiceExecutor.java @@ -0,0 +1,41 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.interfaceService.serviceExecutor; + +import static org.junit.Assert.*; + +import org.junit.Test; + +import org.onap.appc.interfaces.service.executorImpl.ServiceExecutorImpl; + +public class TestServiceExecutor { + + @Test + public void serviceExecutorTest() throws Exception { + ServiceExecutorImpl sei = new ServiceExecutorImpl(); + String requestData = "{\"vnf-id\":\"ibcx8888v\",\"current-request\" :{\"action\" : \"Audit\",\"action-identifiers\" : {\"service-instance-id\" : \"service-instance-id\",\"vnf-id\" : \"vnf-id\",\"vnfc-name\" : \"vnfc-name\",\"vf-module-id\" : \"vf-module-id\",\"vserver-id\": \"vserver-id\"}},\"in-progress-requests\" :[{\"action\" : \"HealthCheck\",\"action-identifiers\" : {\"service-instance-id\" : \"service-instance-id1\",\"vnf-id\" : \"vnf-id1\",\"vnfc-name\" : \"vnfc-name1\",\"vf-module-id\" : \"vf-module-id\",\"vserver-id\": \"vserver-id1\"}},{\"action\" : \"CheckLock\",\"action-identifiers\" : {\"service-instance-id\" : \"service-instance-id2\",\"vnf-id\" : \"vnf-id2\",\"vnfc-name\" : \"vnfc-name2\",\"vf-module-id\" : \"vf-module-id2\",\"vserver-id\": \"vserver-id2\"}}]}"; + sei.isRequestOverLap(requestData); + } +} diff --git a/appc-inbound/appc-interfaces-service/features/.gitignore b/appc-inbound/appc-interfaces-service/features/.gitignore new file mode 100644 index 000000000..b83d22266 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/features/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/appc-inbound/appc-interfaces-service/features/pom.xml b/appc-inbound/appc-interfaces-service/features/pom.xml new file mode 100644 index 000000000..a1c8d1a18 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/features/pom.xml @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <artifactId>appc-interfaces-service</artifactId> + <groupId>org.onap.appc</groupId> + <version>1.3.0-SNAPSHOT</version> + </parent> + <artifactId>appc-interfaces-service-features</artifactId> + <name>APPC Interfaces Service - Feature</name> + <packaging>jar</packaging> + + <dependencies> + <dependency> + <groupId>org.onap.appc</groupId> + <artifactId>appc-interfaces-service-model</artifactId> + </dependency> + <dependency> + <groupId>org.onap.appc</groupId> + <artifactId>appc-interfaces-service-bundle</artifactId> + </dependency> + <!-- dependency for opendaylight-karaf-empty for use by testing --> + <dependency> + <groupId>org.opendaylight.controller</groupId> + <artifactId>opendaylight-karaf-empty</artifactId> + <type>zip</type> + </dependency> + <dependency> + <!-- Required for launching the feature tests --> + <groupId>org.opendaylight.odlparent</groupId> + <artifactId>features-test</artifactId> + <scope>test</scope> + <version>${odl.commons.opendaylight.version}</version> + </dependency> + </dependencies> + + <build> + <resources> + <resource> + <filtering>true</filtering> + <directory>src/main/resources</directory> + </resource> + </resources> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <executions> + <execution> + <id>filter</id> + <goals> + <goal>resources</goal> + </goals> + <phase>generate-resources</phase> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>attach-artifacts</id> + <goals> + <goal>attach-artifact</goal> + </goals> + <phase>package</phase> + <configuration> + <artifacts> + <artifact> + <file>${project.build.directory}/classes/${features.file}</file> + <type>xml</type> + <classifier>features</classifier> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/appc-inbound/appc-interfaces-service/features/src/main/resources/features.xml b/appc-inbound/appc-interfaces-service/features/src/main/resources/features.xml new file mode 100644 index 000000000..2d3198cd7 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/features/src/main/resources/features.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============LICENSE_START======================================================= + ONAP : APPC + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + ================================================================================ + Copyright (C) 2017 Amdocs + ============================================================================= + 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. + + ECOMP is a trademark and service mark of AT&T Intellectual Property. + ============LICENSE_END========================================================= + --> + + +<features name="appc-interfaces-service-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0"> + + <repository>mvn:org.opendaylight.yangtools/features-yangtools/${odl.yangtools.version}/xml/features</repository> + <repository>mvn:org.opendaylight.controller/features-mdsal/${odl.controller.mdsal.features.version}/xml/features</repository> + <!-- <repository>mvn:org.opendaylight.mdsal.model/features-mdsal-model/${odl.mdsal.model.version}/xml/features</repository> + <repository>mvn:org.opendaylight.netconf/features-restconf/${odl.controller.mdsal.features.version}/xml/features</repository> --> + + <feature name='appc-interfaces-service' description="Application Controller Interfaces Services" + version='${project.version}'> + + <feature version='${odl.mdsal.model.version}'>odl-mdsal-models</feature> + <bundle>mvn:org.onap.appc/appc-interfaces-service-model/${project.version}</bundle> + + <!-- Most applications will have a dependency on the ODL MD-SAL Broker --> + <feature version='${odl.mdsal.version}'>odl-mdsal-broker</feature> + <feature>sdnc-sli</feature> + <bundle>mvn:org.onap.appc/appc-interfaces-service-bundle/${project.version}</bundle> + <bundle>mvn:org.onap.appc/appc-aai-client-provider/${project.version}</bundle> + <bundle>wrap:mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.3.0</bundle> + <feature version='${odl.mdsal.version}'>odl-restconf</feature> + + </feature> + +</features> diff --git a/appc-inbound/appc-interfaces-service/installer/.gitignore b/appc-inbound/appc-interfaces-service/installer/.gitignore new file mode 100644 index 000000000..b83d22266 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/installer/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/appc-inbound/appc-interfaces-service/installer/pom.xml b/appc-inbound/appc-interfaces-service/installer/pom.xml new file mode 100644 index 000000000..1716689bc --- /dev/null +++ b/appc-inbound/appc-interfaces-service/installer/pom.xml @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <artifactId>appc-interfaces-service</artifactId> + <groupId>org.onap.appc</groupId> + <version>1.3.0-SNAPSHOT</version> + </parent> + <artifactId>appc-interfaces-service-installer</artifactId> + <name>appc-interfaces-service-installer</name> + <packaging>pom</packaging> + + <properties> + <application.name>appc-interfaces-service</application.name> + <features.boot>appc-interfaces-service</features.boot> + <features.repositories>mvn:org.onap.appc/appc-interfaces-service-features/${project.version}/xml/features</features.repositories> + <include.transitive.dependencies>false</include.transitive.dependencies> + </properties> + + <dependencies> + + <dependency> + <groupId>org.onap.appc</groupId> + <artifactId>appc-interfaces-service-features</artifactId> + <version>${project.version}</version> + <classifier>features</classifier> + <type>xml</type> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.onap.appc</groupId> + <artifactId>appc-interfaces-service-bundle</artifactId> + <version>${project.version}</version> + </dependency> + + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <executions> + <execution> + <id>maven-repo-zip</id> + <goals> + <goal>single</goal> + </goals> + <phase>package</phase> + <configuration> + <appendAssemblyId>false</appendAssemblyId> + <attach>false</attach> + <finalName>stage/${application.name}-${project.version}</finalName> + <descriptors> + <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor> + </descriptors> + </configuration> + </execution> + <execution> + <id>installer-zip</id> + <goals> + <goal>single</goal> + </goals> + <phase>package</phase> + <configuration> + <appendAssemblyId>false</appendAssemblyId> + <attach>true</attach> + <finalName>${application.name}-${project.version}</finalName> + <descriptors> + <descriptor>src/assembly/assemble_installer_zip.xml</descriptor> + </descriptors> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>copy-dependencies</id> + <goals> + <goal>copy-dependencies</goal> + </goals> + <phase>prepare-package</phase> + <configuration> + <transitive>false</transitive> + <outputDirectory>${project.build.directory}/assembly/system</outputDirectory> + <overWriteReleases>false</overWriteReleases> + <overWriteSnapshots>true</overWriteSnapshots> + <overWriteIfNewer>true</overWriteIfNewer> + <useRepositoryLayout>true</useRepositoryLayout> + <addParentPoms>false</addParentPoms> + <copyPom>false</copyPom> + <excludeGroupIds>org.opendaylight</excludeGroupIds> + <scope>provided</scope> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-resources-plugin</artifactId> + <executions> + <execution> + <id>copy-version</id> + <goals> + <goal>copy-resources</goal> + </goals> + <!-- here the phase you need --> + <phase>validate</phase> + <configuration> + <outputDirectory>${basedir}/target/stage</outputDirectory> + <resources> + <resource> + <directory>src/main/resources/scripts</directory> + <includes> + <include>install-feature.sh</include> + </includes> + <filtering>true</filtering> + </resource> + </resources> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + +</project> diff --git a/appc-inbound/appc-interfaces-service/installer/resources/scripts/install-feature.sh b/appc-inbound/appc-interfaces-service/installer/resources/scripts/install-feature.sh new file mode 100644 index 000000000..f2f254bac --- /dev/null +++ b/appc-inbound/appc-interfaces-service/installer/resources/scripts/install-feature.sh @@ -0,0 +1,39 @@ +### +# ============LICENSE_START======================================================= +# ONAP : APP-C +# ================================================================================ +# 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========================================================= +### + +#!/bin/bash + +ODL_HOME=${ODL_HOME:-/opt/opendaylight/current} +ODL_KARAF_CLIENT=${ODL_KARAF_CLIENT:-${ODL_HOME}/bin/client} +ODL_KARAF_CLIENT_OPTS=${ODL_KARAF_CLIENT_OPTS:-"-u karaf"} +INSTALLERDIR=$(dirname $0) + +REPOZIP=${INSTALLERDIR}/${features.boot}-${project.version}.zip + +if [ -f ${REPOZIP} ] +then + unzip -n -d ${ODL_HOME} ${REPOZIP} +else + echo "ERROR : repo zip ($REPOZIP) not found" + exit 1 +fi + +${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:repo-add ${features.repositories} +${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:install ${features.boot} diff --git a/appc-inbound/appc-interfaces-service/installer/src/assembly/assemble_installer_zip.xml b/appc-inbound/appc-interfaces-service/installer/src/assembly/assemble_installer_zip.xml new file mode 100644 index 000000000..8bb2ad925 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/installer/src/assembly/assemble_installer_zip.xml @@ -0,0 +1,62 @@ +<!-- + ============LICENSE_START======================================================= + ONAP : APPC + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + ================================================================================ + Copyright (C) 2017 Amdocs + ============================================================================= + 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. + + ECOMP is a trademark and service mark of AT&T Intellectual Property. + ============LICENSE_END========================================================= + --> + +<!-- Defines how we build the .zip file which is our distribution. --> + +<assembly + xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> + <id>controller</id> + <formats> + <format>zip</format> + </formats> + + <!-- we want "system" and related files right at the root level + as this file is suppose to be unzip on top of a karaf + distro. --> + <includeBaseDirectory>false</includeBaseDirectory> + + <fileSets> + <fileSet> + <directory>target/stage/</directory> + <outputDirectory>${application.name}</outputDirectory> + <fileMode>755</fileMode> + <includes> + <include>*.sh</include> + </includes> + </fileSet> + <fileSet> + <directory>target/stage/</directory> + <outputDirectory>${application.name}</outputDirectory> + <fileMode>644</fileMode> + <excludes> + <exclude>*.sh</exclude> + </excludes> + </fileSet> + </fileSets> + + + +</assembly> diff --git a/appc-inbound/appc-interfaces-service/installer/src/assembly/assemble_mvnrepo_zip.xml b/appc-inbound/appc-interfaces-service/installer/src/assembly/assemble_mvnrepo_zip.xml new file mode 100644 index 000000000..489d6f562 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/installer/src/assembly/assemble_mvnrepo_zip.xml @@ -0,0 +1,50 @@ +<!-- + ============LICENSE_START======================================================= + ONAP : APPC + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + ================================================================================ + Copyright (C) 2017 Amdocs + ============================================================================= + 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. + + ECOMP is a trademark and service mark of AT&T Intellectual Property. + ============LICENSE_END========================================================= + --> + +<!-- Defines how we build the .zip file which is our distribution. --> + +<assembly + xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> + <id>controller</id> + <formats> + <format>zip</format> + </formats> + + <!-- we want "system" and related files right at the root level + as this file is suppose to be unzip on top of a karaf + distro. --> + <includeBaseDirectory>false</includeBaseDirectory> + + <fileSets> + <fileSet> + <directory>target/assembly/</directory> + <outputDirectory>.</outputDirectory> + <excludes> + </excludes> + </fileSet> + </fileSets> + +</assembly> diff --git a/appc-inbound/appc-interfaces-service/installer/src/main/resources/scripts/install-feature.sh b/appc-inbound/appc-interfaces-service/installer/src/main/resources/scripts/install-feature.sh new file mode 100644 index 000000000..d0210eb06 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/installer/src/main/resources/scripts/install-feature.sh @@ -0,0 +1,43 @@ +### +# ============LICENSE_START======================================================= +# ONAP : APPC +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Copyright (C) 2017 Amdocs +# ============================================================================= +# 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. +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +# ============LICENSE_END========================================================= +### + +#!/bin/bash + +ODL_HOME=${ODL_HOME:-/opt/opendaylight/current} +ODL_KARAF_CLIENT=${ODL_KARAF_CLIENT:-${ODL_HOME}/bin/client} +ODL_KARAF_CLIENT_OPTS=${ODL_KARAF_CLIENT_OPTS:-"-u karaf"} +INSTALLERDIR=$(dirname $0) + +REPOZIP=${INSTALLERDIR}/${features.boot}-${project.version}.zip + +if [ -f ${REPOZIP} ] +then + unzip -n -d ${ODL_HOME} ${REPOZIP} +else + echo "ERROR : repo zip ($REPOZIP) not found" + exit 1 +fi + +${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:repo-add ${features.repositories} +${ODL_KARAF_CLIENT} ${ODL_KARAF_CLIENT_OPTS} feature:install ${features.boot} diff --git a/appc-inbound/appc-interfaces-service/jacoco.exec b/appc-inbound/appc-interfaces-service/jacoco.exec Binary files differnew file mode 100644 index 000000000..9dbd5754a --- /dev/null +++ b/appc-inbound/appc-interfaces-service/jacoco.exec diff --git a/appc-inbound/appc-interfaces-service/model/.gitignore b/appc-inbound/appc-interfaces-service/model/.gitignore new file mode 100644 index 000000000..b83d22266 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/model/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/appc-inbound/appc-interfaces-service/model/pom.xml b/appc-inbound/appc-interfaces-service/model/pom.xml new file mode 100644 index 000000000..63e855f06 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/model/pom.xml @@ -0,0 +1,156 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <artifactId>appc-interfaces-service</artifactId> + <groupId>org.onap.appc</groupId> + <version>1.3.0-SNAPSHOT</version> + </parent> + <artifactId>appc-interfaces-service-model</artifactId> + <packaging>bundle</packaging> + + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Import-Package>*</Import-Package> + </instructions> + </configuration> + </plugin> + <plugin> + <groupId>org.opendaylight.yangtools</groupId> + <artifactId>yang-maven-plugin</artifactId> + <version>${odl.yangtools.version}</version> + <dependencies> + <dependency> + <groupId>org.opendaylight.mdsal</groupId> + <artifactId>maven-sal-api-gen-plugin</artifactId> + <version>${odl.sal.api.gen.plugin.version}</version> + <type>jar</type> + </dependency> + </dependencies> + + <executions> + <execution> + <goals> + <goal>generate-sources</goal> + </goals> + <configuration> + <yangFilesRootDir>${yang.file.directory}</yangFilesRootDir> + <codeGenerators> + <generator> + <codeGeneratorClass>org.opendaylight.mdsal.binding.maven.api.gen.plugin.CodeGeneratorImpl</codeGeneratorClass> + <outputBaseDir>${salGeneratorPath}</outputBaseDir> + </generator> + </codeGenerators> + <inspectDependencies>true</inspectDependencies> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <version>1.2.1</version> + <executions> + <execution> + <configuration> + <executable>python</executable> + <arguments> + <argument>scripts/python/yang2props.py</argument> + <argument>src/main/yang/appc-interfaces-service.yang</argument> + <argument>target/appc-interfaces-service.properties</argument> + </arguments> + </configuration> + <id>generation</id> + <phase>generate-resources</phase> + <goals> + <goal>exec</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>attach-artifacts</id> + <goals> + <goal>attach-artifact</goal> + </goals> + <phase>package</phase> + <configuration> + <artifacts> + <artifact> + <file>${project.build.directory}/appc-interfaces-service.properties</file> + <type>properties</type> + <classifier>appc-interfaces-service</classifier> + </artifact> + </artifacts> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + <pluginManagement> + <plugins> + <!--This plugin's configuration is used to store Eclipse m2e settings + only. It has no influence on the Maven build itself. --> + <plugin> + <groupId>org.eclipse.m2e</groupId> + <artifactId>lifecycle-mapping</artifactId> + <version>1.0.0</version> + <configuration> + <lifecycleMappingMetadata> + <pluginExecutions> + <pluginExecution> + <pluginExecutionFilter> + <groupId> + org.codehaus.mojo + </groupId> + <artifactId> + exec-maven-plugin + </artifactId> + <versionRange> + [1.2.1,) + </versionRange> + <goals> + <goal>exec</goal> + </goals> + </pluginExecutionFilter> + <action> + <ignore /> + </action> + </pluginExecution> + </pluginExecutions> + </lifecycleMappingMetadata> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> + <dependencies> + <dependency> + <groupId>org.opendaylight.mdsal</groupId> + <artifactId>yang-binding</artifactId> + </dependency> + <dependency> + <groupId>org.opendaylight.yangtools</groupId> + <artifactId>yang-common</artifactId> + </dependency> + <dependency> + <groupId>org.opendaylight.mdsal.model</groupId> + <artifactId>ietf-inet-types</artifactId> + </dependency> + <dependency> + <groupId>org.opendaylight.mdsal.model</groupId> + <artifactId>ietf-yang-types</artifactId> + </dependency> + </dependencies> +</project> diff --git a/appc-inbound/appc-interfaces-service/model/scripts/python/yang2props.py b/appc-inbound/appc-interfaces-service/model/scripts/python/yang2props.py new file mode 100644 index 000000000..559d31b8b --- /dev/null +++ b/appc-inbound/appc-interfaces-service/model/scripts/python/yang2props.py @@ -0,0 +1,57 @@ +#!/usr/bin/python + +import re +import sys + + +# Convert word from foo-bar to FooBar +# words begining with a digit will be converted to _digit +def to_enum(s): + if s[0].isdigit(): + s = "_" + s + else: + s = s[0].upper() + s[1:] + return re.sub(r'(?!^)-([a-zA-Z])', lambda m: m.group(1).upper(), s) + +leaf = "" +val = "" +li = [] + +if len(sys.argv) < 3: + print 'yang2props.py <input yang> <output properties>' + sys.exit(2) + +with open(sys.argv[1], "r") as ins: + for line in ins: + # if we see a leaf save the name for later + if "leaf " in line: + match = re.search(r'leaf (\S+)', line) + if match: + leaf = match.group(1) + + # if we see enum convert the value to enum format and see if it changed + # if the value is different write a property entry + if "enum " in line: + match = re.search(r'enum "(\S+)";', line) + if match: + val = match.group(1) + enum = to_enum(val) + + # see if converting to enum changed the string + if val != enum: + property = "yang."+leaf+"."+enum+"="+val + if property not in li: + li.append( property) + + +# Open output file +fo = open(sys.argv[2], "wb") +fo.write("# yang conversion properties \n") +fo.write("# used to convert Enum back to the original yang value \n") +fo.write("\n".join(li)) +fo.write("\n") + +# Close opend file +fo.close() + + diff --git a/appc-inbound/appc-interfaces-service/model/src/main/yang/appc-interfaces-service.yang b/appc-inbound/appc-interfaces-service/model/src/main/yang/appc-interfaces-service.yang new file mode 100644 index 000000000..b6e0438a8 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/model/src/main/yang/appc-interfaces-service.yang @@ -0,0 +1,122 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +/* + * Yang model for the Application Controller (APP-C) component of ECOMP + * + * + *The main purpose of this model to provide an interface bewteen APPC Runtime and other interface + * to communicate. + * + * + * + * Author: Anand Chaturvedi (ac204h@att.com) + */ + +module interfaces-service { + + yang-version 1; + namespace "org:onap:appc:interfaces:service"; + prefix interfaces.service; + organization "AT&T. Copyright (C) 2015. All rights reserved."; + contact + "Anand Chaturvedi <ac204h@att.com>"; + + description + "Defines the services provided by Application Controller to external interfaces."; + + /* + * Note, the revision changes the package name of the generated java code. Do not + * change the revision unless you also update all references to the bindings. + */ + revision "2017-08-18" { + description + "APP-C Interface services version 1.1.0"; + } + + grouping request-info { + container request { + leaf request-id { + type string; + description "The request ID "; + mandatory true; + } + leaf action { + type string; + description "The Action Name"; + mandatory true; + } + leaf request-data { + type string; + description "The Payload"; + } + leaf request-data-type { + description "Data type for validation"; + type string; + } + } + } + + grouping response-info { + description "The Generic Data response which includes data key value pair as requested in Model"; + container response-info { + description "Data returned from APPC to external Interaface"; + leaf block { + description "Response message"; + type string; + } + leaf requestId { + description "Response message reqesut ID"; + type string; + mandatory true; + } + } + } + grouping status { + description "The specific response codes are to be aligned with APPC/ECOMP messaging Systems"; + container status { + description "The specific response codes are to be aligned with APPC."; + leaf code { + description "Response code"; + type string; + mandatory true; + } + leaf message { + description "Response message"; + type string; + } + } + } + + rpc execute-service { + description "Runs a given action if it exists."; + input { + uses request-info; + } + output { + uses response-info ; + uses status; + } + } +} diff --git a/appc-inbound/appc-interfaces-service/pom.xml b/appc-inbound/appc-interfaces-service/pom.xml new file mode 100644 index 000000000..91df11252 --- /dev/null +++ b/appc-inbound/appc-interfaces-service/pom.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.onap.appc</groupId> + <artifactId>appc-inbound</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + + <packaging>pom</packaging> + <artifactId>appc-interfaces-service</artifactId> + <name>APPC Interface Services</name> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.onap.appc</groupId> + <artifactId>appc-interfaces-service-features</artifactId> + <classifier>features</classifier> + <type>xml</type> + <version>${project.version}</version> + </dependency> + + <dependency> + <groupId>org.onap.appc</groupId> + <artifactId>appc-interfaces-service-model</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.onap.appc</groupId> + <artifactId>appc-interfaces-service-bundle</artifactId> + <version>${project.version}</version> + <classifier>config</classifier> + <type>xml</type> + </dependency> + <dependency> + <groupId>org.onap.appc</groupId> + <artifactId>appc-interfaces-service-bundle</artifactId> + <version>${project.version}</version> + </dependency> + + </dependencies> + </dependencyManagement> + + + <modules> + <module>model</module> + <module>features</module> + <module>bundle</module> + <module>installer</module> + </modules> + <build> + <pluginManagement> + <plugins> + <!--This plugin's configuration is used to store Eclipse m2e settings + only. It has no influence on the Maven build itself. --> + <plugin> + <groupId>org.eclipse.m2e</groupId> + <artifactId>lifecycle-mapping</artifactId> + <version>1.0.0</version> + <configuration> + <lifecycleMappingMetadata> + <pluginExecutions> + <pluginExecution> + <pluginExecutionFilter> + <groupId> + org.codehaus.mojo + </groupId> + <artifactId> + properties-maven-plugin + </artifactId> + <versionRange> + [1.0.0,) + </versionRange> + <goals> + <goal> + set-system-properties + </goal> + </goals> + </pluginExecutionFilter> + <action> + <ignore></ignore> + </action> + </pluginExecution> + </pluginExecutions> + </lifecycleMappingMetadata> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> +</project> diff --git a/appc-inbound/pom.xml b/appc-inbound/pom.xml index 76fe5856a..54dd636b3 100755 --- a/appc-inbound/pom.xml +++ b/appc-inbound/pom.xml @@ -1,28 +1,29 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.onap.appc</groupId>
- <artifactId>appc</artifactId>
- <version>1.3.0-SNAPSHOT</version>
- </parent>
- <artifactId>appc-inbound</artifactId>
- <packaging>pom</packaging>
- <name>Application Controller Inbound</name>
- <description>Application Controller Inbound</description>
-
- <properties>
- <jackson.version>2.3.2</jackson.version>
- <snakeyaml.version>1.12</snakeyaml.version>
- <velocity.version>1.7</velocity.version>
- <jettison.version>1.3.7</jettison.version>
- <common.collections.version>3.2.1</common.collections.version>
- <common.io.version>2.5</common.io.version>
- <tosca.datatype.version>1.1.0</tosca.datatype.version>
- </properties>
- <modules>
- <module>appc-artifact-handler</module>
- <module>appc-design-services</module>
- </modules>
-
-</project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.onap.appc</groupId> + <artifactId>appc</artifactId> + <version>1.3.0-SNAPSHOT</version> + </parent> + <artifactId>appc-inbound</artifactId> + <packaging>pom</packaging> + <name>Application Controller Inbound</name> + <description>Application Controller Inbound</description> + + <properties> + <jackson.version>2.3.2</jackson.version> + <snakeyaml.version>1.12</snakeyaml.version> + <velocity.version>1.7</velocity.version> + <jettison.version>1.3.7</jettison.version> + <common.collections.version>3.2.1</common.collections.version> + <common.io.version>2.5</common.io.version> + <tosca.datatype.version>1.1.0</tosca.datatype.version> + </properties> + <modules> + <module>appc-artifact-handler</module> + <module>appc-design-services</module> + <module>appc-interfaces-service</module> + </modules> + +</project> |