2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Copyright (C) 2017 Amdocs
8 * ================================================================================
9 * Modifications Copyright (C) 2019 Ericsson
10 * =============================================================================
11 * Licensed under the Apache License, Version 2.0 (the "License");
12 * you may not use this file except in compliance with the License.
13 * You may obtain a copy of the License at
15 * http://www.apache.org/licenses/LICENSE-2.0
17 * Unless required by applicable law or agreed to in writing, software
18 * distributed under the License is distributed on an "AS IS" BASIS,
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * See the License for the specific language governing permissions and
21 * limitations under the License.
23 * ============LICENSE_END=========================================================
26 package org.onap.appc.artifact.handler;
28 import org.onap.appc.artifact.handler.utils.ArtifactHandlerProviderUtil;
29 import org.onap.appc.artifact.handler.utils.SdcArtifactHandlerConstants;
30 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
31 import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
32 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
33 import org.opendaylight.yang.gen.v1.org.onap.appc.artifacthandler.rev170321.ArtifactHandlerService;
34 import org.opendaylight.yang.gen.v1.org.onap.appc.artifacthandler.rev170321.UploadartifactInput;
35 import org.opendaylight.yang.gen.v1.org.onap.appc.artifacthandler.rev170321.UploadartifactInputBuilder;
36 import org.opendaylight.yang.gen.v1.org.onap.appc.artifacthandler.rev170321.UploadartifactOutput;
37 import org.opendaylight.yang.gen.v1.org.onap.appc.artifacthandler.rev170321.UploadartifactOutputBuilder;
38 import org.opendaylight.yang.gen.v1.org.onap.appc.artifacthandler.rev170321.uploadartifact.output.ConfigDocumentResponseBuilder;
39 import org.opendaylight.yangtools.yang.common.RpcResult;
40 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
42 import com.att.eelf.configuration.EELFLogger;
43 import com.att.eelf.configuration.EELFManager;
44 import com.google.common.util.concurrent.Futures;
45 import com.google.common.util.concurrent.ListenableFuture;
47 public class ArtifactHandlerProvider implements AutoCloseable, ArtifactHandlerService {
49 private static final EELFLogger log = EELFManager.getInstance().getLogger(ArtifactHandlerProvider.class);
50 private final String appName = "ArtifactsHandler";
51 protected DataBroker dataBroker;
52 protected NotificationPublishService notificationService;
53 protected RpcProviderRegistry rpcRegistry;
55 public ArtifactHandlerProvider(DataBroker dataBroker2, NotificationPublishService notificationProviderService,
56 RpcProviderRegistry rpcProviderRegistry) {
57 this.log.info("Creating provider for " + appName);
58 dataBroker = dataBroker2;
59 notificationService = notificationProviderService;
60 rpcRegistry = rpcProviderRegistry;
64 public void initialize() {
65 log.info("Initializing provider for " + appName);
67 ArtifactHandlerProviderUtil.loadProperties();
68 } catch (Exception e) {
69 log.error("Caught exception while trying to load properties file", e);
71 log.info("Initialization complete for " + appName);
74 private RpcResult<UploadartifactOutput> buildResponse1(
81 UploadartifactOutputBuilder responseBuilder = new UploadartifactOutputBuilder();
82 ConfigDocumentResponseBuilder configResponseBuilder=new ConfigDocumentResponseBuilder();
83 configResponseBuilder.setRequestId(svcRequestId);
84 configResponseBuilder.setStatus(code);
85 configResponseBuilder.setErrorReason(message);
86 RpcResult<UploadartifactOutput> rpcResult = RpcResultBuilder.<UploadartifactOutput> status(true)
87 .withResult(responseBuilder.build()).build();
91 public ListenableFuture<RpcResult<UploadartifactOutput>> uploadartifact(UploadartifactInput input) {
93 if (input == null || input.getDocumentParameters() == null || input.getDocumentParameters().getArtifactContents() == null ) {
94 RpcResult<UploadartifactOutput> rpcResult =
95 buildResponse1("N/A", "N/A", "INVALID_INPUT", "Invalid input, null or empty document information" , "Y");
96 return Futures.immediateFuture(rpcResult);
98 UploadartifactInputBuilder inputBuilder = new UploadartifactInputBuilder(input);
99 ConfigDocumentResponseBuilder configResponseBuilder = new ConfigDocumentResponseBuilder();
100 UploadartifactOutputBuilder responseBuilder = new UploadartifactOutputBuilder();
101 log.info("Received input = " + input );
102 ArtifactHandlerProviderUtil designUtil = getArtifactHandlerProviderUtil(input);
103 configResponseBuilder.setRequestId(input.getRequestInformation().getRequestId());
105 if(input.getRequestInformation().getSource() !=null){
106 if(input.getRequestInformation().getSource().equalsIgnoreCase(SdcArtifactHandlerConstants.DESIGN_TOOL)){
107 designUtil.processTemplate(designUtil.createDummyRequestData());
108 configResponseBuilder.setStatus(ArtifactHandlerProviderUtil.DistributionStatusEnum.DEPLOY_OK.toString());
112 designUtil.processTemplate(designUtil.createRequestData());
113 configResponseBuilder.setStatus(ArtifactHandlerProviderUtil.DistributionStatusEnum.DEPLOY_OK.toString());
118 throw new Exception("No Template data found");
121 catch (Exception e) {
123 configResponseBuilder.setErrorReason(e.getMessage());
124 configResponseBuilder.setStatus(ArtifactHandlerProviderUtil.DistributionStatusEnum.DEPLOY_ERROR.toString());
125 log.error("Caught exception looking for Artifact Handler", e);
126 log.info("Caught exception looking for Artifact Handler: ");
129 responseBuilder.setConfigDocumentResponse(configResponseBuilder.build());
130 RpcResult<UploadartifactOutput> rpcResult = RpcResultBuilder.<UploadartifactOutput> status(true).withResult(responseBuilder.build()).build();
131 return Futures.immediateFuture(rpcResult);
135 public void close() throws Exception {
136 log.info("Closing provider for " + appName);
137 log.info("Successfully closed provider for " + appName);
140 protected ArtifactHandlerProviderUtil getArtifactHandlerProviderUtil(UploadartifactInput input) {
141 return new ArtifactHandlerProviderUtil(input);