/
l2advertisement_types.go
78 lines (63 loc) · 3.14 KB
/
l2advertisement_types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package v1beta1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
// L2AdvertisementSpec defines the desired state of L2Advertisement.
type L2AdvertisementSpec struct {
// The list of IPAddressPools to advertise via this advertisement, selected by name.
// +optional
IPAddressPools []string `json:"ipAddressPools,omitempty"`
// A selector for the IPAddressPools which would get advertised via this advertisement.
// If no IPAddressPool is selected by this or by the list, the advertisement is applied to all the IPAddressPools.
// +optional
IPAddressPoolSelectors []metav1.LabelSelector `json:"ipAddressPoolSelectors,omitempty"`
// NodeSelectors allows to limit the nodes to announce as next hops for the LoadBalancer IP. When empty, all the nodes having are announced as next hops.
// +optional
NodeSelectors []metav1.LabelSelector `json:"nodeSelectors,omitempty"`
// A list of interfaces to announce from. The LB IP will be announced only from these interfaces.
// If the field is not set, we advertise from all the interfaces on the host.
// +optional
Interfaces []string `json:"interfaces,omitempty"`
}
// L2AdvertisementStatus defines the observed state of L2Advertisement.
type L2AdvertisementStatus struct {
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Important: Run "make" to regenerate code after modifying this file
}
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
//+kubebuilder:printcolumn:name="IPAddressPools",type=string,JSONPath=`.spec.ipAddressPools`
//+kubebuilder:printcolumn:name="IPAddressPool Selectors",type=string,JSONPath=`.spec.ipAddressPoolSelectors`
//+kubebuilder:printcolumn:name="Interfaces",type=string,JSONPath=`.spec.interfaces`
//+kubebuilder:printcolumn:name="Node Selectors",type=string,JSONPath=`.spec.nodeSelectors`,priority=10
// L2Advertisement allows to advertise the LoadBalancer IPs provided
// by the selected pools via L2.
type L2Advertisement struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec L2AdvertisementSpec `json:"spec,omitempty"`
Status L2AdvertisementStatus `json:"status,omitempty"`
}
//+kubebuilder:object:root=true
// L2AdvertisementList contains a list of L2Advertisement.
type L2AdvertisementList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []L2Advertisement `json:"items"`
}
func init() {
SchemeBuilder.Register(&L2Advertisement{}, &L2AdvertisementList{})
}