Changes for new odl version
[appc.git] / appc-inbound / appc-artifact-handler / provider / src / main / java / org / onap / appc / artifact / handler / ArtifactHandlerProvider.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
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
14  * 
15  *      http://www.apache.org/licenses/LICENSE-2.0
16  * 
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.
22  * 
23  * ============LICENSE_END=========================================================
24  */
25
26 package org.onap.appc.artifact.handler;
27
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;
41
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;
46
47 public class ArtifactHandlerProvider implements AutoCloseable, ArtifactHandlerService {
48
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;
54
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;
61         initialize();
62     }
63
64     public void initialize() {
65         log.info("Initializing provider for " + appName);
66         try {
67             ArtifactHandlerProviderUtil.loadProperties();
68         } catch (Exception e) {
69             log.error("Caught exception while trying to load properties file", e);
70         }
71         log.info("Initialization complete for " + appName);
72     }
73
74     private RpcResult<UploadartifactOutput> buildResponse1(
75             String svcRequestId,
76             String topic,
77             String code,
78             String message,
79             String finalInd) {
80
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();
88         return rpcResult;
89     }
90     @Override
91     public ListenableFuture<RpcResult<UploadartifactOutput>> uploadartifact(UploadartifactInput input) {
92
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);
97         }
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());
104         try{
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());
109                 }
110                 else
111                 {
112                     designUtil.processTemplate(designUtil.createRequestData());
113                     configResponseBuilder.setStatus(ArtifactHandlerProviderUtil.DistributionStatusEnum.DEPLOY_OK.toString());
114                 }
115             }
116             else
117             {
118                 throw new Exception("No Template data found");
119             }
120         }
121         catch (Exception e) {
122
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: ");
127         }
128
129         responseBuilder.setConfigDocumentResponse(configResponseBuilder.build());
130         RpcResult<UploadartifactOutput> rpcResult = RpcResultBuilder.<UploadartifactOutput> status(true).withResult(responseBuilder.build()).build();
131         return Futures.immediateFuture(rpcResult);
132     }
133
134     @Override
135     public void close() throws Exception {
136         log.info("Closing provider for " + appName);
137         log.info("Successfully closed provider for " + appName);
138     }
139
140     protected ArtifactHandlerProviderUtil getArtifactHandlerProviderUtil(UploadartifactInput input) {
141         return new ArtifactHandlerProviderUtil(input);
142     }
143 }