11f68adeb61c0afc5b584d468a2f9ff8215db8ca
[appc.git] / appc-lifecycle-management / state-machine-lib / src / main / java / org / onap / appc / statemachine / impl / readers / VnfMetaDataReader.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2017-2018 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
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
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.
20  * 
21  * ============LICENSE_END=========================================================
22  */
23
24 package org.onap.appc.statemachine.impl.readers;
25
26 import org.onap.appc.statemachine.StateMetaDataReader;
27 import org.onap.appc.lifecyclemanager.objects.VNFOperationOutcome;
28 import org.onap.appc.statemachine.objects.Event;
29 import org.onap.appc.statemachine.objects.State;
30 import org.onap.appc.statemachine.objects.StateMachineMetadata;
31
32 /**
33  * Reader for VNF MetaData
34  */
35 public class VnfMetaDataReader implements StateMetaDataReader {
36
37     /**
38      * VNF Operations
39      */
40     public enum VNFOperation {
41
42         Configure, Test, HealthCheck, Start, Terminate, Restart, Rebuild, Stop, ConfigModify,
43         ConfigScaleOut,ConfigRestore,Backup, Snapshot,
44         SoftwareUpload, LiveUpgrade, Rollback, Sync, Audit, Test_lic, Migrate, Evacuate,
45         ConfigBackup, ConfigBackupDelete, ConfigExport,
46         Lock(true), Unlock(true), CheckLock(true), StartApplication,StopApplication;
47
48         private boolean builtIn;
49
50         VNFOperation(boolean builtIn) {
51             this.builtIn = builtIn;
52         }
53
54         VNFOperation() {
55             this(false);
56         }
57     }
58
59     /**
60      * VNF States
61      */
62     enum VNFStates {
63         Not_Instantiated, Instantiated, Configuring, Configured, Testing, Tested,
64         Rebuilding, Restarting, Starting,
65         Error, Running, Unknown, Terminating, Stopping, Stopped,
66         Backing_Up, Snapshotting, Software_Uploading, Upgrading,
67         Rollbacking, Licensing, Migrating, Evacuating,
68         NOT_ORCHESTRATED("NOT ORCHESTRATED"), Created;
69
70         String stateName;
71
72         VNFStates(String name) {
73             this.stateName = name;
74         }
75
76         VNFStates() {
77             this.stateName = name();
78         }
79
80         @Override
81         public String toString() {
82             return this.stateName;
83         }
84     }
85
86     @Override
87     public StateMachineMetadata readMetadata() {
88         State notInstantiated = new State(VNFStates.Not_Instantiated.toString());
89         State instantiated = new State(VNFStates.Instantiated.toString());
90         State configuring = new State(VNFStates.Configuring.toString());
91         State configured = new State(VNFStates.Configured.toString());
92         State testing = new State(VNFStates.Testing.toString());
93         State tested = new State(VNFStates.Tested.toString());
94         State rebuilding = new State(VNFStates.Rebuilding.toString());
95         State restarting = new State(VNFStates.Restarting.toString());
96         State starting = new State(VNFStates.Starting.toString());
97         State error = new State(VNFStates.Error.toString());
98         State running = new State(VNFStates.Running.toString());
99         State unknown = new State(VNFStates.Unknown.toString());
100         State terminating = new State(VNFStates.Terminating.toString());
101         State stopping = new State(VNFStates.Stopping.toString());
102         State stopped = new State(VNFStates.Stopped.toString());
103         State notOrchestrated = new State(VNFStates.NOT_ORCHESTRATED.toString());
104
105         State backingUp = new State(VNFStates.Backing_Up.toString());
106         State snapshotting = new State(VNFStates.Snapshotting.toString());
107         State softwareUploading = new State(VNFStates.Software_Uploading.toString());
108         State upgrading = new State(VNFStates.Upgrading.toString());
109         State rollbacking = new State(VNFStates.Rollbacking.toString());
110
111         State migrating = new State(VNFStates.Migrating.toString());
112         State evacuating = new State(VNFStates.Evacuating.toString());
113         State created= new State(VNFStates.Created.toString());
114
115         Event startApplication = new Event(VNFOperation.StartApplication.toString());
116         Event configure = new Event(VNFOperation.Configure.toString());
117         Event healthcheck = new Event(VNFOperation.HealthCheck.toString());
118         Event test = new Event(VNFOperation.Test.toString());
119         Event start = new Event(VNFOperation.Start.toString());
120         Event terminate = new Event(VNFOperation.Terminate.toString());
121         Event restart = new Event(VNFOperation.Restart.toString());
122         Event rebuild = new Event(VNFOperation.Rebuild.toString());
123         Event stop = new Event(VNFOperation.Stop.toString());
124         Event configModify = new Event(VNFOperation.ConfigModify.toString());
125         Event configScaleout = new Event(VNFOperation.ConfigScaleOut.toString());
126         Event configRestore = new Event(VNFOperation.ConfigRestore.toString());
127         Event backup = new Event(VNFOperation.Backup.toString());
128         Event snapshot = new Event(VNFOperation.Snapshot.toString());
129         Event softwareUpload = new Event(VNFOperation.SoftwareUpload.toString());
130         Event liveUpgrade = new Event(VNFOperation.LiveUpgrade.toString());
131         Event rollback = new Event(VNFOperation.Rollback.toString());
132         Event sync = new Event(VNFOperation.Sync.toString());
133         Event audit = new Event(VNFOperation.Audit.toString());
134         Event migrate = new Event(VNFOperation.Migrate.toString());
135         Event evacuate = new Event(VNFOperation.Evacuate.toString());
136         Event configBackup = new Event(VNFOperation.ConfigBackup.toString());
137         Event configBackupDelete = new Event(VNFOperation.ConfigBackupDelete.toString());
138         Event configExport = new Event(VNFOperation.ConfigExport.toString());
139         Event stopApplication= new Event(VNFOperation.StopApplication.toString());
140
141         Event lock = new Event(VNFOperation.Lock.toString());
142         Event unlock = new Event(VNFOperation.Unlock.toString());
143         Event checklock = new Event(VNFOperation.CheckLock.toString());
144
145         Event success = new Event(VNFOperationOutcome.SUCCESS.toString());
146         Event failure = new Event(VNFOperationOutcome.FAILURE.toString());
147
148
149         StateMachineMetadata.StateMachineMetadataBuilder builder =
150                 new StateMachineMetadata.StateMachineMetadataBuilder();
151
152         builder = builder.addState(notInstantiated);
153         builder = builder.addState(instantiated);
154         builder = builder.addState(configuring);
155         builder = builder.addState(configured);
156         builder = builder.addState(testing);
157         builder = builder.addState(tested);
158         builder = builder.addState(rebuilding);
159         builder = builder.addState(restarting);
160         builder = builder.addState(starting);
161         builder = builder.addState(error);
162         builder = builder.addState(running);
163         builder = builder.addState(unknown);
164         builder = builder.addState(terminating);
165         builder = builder.addState(stopping);
166         builder = builder.addState(stopped);
167
168         builder = builder.addState(backingUp);
169         builder = builder.addState(snapshotting);
170         builder = builder.addState(softwareUploading);
171         builder = builder.addState(upgrading);
172         builder = builder.addState(rollbacking);
173         builder = builder.addState(migrating);
174         builder = builder.addState(evacuating);
175         builder = builder.addState(notOrchestrated);
176         builder = builder.addState(created);
177         builder = builder.addEvent(startApplication);
178         builder = builder.addEvent(configure);
179         builder = builder.addEvent(test);
180         builder = builder.addEvent(start);
181         builder = builder.addEvent(terminate);
182         builder = builder.addEvent(restart);
183         builder = builder.addEvent(rebuild);
184         builder = builder.addEvent(success);
185         builder = builder.addEvent(failure);
186         builder = builder.addEvent(stop);
187         builder = builder.addEvent(configModify);
188         builder = builder.addEvent(configScaleout);
189         builder = builder.addEvent(configRestore);
190         builder = builder.addEvent(healthcheck);
191         builder = builder.addEvent(backup);
192         builder = builder.addEvent(snapshot);
193         builder = builder.addEvent(softwareUpload);
194         builder = builder.addEvent(liveUpgrade);
195         builder = builder.addEvent(rollback);
196         builder = builder.addEvent(sync);
197         builder = builder.addEvent(audit);
198         builder = builder.addEvent(migrate);
199         builder = builder.addEvent(evacuate);
200         builder = builder.addEvent(lock);
201         builder = builder.addEvent(unlock);
202         builder = builder.addEvent(checklock);
203         builder = builder.addEvent(configBackup);
204         builder = builder.addEvent(configBackupDelete);
205         builder = builder.addEvent(configExport);
206         builder = builder.addEvent(stopApplication);
207
208         builder = builder.addTransition(notOrchestrated,configure,configuring);
209         builder = builder.addTransition(notOrchestrated,test,testing);
210         builder = builder.addTransition(notOrchestrated,start,starting);
211         builder = builder.addTransition(notOrchestrated,terminate,terminating);
212         builder = builder.addTransition(notOrchestrated,restart,restarting);
213         builder = builder.addTransition(notOrchestrated,rebuild,rebuilding);
214         builder = builder.addTransition(notOrchestrated,stop,stopping);
215         builder = builder.addTransition(notOrchestrated,configModify,configuring);
216         builder = builder.addTransition(notOrchestrated,configScaleout,configuring);
217         builder = builder.addTransition(notOrchestrated,configRestore,configuring);
218         builder = builder.addTransition(notOrchestrated,healthcheck,testing);
219         builder = builder.addTransition(notOrchestrated,backup,backingUp);
220         builder = builder.addTransition(notOrchestrated,snapshot,snapshotting);
221         builder = builder.addTransition(notOrchestrated,softwareUpload,softwareUploading);
222         builder = builder.addTransition(notOrchestrated,liveUpgrade,upgrading);
223         builder = builder.addTransition(notOrchestrated,rollback,rollbacking);
224         builder = builder.addTransition(notOrchestrated,migrate,migrating);
225         builder = builder.addTransition(notOrchestrated,evacuate,evacuating);
226         builder = builder.addTransition(notOrchestrated,lock,notOrchestrated);
227         builder = builder.addTransition(notOrchestrated,unlock,notOrchestrated);
228         builder = builder.addTransition(notOrchestrated,checklock,notOrchestrated);
229         builder = builder.addTransition(notOrchestrated,startApplication,starting);
230         builder = builder.addTransition(notOrchestrated,stopApplication,stopping);
231         builder = builder.addTransition(notOrchestrated,configBackup,notOrchestrated);
232
233         builder = builder.addTransition(created,configure,configuring);
234         builder = builder.addTransition(created,test,testing);
235         builder = builder.addTransition(created,start,starting);
236         builder = builder.addTransition(created,terminate,terminating);
237         builder = builder.addTransition(created,restart,restarting);
238         builder = builder.addTransition(created,rebuild,rebuilding);
239         builder = builder.addTransition(created,stop,stopping);
240         builder = builder.addTransition(created,configModify,configuring);
241         builder = builder.addTransition(created,configScaleout,configuring);
242         builder = builder.addTransition(created,configRestore,configuring);
243         builder = builder.addTransition(created,healthcheck,testing);
244         builder = builder.addTransition(created,backup,backingUp);
245         builder = builder.addTransition(created,snapshot,snapshotting);
246         builder = builder.addTransition(created,softwareUpload,softwareUploading);
247         builder = builder.addTransition(created,liveUpgrade,upgrading);
248         builder = builder.addTransition(created,rollback,rollbacking);
249         builder = builder.addTransition(created,migrate,migrating);
250         builder = builder.addTransition(created,evacuate,evacuating);
251         builder = builder.addTransition(created,lock,created);
252         builder = builder.addTransition(created,unlock,created);
253         builder = builder.addTransition(created,checklock,created);
254         builder = builder.addTransition(created,startApplication,starting);
255         builder = builder.addTransition(created,stopApplication,stopping);
256         builder = builder.addTransition(created,configBackup,created);
257
258         builder = builder.addTransition(instantiated,configure,configuring);
259         builder = builder.addTransition(instantiated,test,testing);
260         builder = builder.addTransition(instantiated,start,starting);
261         builder = builder.addTransition(instantiated,terminate,terminating);
262         builder = builder.addTransition(instantiated,restart,restarting);
263         builder = builder.addTransition(instantiated,rebuild,rebuilding);
264         builder = builder.addTransition(instantiated,stop,stopping);
265         builder = builder.addTransition(instantiated,configModify,configuring);
266         builder = builder.addTransition(instantiated,configScaleout,configuring);
267         builder = builder.addTransition(instantiated,configRestore,configuring);
268         builder = builder.addTransition(instantiated,healthcheck,testing);
269         builder = builder.addTransition(instantiated,backup,backingUp);
270         builder = builder.addTransition(instantiated,snapshot,snapshotting);
271         builder = builder.addTransition(instantiated,softwareUpload,softwareUploading);
272         builder = builder.addTransition(instantiated,liveUpgrade,upgrading);
273         builder = builder.addTransition(instantiated,rollback,rollbacking);
274         builder = builder.addTransition(instantiated,migrate,migrating);
275         builder = builder.addTransition(instantiated,evacuate,evacuating);
276         builder = builder.addTransition(instantiated,lock,instantiated);
277         builder = builder.addTransition(instantiated,unlock,instantiated);
278         builder = builder.addTransition(instantiated,checklock,instantiated);
279
280         builder = builder.addTransition(configured,configure,configuring);
281         builder = builder.addTransition(configured,test,testing);
282         builder = builder.addTransition(configured,start,starting);
283         builder = builder.addTransition(configured,terminate,terminating);
284         builder = builder.addTransition(configured,restart,restarting);
285         builder = builder.addTransition(configured,rebuild,rebuilding);
286         builder = builder.addTransition(configured,stop,stopping);
287         builder = builder.addTransition(configured,configModify,configuring);
288         builder = builder.addTransition(configured,configScaleout,configuring);
289         builder = builder.addTransition(configured,configRestore,configuring);
290         builder = builder.addTransition(configured,healthcheck,testing);
291         builder = builder.addTransition(configured,backup,backingUp);
292         builder = builder.addTransition(configured,snapshot,snapshotting);
293         builder = builder.addTransition(configured,softwareUpload,softwareUploading);
294         builder = builder.addTransition(configured,liveUpgrade,upgrading);
295         builder = builder.addTransition(configured,rollback,rollbacking);
296         builder = builder.addTransition(configured,sync,configured);
297         builder = builder.addTransition(configured,audit,configured);
298         builder = builder.addTransition(configured,migrate,migrating);
299         builder = builder.addTransition(configured,evacuate,evacuating);
300         builder = builder.addTransition(configured,lock,configured);
301         builder = builder.addTransition(configured,unlock,configured);
302         builder = builder.addTransition(configured,checklock,configured);
303         builder = builder.addTransition(configured,configBackup,configured);
304         builder = builder.addTransition(configured,configBackupDelete,configured);
305         builder = builder.addTransition(configured,configExport,configured);
306         builder = builder.addTransition(configured,stopApplication,stopping);
307
308         builder = builder.addTransition(tested,configure,configuring);
309         builder = builder.addTransition(tested,test,testing);
310         builder = builder.addTransition(tested,start,starting);
311         builder = builder.addTransition(tested,terminate,terminating);
312         builder = builder.addTransition(tested,restart,restarting);
313         builder = builder.addTransition(tested,rebuild,rebuilding);
314         builder = builder.addTransition(tested,stop,stopping);
315         builder = builder.addTransition(tested,configModify,configuring);
316         builder = builder.addTransition(tested,configScaleout,configuring);
317         builder = builder.addTransition(tested,configRestore,configuring);
318         builder = builder.addTransition(tested,healthcheck,testing);
319         builder = builder.addTransition(tested,backup,backingUp);
320         builder = builder.addTransition(tested,snapshot,snapshotting);
321         builder = builder.addTransition(tested,softwareUpload,softwareUploading);
322         builder = builder.addTransition(tested,liveUpgrade,upgrading);
323         builder = builder.addTransition(tested,rollback,rollbacking);
324         builder = builder.addTransition(tested,sync,tested);
325         builder = builder.addTransition(tested,audit,tested);
326         builder = builder.addTransition(tested,migrate,migrating);
327         builder = builder.addTransition(tested,evacuate,evacuating);
328         builder = builder.addTransition(tested,lock,tested);
329         builder = builder.addTransition(tested,unlock,tested);
330         builder = builder.addTransition(tested,checklock,tested);
331         builder = builder.addTransition(tested,configBackup,tested);
332         builder = builder.addTransition(tested,configBackupDelete,tested);
333         builder = builder.addTransition(tested,configExport,tested);
334         builder = builder.addTransition(tested,stopApplication,stopping);
335
336         builder = builder.addTransition(running,configure,configuring);
337         builder = builder.addTransition(running,test,testing);
338         builder = builder.addTransition(running,start,starting);
339         builder = builder.addTransition(running,terminate,terminating);
340         builder = builder.addTransition(running,restart,restarting);
341         builder = builder.addTransition(running,rebuild,rebuilding);
342         builder = builder.addTransition(running,stop,stopping);
343         builder = builder.addTransition(running,configModify,configuring);
344         builder = builder.addTransition(running,configScaleout,configuring);
345         builder = builder.addTransition(running,configRestore,configuring);
346         builder = builder.addTransition(running,healthcheck,testing);
347         builder = builder.addTransition(running,backup,backingUp);
348         builder = builder.addTransition(running,snapshot,snapshotting);
349         builder = builder.addTransition(running,softwareUpload,softwareUploading);
350         builder = builder.addTransition(running,liveUpgrade,upgrading);
351         builder = builder.addTransition(running,rollback,rollbacking);
352         builder = builder.addTransition(running,sync,running);
353         builder = builder.addTransition(running,audit,running);
354         builder = builder.addTransition(running,migrate,migrating);
355         builder = builder.addTransition(running,evacuate,evacuating);
356         builder = builder.addTransition(running,lock,running);
357         builder = builder.addTransition(running,unlock,running);
358         builder = builder.addTransition(running,checklock,running);
359         builder = builder.addTransition(running,configBackup,running);
360         builder = builder.addTransition(running,configBackupDelete,running);
361         builder = builder.addTransition(running,configExport,running);
362         builder = builder.addTransition(running,stopApplication,stopping);
363
364         builder = builder.addTransition(error,configure,configuring);
365         builder = builder.addTransition(error,test,testing);
366         builder = builder.addTransition(error,start,starting);
367         builder = builder.addTransition(error,terminate,terminating);
368         builder = builder.addTransition(error,restart,restarting);
369         builder = builder.addTransition(error,rebuild,rebuilding);
370         builder = builder.addTransition(error,stop,stopping);
371         builder = builder.addTransition(error,configModify,configuring);
372         builder = builder.addTransition(error,configScaleout,configuring);
373         builder = builder.addTransition(error,configRestore,configuring);
374         builder = builder.addTransition(error,healthcheck,testing);
375         builder = builder.addTransition(error,backup,backingUp);
376         builder = builder.addTransition(error,snapshot,snapshotting);
377         builder = builder.addTransition(error,softwareUpload,softwareUploading);
378         builder = builder.addTransition(error,liveUpgrade,upgrading);
379         builder = builder.addTransition(error,rollback,rollbacking);
380         builder = builder.addTransition(error,sync,error);
381         builder = builder.addTransition(error,audit,error);
382         builder = builder.addTransition(error,migrate,migrating);
383         builder = builder.addTransition(error,evacuate,evacuating);
384         builder = builder.addTransition(error,lock,error);
385         builder = builder.addTransition(error,unlock,error);
386         builder = builder.addTransition(error,checklock,error);
387         builder = builder.addTransition(error,configBackup,error);
388         builder = builder.addTransition(error,configBackupDelete,error);
389         builder = builder.addTransition(error,configExport,error);
390         builder = builder.addTransition(error,stopApplication,stopping);
391
392         builder = builder.addTransition(unknown,configure,configuring);
393         builder = builder.addTransition(unknown,test,testing);
394         builder = builder.addTransition(unknown,start,starting);
395         builder = builder.addTransition(unknown,terminate,terminating);
396         builder = builder.addTransition(unknown,restart,restarting);
397         builder = builder.addTransition(unknown,rebuild,rebuilding);
398         builder = builder.addTransition(unknown,stop,stopping);
399         builder = builder.addTransition(unknown,configModify,configuring);
400         builder = builder.addTransition(unknown,configScaleout,configuring);
401         builder = builder.addTransition(unknown,configRestore,configuring);
402         builder = builder.addTransition(unknown,healthcheck,testing);
403         builder = builder.addTransition(unknown,backup,backingUp);
404         builder = builder.addTransition(unknown,snapshot,snapshotting);
405         builder = builder.addTransition(unknown,softwareUpload,softwareUploading);
406         builder = builder.addTransition(unknown,liveUpgrade,upgrading);
407         builder = builder.addTransition(unknown,rollback,rollbacking);
408         builder = builder.addTransition(unknown,sync,unknown);
409         builder = builder.addTransition(unknown,audit,unknown);
410         builder = builder.addTransition(unknown,migrate,migrating);
411         builder = builder.addTransition(unknown,evacuate,evacuating);
412         builder = builder.addTransition(unknown,lock,unknown);
413         builder = builder.addTransition(unknown,unlock,unknown);
414         builder = builder.addTransition(unknown,checklock,unknown);
415         builder = builder.addTransition(unknown,configBackup,unknown);
416         builder = builder.addTransition(unknown,configBackupDelete,unknown);
417         builder = builder.addTransition(unknown,configExport,unknown);
418         builder = builder.addTransition(unknown,stopApplication,stopping);
419
420         builder = builder.addTransition(stopped,configure,configuring);
421         builder = builder.addTransition(stopped,test,testing);
422         builder = builder.addTransition(stopped,start,starting);
423         builder = builder.addTransition(stopped,terminate,terminating);
424         builder = builder.addTransition(stopped,restart,restarting);
425         builder = builder.addTransition(stopped,rebuild,rebuilding);
426         builder = builder.addTransition(stopped,configModify,configuring);
427         builder = builder.addTransition(stopped,configScaleout,configuring);
428         builder = builder.addTransition(stopped,configRestore,configuring);
429         builder = builder.addTransition(stopped,healthcheck,testing);
430         builder = builder.addTransition(stopped,backup,backingUp);
431         builder = builder.addTransition(stopped,snapshot,snapshotting);
432         builder = builder.addTransition(stopped,softwareUpload,softwareUploading);
433         builder = builder.addTransition(stopped,liveUpgrade,upgrading);
434         builder = builder.addTransition(stopped,rollback,rollbacking);
435         builder = builder.addTransition(stopped,migrate,migrating);
436         builder = builder.addTransition(stopped,evacuate,evacuating);
437         builder = builder.addTransition(stopped,lock,stopped);
438         builder = builder.addTransition(stopped,unlock,stopped);
439         builder = builder.addTransition(stopped,checklock,stopped);
440
441         builder = builder.addTransition(configuring,success,configured);
442         builder = builder.addTransition(configuring,failure,error);
443
444         builder = builder.addTransition(testing,success,tested);
445         builder = builder.addTransition(testing,failure,error);
446
447         builder = builder.addTransition(restarting,success,running);
448         builder = builder.addTransition(restarting,failure,error);
449
450         builder = builder.addTransition(starting,success,running);
451         builder = builder.addTransition(starting,failure,error);
452
453         builder = builder.addTransition(terminating,success,notInstantiated);
454         builder = builder.addTransition(terminating,failure,error);
455
456         builder = builder.addTransition(rebuilding,success,running);
457         builder = builder.addTransition(rebuilding,failure,error);
458
459         builder = builder.addTransition(stopping,success,stopped);
460         builder = builder.addTransition(stopping,failure,error);
461
462         builder = builder.addTransition(backingUp,success,running);
463         builder = builder.addTransition(backingUp,failure,error);
464
465         builder = builder.addTransition(snapshotting,success,running);
466         builder = builder.addTransition(snapshotting,failure,error);
467
468         builder = builder.addTransition(softwareUploading,success,running);
469         builder = builder.addTransition(softwareUploading,failure,error);
470
471         builder = builder.addTransition(upgrading,success,running);
472         builder = builder.addTransition(upgrading,failure,error);
473
474         builder = builder.addTransition(rollbacking,success,running);
475         builder = builder.addTransition(rollbacking,failure,error);
476
477         builder = builder.addTransition(migrating,success,running);
478         builder = builder.addTransition(migrating,failure,error);
479
480         builder = builder.addTransition(evacuating,success,running);
481         builder = builder.addTransition(evacuating,failure,error);
482
483
484         builder = builder.addTransition(configured,startApplication,starting);
485         builder = builder.addTransition(tested,startApplication,starting);
486         builder = builder.addTransition(error,startApplication,starting);
487         builder = builder.addTransition(unknown,startApplication,starting);
488         builder = builder.addTransition(running,startApplication,starting);
489
490         return builder.build();
491     }
492 }