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) 2018 Orange
10 * ================================================================================
11 * Modifications Copyright (C) 2019 Ericsson
12 * =============================================================================
13 * Licensed under the Apache License, Version 2.0 (the "License");
14 * you may not use this file except in compliance with the License.
15 * You may obtain a copy of the License at
17 * http://www.apache.org/licenses/LICENSE-2.0
19 * Unless required by applicable law or agreed to in writing, software
20 * distributed under the License is distributed on an "AS IS" BASIS,
21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 * See the License for the specific language governing permissions and
23 * limitations under the License.
25 * ============LICENSE_END=========================================================
28 package org.onap.appc.provider;
30 import java.text.ParseException;
31 import java.util.concurrent.ExecutorService;
32 import java.util.concurrent.Executors;
33 import org.onap.appc.Constants;
34 import org.onap.appc.configuration.Configuration;
35 import org.onap.appc.configuration.ConfigurationFactory;
36 import org.onap.appc.i18n.Msg;
37 import org.onap.appc.logging.LoggingConstants;
38 import org.onap.appc.logging.LoggingUtils;
39 import org.onap.appc.provider.lcm.service.AbstractBaseUtils;
40 import org.onap.appc.provider.lcm.service.ActionStatusService;
41 import org.onap.appc.provider.lcm.service.QueryService;
42 import org.onap.appc.provider.lcm.service.QuiesceTrafficService;
43 import org.onap.appc.provider.lcm.service.RebootService;
44 import org.onap.appc.provider.lcm.service.RequestExecutor;
45 import org.onap.appc.provider.lcm.service.ResumeTrafficService;
46 import org.onap.appc.provider.lcm.service.UpgradeService;
47 import org.onap.appc.provider.lcm.service.VolumeService;
48 import org.onap.appc.provider.lcm.service.ConfigScaleOutService;
49 import org.onap.appc.provider.lcm.service.DistributeTrafficService;
50 import org.onap.appc.provider.lcm.util.RequestInputBuilder;
51 import org.onap.appc.provider.lcm.util.ValidationService;
52 import org.onap.appc.requesthandler.objects.RequestHandlerInput;
53 import org.onap.appc.requesthandler.objects.RequestHandlerOutput;
54 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
55 import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
56 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
57 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
58 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.*;
59 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.status.Status;
60 import org.opendaylight.yangtools.yang.common.RpcResult;
61 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
62 import com.att.eelf.configuration.EELFLogger;
63 import com.att.eelf.configuration.EELFManager;
64 import com.google.common.util.concurrent.Futures;
65 import com.google.common.util.concurrent.ListenableFuture;
68 public class AppcProviderLcm extends AbstractBaseUtils implements AutoCloseable, AppcProviderLcmService {
70 private Configuration configuration = ConfigurationFactory.getConfiguration();
71 private final EELFLogger logger = EELFManager.getInstance().getLogger(AppcProviderLcm.class);
73 private final ExecutorService executor;
76 * The ODL data store broker. Provides access to a conceptual data tree store and also provides the ability to
77 * subscribe for changes to data under a given branch of the tree.
79 protected DataBroker dataBroker;
82 * ODL Notification Service that provides publish/subscribe capabilities for YANG modeled notifications.
84 protected NotificationPublishService notificationService;
87 * Provides a registry for Remote Procedure Call (RPC) service implementations. The RPCs are defined in YANG models.
89 protected RpcProviderRegistry rpcRegistry;
92 * Represents our RPC implementation registration
94 protected BindingAwareBroker.RpcRegistration<AppcProviderLcmService> rpcRegistration;
99 * @param notificationProviderService
100 * @param rpcProviderRegistry
102 @SuppressWarnings({"javadoc", "nls"})
103 public AppcProviderLcm(DataBroker dataBroker, NotificationPublishService notificationProviderService,
104 RpcProviderRegistry rpcProviderRegistry) {
106 String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME);
107 logger.info(Msg.COMPONENT_INITIALIZING, appName, "provider-lcm");
109 executor = Executors.newFixedThreadPool(1);
110 this.dataBroker = dataBroker;
111 this.notificationService = notificationProviderService;
112 this.rpcRegistry = rpcProviderRegistry;
114 if (this.rpcRegistry != null) {
115 rpcRegistration = rpcRegistry.addRpcImplementation(AppcProviderLcmService.class, this);
117 logger.info(Msg.COMPONENT_INITIALIZED, appName, "provider");
121 * Implements the close of the service
123 * @see java.lang.AutoCloseable#close()
125 @SuppressWarnings("nls")
127 public void close() throws Exception {
128 String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME);
129 logger.info(Msg.COMPONENT_TERMINATING, appName, "provider");
131 if (rpcRegistration != null) {
132 rpcRegistration.close();
134 logger.info(Msg.COMPONENT_TERMINATED, appName, "provider");
139 * Rebuilds a specific VNF
141 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#rebuild(RebuildInput)
144 public ListenableFuture<RpcResult<RebuildOutput>> rebuild(RebuildInput input) {
145 logger.debug("Input received : " + input.toString());
147 RebuildOutputBuilder outputBuilder = new RebuildOutputBuilder();
148 String action = Action.Rebuild.toString();
149 String rpcName = Action.Rebuild.name().toLowerCase();
151 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
152 if (null == status) {
154 RequestHandlerInput request = new RequestInputBuilder().requestContext()
155 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
156 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
157 status = buildStatusWithDispatcherOutput(executeRequest(request));
158 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
159 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
160 } catch (ParseException e) {
161 status = buildStatusWithParseException(e);
163 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
164 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
165 this.getClass().getName());
169 outputBuilder.setCommonHeader(input.getCommonHeader());
170 outputBuilder.setStatus(status);
171 RpcResult<RebuildOutput> result =
172 RpcResultBuilder.<RebuildOutput>status(true).withResult(outputBuilder.build()).build();
173 return Futures.immediateFuture(result);
179 * Restarts a specific VNF
181 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#restart(RestartInput)
184 public ListenableFuture<RpcResult<RestartOutput>> restart(RestartInput input) {
185 logger.debug("Input received : " + input.toString());
187 RestartOutputBuilder outputBuilder = new RestartOutputBuilder();
188 String action = Action.Restart.toString();
189 String rpcName = Action.Restart.name().toLowerCase();
191 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
192 if (null == status) {
194 RequestHandlerInput request = new RequestInputBuilder().requestContext()
195 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
196 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
198 status = buildStatusWithDispatcherOutput(executeRequest(request));
199 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
200 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
201 } catch (ParseException e) {
202 status = buildStatusWithParseException(e);
204 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
205 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
206 this.getClass().getName());
210 outputBuilder.setCommonHeader(input.getCommonHeader());
211 outputBuilder.setStatus(status);
212 RpcResult<RestartOutput> result =
213 RpcResultBuilder.<RestartOutput>status(true).withResult(outputBuilder.build()).build();
214 return Futures.immediateFuture(result);
220 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#startApplication(StartApplicationInput)
223 public ListenableFuture<RpcResult<StartApplicationOutput>> startApplication(StartApplicationInput input) {
224 logger.debug("Input received : " + input.toString());
226 StartApplicationOutputBuilder outputBuilder = new StartApplicationOutputBuilder();
227 String action = Action.StartApplication.toString();
228 String rpcName = Action.StartApplication.name().toLowerCase();
230 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
231 if (null == status) {
233 RequestHandlerInput request = new RequestInputBuilder().requestContext()
234 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
235 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
237 status = buildStatusWithDispatcherOutput(executeRequest(request));
238 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
239 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
240 } catch (ParseException e) {
241 status = buildStatusWithParseException(e);
243 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
244 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
245 this.getClass().getName());
249 outputBuilder.setCommonHeader(input.getCommonHeader());
250 outputBuilder.setStatus(status);
251 RpcResult<StartApplicationOutput> result =
252 RpcResultBuilder.<StartApplicationOutput>status(true).withResult(outputBuilder.build()).build();
253 return Futures.immediateFuture(result);
257 * Migrates a specific VNF
259 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#migrate(MigrateInput)
262 public ListenableFuture<RpcResult<MigrateOutput>> migrate(MigrateInput input) {
263 logger.debug("Input received : " + input.toString());
265 MigrateOutputBuilder outputBuilder = new MigrateOutputBuilder();
266 String action = Action.Migrate.toString();
267 String rpcName = Action.Migrate.name().toLowerCase();
269 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
270 if (null == status) {
272 RequestHandlerInput request = new RequestInputBuilder().requestContext()
273 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
274 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
275 status = buildStatusWithDispatcherOutput(executeRequest(request));
276 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
277 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
278 } catch (ParseException e) {
279 status = buildStatusWithParseException(e);
281 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
282 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
283 this.getClass().getName());
287 outputBuilder.setCommonHeader(input.getCommonHeader());
288 outputBuilder.setStatus(status);
289 RpcResult<MigrateOutput> result =
290 RpcResultBuilder.<MigrateOutput>status(true).withResult(outputBuilder.build()).build();
291 return Futures.immediateFuture(result);
296 * Evacuates a specific VNF
298 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#evacuate(EvacuateInput)
301 public ListenableFuture<RpcResult<EvacuateOutput>> evacuate(EvacuateInput input) {
302 logger.debug("Input received : " + input.toString());
304 EvacuateOutputBuilder outputBuilder = new EvacuateOutputBuilder();
305 String action = Action.Evacuate.toString();
306 String rpcName = Action.Evacuate.name().toLowerCase();
308 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
309 if (null == status) {
311 RequestHandlerInput request = new RequestInputBuilder().requestContext()
312 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
313 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
314 status = buildStatusWithDispatcherOutput(executeRequest(request));
315 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
316 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
317 } catch (ParseException e) {
318 status = buildStatusWithParseException(e);
320 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
321 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
322 this.getClass().getName());
326 outputBuilder.setCommonHeader(input.getCommonHeader());
327 outputBuilder.setStatus(status);
328 RpcResult<EvacuateOutput> result =
329 RpcResultBuilder.<EvacuateOutput>status(true).withResult(outputBuilder.build()).build();
330 return Futures.immediateFuture(result);
335 * Evacuates a specific VNF
337 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#snapshot(SnapshotInput)
340 public ListenableFuture<RpcResult<SnapshotOutput>> snapshot(SnapshotInput input) {
341 logger.debug("Input received : " + input.toString());
343 SnapshotOutputBuilder outputBuilder = new SnapshotOutputBuilder();
344 String action = Action.Snapshot.toString();
345 String rpcName = Action.Snapshot.name().toLowerCase();
347 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
348 String identityUrl = input.getIdentityUrl();
349 if (null == status) {
351 RequestHandlerInput request =
352 new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader())
353 .actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload())
354 .action(action).rpcName(rpcName).additionalContext("identity-url", identityUrl).build();
355 status = buildStatusWithDispatcherOutput(executeRequest(request));
356 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
357 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
358 } catch (ParseException e) {
359 status = buildStatusWithParseException(e);
361 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
362 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
363 this.getClass().getName());
366 outputBuilder.setCommonHeader(input.getCommonHeader());
367 outputBuilder.setStatus(status);
368 RpcResult<SnapshotOutput> result =
369 RpcResultBuilder.<SnapshotOutput>status(true).withResult(outputBuilder.build()).build();
370 return Futures.immediateFuture(result);
374 public ListenableFuture<RpcResult<RollbackOutput>> rollback(RollbackInput input) {
375 logger.debug("Input received : " + input.toString());
377 RollbackOutputBuilder outputBuilder = new RollbackOutputBuilder();
378 String rpcName = Action.Rollback.toString();
380 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), rpcName);
381 String identityUrl = input.getIdentityUrl();
382 String snapshotId = input.getSnapshotId();
383 if (null == status) {
385 RequestHandlerInput request = new RequestInputBuilder().requestContext()
386 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
387 .payload(input.getPayload()).additionalContext("identity-url", identityUrl)
388 .additionalContext("snapshot-id", snapshotId).action(rpcName).build();
389 status = buildStatusWithDispatcherOutput(executeRequest(request));
390 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
391 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
392 } catch (ParseException e) {
393 status = buildStatusWithParseException(e);
395 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
396 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, rpcName, e.getMessage()),
397 this.getClass().getName());
401 outputBuilder.setCommonHeader(input.getCommonHeader());
402 outputBuilder.setStatus(status);
403 RpcResult<RollbackOutput> result =
404 RpcResultBuilder.<RollbackOutput>status(true).withResult(outputBuilder.build()).build();
405 return Futures.immediateFuture(result);
409 public ListenableFuture<RpcResult<SyncOutput>> sync(SyncInput input) {
410 logger.debug("Input received : " + input.toString());
411 SyncOutputBuilder outputBuilder = new SyncOutputBuilder();
412 String action = Action.Sync.toString();
413 String rpcName = Action.Sync.name().toLowerCase();
415 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
416 if (null == status) {
418 RequestHandlerInput request = new RequestInputBuilder().requestContext()
419 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
420 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
421 status = buildStatusWithDispatcherOutput(executeRequest(request));
422 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
423 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
424 } catch (ParseException e) {
425 status = buildStatusWithParseException(e);
427 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
428 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
429 this.getClass().getName());
433 outputBuilder.setCommonHeader(input.getCommonHeader());
434 outputBuilder.setStatus(status);
435 RpcResult<SyncOutput> result =
436 RpcResultBuilder.<SyncOutput>status(true).withResult(outputBuilder.build()).build();
437 return Futures.immediateFuture(result);
441 public ListenableFuture<RpcResult<QueryOutput>> query(QueryInput input) {
442 logger.debug(String.format("LCM query received input: %s", input.toString()));
443 QueryOutputBuilder outputBuilder = new QueryService().process(input);
444 RpcResult<QueryOutput> result =
445 RpcResultBuilder.<QueryOutput>status(true).withResult(outputBuilder.build()).build();
446 return Futures.immediateFuture(result);
450 public ListenableFuture<RpcResult<RebootOutput>> reboot(RebootInput input) {
451 logger.debug(String.format("LCM reboot received input: %s", input.toString()));
452 RebootOutputBuilder outputBuilder = new RebootService().reboot(input);
453 RpcResult<RebootOutput> result =
454 RpcResultBuilder.<RebootOutput>status(true).withResult(outputBuilder.build()).build();
455 return Futures.immediateFuture(result);
459 public ListenableFuture<RpcResult<AttachVolumeOutput>> attachVolume(AttachVolumeInput input) {
460 logger.debug(String.format("LCM attachVolume received input: %s", input.toString()));
461 AttachVolumeOutputBuilder outputBuilder = new VolumeService(true).attachVolume(input);
462 RpcResult<AttachVolumeOutput> result =
463 RpcResultBuilder.<AttachVolumeOutput>status(true).withResult(outputBuilder.build()).build();
464 return Futures.immediateFuture(result);
468 public ListenableFuture<RpcResult<DetachVolumeOutput>> detachVolume(DetachVolumeInput input) {
469 logger.debug(String.format("LCM detachVolume received input: %s", input.toString()));
470 DetachVolumeOutputBuilder outputBuilder = new VolumeService(false).detachVolume(input);
471 RpcResult<DetachVolumeOutput> result =
472 RpcResultBuilder.<DetachVolumeOutput>status(true).withResult(outputBuilder.build()).build();
473 return Futures.immediateFuture(result);
477 public ListenableFuture<RpcResult<QuiesceTrafficOutput>> quiesceTraffic(QuiesceTrafficInput input) {
478 logger.debug(String.format("LCM quiesce received input: %s", input.toString()));
479 QuiesceTrafficOutputBuilder outputBuilder = new QuiesceTrafficService().process(input);
480 RpcResult<QuiesceTrafficOutput> result =
481 RpcResultBuilder.<QuiesceTrafficOutput>status(true).withResult(outputBuilder.build()).build();
482 return Futures.immediateFuture(result);
486 public ListenableFuture<RpcResult<ResumeTrafficOutput>> resumeTraffic(ResumeTrafficInput input) {
487 logger.debug(String.format("LCM resume received input: %s", input.toString()));
488 ResumeTrafficOutputBuilder outputBuilder = new ResumeTrafficService().process(input);
489 RpcResult<ResumeTrafficOutput> result =
490 RpcResultBuilder.<ResumeTrafficOutput>status(true).withResult(outputBuilder.build()).build();
491 return Futures.immediateFuture(result);
495 public ListenableFuture<RpcResult<DistributeTrafficOutput>> distributeTraffic(DistributeTrafficInput input) {
496 logger.debug(String.format("LCM DistributeTraffic, received input: %s", input.toString()));
497 DistributeTrafficOutputBuilder outputBuilder = new DistributeTrafficService().process(input);
498 RpcResult<DistributeTrafficOutput> result =
499 RpcResultBuilder.<DistributeTrafficOutput>status(true).withResult(outputBuilder.build()).build();
500 return Futures.immediateFuture(result);
504 public ListenableFuture<RpcResult<UpgradePreCheckOutput>> upgradePreCheck(UpgradePreCheckInput input) {
505 logger.debug(String.format("LCM upgradeprecheck received input: %s", input.toString()));
506 UpgradePreCheckOutputBuilder outputBuilder = new UpgradeService("upgradePre").upgradePreCheck(input);
507 RpcResult<UpgradePreCheckOutput> result =
508 RpcResultBuilder.<UpgradePreCheckOutput>status(true).withResult(outputBuilder.build()).build();
509 return Futures.immediateFuture(result);
513 public ListenableFuture<RpcResult<UpgradeSoftwareOutput>> upgradeSoftware(UpgradeSoftwareInput input) {
514 logger.debug(String.format("LCM upgradesoftware received input: %s", input.toString()));
515 UpgradeSoftwareOutputBuilder outputBuilder = new UpgradeService("upgradeSoft").upgradeSoftware(input);
516 RpcResult<UpgradeSoftwareOutput> result =
517 RpcResultBuilder.<UpgradeSoftwareOutput>status(true).withResult(outputBuilder.build()).build();
518 return Futures.immediateFuture(result);
522 public ListenableFuture<RpcResult<UpgradePostCheckOutput>> upgradePostCheck(UpgradePostCheckInput input) {
523 logger.debug(String.format("LCM upgradepostcheck received input: %s", input.toString()));
524 UpgradePostCheckOutputBuilder outputBuilder = new UpgradeService("upgradePost").upgradePostCheck(input);
525 RpcResult<UpgradePostCheckOutput> result =
526 RpcResultBuilder.<UpgradePostCheckOutput>status(true).withResult(outputBuilder.build()).build();
527 return Futures.immediateFuture(result);
531 public ListenableFuture<RpcResult<UpgradeBackupOutput>> upgradeBackup(UpgradeBackupInput input) {
532 logger.debug(String.format("LCM backup received input: %s", input.toString()));
533 UpgradeBackupOutputBuilder outputBuilder = new UpgradeService("upgradeBackup").upgradeBackup(input);
534 RpcResult<UpgradeBackupOutput> result =
535 RpcResultBuilder.<UpgradeBackupOutput>status(true).withResult(outputBuilder.build()).build();
536 return Futures.immediateFuture(result);
540 public ListenableFuture<RpcResult<UpgradeBackoutOutput>> upgradeBackout(UpgradeBackoutInput input) {
541 logger.debug(String.format("LCM backout received input: %s", input.toString()));
542 UpgradeBackoutOutputBuilder outputBuilder = new UpgradeService("upgradeBackout").upgradeBackout(input);
543 RpcResult<UpgradeBackoutOutput> result =
544 RpcResultBuilder.<UpgradeBackoutOutput>status(true).withResult(outputBuilder.build()).build();
545 return Futures.immediateFuture(result);
549 public ListenableFuture<RpcResult<TerminateOutput>> terminate(TerminateInput input) {
550 logger.debug("Input received : " + input.toString());
551 TerminateOutputBuilder outputBuilder = new TerminateOutputBuilder();
552 Action myAction = Action.Terminate;
553 String action = myAction.toString();
554 String rpcName = getRpcName(myAction);
556 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
557 if (null == status) {
559 RequestHandlerInput request = new RequestInputBuilder().requestContext()
560 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
561 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
562 status = buildStatusWithDispatcherOutput(executeRequest(request));
563 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
564 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
565 } catch (ParseException e) {
567 status = buildStatusWithParseException(e);
569 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
570 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
571 this.getClass().getName());
576 outputBuilder.setCommonHeader(input.getCommonHeader());
577 outputBuilder.setStatus(status);
578 RpcResult<TerminateOutput> result =
579 RpcResultBuilder.<TerminateOutput>status(true).withResult(outputBuilder.build()).build();
580 return Futures.immediateFuture(result);
584 public ListenableFuture<RpcResult<ConfigureOutput>> configure(ConfigureInput input) {
585 logger.debug("Input received : " + input.toString());
586 ConfigureOutputBuilder outputBuilder = new ConfigureOutputBuilder();
587 Action myAction = Action.Configure;
588 String action = myAction.toString();
589 String rpcName = getRpcName(myAction);
591 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
592 if (null == status) {
594 RequestHandlerInput request = new RequestInputBuilder().requestContext()
595 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
596 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
597 status = buildStatusWithDispatcherOutput(executeRequest(request));
598 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
599 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
600 } catch (ParseException e) {
601 status = buildStatusWithParseException(e);
603 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
604 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
605 this.getClass().getName());
609 outputBuilder.setCommonHeader(input.getCommonHeader());
610 outputBuilder.setStatus(status);
611 RpcResult<ConfigureOutput> result =
612 RpcResultBuilder.<ConfigureOutput>status(true).withResult(outputBuilder.build()).build();
613 return Futures.immediateFuture(result);
617 public ListenableFuture<RpcResult<ActionStatusOutput>> actionStatus(ActionStatusInput input) {
618 logger.debug(String.format("Input received : %s", input.toString()));
619 ActionStatusOutputBuilder outputBuilder = (new ActionStatusService()).queryStatus(input);
620 RpcResult<ActionStatusOutput> result =
621 RpcResultBuilder.<ActionStatusOutput>status(true).withResult(outputBuilder.build()).build();
622 return Futures.immediateFuture(result);
626 public ListenableFuture<RpcResult<ConfigModifyOutput>> configModify(ConfigModifyInput input) {
627 logger.debug("Input received : " + input.toString());
628 ConfigModifyOutputBuilder outputBuilder = new ConfigModifyOutputBuilder();
629 Action myAction = Action.ConfigModify;
630 String action = myAction.toString();
631 String rpcName = getRpcName(myAction);
633 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
634 if (null == status) {
636 RequestHandlerInput request = new RequestInputBuilder().requestContext()
637 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
638 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
639 status = buildStatusWithDispatcherOutput(executeRequest(request));
640 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
641 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
642 } catch (ParseException e) {
643 status = buildStatusWithParseException(e);
645 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
646 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
647 this.getClass().getName());
651 outputBuilder.setCommonHeader(input.getCommonHeader());
652 outputBuilder.setStatus(status);
653 RpcResult<ConfigModifyOutput> result =
654 RpcResultBuilder.<ConfigModifyOutput>status(true).withResult(outputBuilder.build()).build();
655 return Futures.immediateFuture(result);
659 public ListenableFuture<RpcResult<ConfigScaleOutOutput>> configScaleOut(ConfigScaleOutInput input) {
660 logger.debug("Input received : " + input.toString());
661 ConfigScaleOutOutputBuilder outputBuilder = new ConfigScaleOutService().process(input);
662 RpcResult<ConfigScaleOutOutput> result = RpcResultBuilder.<ConfigScaleOutOutput> status(true).withResult(outputBuilder.build()).build();
663 return Futures.immediateFuture(result);
667 public ListenableFuture<RpcResult<ConfigRestoreOutput>> configRestore(ConfigRestoreInput input) {
668 logger.debug("Input received : " + input.toString());
669 ConfigRestoreOutputBuilder outputBuilder = new ConfigRestoreOutputBuilder();
670 Action myAction = Action.ConfigRestore;
671 String action = myAction.toString();
672 String rpcName = getRpcName(myAction);
674 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
675 if (null == status) {
677 RequestHandlerInput request = new RequestInputBuilder().requestContext()
678 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
679 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
680 status = buildStatusWithDispatcherOutput(executeRequest(request));
681 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
682 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
683 } catch (ParseException e) {
684 status = buildStatusWithParseException(e);
686 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
687 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
688 this.getClass().getName());
692 outputBuilder.setCommonHeader(input.getCommonHeader());
693 outputBuilder.setStatus(status);
694 RpcResult<ConfigRestoreOutput> result =
695 RpcResultBuilder.<ConfigRestoreOutput>status(true).withResult(outputBuilder.build()).build();
696 return Futures.immediateFuture(result);
700 public ListenableFuture<RpcResult<TestOutput>> test(TestInput input) {
701 logger.debug("Input received : " + input.toString());
702 TestOutputBuilder outputBuilder = new TestOutputBuilder();
703 Action myAction = Action.Test;
704 String action = myAction.toString();
705 String rpcName = getRpcName(myAction);
707 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
708 if (null == status) {
710 RequestHandlerInput request = new RequestInputBuilder().requestContext()
711 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
712 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
713 status = buildStatusWithDispatcherOutput(executeRequest(request));
714 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
715 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
716 } catch (ParseException e) {
717 status = buildStatusWithParseException(e);
719 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
720 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
721 this.getClass().getName());
725 outputBuilder.setCommonHeader(input.getCommonHeader());
726 outputBuilder.setStatus(status);
727 RpcResult<TestOutput> result =
728 RpcResultBuilder.<TestOutput>status(true).withResult(outputBuilder.build()).build();
729 return Futures.immediateFuture(result);
734 public ListenableFuture<RpcResult<StopOutput>> stop(StopInput input) {
735 logger.debug("Input received : " + input.toString());
736 StopOutputBuilder outputBuilder = new StopOutputBuilder();
737 Action myAction = Action.Stop;
738 String action = myAction.toString();
739 String rpcName = getRpcName(myAction);
741 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
742 if (null == status) {
744 RequestHandlerInput request = new RequestInputBuilder().requestContext()
745 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
746 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
747 status = buildStatusWithDispatcherOutput(executeRequest(request));
748 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
749 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
750 } catch (ParseException e) {
751 status = buildStatusWithParseException(e);
753 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
754 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
755 this.getClass().getName());
759 outputBuilder.setCommonHeader(input.getCommonHeader());
760 outputBuilder.setStatus(status);
761 RpcResult<StopOutput> result =
762 RpcResultBuilder.<StopOutput>status(true).withResult(outputBuilder.build()).build();
763 return Futures.immediateFuture(result);
767 * Starts a specific VNF
769 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#start(StartInput)
772 public ListenableFuture<RpcResult<StartOutput>> start(StartInput input) {
773 logger.debug("Input received : " + input.toString());
775 StartOutputBuilder outputBuilder = new StartOutputBuilder();
776 Action myAction = Action.Start;
777 String action = myAction.toString();
778 String rpcName = getRpcName(myAction);
780 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
781 if (null == status) {
783 RequestHandlerInput request = new RequestInputBuilder().requestContext()
784 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
785 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
786 status = buildStatusWithDispatcherOutput(executeRequest(request));
787 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
788 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
789 } catch (ParseException e) {
790 status = buildStatusWithParseException(e);
792 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
793 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
794 this.getClass().getName());
798 outputBuilder.setCommonHeader(input.getCommonHeader());
799 outputBuilder.setStatus(status);
800 RpcResult<StartOutput> result =
801 RpcResultBuilder.<StartOutput>status(true).withResult(outputBuilder.build()).build();
802 return Futures.immediateFuture(result);
807 public ListenableFuture<RpcResult<AuditOutput>> audit(AuditInput input) {
808 logger.debug("Input received : " + input.toString());
809 AuditOutputBuilder outputBuilder = new AuditOutputBuilder();
810 Action myAction = Action.Audit;
811 String action = myAction.toString();
812 String rpcName = getRpcName(myAction);
814 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
815 if (null == status) {
817 RequestHandlerInput request = new RequestInputBuilder().requestContext()
818 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
819 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
820 status = buildStatusWithDispatcherOutput(executeRequest(request));
821 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
822 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
823 } catch (ParseException e) {
824 status = buildStatusWithParseException(e);
826 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
827 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
828 this.getClass().getName());
832 outputBuilder.setCommonHeader(input.getCommonHeader());
833 outputBuilder.setStatus(status);
834 RpcResult<AuditOutput> result =
835 RpcResultBuilder.<AuditOutput>status(true).withResult(outputBuilder.build()).build();
836 return Futures.immediateFuture(result);
840 public ListenableFuture<RpcResult<SoftwareUploadOutput>> softwareUpload(SoftwareUploadInput input) {
841 logger.debug("Input received : " + input.toString());
842 SoftwareUploadOutputBuilder outputBuilder = new SoftwareUploadOutputBuilder();
843 Action myAction = Action.SoftwareUpload;
844 String action = myAction.toString();
845 String rpcName = getRpcName(myAction);
847 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
848 if (null == status) {
850 RequestHandlerInput request = new RequestInputBuilder().requestContext()
851 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
852 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
853 status = buildStatusWithDispatcherOutput(executeRequest(request));
854 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
855 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
856 } catch (ParseException e) {
857 status = buildStatusWithParseException(e);
859 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
860 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
861 this.getClass().getName());
865 outputBuilder.setCommonHeader(input.getCommonHeader());
866 outputBuilder.setStatus(status);
867 RpcResult<SoftwareUploadOutput> result =
868 RpcResultBuilder.<SoftwareUploadOutput>status(true).withResult(outputBuilder.build()).build();
869 return Futures.immediateFuture(result);
873 public ListenableFuture<RpcResult<HealthCheckOutput>> healthCheck(HealthCheckInput input) {
874 logger.debug("Input received : " + input.toString());
875 HealthCheckOutputBuilder outputBuilder = new HealthCheckOutputBuilder();
876 Action myAction = Action.HealthCheck;
877 String action = myAction.toString();
878 String rpcName = getRpcName(myAction);
880 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
881 if (null == status) {
883 RequestHandlerInput request = new RequestInputBuilder().requestContext()
884 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
885 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
886 status = buildStatusWithDispatcherOutput(executeRequest(request));
887 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
888 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
889 } catch (ParseException e) {
890 status = buildStatusWithParseException(e);
892 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
893 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
894 this.getClass().getName());
898 outputBuilder.setCommonHeader(input.getCommonHeader());
899 outputBuilder.setStatus(status);
900 RpcResult<HealthCheckOutput> result =
901 RpcResultBuilder.<HealthCheckOutput>status(true).withResult(outputBuilder.build()).build();
902 return Futures.immediateFuture(result);
906 public ListenableFuture<RpcResult<LiveUpgradeOutput>> liveUpgrade(LiveUpgradeInput input) {
907 logger.debug("Input received : " + input.toString());
908 LiveUpgradeOutputBuilder outputBuilder = new LiveUpgradeOutputBuilder();
909 Action myAction = Action.LiveUpgrade;
910 String action = myAction.toString();
911 String rpcName = getRpcName(myAction);
913 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
914 if (null == status) {
916 RequestHandlerInput request = new RequestInputBuilder().requestContext()
917 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
918 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
919 status = buildStatusWithDispatcherOutput(executeRequest(request));
920 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
921 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
922 } catch (ParseException e) {
923 status = buildStatusWithParseException(e);
925 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
926 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
927 this.getClass().getName());
931 outputBuilder.setCommonHeader(input.getCommonHeader());
932 outputBuilder.setStatus(status);
933 RpcResult<LiveUpgradeOutput> result =
934 RpcResultBuilder.<LiveUpgradeOutput>status(true).withResult(outputBuilder.build()).build();
935 return Futures.immediateFuture(result);
940 public ListenableFuture<RpcResult<LockOutput>> lock(LockInput input) {
941 logger.debug("Input received : " + input.toString());
942 LockOutputBuilder outputBuilder = new LockOutputBuilder();
943 Action myAction = Action.Lock;
944 String action = myAction.toString();
945 String rpcName = getRpcName(myAction);
947 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
948 if (null == status) {
950 RequestHandlerInput request = new RequestInputBuilder().requestContext()
951 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
952 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
953 status = buildStatusWithDispatcherOutput(executeRequest(request));
954 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
955 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
956 } catch (ParseException e) {
957 status = buildStatusWithParseException(e);
959 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
960 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
961 this.getClass().getName());
965 outputBuilder.setCommonHeader(input.getCommonHeader());
966 outputBuilder.setStatus(status);
967 RpcResult<LockOutput> result =
968 RpcResultBuilder.<LockOutput>status(true).withResult(outputBuilder.build()).build();
969 return Futures.immediateFuture(result);
974 public ListenableFuture<RpcResult<UnlockOutput>> unlock(UnlockInput input) {
975 logger.debug("Input received : " + input.toString());
976 UnlockOutputBuilder outputBuilder = new UnlockOutputBuilder();
977 Action myAction = Action.Unlock;
978 String action = myAction.toString();
979 String rpcName = getRpcName(myAction);
981 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
982 if (null == status) {
984 RequestHandlerInput request = new RequestInputBuilder().requestContext()
985 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
986 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
987 status = buildStatusWithDispatcherOutput(executeRequest(request));
988 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
989 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
990 } catch (ParseException e) {
991 status = buildStatusWithParseException(e);
993 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
994 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
995 this.getClass().getName());
999 outputBuilder.setCommonHeader(input.getCommonHeader());
1000 outputBuilder.setStatus(status);
1001 RpcResult<UnlockOutput> result =
1002 RpcResultBuilder.<UnlockOutput>status(true).withResult(outputBuilder.build()).build();
1003 return Futures.immediateFuture(result);
1007 public ListenableFuture<RpcResult<CheckLockOutput>> checkLock(CheckLockInput input) {
1008 logger.debug("Input received : " + input.toString());
1009 CheckLockOutputBuilder outputBuilder = new CheckLockOutputBuilder();
1010 Action myAction = Action.CheckLock;
1011 String action = myAction.toString();
1012 String rpcName = getRpcName(myAction);
1013 RequestHandlerOutput requestHandlerOutput = null;
1015 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1016 if (null == status) {
1018 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1019 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1020 .action(action).rpcName(rpcName).build();
1021 requestHandlerOutput = executeRequest(request);
1023 status = buildStatusWithDispatcherOutput(requestHandlerOutput);
1024 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
1025 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
1026 } catch (ParseException e) {
1027 status = buildStatusWithParseException(e);
1029 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
1030 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
1031 this.getClass().getName());
1036 outputBuilder.setCommonHeader(input.getCommonHeader());
1037 outputBuilder.setStatus(status);
1038 if (requestHandlerOutput != null && requestHandlerOutput.getResponseContext().getStatus().getCode() == 400) {
1039 outputBuilder.setLocked(CheckLockOutput.Locked.valueOf(
1040 requestHandlerOutput.getResponseContext().getAdditionalContext().get("locked").toUpperCase()));
1042 RpcResult<CheckLockOutput> result =
1043 RpcResultBuilder.<CheckLockOutput>status(true).withResult(outputBuilder.build()).build();
1044 return Futures.immediateFuture(result);
1048 public ListenableFuture<RpcResult<ConfigBackupOutput>> configBackup(ConfigBackupInput input) {
1049 logger.debug("Input received : " + input.toString());
1050 ConfigBackupOutputBuilder outputBuilder = new ConfigBackupOutputBuilder();
1051 Action myAction = Action.ConfigBackup;
1052 String action = myAction.toString();
1053 String rpcName = getRpcName(myAction);
1055 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1056 if (null == status) {
1058 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1059 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1060 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
1061 status = buildStatusWithDispatcherOutput(executeRequest(request));
1062 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
1063 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
1064 } catch (ParseException e) {
1065 status = buildStatusWithParseException(e);
1067 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
1068 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
1069 this.getClass().getName());
1073 outputBuilder.setCommonHeader(input.getCommonHeader());
1074 outputBuilder.setStatus(status);
1075 RpcResult<ConfigBackupOutput> result =
1076 RpcResultBuilder.<ConfigBackupOutput>status(true).withResult(outputBuilder.build()).build();
1077 return Futures.immediateFuture(result);
1082 public ListenableFuture<RpcResult<ConfigBackupDeleteOutput>> configBackupDelete(ConfigBackupDeleteInput input) {
1083 logger.debug("Input received : " + input.toString());
1084 ConfigBackupDeleteOutputBuilder outputBuilder = new ConfigBackupDeleteOutputBuilder();
1085 Action myAction = Action.ConfigBackupDelete;
1086 String action = myAction.toString();
1087 String rpcName = getRpcName(myAction);
1089 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1090 if (null == status) {
1092 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1093 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1094 .action(action).rpcName(rpcName).build();
1095 status = buildStatusWithDispatcherOutput(executeRequest(request));
1096 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
1097 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
1098 } catch (ParseException e) {
1099 status = buildStatusWithParseException(e);
1101 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
1102 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
1103 this.getClass().getName());
1107 outputBuilder.setCommonHeader(input.getCommonHeader());
1108 outputBuilder.setStatus(status);
1109 RpcResult<ConfigBackupDeleteOutput> result =
1110 RpcResultBuilder.<ConfigBackupDeleteOutput>status(true).withResult(outputBuilder.build()).build();
1111 return Futures.immediateFuture(result);
1116 public ListenableFuture<RpcResult<ConfigExportOutput>> configExport(ConfigExportInput input) {
1117 logger.debug("Input received : " + input.toString());
1118 ConfigExportOutputBuilder outputBuilder = new ConfigExportOutputBuilder();
1119 Action myAction = Action.ConfigExport;
1120 String action = myAction.toString();
1121 String rpcName = getRpcName(myAction);
1123 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1124 if (null == status) {
1126 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1127 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1128 .action(action).rpcName(rpcName).build();
1129 status = buildStatusWithDispatcherOutput(executeRequest(request));
1130 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
1131 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
1132 } catch (ParseException e) {
1133 status = buildStatusWithParseException(e);
1135 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
1136 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
1137 this.getClass().getName());
1141 outputBuilder.setCommonHeader(input.getCommonHeader());
1142 outputBuilder.setStatus(status);
1143 RpcResult<ConfigExportOutput> result =
1144 RpcResultBuilder.<ConfigExportOutput>status(true).withResult(outputBuilder.build()).build();
1145 return Futures.immediateFuture(result);
1149 public ListenableFuture<RpcResult<StopApplicationOutput>> stopApplication(StopApplicationInput input) {
1150 logger.debug("Input received : " + input.toString());
1151 StopApplicationOutputBuilder outputBuilder = new StopApplicationOutputBuilder();
1152 Action myAction = Action.StopApplication;
1153 String action = myAction.toString();
1154 String rpcName = getRpcName(myAction);
1156 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1157 if (null == status) {
1159 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1160 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1161 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
1162 status = buildStatusWithDispatcherOutput(executeRequest(request));
1163 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
1164 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
1165 } catch (ParseException e) {
1166 status = buildStatusWithParseException(e);
1168 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
1169 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
1170 this.getClass().getName());
1174 outputBuilder.setCommonHeader(input.getCommonHeader());
1175 outputBuilder.setStatus(status);
1176 RpcResult<StopApplicationOutput> result =
1177 RpcResultBuilder.<StopApplicationOutput>status(true).withResult(outputBuilder.build()).build();
1178 return Futures.immediateFuture(result);
1181 RequestHandlerOutput executeRequest(RequestHandlerInput request) {
1182 return new RequestExecutor().executeRequest(request);