blob: 0c637339ee9c911d2620d488ecafabf1176a3d9f [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 /**
41 * Returns the authentication scheme.
42 *
43 * @return authentication scheme
44 */
45 Scheme scheme();
46
47 /**
48 * Returns the IP address of kubernetes API server.
49 *
50 * @return IP address of kubernetes API server
51 */
52 IpAddress ipAddress();
53
54 /**
55 * Returns the port number of kubernetes API server.
56 *
57 * @return port number of kubernetes API server
58 */
59 int port();
60
61 /**
62 * Returns the token used for authenticating to API server.
63 *
64 * @return token value
65 */
66 String token();
67
68 /**
69 * Returns the CA certificate data.
70 *
71 * @return CA certificate data
72 */
73 String caCertData();
74
75 /**
76 * Returns the client certificate data.
77 *
78 * @return client certificate data
79 */
80 String clientCertData();
81
82 /**
83 * Returns the client key data.
84 *
85 * @return client key data
86 */
87 String clientKeyData();
88
89 /**
90 * Builder of new API config entity.
91 */
92 interface Builder {
93
94 /**
95 * Builds an immutable kubernetes API config instance.
96 *
97 * @return kubernetes API config instance
98 */
99 K8sApiConfig build();
100
101 /**
102 * Returns kubernetes API server config builder with supplied scheme.
103 *
104 * @param scheme scheme of authentication
105 * @return kubernetes API config builder
106 */
107 Builder scheme(Scheme scheme);
108
109 /**
110 * Returns kubernetes API server config builder with supplied IP address.
111 *
112 * @param ipAddress IP address of kubernetes API server
113 * @return kubernetes API config builder
114 */
115 Builder ipAddress(IpAddress ipAddress);
116
117 /**
118 * Returns kubernetes API server config builder with supplied port number.
119 *
120 * @param port port number of kubernetes API server
121 * @return kubernetes API config builder
122 */
123 Builder port(int port);
124
125 /**
126 * Returns kubernetes API server config builder with supplied token.
127 *
128 * @param token token for authentication
129 * @return kubernetes API config builder
130 */
131 Builder token(String token);
132
133 /**
134 * Returns kubernetes API server config builder with supplied CA certificate data.
135 *
136 * @param caCertData CA certificate data
137 * @return kubernetes API config builder
138 */
139 Builder caCertData(String caCertData);
140
141 /**
142 * Returns kubernetes API server config builder with supplied client certificate data.
143 *
144 * @param clientCertData client certificate data
145 * @return kubernetes API config builder
146 */
147 Builder clientCertData(String clientCertData);
148
149 /**
150 * Returns kubernetes API server config builder with supplied client key data.
151 *
152 * @param clientKeyData client key data
153 * @return kubernetes API config builder
154 */
155 Builder clientKeyData(String clientKeyData);
156 }
157}