blob: 62d050d83df48832e9a52091f7a9e3d990739858 [file] [log] [blame]
Jian Li3defa842019-02-12 00:31:35 +09001/*
2 * Copyright 2019-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.k8snode.api;
17
18import org.onlab.packet.IpAddress;
19
20/**
21 * Representation of configuration used in kubernetes API server.
22 */
23public interface K8sApiConfig {
24
25 /**
26 * Lists of authentication schemes.
27 */
28 enum Scheme {
29 /**
30 * Signifies that this is a HTTP authentication scheme.
31 */
32 HTTP,
33
34 /**
35 * Signifies that this is a HTTPS authentication scheme.
36 */
37 HTTPS,
38 }
39
40 /**
Jian Li1cee9882019-02-13 11:25:25 +090041 * Lists of API server connectivity states.
42 */
43 enum State {
44 /**
45 * Signifies that client is connected to k8s API server.
46 */
47 CONNECTED,
48
49 /**
50 * Signifies that client is dis-connected from k8s API server.
51 */
52 DISCONNECTED,
53 }
54
55 /**
Jian Li3defa842019-02-12 00:31:35 +090056 * Returns the authentication scheme.
57 *
58 * @return authentication scheme
59 */
60 Scheme scheme();
61
62 /**
63 * Returns the IP address of kubernetes API server.
64 *
65 * @return IP address of kubernetes API server
66 */
67 IpAddress ipAddress();
68
69 /**
70 * Returns the port number of kubernetes API server.
71 *
72 * @return port number of kubernetes API server
73 */
74 int port();
75
76 /**
Jian Li1cee9882019-02-13 11:25:25 +090077 * Returns the connectivity state to kubernetes API server.
78 *
79 * @return connectivity state to kubernetes API server
80 */
81 State state();
82
83 /**
84 * Returns new kubernetes API config instance with given state.
85 *
86 * @param newState updated state
87 * @return updated kubernetes API config
88 */
89 K8sApiConfig updateState(State newState);
90
91 /**
Jian Li3defa842019-02-12 00:31:35 +090092 * Returns the token used for authenticating to API server.
93 *
94 * @return token value
95 */
96 String token();
97
98 /**
99 * Returns the CA certificate data.
100 *
101 * @return CA certificate data
102 */
103 String caCertData();
104
105 /**
106 * Returns the client certificate data.
107 *
108 * @return client certificate data
109 */
110 String clientCertData();
111
112 /**
113 * Returns the client key data.
114 *
115 * @return client key data
116 */
117 String clientKeyData();
118
119 /**
120 * Builder of new API config entity.
121 */
122 interface Builder {
123
124 /**
125 * Builds an immutable kubernetes API config instance.
126 *
127 * @return kubernetes API config instance
128 */
129 K8sApiConfig build();
130
131 /**
132 * Returns kubernetes API server config builder with supplied scheme.
133 *
134 * @param scheme scheme of authentication
135 * @return kubernetes API config builder
136 */
137 Builder scheme(Scheme scheme);
138
139 /**
140 * Returns kubernetes API server config builder with supplied IP address.
141 *
142 * @param ipAddress IP address of kubernetes API server
143 * @return kubernetes API config builder
144 */
145 Builder ipAddress(IpAddress ipAddress);
146
147 /**
148 * Returns kubernetes API server config builder with supplied port number.
149 *
150 * @param port port number of kubernetes API server
151 * @return kubernetes API config builder
152 */
153 Builder port(int port);
154
155 /**
Jian Li1cee9882019-02-13 11:25:25 +0900156 * Returns kubernetes API server config builder with supplied state.
157 *
158 * @param state connectivity state
159 * @return kubernetes API config builder
160 */
161 Builder state(State state);
162
163 /**
Jian Li3defa842019-02-12 00:31:35 +0900164 * Returns kubernetes API server config builder with supplied token.
165 *
166 * @param token token for authentication
167 * @return kubernetes API config builder
168 */
169 Builder token(String token);
170
171 /**
172 * Returns kubernetes API server config builder with supplied CA certificate data.
173 *
174 * @param caCertData CA certificate data
175 * @return kubernetes API config builder
176 */
177 Builder caCertData(String caCertData);
178
179 /**
180 * Returns kubernetes API server config builder with supplied client certificate data.
181 *
182 * @param clientCertData client certificate data
183 * @return kubernetes API config builder
184 */
185 Builder clientCertData(String clientCertData);
186
187 /**
188 * Returns kubernetes API server config builder with supplied client key data.
189 *
190 * @param clientKeyData client key data
191 * @return kubernetes API config builder
192 */
193 Builder clientKeyData(String clientKeyData);
194 }
195}