b292827ab5943c50cb447fa93131341bae480f3b
[ovn4nfv-k8s-plugin.git] / pkg / apis / k8s / v1alpha1 / providernetwork_types.go
1 package v1alpha1
2
3 import (
4         metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
5 )
6
7 // EDIT THIS FILE!  THIS IS SCAFFOLDING FOR YOU TO OWN!
8 // NOTE: json tags are required.  Any new fields you add must have json tags for the fields to be serialized.
9
10 // ProviderNetworkSpec defines the desired state of ProviderNetwork
11 // +k8s:openapi-gen=true
12 type ProviderNetworkSpec struct {
13         // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
14         // Important: Run "operator-sdk generate k8s" to regenerate code after modifying this file
15         // Add custom validation using kubebuilder tags: https://book-v1.book.kubebuilder.io/beyond_basics/generating_crd.html
16         CniType         string     `json:"cniType"`
17         Ipv4Subnets     []IpSubnet `json:"ipv4Subnets"`
18         Ipv6Subnets     []IpSubnet `json:"ipv6Subnets,omitempty"`
19         DNS             DnsSpec    `json:"dns,omitempty"`
20         Routes          []Route    `json:"routes,omitempty"`
21         ProviderNetType string     `json:"providerNetType"`
22         Vlan            VlanSpec   `json:"vlan"` // For now VLAN is the only supported type
23 }
24
25 type VlanSpec struct {
26         VlanId                string `json:"vlanId"`
27         Node                  string `json:"node"`
28         ProviderInterfaceName string `json:"providerInterfaceName"`
29         LogicalInterfaceName  string `json:"logicalInterfaceName,omitempty"`
30 }
31
32 // ProviderNetworkStatus defines the observed state of ProviderNetwork
33 // +k8s:openapi-gen=true
34 type ProviderNetworkStatus struct {
35         // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
36         // Important: Run "operator-sdk generate k8s" to regenerate code after modifying this file
37         // Add custom validation using kubebuilder tags: https://book-v1.book.kubebuilder.io/beyond_basics/generating_crd.html
38         State string `json:"state"` // Indicates if ProviderNetwork is in "created" state
39 }
40
41 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
42
43 // ProviderNetwork is the Schema for the providernetworks API
44 // +k8s:openapi-gen=true
45 // +kubebuilder:subresource:status
46 type ProviderNetwork struct {
47         metav1.TypeMeta   `json:",inline"`
48         metav1.ObjectMeta `json:"metadata,omitempty"`
49
50         Spec   ProviderNetworkSpec   `json:"spec,omitempty"`
51         Status ProviderNetworkStatus `json:"status,omitempty"`
52 }
53
54 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
55
56 // ProviderNetworkList contains a list of ProviderNetwork
57 type ProviderNetworkList struct {
58         metav1.TypeMeta `json:",inline"`
59         metav1.ListMeta `json:"metadata,omitempty"`
60         Items           []ProviderNetwork `json:"items"`
61 }
62
63 func init() {
64         SchemeBuilder.Register(&ProviderNetwork{}, &ProviderNetworkList{})
65 }