2 * ============LICENSE_START=======================================================
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
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 * ============LICENSE_END=========================================================
24 package org.onap.appc.statemachine.impl.readers;
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;
33 * Reader for VNF MetaData
35 public class VnfMetaDataReader implements StateMetaDataReader {
40 public enum VNFOperation {
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;
48 private boolean builtIn;
50 VNFOperation(boolean builtIn) {
51 this.builtIn = builtIn;
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;
72 VNFStates(String name) {
73 this.stateName = name;
77 this.stateName = name();
81 public String toString() {
82 return this.stateName;
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());
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());
111 State migrating = new State(VNFStates.Migrating.toString());
112 State evacuating = new State(VNFStates.Evacuating.toString());
113 State created= new State(VNFStates.Created.toString());
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());
141 Event lock = new Event(VNFOperation.Lock.toString());
142 Event unlock = new Event(VNFOperation.Unlock.toString());
143 Event checklock = new Event(VNFOperation.CheckLock.toString());
145 Event success = new Event(VNFOperationOutcome.SUCCESS.toString());
146 Event failure = new Event(VNFOperationOutcome.FAILURE.toString());
149 StateMachineMetadata.StateMachineMetadataBuilder builder =
150 new StateMachineMetadata.StateMachineMetadataBuilder();
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
441 builder = builder.addTransition(configuring,success,configured);
442 builder = builder.addTransition(configuring,failure,error);
444 builder = builder.addTransition(testing,success,tested);
445 builder = builder.addTransition(testing,failure,error);
447 builder = builder.addTransition(restarting,success,running);
448 builder = builder.addTransition(restarting,failure,error);
450 builder = builder.addTransition(starting,success,running);
451 builder = builder.addTransition(starting,failure,error);
453 builder = builder.addTransition(terminating,success,notInstantiated);
454 builder = builder.addTransition(terminating,failure,error);
456 builder = builder.addTransition(rebuilding,success,running);
457 builder = builder.addTransition(rebuilding,failure,error);
459 builder = builder.addTransition(stopping,success,stopped);
460 builder = builder.addTransition(stopping,failure,error);
462 builder = builder.addTransition(backingUp,success,running);
463 builder = builder.addTransition(backingUp,failure,error);
465 builder = builder.addTransition(snapshotting,success,running);
466 builder = builder.addTransition(snapshotting,failure,error);
468 builder = builder.addTransition(softwareUploading,success,running);
469 builder = builder.addTransition(softwareUploading,failure,error);
471 builder = builder.addTransition(upgrading,success,running);
472 builder = builder.addTransition(upgrading,failure,error);
474 builder = builder.addTransition(rollbacking,success,running);
475 builder = builder.addTransition(rollbacking,failure,error);
477 builder = builder.addTransition(migrating,success,running);
478 builder = builder.addTransition(migrating,failure,error);
480 builder = builder.addTransition(evacuating,success,running);
481 builder = builder.addTransition(evacuating,failure,error);
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);
490 return builder.build();