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-2019 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.PreConfigure;
50 import org.onap.appc.provider.lcm.service.PreRebuild;
51 import org.onap.appc.provider.lcm.service.GetConfigService;
52 import org.onap.appc.provider.lcm.service.PostRebuild;
53 import org.onap.appc.provider.lcm.service.PostEvacuateService;
54 import org.onap.appc.provider.lcm.service.PreMigrateService;
55 import org.onap.appc.provider.lcm.service.PostMigrateService;
56 import org.onap.appc.provider.lcm.service.DistributeTrafficService;
57 import org.onap.appc.provider.lcm.service.DistributeTrafficCheckService;
58 import org.onap.appc.provider.lcm.service.PreEvacuate;
59 import org.onap.appc.provider.lcm.service.ProvisioningService;
60 import org.onap.appc.provider.lcm.service.LicenseManagementService;
61 import org.onap.appc.provider.lcm.service.StartTraffic;
62 import org.onap.appc.provider.lcm.service.StatusTraffic;
63 import org.onap.appc.provider.lcm.service.StopTraffic;
64 import org.onap.appc.provider.lcm.util.RequestInputBuilder;
65 import org.onap.appc.provider.lcm.util.ValidationService;
66 import org.onap.appc.requesthandler.objects.RequestHandlerInput;
67 import org.onap.appc.requesthandler.objects.RequestHandlerOutput;
68 import org.opendaylight.mdsal.binding.api.DataBroker;
69 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
70 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
71 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
72 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.*;
73 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.status.Status;
74 import org.opendaylight.yangtools.yang.common.RpcResult;
75 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
76 import com.att.eelf.configuration.EELFLogger;
77 import com.att.eelf.configuration.EELFManager;
78 import com.google.common.util.concurrent.Futures;
79 import com.google.common.util.concurrent.ListenableFuture;
82 public class AppcProviderLcm extends AbstractBaseUtils implements AutoCloseable, AppcProviderLcmService {
84 private Configuration configuration = ConfigurationFactory.getConfiguration();
85 private final EELFLogger logger = EELFManager.getInstance().getLogger(AppcProviderLcm.class);
87 private final ExecutorService executor;
90 * The ODL data store broker. Provides access to a conceptual data tree store and also provides the ability to
91 * subscribe for changes to data under a given branch of the tree.
93 protected DataBroker dataBroker;
96 * ODL Notification Service that provides publish/subscribe capabilities for YANG modeled notifications.
98 protected NotificationPublishService notificationService;
101 * Provides a registry for Remote Procedure Call (RPC) service implementations. The RPCs are defined in YANG models.
103 protected RpcProviderRegistry rpcRegistry;
106 * Represents our RPC implementation registration
108 protected BindingAwareBroker.RpcRegistration<AppcProviderLcmService> rpcRegistration;
113 * @param notificationProviderService
114 * @param rpcProviderRegistry
116 @SuppressWarnings({"javadoc", "nls"})
117 public AppcProviderLcm(DataBroker dataBroker, NotificationPublishService notificationProviderService,
118 RpcProviderRegistry rpcProviderRegistry) {
120 String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME);
121 logger.info(Msg.COMPONENT_INITIALIZING, appName, "provider-lcm");
123 executor = Executors.newFixedThreadPool(1);
124 this.dataBroker = dataBroker;
125 this.notificationService = notificationProviderService;
126 this.rpcRegistry = rpcProviderRegistry;
128 if (this.rpcRegistry != null) {
129 rpcRegistration = rpcRegistry.addRpcImplementation(AppcProviderLcmService.class, this);
131 logger.info(Msg.COMPONENT_INITIALIZED, appName, "provider");
135 * Implements the close of the service
137 * @see java.lang.AutoCloseable#close()
139 @SuppressWarnings("nls")
141 public void close() throws Exception {
142 String appName = configuration.getProperty(Constants.PROPERTY_APPLICATION_NAME);
143 logger.info(Msg.COMPONENT_TERMINATING, appName, "provider");
145 if (rpcRegistration != null) {
146 rpcRegistration.close();
148 logger.info(Msg.COMPONENT_TERMINATED, appName, "provider");
153 * Rebuilds a specific VNF
155 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#rebuild(RebuildInput)
158 public ListenableFuture<RpcResult<RebuildOutput>> rebuild(RebuildInput input) {
159 logger.debug("Input received : " + input.toString());
161 RebuildOutputBuilder outputBuilder = new RebuildOutputBuilder();
162 String action = Action.Rebuild.toString();
163 String rpcName = Action.Rebuild.name().toLowerCase();
165 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
166 if (null == status) {
168 RequestHandlerInput request = new RequestInputBuilder().requestContext()
169 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
170 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
171 status = buildStatusWithDispatcherOutput(executeRequest(request));
172 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
173 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
174 } catch (ParseException e) {
175 status = buildStatusWithParseException(e);
177 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
178 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
179 this.getClass().getName());
183 outputBuilder.setCommonHeader(input.getCommonHeader());
184 outputBuilder.setStatus(status);
185 RpcResult<RebuildOutput> result =
186 RpcResultBuilder.<RebuildOutput>status(true).withResult(outputBuilder.build()).build();
187 return Futures.immediateFuture(result);
193 * Restarts a specific VNF
195 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#restart(RestartInput)
198 public ListenableFuture<RpcResult<RestartOutput>> restart(RestartInput input) {
199 logger.debug("Input received : " + input.toString());
201 RestartOutputBuilder outputBuilder = new RestartOutputBuilder();
202 String action = Action.Restart.toString();
203 String rpcName = Action.Restart.name().toLowerCase();
205 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
206 if (null == status) {
208 RequestHandlerInput request = new RequestInputBuilder().requestContext()
209 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
210 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
212 status = buildStatusWithDispatcherOutput(executeRequest(request));
213 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
214 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
215 } catch (ParseException e) {
216 status = buildStatusWithParseException(e);
218 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
219 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
220 this.getClass().getName());
224 outputBuilder.setCommonHeader(input.getCommonHeader());
225 outputBuilder.setStatus(status);
226 RpcResult<RestartOutput> result =
227 RpcResultBuilder.<RestartOutput>status(true).withResult(outputBuilder.build()).build();
228 return Futures.immediateFuture(result);
234 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#startApplication(StartApplicationInput)
237 public ListenableFuture<RpcResult<StartApplicationOutput>> startApplication(StartApplicationInput input) {
238 logger.debug("Input received : " + input.toString());
240 StartApplicationOutputBuilder outputBuilder = new StartApplicationOutputBuilder();
241 String action = Action.StartApplication.toString();
242 String rpcName = Action.StartApplication.name().toLowerCase();
244 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
245 if (null == status) {
247 RequestHandlerInput request = new RequestInputBuilder().requestContext()
248 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
249 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
251 status = buildStatusWithDispatcherOutput(executeRequest(request));
252 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
253 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
254 } catch (ParseException e) {
255 status = buildStatusWithParseException(e);
257 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
258 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
259 this.getClass().getName());
263 outputBuilder.setCommonHeader(input.getCommonHeader());
264 outputBuilder.setStatus(status);
265 RpcResult<StartApplicationOutput> result =
266 RpcResultBuilder.<StartApplicationOutput>status(true).withResult(outputBuilder.build()).build();
267 return Futures.immediateFuture(result);
271 * Migrates a specific VNF
273 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#migrate(MigrateInput)
276 public ListenableFuture<RpcResult<MigrateOutput>> migrate(MigrateInput input) {
277 logger.debug("Input received : " + input.toString());
279 MigrateOutputBuilder outputBuilder = new MigrateOutputBuilder();
280 String action = Action.Migrate.toString();
281 String rpcName = Action.Migrate.name().toLowerCase();
283 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
284 if (null == status) {
286 RequestHandlerInput request = new RequestInputBuilder().requestContext()
287 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
288 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
289 status = buildStatusWithDispatcherOutput(executeRequest(request));
290 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
291 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
292 } catch (ParseException e) {
293 status = buildStatusWithParseException(e);
295 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
296 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
297 this.getClass().getName());
301 outputBuilder.setCommonHeader(input.getCommonHeader());
302 outputBuilder.setStatus(status);
303 RpcResult<MigrateOutput> result =
304 RpcResultBuilder.<MigrateOutput>status(true).withResult(outputBuilder.build()).build();
305 return Futures.immediateFuture(result);
310 * Evacuates a specific VNF
312 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#evacuate(EvacuateInput)
315 public ListenableFuture<RpcResult<EvacuateOutput>> evacuate(EvacuateInput input) {
316 logger.debug("Input received : " + input.toString());
318 EvacuateOutputBuilder outputBuilder = new EvacuateOutputBuilder();
319 String action = Action.Evacuate.toString();
320 String rpcName = Action.Evacuate.name().toLowerCase();
322 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
323 if (null == status) {
325 RequestHandlerInput request = new RequestInputBuilder().requestContext()
326 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
327 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
328 status = buildStatusWithDispatcherOutput(executeRequest(request));
329 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
330 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
331 } catch (ParseException e) {
332 status = buildStatusWithParseException(e);
334 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
335 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
336 this.getClass().getName());
340 outputBuilder.setCommonHeader(input.getCommonHeader());
341 outputBuilder.setStatus(status);
342 RpcResult<EvacuateOutput> result =
343 RpcResultBuilder.<EvacuateOutput>status(true).withResult(outputBuilder.build()).build();
344 return Futures.immediateFuture(result);
349 * Evacuates a specific VNF
351 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#snapshot(SnapshotInput)
354 public ListenableFuture<RpcResult<SnapshotOutput>> snapshot(SnapshotInput input) {
355 logger.debug("Input received : " + input.toString());
357 SnapshotOutputBuilder outputBuilder = new SnapshotOutputBuilder();
358 String action = Action.Snapshot.toString();
359 String rpcName = Action.Snapshot.name().toLowerCase();
361 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
362 String identityUrl = input.getIdentityUrl();
363 if (null == status) {
365 RequestHandlerInput request =
366 new RequestInputBuilder().requestContext().commonHeader(input.getCommonHeader())
367 .actionIdentifiers(input.getActionIdentifiers()).payload(input.getPayload())
368 .action(action).rpcName(rpcName).additionalContext("identity-url", identityUrl).build();
369 status = buildStatusWithDispatcherOutput(executeRequest(request));
370 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
371 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
372 } catch (ParseException e) {
373 status = buildStatusWithParseException(e);
375 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
376 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
377 this.getClass().getName());
380 outputBuilder.setCommonHeader(input.getCommonHeader());
381 outputBuilder.setStatus(status);
382 RpcResult<SnapshotOutput> result =
383 RpcResultBuilder.<SnapshotOutput>status(true).withResult(outputBuilder.build()).build();
384 return Futures.immediateFuture(result);
388 public ListenableFuture<RpcResult<RollbackOutput>> rollback(RollbackInput input) {
389 logger.debug("Input received : " + input.toString());
391 RollbackOutputBuilder outputBuilder = new RollbackOutputBuilder();
392 String rpcName = Action.Rollback.toString();
394 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), rpcName);
395 String identityUrl = input.getIdentityUrl();
396 String snapshotId = input.getSnapshotId();
397 if (null == status) {
399 RequestHandlerInput request = new RequestInputBuilder().requestContext()
400 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
401 .payload(input.getPayload()).additionalContext("identity-url", identityUrl)
402 .additionalContext("snapshot-id", snapshotId).action(rpcName).build();
403 status = buildStatusWithDispatcherOutput(executeRequest(request));
404 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
405 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
406 } catch (ParseException e) {
407 status = buildStatusWithParseException(e);
409 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
410 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, rpcName, e.getMessage()),
411 this.getClass().getName());
415 outputBuilder.setCommonHeader(input.getCommonHeader());
416 outputBuilder.setStatus(status);
417 RpcResult<RollbackOutput> result =
418 RpcResultBuilder.<RollbackOutput>status(true).withResult(outputBuilder.build()).build();
419 return Futures.immediateFuture(result);
423 public ListenableFuture<RpcResult<SyncOutput>> sync(SyncInput input) {
424 logger.debug("Input received : " + input.toString());
425 SyncOutputBuilder outputBuilder = new SyncOutputBuilder();
426 String action = Action.Sync.toString();
427 String rpcName = Action.Sync.name().toLowerCase();
429 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
430 if (null == status) {
432 RequestHandlerInput request = new RequestInputBuilder().requestContext()
433 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
434 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
435 status = buildStatusWithDispatcherOutput(executeRequest(request));
436 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
437 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
438 } catch (ParseException e) {
439 status = buildStatusWithParseException(e);
441 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
442 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
443 this.getClass().getName());
447 outputBuilder.setCommonHeader(input.getCommonHeader());
448 outputBuilder.setStatus(status);
449 RpcResult<SyncOutput> result =
450 RpcResultBuilder.<SyncOutput>status(true).withResult(outputBuilder.build()).build();
451 return Futures.immediateFuture(result);
455 public ListenableFuture<RpcResult<QueryOutput>> query(QueryInput input) {
456 logger.debug(String.format("LCM query received input: %s", input.toString()));
457 QueryOutputBuilder outputBuilder = new QueryService().process(input);
458 RpcResult<QueryOutput> result =
459 RpcResultBuilder.<QueryOutput>status(true).withResult(outputBuilder.build()).build();
460 return Futures.immediateFuture(result);
464 public ListenableFuture<RpcResult<RebootOutput>> reboot(RebootInput input) {
465 logger.debug(String.format("LCM reboot received input: %s", input.toString()));
466 RebootOutputBuilder outputBuilder = new RebootService().reboot(input);
467 RpcResult<RebootOutput> result =
468 RpcResultBuilder.<RebootOutput>status(true).withResult(outputBuilder.build()).build();
469 return Futures.immediateFuture(result);
473 public ListenableFuture<RpcResult<AttachVolumeOutput>> attachVolume(AttachVolumeInput input) {
474 logger.debug(String.format("LCM attachVolume received input: %s", input.toString()));
475 AttachVolumeOutputBuilder outputBuilder = new VolumeService(true).attachVolume(input);
476 RpcResult<AttachVolumeOutput> result =
477 RpcResultBuilder.<AttachVolumeOutput>status(true).withResult(outputBuilder.build()).build();
478 return Futures.immediateFuture(result);
482 public ListenableFuture<RpcResult<DetachVolumeOutput>> detachVolume(DetachVolumeInput input) {
483 logger.debug(String.format("LCM detachVolume received input: %s", input.toString()));
484 DetachVolumeOutputBuilder outputBuilder = new VolumeService(false).detachVolume(input);
485 RpcResult<DetachVolumeOutput> result =
486 RpcResultBuilder.<DetachVolumeOutput>status(true).withResult(outputBuilder.build()).build();
487 return Futures.immediateFuture(result);
491 public ListenableFuture<RpcResult<QuiesceTrafficOutput>> quiesceTraffic(QuiesceTrafficInput input) {
492 logger.debug(String.format("LCM quiesce received input: %s", input.toString()));
493 QuiesceTrafficOutputBuilder outputBuilder = new QuiesceTrafficService().process(input);
494 RpcResult<QuiesceTrafficOutput> result =
495 RpcResultBuilder.<QuiesceTrafficOutput>status(true).withResult(outputBuilder.build()).build();
496 return Futures.immediateFuture(result);
500 public ListenableFuture<RpcResult<ResumeTrafficOutput>> resumeTraffic(ResumeTrafficInput input) {
501 logger.debug(String.format("LCM resume received input: %s", input.toString()));
502 ResumeTrafficOutputBuilder outputBuilder = new ResumeTrafficService().process(input);
503 RpcResult<ResumeTrafficOutput> result =
504 RpcResultBuilder.<ResumeTrafficOutput>status(true).withResult(outputBuilder.build()).build();
505 return Futures.immediateFuture(result);
509 public ListenableFuture<RpcResult<DistributeTrafficOutput>> distributeTraffic(DistributeTrafficInput input) {
510 logger.debug(String.format("LCM DistributeTraffic, received input: %s", input.toString()));
511 DistributeTrafficOutputBuilder outputBuilder = new DistributeTrafficService().process(input);
512 RpcResult<DistributeTrafficOutput> result =
513 RpcResultBuilder.<DistributeTrafficOutput>status(true).withResult(outputBuilder.build()).build();
514 return Futures.immediateFuture(result);
518 public ListenableFuture<RpcResult<DistributeTrafficCheckOutput>> distributeTrafficCheck(DistributeTrafficCheckInput input) {
519 logger.debug(String.format("LCM DistributeTrafficCheck, received input: %s", input.toString()));
520 DistributeTrafficCheckOutputBuilder outputBuilder = new DistributeTrafficCheckService().process(input);
521 RpcResult<DistributeTrafficCheckOutput> result =
522 RpcResultBuilder.<DistributeTrafficCheckOutput>status(true).withResult(outputBuilder.build()).build();
523 return Futures.immediateFuture(result);
527 public ListenableFuture<RpcResult<UpgradePreCheckOutput>> upgradePreCheck(UpgradePreCheckInput input) {
528 logger.debug(String.format("LCM upgradeprecheck received input: %s", input.toString()));
529 UpgradePreCheckOutputBuilder outputBuilder = new UpgradeService("upgradePre").upgradePreCheck(input);
530 RpcResult<UpgradePreCheckOutput> result =
531 RpcResultBuilder.<UpgradePreCheckOutput>status(true).withResult(outputBuilder.build()).build();
532 return Futures.immediateFuture(result);
536 public ListenableFuture<RpcResult<UpgradeSoftwareOutput>> upgradeSoftware(UpgradeSoftwareInput input) {
537 logger.debug(String.format("LCM upgradesoftware received input: %s", input.toString()));
538 UpgradeSoftwareOutputBuilder outputBuilder = new UpgradeService("upgradeSoft").upgradeSoftware(input);
539 RpcResult<UpgradeSoftwareOutput> result =
540 RpcResultBuilder.<UpgradeSoftwareOutput>status(true).withResult(outputBuilder.build()).build();
541 return Futures.immediateFuture(result);
545 public ListenableFuture<RpcResult<UpgradePostCheckOutput>> upgradePostCheck(UpgradePostCheckInput input) {
546 logger.debug(String.format("LCM upgradepostcheck received input: %s", input.toString()));
547 UpgradePostCheckOutputBuilder outputBuilder = new UpgradeService("upgradePost").upgradePostCheck(input);
548 RpcResult<UpgradePostCheckOutput> result =
549 RpcResultBuilder.<UpgradePostCheckOutput>status(true).withResult(outputBuilder.build()).build();
550 return Futures.immediateFuture(result);
554 public ListenableFuture<RpcResult<UpgradeBackupOutput>> upgradeBackup(UpgradeBackupInput input) {
555 logger.debug(String.format("LCM backup received input: %s", input.toString()));
556 UpgradeBackupOutputBuilder outputBuilder = new UpgradeService("upgradeBackup").upgradeBackup(input);
557 RpcResult<UpgradeBackupOutput> result =
558 RpcResultBuilder.<UpgradeBackupOutput>status(true).withResult(outputBuilder.build()).build();
559 return Futures.immediateFuture(result);
563 public ListenableFuture<RpcResult<UpgradeBackoutOutput>> upgradeBackout(UpgradeBackoutInput input) {
564 logger.debug(String.format("LCM backout received input: %s", input.toString()));
565 UpgradeBackoutOutputBuilder outputBuilder = new UpgradeService("upgradeBackout").upgradeBackout(input);
566 RpcResult<UpgradeBackoutOutput> result =
567 RpcResultBuilder.<UpgradeBackoutOutput>status(true).withResult(outputBuilder.build()).build();
568 return Futures.immediateFuture(result);
572 public ListenableFuture<RpcResult<PreConfigureOutput>> preConfigure(PreConfigureInput input) {
573 logger.debug(String.format("LCM PreConfigure received input: %s", input.toString()));
574 PreConfigureOutputBuilder outputBuilder = new PreConfigure().process(input);
575 RpcResult<PreConfigureOutput> result =
576 RpcResultBuilder.<PreConfigureOutput>status(true).withResult(outputBuilder.build()).build();
577 return Futures.immediateFuture(result);
581 public ListenableFuture<RpcResult<GetConfigOutput>> getConfig(GetConfigInput input) {
582 logger.debug(String.format("LCM getConfig received input: %s", input.toString()));
583 GetConfigOutputBuilder outputBuilder = new GetConfigService().process(input);
584 RpcResult<GetConfigOutput> result =
585 RpcResultBuilder.<GetConfigOutput>status(true).withResult(outputBuilder.build()).build();
586 return Futures.immediateFuture(result);
590 public ListenableFuture<RpcResult<PreRebuildOutput>> preRebuild(PreRebuildInput input) {
591 logger.debug(String.format("LCM PreRebuild received input: %s", input.toString()));
592 PreRebuildOutputBuilder outputBuilder = new PreRebuild().process(input);
593 RpcResult<PreRebuildOutput> result =
594 RpcResultBuilder.<PreRebuildOutput>status(true).withResult(outputBuilder.build()).build();
595 return Futures.immediateFuture(result);
599 public ListenableFuture<RpcResult<PostRebuildOutput>> postRebuild(PostRebuildInput input) {
600 logger.debug(String.format("LCM PostRebuild received input: %s", input.toString()));
601 PostRebuildOutputBuilder outputBuilder = new PostRebuild().process(input);
602 RpcResult<PostRebuildOutput> result =
603 RpcResultBuilder.<PostRebuildOutput>status(true).withResult(outputBuilder.build()).build();
604 return Futures.immediateFuture(result);
608 public ListenableFuture<RpcResult<PreEvacuateOutput>> preEvacuate(PreEvacuateInput input) {
609 logger.debug(String.format("LCM PreEvacuate received input: %s", input.toString()));
610 PreEvacuateOutputBuilder outputBuilder = new PreEvacuate().process(input);
611 RpcResult<PreEvacuateOutput> result =
612 RpcResultBuilder.<PreEvacuateOutput>status(true).withResult(outputBuilder.build()).build();
613 return Futures.immediateFuture(result);
617 public ListenableFuture<RpcResult<ProvisioningOutput>> provisioning(ProvisioningInput input) {
618 logger.debug(String.format("LCM ProvisioningService received input: %s", input.toString()));
619 ProvisioningOutputBuilder outputBuilder = new ProvisioningService().process(input);
620 RpcResult<ProvisioningOutput> result =
621 RpcResultBuilder.<ProvisioningOutput>status(true).withResult(outputBuilder.build()).build();
622 return Futures.immediateFuture(result);
626 public ListenableFuture<RpcResult<LicenseManagementOutput>> licenseManagement(LicenseManagementInput input) {
627 logger.debug(String.format("LCM licensemangementService received input: %s", input.toString()));
628 LicenseManagementOutputBuilder outputBuilder = new LicenseManagementService().process(input);
629 RpcResult<LicenseManagementOutput> result =
630 RpcResultBuilder.<LicenseManagementOutput>status(true).withResult(outputBuilder.build()).build();
631 return Futures.immediateFuture(result);
635 public ListenableFuture<RpcResult<StartTrafficOutput>> startTraffic(StartTrafficInput input) {
636 logger.debug(String.format("LCM StartTraffic received input: %s", input.toString()));
637 StartTrafficOutputBuilder outputBuilder = new StartTraffic().process(input);
638 RpcResult<StartTrafficOutput> result =
639 RpcResultBuilder.<StartTrafficOutput>status(true).withResult(outputBuilder.build()).build();
640 return Futures.immediateFuture(result);
644 public ListenableFuture<RpcResult<StatusTrafficOutput>> statusTraffic(StatusTrafficInput input) {
645 logger.debug(String.format("LCM StatusTraffic received input: %s", input.toString()));
646 StatusTrafficOutputBuilder outputBuilder = new StatusTraffic().process(input);
647 RpcResult<StatusTrafficOutput> result =
648 RpcResultBuilder.<StatusTrafficOutput>status(true).withResult(outputBuilder.build()).build();
649 return Futures.immediateFuture(result);
653 public ListenableFuture<RpcResult<StopTrafficOutput>> stopTraffic(StopTrafficInput input) {
654 logger.debug(String.format("LCM StopTraffic received input: %s", input.toString()));
655 StopTrafficOutputBuilder outputBuilder = new StopTraffic().process(input);
656 RpcResult<StopTrafficOutput> result =
657 RpcResultBuilder.<StopTrafficOutput>status(true).withResult(outputBuilder.build()).build();
658 return Futures.immediateFuture(result);
662 public ListenableFuture<RpcResult<TerminateOutput>> terminate(TerminateInput input) {
663 logger.debug("Input received : " + input.toString());
664 TerminateOutputBuilder outputBuilder = new TerminateOutputBuilder();
665 Action myAction = Action.Terminate;
666 String action = myAction.toString();
667 String rpcName = getRpcName(myAction);
669 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
670 if (null == status) {
672 RequestHandlerInput request = new RequestInputBuilder().requestContext()
673 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
674 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
675 status = buildStatusWithDispatcherOutput(executeRequest(request));
676 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
677 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
678 } catch (ParseException e) {
680 status = buildStatusWithParseException(e);
682 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
683 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
684 this.getClass().getName());
689 outputBuilder.setCommonHeader(input.getCommonHeader());
690 outputBuilder.setStatus(status);
691 RpcResult<TerminateOutput> result =
692 RpcResultBuilder.<TerminateOutput>status(true).withResult(outputBuilder.build()).build();
693 return Futures.immediateFuture(result);
697 public ListenableFuture<RpcResult<ConfigureOutput>> configure(ConfigureInput input) {
698 logger.debug("Input received : " + input.toString());
699 ConfigureOutputBuilder outputBuilder = new ConfigureOutputBuilder();
700 Action myAction = Action.Configure;
701 String action = myAction.toString();
702 String rpcName = getRpcName(myAction);
704 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
705 if (null == status) {
707 RequestHandlerInput request = new RequestInputBuilder().requestContext()
708 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
709 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
710 status = buildStatusWithDispatcherOutput(executeRequest(request));
711 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
712 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
713 } catch (ParseException e) {
714 status = buildStatusWithParseException(e);
716 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
717 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
718 this.getClass().getName());
722 outputBuilder.setCommonHeader(input.getCommonHeader());
723 outputBuilder.setStatus(status);
724 RpcResult<ConfigureOutput> result =
725 RpcResultBuilder.<ConfigureOutput>status(true).withResult(outputBuilder.build()).build();
726 return Futures.immediateFuture(result);
730 public ListenableFuture<RpcResult<ActionStatusOutput>> actionStatus(ActionStatusInput input) {
731 logger.debug(String.format("Input received : %s", input.toString()));
732 ActionStatusOutputBuilder outputBuilder = (new ActionStatusService()).queryStatus(input);
733 RpcResult<ActionStatusOutput> result =
734 RpcResultBuilder.<ActionStatusOutput>status(true).withResult(outputBuilder.build()).build();
735 return Futures.immediateFuture(result);
739 public ListenableFuture<RpcResult<ConfigModifyOutput>> configModify(ConfigModifyInput input) {
740 logger.debug("Input received : " + input.toString());
741 ConfigModifyOutputBuilder outputBuilder = new ConfigModifyOutputBuilder();
742 Action myAction = Action.ConfigModify;
743 String action = myAction.toString();
744 String rpcName = getRpcName(myAction);
746 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
747 if (null == status) {
749 RequestHandlerInput request = new RequestInputBuilder().requestContext()
750 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
751 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
752 status = buildStatusWithDispatcherOutput(executeRequest(request));
753 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
754 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
755 } catch (ParseException e) {
756 status = buildStatusWithParseException(e);
758 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
759 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
760 this.getClass().getName());
764 outputBuilder.setCommonHeader(input.getCommonHeader());
765 outputBuilder.setStatus(status);
766 RpcResult<ConfigModifyOutput> result =
767 RpcResultBuilder.<ConfigModifyOutput>status(true).withResult(outputBuilder.build()).build();
768 return Futures.immediateFuture(result);
772 public ListenableFuture<RpcResult<ConfigScaleOutOutput>> configScaleOut(ConfigScaleOutInput input) {
773 logger.debug("Input received : " + input.toString());
774 ConfigScaleOutOutputBuilder outputBuilder = new ConfigScaleOutService().process(input);
775 RpcResult<ConfigScaleOutOutput> result = RpcResultBuilder.<ConfigScaleOutOutput> status(true).withResult(outputBuilder.build()).build();
776 return Futures.immediateFuture(result);
780 public ListenableFuture<RpcResult<PostEvacuateOutput>> postEvacuate(PostEvacuateInput input) {
781 logger.debug("Input received : " + input.toString());
782 PostEvacuateOutputBuilder outputBuilder = new PostEvacuateService().process(input);
783 RpcResult<PostEvacuateOutput> result = RpcResultBuilder.<PostEvacuateOutput> status(true).withResult(outputBuilder.build()).build();
784 return Futures.immediateFuture(result);
788 public ListenableFuture<RpcResult<PreMigrateOutput>> preMigrate(PreMigrateInput input) {
789 logger.debug("Input received : " + input.toString());
790 PreMigrateOutputBuilder outputBuilder = new PreMigrateService().process(input);
791 RpcResult<PreMigrateOutput> result = RpcResultBuilder.<PreMigrateOutput> status(true).withResult(outputBuilder.build()).build();
792 return Futures.immediateFuture(result);
796 public ListenableFuture<RpcResult<PostMigrateOutput>> postMigrate(PostMigrateInput input) {
797 logger.debug("Input received : " + input.toString());
798 PostMigrateOutputBuilder outputBuilder = new PostMigrateService().process(input);
799 RpcResult<PostMigrateOutput> result = RpcResultBuilder.<PostMigrateOutput> status(true).withResult(outputBuilder.build()).build();
800 return Futures.immediateFuture(result);
804 public ListenableFuture<RpcResult<ConfigRestoreOutput>> configRestore(ConfigRestoreInput input) {
805 logger.debug("Input received : " + input.toString());
806 ConfigRestoreOutputBuilder outputBuilder = new ConfigRestoreOutputBuilder();
807 Action myAction = Action.ConfigRestore;
808 String action = myAction.toString();
809 String rpcName = getRpcName(myAction);
811 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
812 if (null == status) {
814 RequestHandlerInput request = new RequestInputBuilder().requestContext()
815 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
816 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
817 status = buildStatusWithDispatcherOutput(executeRequest(request));
818 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
819 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
820 } catch (ParseException e) {
821 status = buildStatusWithParseException(e);
823 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
824 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
825 this.getClass().getName());
829 outputBuilder.setCommonHeader(input.getCommonHeader());
830 outputBuilder.setStatus(status);
831 RpcResult<ConfigRestoreOutput> result =
832 RpcResultBuilder.<ConfigRestoreOutput>status(true).withResult(outputBuilder.build()).build();
833 return Futures.immediateFuture(result);
837 public ListenableFuture<RpcResult<TestOutput>> test(TestInput input) {
838 logger.debug("Input received : " + input.toString());
839 TestOutputBuilder outputBuilder = new TestOutputBuilder();
840 Action myAction = Action.Test;
841 String action = myAction.toString();
842 String rpcName = getRpcName(myAction);
844 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
845 if (null == status) {
847 RequestHandlerInput request = new RequestInputBuilder().requestContext()
848 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
849 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
850 status = buildStatusWithDispatcherOutput(executeRequest(request));
851 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
852 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
853 } catch (ParseException e) {
854 status = buildStatusWithParseException(e);
856 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
857 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
858 this.getClass().getName());
862 outputBuilder.setCommonHeader(input.getCommonHeader());
863 outputBuilder.setStatus(status);
864 RpcResult<TestOutput> result =
865 RpcResultBuilder.<TestOutput>status(true).withResult(outputBuilder.build()).build();
866 return Futures.immediateFuture(result);
871 public ListenableFuture<RpcResult<StopOutput>> stop(StopInput input) {
872 logger.debug("Input received : " + input.toString());
873 StopOutputBuilder outputBuilder = new StopOutputBuilder();
874 Action myAction = Action.Stop;
875 String action = myAction.toString();
876 String rpcName = getRpcName(myAction);
878 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
879 if (null == status) {
881 RequestHandlerInput request = new RequestInputBuilder().requestContext()
882 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
883 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
884 status = buildStatusWithDispatcherOutput(executeRequest(request));
885 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
886 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
887 } catch (ParseException e) {
888 status = buildStatusWithParseException(e);
890 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
891 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
892 this.getClass().getName());
896 outputBuilder.setCommonHeader(input.getCommonHeader());
897 outputBuilder.setStatus(status);
898 RpcResult<StopOutput> result =
899 RpcResultBuilder.<StopOutput>status(true).withResult(outputBuilder.build()).build();
900 return Futures.immediateFuture(result);
904 * Starts a specific VNF
906 * @see org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.AppcProviderLcmService#start(StartInput)
909 public ListenableFuture<RpcResult<StartOutput>> start(StartInput input) {
910 logger.debug("Input received : " + input.toString());
912 StartOutputBuilder outputBuilder = new StartOutputBuilder();
913 Action myAction = Action.Start;
914 String action = myAction.toString();
915 String rpcName = getRpcName(myAction);
917 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
918 if (null == status) {
920 RequestHandlerInput request = new RequestInputBuilder().requestContext()
921 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
922 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
923 status = buildStatusWithDispatcherOutput(executeRequest(request));
924 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
925 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
926 } catch (ParseException e) {
927 status = buildStatusWithParseException(e);
929 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
930 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
931 this.getClass().getName());
935 outputBuilder.setCommonHeader(input.getCommonHeader());
936 outputBuilder.setStatus(status);
937 RpcResult<StartOutput> result =
938 RpcResultBuilder.<StartOutput>status(true).withResult(outputBuilder.build()).build();
939 return Futures.immediateFuture(result);
944 public ListenableFuture<RpcResult<AuditOutput>> audit(AuditInput input) {
945 logger.debug("Input received : " + input.toString());
946 AuditOutputBuilder outputBuilder = new AuditOutputBuilder();
947 Action myAction = Action.Audit;
948 String action = myAction.toString();
949 String rpcName = getRpcName(myAction);
951 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
952 if (null == status) {
954 RequestHandlerInput request = new RequestInputBuilder().requestContext()
955 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
956 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
957 status = buildStatusWithDispatcherOutput(executeRequest(request));
958 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
959 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
960 } catch (ParseException e) {
961 status = buildStatusWithParseException(e);
963 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
964 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
965 this.getClass().getName());
969 outputBuilder.setCommonHeader(input.getCommonHeader());
970 outputBuilder.setStatus(status);
971 RpcResult<AuditOutput> result =
972 RpcResultBuilder.<AuditOutput>status(true).withResult(outputBuilder.build()).build();
973 return Futures.immediateFuture(result);
977 public ListenableFuture<RpcResult<SoftwareUploadOutput>> softwareUpload(SoftwareUploadInput input) {
978 logger.debug("Input received : " + input.toString());
979 SoftwareUploadOutputBuilder outputBuilder = new SoftwareUploadOutputBuilder();
980 Action myAction = Action.SoftwareUpload;
981 String action = myAction.toString();
982 String rpcName = getRpcName(myAction);
984 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
985 if (null == status) {
987 RequestHandlerInput request = new RequestInputBuilder().requestContext()
988 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
989 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
990 status = buildStatusWithDispatcherOutput(executeRequest(request));
991 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
992 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
993 } catch (ParseException e) {
994 status = buildStatusWithParseException(e);
996 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
997 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
998 this.getClass().getName());
1002 outputBuilder.setCommonHeader(input.getCommonHeader());
1003 outputBuilder.setStatus(status);
1004 RpcResult<SoftwareUploadOutput> result =
1005 RpcResultBuilder.<SoftwareUploadOutput>status(true).withResult(outputBuilder.build()).build();
1006 return Futures.immediateFuture(result);
1010 public ListenableFuture<RpcResult<HealthCheckOutput>> healthCheck(HealthCheckInput input) {
1011 logger.debug("Input received : " + input.toString());
1012 HealthCheckOutputBuilder outputBuilder = new HealthCheckOutputBuilder();
1013 Action myAction = Action.HealthCheck;
1014 String action = myAction.toString();
1015 String rpcName = getRpcName(myAction);
1017 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1018 if (null == status) {
1020 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1021 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1022 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
1023 status = buildStatusWithDispatcherOutput(executeRequest(request));
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());
1035 outputBuilder.setCommonHeader(input.getCommonHeader());
1036 outputBuilder.setStatus(status);
1037 RpcResult<HealthCheckOutput> result =
1038 RpcResultBuilder.<HealthCheckOutput>status(true).withResult(outputBuilder.build()).build();
1039 return Futures.immediateFuture(result);
1043 public ListenableFuture<RpcResult<LiveUpgradeOutput>> liveUpgrade(LiveUpgradeInput input) {
1044 logger.debug("Input received : " + input.toString());
1045 LiveUpgradeOutputBuilder outputBuilder = new LiveUpgradeOutputBuilder();
1046 Action myAction = Action.LiveUpgrade;
1047 String action = myAction.toString();
1048 String rpcName = getRpcName(myAction);
1050 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1051 if (null == status) {
1053 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1054 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1055 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
1056 status = buildStatusWithDispatcherOutput(executeRequest(request));
1057 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
1058 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
1059 } catch (ParseException e) {
1060 status = buildStatusWithParseException(e);
1062 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
1063 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
1064 this.getClass().getName());
1068 outputBuilder.setCommonHeader(input.getCommonHeader());
1069 outputBuilder.setStatus(status);
1070 RpcResult<LiveUpgradeOutput> result =
1071 RpcResultBuilder.<LiveUpgradeOutput>status(true).withResult(outputBuilder.build()).build();
1072 return Futures.immediateFuture(result);
1077 public ListenableFuture<RpcResult<LockOutput>> lock(LockInput input) {
1078 logger.debug("Input received : " + input.toString());
1079 LockOutputBuilder outputBuilder = new LockOutputBuilder();
1080 Action myAction = Action.Lock;
1081 String action = myAction.toString();
1082 String rpcName = getRpcName(myAction);
1084 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1085 if (null == status) {
1087 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1088 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1089 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
1090 status = buildStatusWithDispatcherOutput(executeRequest(request));
1091 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
1092 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
1093 } catch (ParseException e) {
1094 status = buildStatusWithParseException(e);
1096 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
1097 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
1098 this.getClass().getName());
1102 outputBuilder.setCommonHeader(input.getCommonHeader());
1103 outputBuilder.setStatus(status);
1104 RpcResult<LockOutput> result =
1105 RpcResultBuilder.<LockOutput>status(true).withResult(outputBuilder.build()).build();
1106 return Futures.immediateFuture(result);
1111 public ListenableFuture<RpcResult<UnlockOutput>> unlock(UnlockInput input) {
1112 logger.debug("Input received : " + input.toString());
1113 UnlockOutputBuilder outputBuilder = new UnlockOutputBuilder();
1114 Action myAction = Action.Unlock;
1115 String action = myAction.toString();
1116 String rpcName = getRpcName(myAction);
1118 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1119 if (null == status) {
1121 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1122 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1123 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
1124 status = buildStatusWithDispatcherOutput(executeRequest(request));
1125 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
1126 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
1127 } catch (ParseException e) {
1128 status = buildStatusWithParseException(e);
1130 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
1131 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
1132 this.getClass().getName());
1136 outputBuilder.setCommonHeader(input.getCommonHeader());
1137 outputBuilder.setStatus(status);
1138 RpcResult<UnlockOutput> result =
1139 RpcResultBuilder.<UnlockOutput>status(true).withResult(outputBuilder.build()).build();
1140 return Futures.immediateFuture(result);
1144 public ListenableFuture<RpcResult<CheckLockOutput>> checkLock(CheckLockInput input) {
1145 logger.debug("Input received : " + input.toString());
1146 CheckLockOutputBuilder outputBuilder = new CheckLockOutputBuilder();
1147 Action myAction = Action.CheckLock;
1148 String action = myAction.toString();
1149 String rpcName = getRpcName(myAction);
1150 RequestHandlerOutput requestHandlerOutput = null;
1152 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1153 if (null == status) {
1155 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1156 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1157 .action(action).rpcName(rpcName).build();
1158 requestHandlerOutput = executeRequest(request);
1160 status = buildStatusWithDispatcherOutput(requestHandlerOutput);
1161 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
1162 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
1163 } catch (ParseException e) {
1164 status = buildStatusWithParseException(e);
1166 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
1167 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
1168 this.getClass().getName());
1173 outputBuilder.setCommonHeader(input.getCommonHeader());
1174 outputBuilder.setStatus(status);
1175 if (requestHandlerOutput != null && requestHandlerOutput.getResponseContext().getStatus().getCode() == 400) {
1176 outputBuilder.setLocked(CheckLockOutput.Locked.valueOf(
1177 requestHandlerOutput.getResponseContext().getAdditionalContext().get("locked").toUpperCase()));
1179 RpcResult<CheckLockOutput> result =
1180 RpcResultBuilder.<CheckLockOutput>status(true).withResult(outputBuilder.build()).build();
1181 return Futures.immediateFuture(result);
1185 public ListenableFuture<RpcResult<ConfigBackupOutput>> configBackup(ConfigBackupInput input) {
1186 logger.debug("Input received : " + input.toString());
1187 ConfigBackupOutputBuilder outputBuilder = new ConfigBackupOutputBuilder();
1188 Action myAction = Action.ConfigBackup;
1189 String action = myAction.toString();
1190 String rpcName = getRpcName(myAction);
1192 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1193 if (null == status) {
1195 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1196 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1197 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
1198 status = buildStatusWithDispatcherOutput(executeRequest(request));
1199 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
1200 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
1201 } catch (ParseException e) {
1202 status = buildStatusWithParseException(e);
1204 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
1205 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
1206 this.getClass().getName());
1210 outputBuilder.setCommonHeader(input.getCommonHeader());
1211 outputBuilder.setStatus(status);
1212 RpcResult<ConfigBackupOutput> result =
1213 RpcResultBuilder.<ConfigBackupOutput>status(true).withResult(outputBuilder.build()).build();
1214 return Futures.immediateFuture(result);
1219 public ListenableFuture<RpcResult<ConfigBackupDeleteOutput>> configBackupDelete(ConfigBackupDeleteInput input) {
1220 logger.debug("Input received : " + input.toString());
1221 ConfigBackupDeleteOutputBuilder outputBuilder = new ConfigBackupDeleteOutputBuilder();
1222 Action myAction = Action.ConfigBackupDelete;
1223 String action = myAction.toString();
1224 String rpcName = getRpcName(myAction);
1226 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1227 if (null == status) {
1229 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1230 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1231 .action(action).rpcName(rpcName).build();
1232 status = buildStatusWithDispatcherOutput(executeRequest(request));
1233 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
1234 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
1235 } catch (ParseException e) {
1236 status = buildStatusWithParseException(e);
1238 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
1239 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
1240 this.getClass().getName());
1244 outputBuilder.setCommonHeader(input.getCommonHeader());
1245 outputBuilder.setStatus(status);
1246 RpcResult<ConfigBackupDeleteOutput> result =
1247 RpcResultBuilder.<ConfigBackupDeleteOutput>status(true).withResult(outputBuilder.build()).build();
1248 return Futures.immediateFuture(result);
1253 public ListenableFuture<RpcResult<ConfigExportOutput>> configExport(ConfigExportInput input) {
1254 logger.debug("Input received : " + input.toString());
1255 ConfigExportOutputBuilder outputBuilder = new ConfigExportOutputBuilder();
1256 Action myAction = Action.ConfigExport;
1257 String action = myAction.toString();
1258 String rpcName = getRpcName(myAction);
1260 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1261 if (null == status) {
1263 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1264 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1265 .action(action).rpcName(rpcName).build();
1266 status = buildStatusWithDispatcherOutput(executeRequest(request));
1267 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
1268 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
1269 } catch (ParseException e) {
1270 status = buildStatusWithParseException(e);
1272 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
1273 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
1274 this.getClass().getName());
1278 outputBuilder.setCommonHeader(input.getCommonHeader());
1279 outputBuilder.setStatus(status);
1280 RpcResult<ConfigExportOutput> result =
1281 RpcResultBuilder.<ConfigExportOutput>status(true).withResult(outputBuilder.build()).build();
1282 return Futures.immediateFuture(result);
1286 public ListenableFuture<RpcResult<StopApplicationOutput>> stopApplication(StopApplicationInput input) {
1287 logger.debug("Input received : " + input.toString());
1288 StopApplicationOutputBuilder outputBuilder = new StopApplicationOutputBuilder();
1289 Action myAction = Action.StopApplication;
1290 String action = myAction.toString();
1291 String rpcName = getRpcName(myAction);
1293 ValidationService.getInstance().validateInput(input.getCommonHeader(), input.getAction(), action);
1294 if (null == status) {
1296 RequestHandlerInput request = new RequestInputBuilder().requestContext()
1297 .commonHeader(input.getCommonHeader()).actionIdentifiers(input.getActionIdentifiers())
1298 .payload(input.getPayload()).action(action).rpcName(rpcName).build();
1299 status = buildStatusWithDispatcherOutput(executeRequest(request));
1300 logger.info(String.format("Execute of '%s' finished with status %s. Reason: %s",
1301 input.getActionIdentifiers(), status.getCode(), status.getMessage()));
1302 } catch (ParseException e) {
1303 status = buildStatusWithParseException(e);
1305 LoggingUtils.logErrorMessage(LoggingConstants.TargetNames.APPC_PROVIDER,
1306 String.format(COMMON_ERROR_MESSAGE_TEMPLATE, action, e.getMessage()),
1307 this.getClass().getName());
1311 outputBuilder.setCommonHeader(input.getCommonHeader());
1312 outputBuilder.setStatus(status);
1313 RpcResult<StopApplicationOutput> result =
1314 RpcResultBuilder.<StopApplicationOutput>status(true).withResult(outputBuilder.build()).build();
1315 return Futures.immediateFuture(result);
1318 RequestHandlerOutput executeRequest(RequestHandlerInput request) {
1319 return new RequestExecutor().executeRequest(request);