blob: 5baf3f956c7546878fc041ddced2e2cb6b8e0da5 [file] [log] [blame]
Jian Li43dc9ca2020-12-19 04:01:49 +09001/*
2 * Copyright 2020-present Open Networking Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.kubevirtnode.api;
17
18/**
19 * Defines the initialization stats of KubeVirt node.
20 */
21public enum KubevirtNodeState {
22
23 /**
24 * Indicates the node is in pre-on-board.
25 */
26 PRE_ON_BOARD {
27 @Override
28 public void process(KubevirtNodeHandler handler, KubevirtNode node) {
Jian Li43dc9ca2020-12-19 04:01:49 +090029 }
30
31 @Override
Jian Li138f51f2021-01-06 03:29:58 +090032 public KubevirtNodeState nextState() {
33 return ON_BOARDED;
Jian Li43dc9ca2020-12-19 04:01:49 +090034 }
35 },
36 /**
37 * Indicates the node is on-boarded.
38 */
39 ON_BOARDED {
40 @Override
41 public void process(KubevirtNodeHandler handler, KubevirtNode node) {
Jian Li138f51f2021-01-06 03:29:58 +090042 handler.processOnBoardedState(node);
Jian Li43dc9ca2020-12-19 04:01:49 +090043 }
44
45 @Override
Jian Li138f51f2021-01-06 03:29:58 +090046 public KubevirtNodeState nextState() {
47 return ON_BOARDED;
Jian Li43dc9ca2020-12-19 04:01:49 +090048 }
49 },
50 /**
51 * Indicates the node is newly added.
52 */
53 INIT {
54 @Override
55 public void process(KubevirtNodeHandler handler, KubevirtNode node) {
Jian Li138f51f2021-01-06 03:29:58 +090056 handler.processInitState(node);
Jian Li43dc9ca2020-12-19 04:01:49 +090057 }
58
59 @Override
Jian Li138f51f2021-01-06 03:29:58 +090060 public KubevirtNodeState nextState() {
61 return DEVICE_CREATED;
Jian Li43dc9ca2020-12-19 04:01:49 +090062 }
63 },
64 /**
65 * Indicates bridge devices are added according to the node state.
66 */
67 DEVICE_CREATED {
68 @Override
69 public void process(KubevirtNodeHandler handler, KubevirtNode node) {
Jian Li138f51f2021-01-06 03:29:58 +090070 handler.processDeviceCreatedState(node);
Jian Li43dc9ca2020-12-19 04:01:49 +090071 }
72
73 @Override
Jian Li138f51f2021-01-06 03:29:58 +090074 public KubevirtNodeState nextState() {
75 return COMPLETE;
Jian Li43dc9ca2020-12-19 04:01:49 +090076 }
77 },
78 /**
79 * Indicates node initialization is done.
80 */
81 COMPLETE {
82 @Override
83 public void process(KubevirtNodeHandler handler, KubevirtNode node) {
Jian Li138f51f2021-01-06 03:29:58 +090084 handler.processCompleteState(node);
Jian Li43dc9ca2020-12-19 04:01:49 +090085 }
86
87 @Override
Jian Li138f51f2021-01-06 03:29:58 +090088 public KubevirtNodeState nextState() {
89 return COMPLETE;
Jian Li43dc9ca2020-12-19 04:01:49 +090090 }
91 },
92 /**
93 * Indicates node is broken.
94 */
95 INCOMPLETE {
96 @Override
97 public void process(KubevirtNodeHandler handler, KubevirtNode node) {
Jian Li138f51f2021-01-06 03:29:58 +090098 handler.processIncompleteState(node);
Jian Li43dc9ca2020-12-19 04:01:49 +090099 }
100
101 @Override
Jian Li138f51f2021-01-06 03:29:58 +0900102 public KubevirtNodeState nextState() {
103 return INIT;
Jian Li43dc9ca2020-12-19 04:01:49 +0900104 }
105 };
106
107 /**
108 * Processes the given kubevirt node which is under a certain state.
109 *
110 * @param handler kubevirt node handler
111 * @param node kubevirt node
112 */
113 public abstract void process(KubevirtNodeHandler handler, KubevirtNode node);
114
115 /**
116 * Transits to the next state.
117 *
118 * @return the next kubevirt node state
119 */
Jian Li138f51f2021-01-06 03:29:58 +0900120 public abstract KubevirtNodeState nextState();
Jian Li43dc9ca2020-12-19 04:01:49 +0900121}