2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 
   6  * ================================================================================
 
   7  * Copyright (C) 2017 Amdocs
 
   8  * =============================================================================
 
   9  * Licensed under the Apache License, Version 2.0 (the "License");
 
  10  * you may not use this file except in compliance with the License.
 
  11  * You may obtain a copy of the License at
 
  13  *      http://www.apache.org/licenses/LICENSE-2.0
 
  15  * Unless required by applicable law or agreed to in writing, software
 
  16  * distributed under the License is distributed on an "AS IS" BASIS,
 
  17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  18  * See the License for the specific language governing permissions and
 
  19  * limitations under the License.
 
  21  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
 
  22  * ============LICENSE_END=========================================================
 
  25 package org.onap.appc.statemachine.impl.readers;
 
  27 import org.onap.appc.statemachine.StateMetaDataReader;
 
  28 import org.onap.appc.lifecyclemanager.objects.VNFOperationOutcome;
 
  29 import org.onap.appc.statemachine.objects.Event;
 
  30 import org.onap.appc.statemachine.objects.State;
 
  31 import org.onap.appc.statemachine.objects.StateMachineMetadata;
 
  34  * Reader for VNF MetaData
 
  36 public class VnfMetaDataReader implements StateMetaDataReader {
 
  41     public enum VNFOperation {
 
  43         Configure, Test, HealthCheck, Start, Terminate, Restart, Rebuild, Stop, ConfigModify,
 
  44         ConfigScaleOut,ConfigRestore,Backup, Snapshot,
 
  45         SoftwareUpload, LiveUpgrade, Rollback, Sync, Audit, Test_lic, Migrate, Evacuate,
 
  46         ConfigBackup, ConfigBackupDelete, ConfigExport,
 
  47         Lock(true), Unlock(true), CheckLock(true), StartApplication,StopApplication;
 
  49         private boolean builtIn;
 
  51         VNFOperation(boolean builtIn) {
 
  52             this.builtIn = builtIn;
 
  64         Not_Instantiated, Instantiated, Configuring, Configured, Testing, Tested,
 
  65         Rebuilding, Restarting, Starting,
 
  66         Error, Running, Unknown, Terminating, Stopping, Stopped,
 
  67         Backing_Up, Snapshotting, Software_Uploading, Upgrading,
 
  68         Rollbacking, Licensing, Migrating, Evacuating,
 
  69         NOT_ORCHESTRATED("NOT ORCHESTRATED"), Created;
 
  73         VNFStates(String name) {
 
  74             this.stateName = name;
 
  78             this.stateName = name();
 
  82         public String toString() {
 
  83             return this.stateName;
 
  88     public StateMachineMetadata readMetadata() {
 
  89         State notInstantiated = new State(VNFStates.Not_Instantiated.toString());
 
  90         State instantiated = new State(VNFStates.Instantiated.toString());
 
  91         State configuring = new State(VNFStates.Configuring.toString());
 
  92         State configured = new State(VNFStates.Configured.toString());
 
  93         State testing = new State(VNFStates.Testing.toString());
 
  94         State tested = new State(VNFStates.Tested.toString());
 
  95         State rebuilding = new State(VNFStates.Rebuilding.toString());
 
  96         State restarting = new State(VNFStates.Restarting.toString());
 
  97         State starting = new State(VNFStates.Starting.toString());
 
  98         State error = new State(VNFStates.Error.toString());
 
  99         State running = new State(VNFStates.Running.toString());
 
 100         State unknown = new State(VNFStates.Unknown.toString());
 
 101         State terminating = new State(VNFStates.Terminating.toString());
 
 102         State stopping = new State(VNFStates.Stopping.toString());
 
 103         State stopped = new State(VNFStates.Stopped.toString());
 
 104         State notOrchestrated = new State(VNFStates.NOT_ORCHESTRATED.toString());
 
 106         State backingUp = new State(VNFStates.Backing_Up.toString());
 
 107         State snapshotting = new State(VNFStates.Snapshotting.toString());
 
 108         State softwareUploading = new State(VNFStates.Software_Uploading.toString());
 
 109         State upgrading = new State(VNFStates.Upgrading.toString());
 
 110         State rollbacking = new State(VNFStates.Rollbacking.toString());
 
 112         State migrating = new State(VNFStates.Migrating.toString());
 
 113         State evacuating = new State(VNFStates.Evacuating.toString());
 
 114         State created= new State(VNFStates.Created.toString());
 
 116         Event startApplication = new Event(VNFOperation.StartApplication.toString());
 
 117         Event configure = new Event(VNFOperation.Configure.toString());
 
 118         Event healthcheck = new Event(VNFOperation.HealthCheck.toString());
 
 119         Event test = new Event(VNFOperation.Test.toString());
 
 120         Event start = new Event(VNFOperation.Start.toString());
 
 121         Event terminate = new Event(VNFOperation.Terminate.toString());
 
 122         Event restart = new Event(VNFOperation.Restart.toString());
 
 123         Event rebuild = new Event(VNFOperation.Rebuild.toString());
 
 124         Event stop = new Event(VNFOperation.Stop.toString());
 
 125         Event configModify = new Event(VNFOperation.ConfigModify.toString());
 
 126         Event configScaleout = new Event(VNFOperation.ConfigScaleOut.toString());
 
 127         Event configRestore = new Event(VNFOperation.ConfigRestore.toString());
 
 128         Event backup = new Event(VNFOperation.Backup.toString());
 
 129         Event snapshot = new Event(VNFOperation.Snapshot.toString());
 
 130         Event softwareUpload = new Event(VNFOperation.SoftwareUpload.toString());
 
 131         Event liveUpgrade = new Event(VNFOperation.LiveUpgrade.toString());
 
 132         Event rollback = new Event(VNFOperation.Rollback.toString());
 
 133         Event sync = new Event(VNFOperation.Sync.toString());
 
 134         Event audit = new Event(VNFOperation.Audit.toString());
 
 135         Event migrate = new Event(VNFOperation.Migrate.toString());
 
 136         Event evacuate = new Event(VNFOperation.Evacuate.toString());
 
 137         Event configBackup = new Event(VNFOperation.ConfigBackup.toString());
 
 138         Event configBackupDelete = new Event(VNFOperation.ConfigBackupDelete.toString());
 
 139         Event configExport = new Event(VNFOperation.ConfigExport.toString());
 
 140         Event stopApplication= new Event(VNFOperation.StopApplication.toString());
 
 142         Event lock = new Event(VNFOperation.Lock.toString());
 
 143         Event unlock = new Event(VNFOperation.Unlock.toString());
 
 144         Event checklock = new Event(VNFOperation.CheckLock.toString());
 
 146         Event success = new Event(VNFOperationOutcome.SUCCESS.toString());
 
 147         Event failure = new Event(VNFOperationOutcome.FAILURE.toString());
 
 150         StateMachineMetadata.StateMachineMetadataBuilder builder =
 
 151                 new StateMachineMetadata.StateMachineMetadataBuilder();
 
 153         builder = builder.addState(notInstantiated);
 
 154         builder = builder.addState(instantiated);
 
 155         builder = builder.addState(configuring);
 
 156         builder = builder.addState(configured);
 
 157         builder = builder.addState(testing);
 
 158         builder = builder.addState(tested);
 
 159         builder = builder.addState(rebuilding);
 
 160         builder = builder.addState(restarting);
 
 161         builder = builder.addState(starting);
 
 162         builder = builder.addState(error);
 
 163         builder = builder.addState(running);
 
 164         builder = builder.addState(unknown);
 
 165         builder = builder.addState(terminating);
 
 166         builder = builder.addState(stopping);
 
 167         builder = builder.addState(stopped);
 
 169         builder = builder.addState(backingUp);
 
 170         builder = builder.addState(snapshotting);
 
 171         builder = builder.addState(softwareUploading);
 
 172         builder = builder.addState(upgrading);
 
 173         builder = builder.addState(rollbacking);
 
 174         builder = builder.addState(migrating);
 
 175         builder = builder.addState(evacuating);
 
 176         builder = builder.addState(notOrchestrated);
 
 177         builder = builder.addState(created);
 
 178         builder = builder.addEvent(startApplication);
 
 179         builder = builder.addEvent(configure);
 
 180         builder = builder.addEvent(test);
 
 181         builder = builder.addEvent(start);
 
 182         builder = builder.addEvent(terminate);
 
 183         builder = builder.addEvent(restart);
 
 184         builder = builder.addEvent(rebuild);
 
 185         builder = builder.addEvent(success);
 
 186         builder = builder.addEvent(failure);
 
 187         builder = builder.addEvent(stop);
 
 188         builder = builder.addEvent(configModify);
 
 189         builder = builder.addEvent(configScaleout);
 
 190         builder = builder.addEvent(configRestore);
 
 191         builder = builder.addEvent(healthcheck);
 
 192         builder = builder.addEvent(backup);
 
 193         builder = builder.addEvent(snapshot);
 
 194         builder = builder.addEvent(softwareUpload);
 
 195         builder = builder.addEvent(liveUpgrade);
 
 196         builder = builder.addEvent(rollback);
 
 197         builder = builder.addEvent(sync);
 
 198         builder = builder.addEvent(audit);
 
 199         builder = builder.addEvent(migrate);
 
 200         builder = builder.addEvent(evacuate);
 
 201         builder = builder.addEvent(lock);
 
 202         builder = builder.addEvent(unlock);
 
 203         builder = builder.addEvent(checklock);
 
 204         builder = builder.addEvent(configBackup);
 
 205         builder = builder.addEvent(configBackupDelete);
 
 206         builder = builder.addEvent(configExport);
 
 207         builder = builder.addEvent(stopApplication);
 
 209         builder = builder.addTransition(notOrchestrated,configure,configuring);
 
 210         builder = builder.addTransition(notOrchestrated,test,testing);
 
 211         builder = builder.addTransition(notOrchestrated,start,starting);
 
 212         builder = builder.addTransition(notOrchestrated,terminate,terminating);
 
 213         builder = builder.addTransition(notOrchestrated,restart,restarting);
 
 214         builder = builder.addTransition(notOrchestrated,rebuild,rebuilding);
 
 215         builder = builder.addTransition(notOrchestrated,stop,stopping);
 
 216         builder = builder.addTransition(notOrchestrated,configModify,configuring);
 
 217         builder = builder.addTransition(notOrchestrated,configScaleout,configuring);
 
 218         builder = builder.addTransition(notOrchestrated,configRestore,configuring);
 
 219         builder = builder.addTransition(notOrchestrated,healthcheck,testing);
 
 220         builder = builder.addTransition(notOrchestrated,backup,backingUp);
 
 221         builder = builder.addTransition(notOrchestrated,snapshot,snapshotting);
 
 222         builder = builder.addTransition(notOrchestrated,softwareUpload,softwareUploading);
 
 223         builder = builder.addTransition(notOrchestrated,liveUpgrade,upgrading);
 
 224         builder = builder.addTransition(notOrchestrated,rollback,rollbacking);
 
 225         builder = builder.addTransition(notOrchestrated,migrate,migrating);
 
 226         builder = builder.addTransition(notOrchestrated,evacuate,evacuating);
 
 227         builder = builder.addTransition(notOrchestrated,lock,notOrchestrated);
 
 228         builder = builder.addTransition(notOrchestrated,unlock,notOrchestrated);
 
 229         builder = builder.addTransition(notOrchestrated,checklock,notOrchestrated);
 
 230         builder = builder.addTransition(notOrchestrated,startApplication,starting);
 
 231         builder = builder.addTransition(notOrchestrated,stopApplication,stopping);
 
 232         builder = builder.addTransition(notOrchestrated,configBackup,notOrchestrated);
 
 234         builder = builder.addTransition(created,configure,configuring);
 
 235         builder = builder.addTransition(created,test,testing);
 
 236         builder = builder.addTransition(created,start,starting);
 
 237         builder = builder.addTransition(created,terminate,terminating);
 
 238         builder = builder.addTransition(created,restart,restarting);
 
 239         builder = builder.addTransition(created,rebuild,rebuilding);
 
 240         builder = builder.addTransition(created,stop,stopping);
 
 241         builder = builder.addTransition(created,configModify,configuring);
 
 242         builder = builder.addTransition(created,configScaleout,configuring);
 
 243         builder = builder.addTransition(created,configRestore,configuring);
 
 244         builder = builder.addTransition(created,healthcheck,testing);
 
 245         builder = builder.addTransition(created,backup,backingUp);
 
 246         builder = builder.addTransition(created,snapshot,snapshotting);
 
 247         builder = builder.addTransition(created,softwareUpload,softwareUploading);
 
 248         builder = builder.addTransition(created,liveUpgrade,upgrading);
 
 249         builder = builder.addTransition(created,rollback,rollbacking);
 
 250         builder = builder.addTransition(created,migrate,migrating);
 
 251         builder = builder.addTransition(created,evacuate,evacuating);
 
 252         builder = builder.addTransition(created,lock,created);
 
 253         builder = builder.addTransition(created,unlock,created);
 
 254         builder = builder.addTransition(created,checklock,created);
 
 255         builder = builder.addTransition(created,startApplication,starting);
 
 256         builder = builder.addTransition(created,stopApplication,stopping);
 
 257         builder = builder.addTransition(created,configBackup,created);
 
 259         builder = builder.addTransition(instantiated,configure,configuring);
 
 260         builder = builder.addTransition(instantiated,test,testing);
 
 261         builder = builder.addTransition(instantiated,start,starting);
 
 262         builder = builder.addTransition(instantiated,terminate,terminating);
 
 263         builder = builder.addTransition(instantiated,restart,restarting);
 
 264         builder = builder.addTransition(instantiated,rebuild,rebuilding);
 
 265         builder = builder.addTransition(instantiated,stop,stopping);
 
 266         builder = builder.addTransition(instantiated,configModify,configuring);
 
 267         builder = builder.addTransition(instantiated,configScaleout,configuring);
 
 268         builder = builder.addTransition(instantiated,configRestore,configuring);
 
 269         builder = builder.addTransition(instantiated,healthcheck,testing);
 
 270         builder = builder.addTransition(instantiated,backup,backingUp);
 
 271         builder = builder.addTransition(instantiated,snapshot,snapshotting);
 
 272         builder = builder.addTransition(instantiated,softwareUpload,softwareUploading);
 
 273         builder = builder.addTransition(instantiated,liveUpgrade,upgrading);
 
 274         builder = builder.addTransition(instantiated,rollback,rollbacking);
 
 275         builder = builder.addTransition(instantiated,migrate,migrating);
 
 276         builder = builder.addTransition(instantiated,evacuate,evacuating);
 
 277         builder = builder.addTransition(instantiated,lock,instantiated);
 
 278         builder = builder.addTransition(instantiated,unlock,instantiated);
 
 279         builder = builder.addTransition(instantiated,checklock,instantiated);
 
 281         builder = builder.addTransition(configured,configure,configuring);
 
 282         builder = builder.addTransition(configured,test,testing);
 
 283         builder = builder.addTransition(configured,start,starting);
 
 284         builder = builder.addTransition(configured,terminate,terminating);
 
 285         builder = builder.addTransition(configured,restart,restarting);
 
 286         builder = builder.addTransition(configured,rebuild,rebuilding);
 
 287         builder = builder.addTransition(configured,stop,stopping);
 
 288         builder = builder.addTransition(configured,configModify,configuring);
 
 289         builder = builder.addTransition(configured,configScaleout,configuring);
 
 290         builder = builder.addTransition(configured,configRestore,configuring);
 
 291         builder = builder.addTransition(configured,healthcheck,testing);
 
 292         builder = builder.addTransition(configured,backup,backingUp);
 
 293         builder = builder.addTransition(configured,snapshot,snapshotting);
 
 294         builder = builder.addTransition(configured,softwareUpload,softwareUploading);
 
 295         builder = builder.addTransition(configured,liveUpgrade,upgrading);
 
 296         builder = builder.addTransition(configured,rollback,rollbacking);
 
 297         builder = builder.addTransition(configured,sync,configured);
 
 298         builder = builder.addTransition(configured,audit,configured);
 
 299         builder = builder.addTransition(configured,migrate,migrating);
 
 300         builder = builder.addTransition(configured,evacuate,evacuating);
 
 301         builder = builder.addTransition(configured,lock,configured);
 
 302         builder = builder.addTransition(configured,unlock,configured);
 
 303         builder = builder.addTransition(configured,checklock,configured);
 
 304         builder = builder.addTransition(configured,configBackup,configured);
 
 305         builder = builder.addTransition(configured,configBackupDelete,configured);
 
 306         builder = builder.addTransition(configured,configExport,configured);
 
 307         builder = builder.addTransition(configured,stopApplication,stopping);
 
 309         builder = builder.addTransition(tested,configure,configuring);
 
 310         builder = builder.addTransition(tested,test,testing);
 
 311         builder = builder.addTransition(tested,start,starting);
 
 312         builder = builder.addTransition(tested,terminate,terminating);
 
 313         builder = builder.addTransition(tested,restart,restarting);
 
 314         builder = builder.addTransition(tested,rebuild,rebuilding);
 
 315         builder = builder.addTransition(tested,stop,stopping);
 
 316         builder = builder.addTransition(tested,configModify,configuring);
 
 317         builder = builder.addTransition(tested,configScaleout,configuring);
 
 318         builder = builder.addTransition(tested,configRestore,configuring);
 
 319         builder = builder.addTransition(tested,healthcheck,testing);
 
 320         builder = builder.addTransition(tested,backup,backingUp);
 
 321         builder = builder.addTransition(tested,snapshot,snapshotting);
 
 322         builder = builder.addTransition(tested,softwareUpload,softwareUploading);
 
 323         builder = builder.addTransition(tested,liveUpgrade,upgrading);
 
 324         builder = builder.addTransition(tested,rollback,rollbacking);
 
 325         builder = builder.addTransition(tested,sync,tested);
 
 326         builder = builder.addTransition(tested,audit,tested);
 
 327         builder = builder.addTransition(tested,migrate,migrating);
 
 328         builder = builder.addTransition(tested,evacuate,evacuating);
 
 329         builder = builder.addTransition(tested,lock,tested);
 
 330         builder = builder.addTransition(tested,unlock,tested);
 
 331         builder = builder.addTransition(tested,checklock,tested);
 
 332         builder = builder.addTransition(tested,configBackup,tested);
 
 333         builder = builder.addTransition(tested,configBackupDelete,tested);
 
 334         builder = builder.addTransition(tested,configExport,tested);
 
 335         builder = builder.addTransition(tested,stopApplication,stopping);
 
 337         builder = builder.addTransition(running,configure,configuring);
 
 338         builder = builder.addTransition(running,test,testing);
 
 339         builder = builder.addTransition(running,start,starting);
 
 340         builder = builder.addTransition(running,terminate,terminating);
 
 341         builder = builder.addTransition(running,restart,restarting);
 
 342         builder = builder.addTransition(running,rebuild,rebuilding);
 
 343         builder = builder.addTransition(running,stop,stopping);
 
 344         builder = builder.addTransition(running,configModify,configuring);
 
 345         builder = builder.addTransition(running,configScaleout,configuring);
 
 346         builder = builder.addTransition(running,configRestore,configuring);
 
 347         builder = builder.addTransition(running,healthcheck,testing);
 
 348         builder = builder.addTransition(running,backup,backingUp);
 
 349         builder = builder.addTransition(running,snapshot,snapshotting);
 
 350         builder = builder.addTransition(running,softwareUpload,softwareUploading);
 
 351         builder = builder.addTransition(running,liveUpgrade,upgrading);
 
 352         builder = builder.addTransition(running,rollback,rollbacking);
 
 353         builder = builder.addTransition(running,sync,running);
 
 354         builder = builder.addTransition(running,audit,running);
 
 355         builder = builder.addTransition(running,migrate,migrating);
 
 356         builder = builder.addTransition(running,evacuate,evacuating);
 
 357         builder = builder.addTransition(running,lock,running);
 
 358         builder = builder.addTransition(running,unlock,running);
 
 359         builder = builder.addTransition(running,checklock,running);
 
 360         builder = builder.addTransition(running,configBackup,running);
 
 361         builder = builder.addTransition(running,configBackupDelete,running);
 
 362         builder = builder.addTransition(running,configExport,running);
 
 363         builder = builder.addTransition(running,stopApplication,stopping);
 
 365         builder = builder.addTransition(error,configure,configuring);
 
 366         builder = builder.addTransition(error,test,testing);
 
 367         builder = builder.addTransition(error,start,starting);
 
 368         builder = builder.addTransition(error,terminate,terminating);
 
 369         builder = builder.addTransition(error,restart,restarting);
 
 370         builder = builder.addTransition(error,rebuild,rebuilding);
 
 371         builder = builder.addTransition(error,stop,stopping);
 
 372         builder = builder.addTransition(error,configModify,configuring);
 
 373         builder = builder.addTransition(error,configScaleout,configuring);
 
 374         builder = builder.addTransition(error,configRestore,configuring);
 
 375         builder = builder.addTransition(error,healthcheck,testing);
 
 376         builder = builder.addTransition(error,backup,backingUp);
 
 377         builder = builder.addTransition(error,snapshot,snapshotting);
 
 378         builder = builder.addTransition(error,softwareUpload,softwareUploading);
 
 379         builder = builder.addTransition(error,liveUpgrade,upgrading);
 
 380         builder = builder.addTransition(error,rollback,rollbacking);
 
 381         builder = builder.addTransition(error,sync,error);
 
 382         builder = builder.addTransition(error,audit,error);
 
 383         builder = builder.addTransition(error,migrate,migrating);
 
 384         builder = builder.addTransition(error,evacuate,evacuating);
 
 385         builder = builder.addTransition(error,lock,error);
 
 386         builder = builder.addTransition(error,unlock,error);
 
 387         builder = builder.addTransition(error,checklock,error);
 
 388         builder = builder.addTransition(error,configBackup,error);
 
 389         builder = builder.addTransition(error,configBackupDelete,error);
 
 390         builder = builder.addTransition(error,configExport,error);
 
 391         builder = builder.addTransition(error,stopApplication,stopping);
 
 393         builder = builder.addTransition(unknown,configure,configuring);
 
 394         builder = builder.addTransition(unknown,test,testing);
 
 395         builder = builder.addTransition(unknown,start,starting);
 
 396         builder = builder.addTransition(unknown,terminate,terminating);
 
 397         builder = builder.addTransition(unknown,restart,restarting);
 
 398         builder = builder.addTransition(unknown,rebuild,rebuilding);
 
 399         builder = builder.addTransition(unknown,stop,stopping);
 
 400         builder = builder.addTransition(unknown,configModify,configuring);
 
 401         builder = builder.addTransition(unknown,configScaleout,configuring);
 
 402         builder = builder.addTransition(unknown,configRestore,configuring);
 
 403         builder = builder.addTransition(unknown,healthcheck,testing);
 
 404         builder = builder.addTransition(unknown,backup,backingUp);
 
 405         builder = builder.addTransition(unknown,snapshot,snapshotting);
 
 406         builder = builder.addTransition(unknown,softwareUpload,softwareUploading);
 
 407         builder = builder.addTransition(unknown,liveUpgrade,upgrading);
 
 408         builder = builder.addTransition(unknown,rollback,rollbacking);
 
 409         builder = builder.addTransition(unknown,sync,unknown);
 
 410         builder = builder.addTransition(unknown,audit,unknown);
 
 411         builder = builder.addTransition(unknown,migrate,migrating);
 
 412         builder = builder.addTransition(unknown,evacuate,evacuating);
 
 413         builder = builder.addTransition(unknown,lock,unknown);
 
 414         builder = builder.addTransition(unknown,unlock,unknown);
 
 415         builder = builder.addTransition(unknown,checklock,unknown);
 
 416         builder = builder.addTransition(unknown,configBackup,unknown);
 
 417         builder = builder.addTransition(unknown,configBackupDelete,unknown);
 
 418         builder = builder.addTransition(unknown,configExport,unknown);
 
 419         builder = builder.addTransition(unknown,stopApplication,stopping);
 
 421         builder = builder.addTransition(stopped,configure,configuring);
 
 422         builder = builder.addTransition(stopped,test,testing);
 
 423         builder = builder.addTransition(stopped,start,starting);
 
 424         builder = builder.addTransition(stopped,terminate,terminating);
 
 425         builder = builder.addTransition(stopped,restart,restarting);
 
 426         builder = builder.addTransition(stopped,rebuild,rebuilding);
 
 427         builder = builder.addTransition(stopped,configModify,configuring);
 
 428         builder = builder.addTransition(stopped,configScaleout,configuring);
 
 429         builder = builder.addTransition(stopped,configRestore,configuring);
 
 430         builder = builder.addTransition(stopped,healthcheck,testing);
 
 431         builder = builder.addTransition(stopped,backup,backingUp);
 
 432         builder = builder.addTransition(stopped,snapshot,snapshotting);
 
 433         builder = builder.addTransition(stopped,softwareUpload,softwareUploading);
 
 434         builder = builder.addTransition(stopped,liveUpgrade,upgrading);
 
 435         builder = builder.addTransition(stopped,rollback,rollbacking);
 
 436         builder = builder.addTransition(stopped,migrate,migrating);
 
 437         builder = builder.addTransition(stopped,evacuate,evacuating);
 
 438         builder = builder.addTransition(stopped,lock,stopped);
 
 439         builder = builder.addTransition(stopped,unlock,stopped);
 
 440         builder = builder.addTransition(stopped,checklock,stopped);
 
 442         builder = builder.addTransition(configuring,success,configured);
 
 443         builder = builder.addTransition(configuring,failure,error);
 
 445         builder = builder.addTransition(testing,success,tested);
 
 446         builder = builder.addTransition(testing,failure,error);
 
 448         builder = builder.addTransition(restarting,success,running);
 
 449         builder = builder.addTransition(restarting,failure,error);
 
 451         builder = builder.addTransition(starting,success,running);
 
 452         builder = builder.addTransition(starting,failure,error);
 
 454         builder = builder.addTransition(terminating,success,notInstantiated);
 
 455         builder = builder.addTransition(terminating,failure,error);
 
 457         builder = builder.addTransition(rebuilding,success,running);
 
 458         builder = builder.addTransition(rebuilding,failure,error);
 
 460         builder = builder.addTransition(stopping,success,stopped);
 
 461         builder = builder.addTransition(stopping,failure,error);
 
 463         builder = builder.addTransition(backingUp,success,running);
 
 464         builder = builder.addTransition(backingUp,failure,error);
 
 466         builder = builder.addTransition(snapshotting,success,running);
 
 467         builder = builder.addTransition(snapshotting,failure,error);
 
 469         builder = builder.addTransition(softwareUploading,success,running);
 
 470         builder = builder.addTransition(softwareUploading,failure,error);
 
 472         builder = builder.addTransition(upgrading,success,running);
 
 473         builder = builder.addTransition(upgrading,failure,error);
 
 475         builder = builder.addTransition(rollbacking,success,running);
 
 476         builder = builder.addTransition(rollbacking,failure,error);
 
 478         builder = builder.addTransition(migrating,success,running);
 
 479         builder = builder.addTransition(migrating,failure,error);
 
 481         builder = builder.addTransition(evacuating,success,running);
 
 482         builder = builder.addTransition(evacuating,failure,error);
 
 485         builder = builder.addTransition(configured,startApplication,starting);
 
 486         builder = builder.addTransition(tested,startApplication,starting);
 
 487         builder = builder.addTransition(error,startApplication,starting);
 
 488         builder = builder.addTransition(unknown,startApplication,starting);
 
 489         builder = builder.addTransition(running,startApplication,starting);
 
 491         return builder.build();