cd573918b582252ae9214edf191aa501a39fb81e
[appc.git] / appc-lifecycle-management / state-machine-lib / src / main / java / org / openecomp / appc / statemachine / impl / readers / VnfMetaDataReader.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
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
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  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  * ============LICENSE_END=========================================================
23  */
24
25 package org.openecomp.appc.statemachine.impl.readers;
26
27 import org.openecomp.appc.statemachine.StateMetaDataReader;
28 import org.openecomp.appc.lifecyclemanager.objects.VNFOperationOutcome;
29 import org.openecomp.appc.statemachine.objects.Event;
30 import org.openecomp.appc.statemachine.objects.State;
31 import org.openecomp.appc.statemachine.objects.StateMachineMetadata;
32
33 /**
34  * Reader for VNF MetaData
35  */
36 public class VnfMetaDataReader implements StateMetaDataReader {
37
38     /**
39      * VNF Operations
40      */
41     public enum VNFOperation {
42
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;
48
49         private boolean builtIn;
50
51         VNFOperation(boolean builtIn) {
52             this.builtIn = builtIn;
53         }
54
55         VNFOperation() {
56             this(false);
57         }
58     }
59
60     /**
61      * VNF States
62      */
63     enum VNFStates {
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;
70
71         String stateName;
72
73         VNFStates(String name) {
74             this.stateName = name;
75         }
76
77         VNFStates() {
78             this.stateName = name();
79         }
80
81         @Override
82         public String toString() {
83             return this.stateName;
84         }
85     }
86
87     @Override
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());
105
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());
111
112         State migrating = new State(VNFStates.Migrating.toString());
113         State evacuating = new State(VNFStates.Evacuating.toString());
114         State created= new State(VNFStates.Created.toString());
115
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());
141
142         Event lock = new Event(VNFOperation.Lock.toString());
143         Event unlock = new Event(VNFOperation.Unlock.toString());
144         Event checklock = new Event(VNFOperation.CheckLock.toString());
145
146         Event success = new Event(VNFOperationOutcome.SUCCESS.toString());
147         Event failure = new Event(VNFOperationOutcome.FAILURE.toString());
148
149
150         StateMachineMetadata.StateMachineMetadataBuilder builder =
151                 new StateMachineMetadata.StateMachineMetadataBuilder();
152
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);
168
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);
208
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);
233
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);
258
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);
280
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);
308
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);
336
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);
364
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);
392
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);
420
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);
441
442         builder = builder.addTransition(configuring,success,configured);
443         builder = builder.addTransition(configuring,failure,error);
444
445         builder = builder.addTransition(testing,success,tested);
446         builder = builder.addTransition(testing,failure,error);
447
448         builder = builder.addTransition(restarting,success,running);
449         builder = builder.addTransition(restarting,failure,error);
450
451         builder = builder.addTransition(starting,success,running);
452         builder = builder.addTransition(starting,failure,error);
453
454         builder = builder.addTransition(terminating,success,notInstantiated);
455         builder = builder.addTransition(terminating,failure,error);
456
457         builder = builder.addTransition(rebuilding,success,running);
458         builder = builder.addTransition(rebuilding,failure,error);
459
460         builder = builder.addTransition(stopping,success,stopped);
461         builder = builder.addTransition(stopping,failure,error);
462
463         builder = builder.addTransition(backingUp,success,running);
464         builder = builder.addTransition(backingUp,failure,error);
465
466         builder = builder.addTransition(snapshotting,success,running);
467         builder = builder.addTransition(snapshotting,failure,error);
468
469         builder = builder.addTransition(softwareUploading,success,running);
470         builder = builder.addTransition(softwareUploading,failure,error);
471
472         builder = builder.addTransition(upgrading,success,running);
473         builder = builder.addTransition(upgrading,failure,error);
474
475         builder = builder.addTransition(rollbacking,success,running);
476         builder = builder.addTransition(rollbacking,failure,error);
477
478         builder = builder.addTransition(migrating,success,running);
479         builder = builder.addTransition(migrating,failure,error);
480
481         builder = builder.addTransition(evacuating,success,running);
482         builder = builder.addTransition(evacuating,failure,error);
483
484
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);
490
491         return builder.build();
492     }
493 }