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.openecomp.appc.statemachine.impl.readers;
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;
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();