Skip to content

Commit

Permalink
Adapt VirtualIP types to latest discussion (#386)
Browse files Browse the repository at this point in the history
  • Loading branch information
adracus authored May 5, 2022
1 parent 041c95e commit e810c2a
Show file tree
Hide file tree
Showing 68 changed files with 2,969 additions and 2,420 deletions.
4 changes: 4 additions & 0 deletions apis/networking/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,7 @@ import (
type EphemeralPrefixSource struct {
PrefixTemplate *ipam.PrefixTemplateSpec
}

type EphemeralVirtualIPSource struct {
VirtualIPClaimTemplate *VirtualIPClaimTemplateSpec `json:"virtualIPClaimTemplate,omitempty"`
}
8 changes: 7 additions & 1 deletion apis/networking/networkinterface_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,22 @@ type NetworkInterfaceSpec struct {
// IPs is the list of provided IPs or EphemeralIPs which should be assigned to
// this NetworkInterface
IPs []IPSource
// VirtualIP specifies the virtual ip that should be assigned to this NetworkInterface.
VirtualIP *VirtualIPSource
}

type IPSource struct {
Value *commonv1alpha1.IP
EphemeralPrefix *EphemeralPrefixSource
}

type VirtualIPSource struct {
VirtualIPClaimRef *corev1.LocalObjectReference
Ephemeral *EphemeralVirtualIPSource
}

// NetworkInterfaceStatus defines the observed state of NetworkInterface
type NetworkInterfaceStatus struct {
// TODO: Add State, Conditions
// IPs represent the effective IP addresses of the NetworkInterface
IPs []commonv1alpha1.IP
}
Expand Down
3 changes: 2 additions & 1 deletion apis/networking/networkinterfacebinding_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ import (
type NetworkInterfaceBinding struct {
metav1.TypeMeta
metav1.ObjectMeta
IPs []commonv1alpha1.IP
IPs []commonv1alpha1.IP
VirtualIPRef *commonv1alpha1.LocalUIDReference
}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
Expand Down
4 changes: 2 additions & 2 deletions apis/networking/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ func addKnownTypes(scheme *runtime.Scheme) error {
&NetworkInterfaceBindingList{},
&VirtualIP{},
&VirtualIPList{},
&VirtualIPRouting{},
&VirtualIPRoutingList{},
&VirtualIPClaim{},
&VirtualIPClaimList{},
&AliasPrefix{},
&AliasPrefixList{},
&AliasPrefixRouting{},
Expand Down
4 changes: 4 additions & 0 deletions apis/networking/v1alpha1/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,7 @@ import (
type EphemeralPrefixSource struct {
PrefixTemplate *ipamv1alpha1.PrefixTemplateSpec `json:"prefixTemplate,omitempty"`
}

type EphemeralVirtualIPSource struct {
VirtualIPClaimTemplate *VirtualIPClaimTemplateSpec `json:"virtualIPClaimTemplate,omitempty"`
}
8 changes: 7 additions & 1 deletion apis/networking/v1alpha1/networkinterface_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,22 @@ type NetworkInterfaceSpec struct {
// IPs is the list of provided IPs or EphemeralIPs which should be assigned to
// this NetworkInterface
IPs []IPSource `json:"ips"`
// VirtualIP specifies the virtual ip that should be assigned to this NetworkInterface.
VirtualIP *VirtualIPSource `json:"virtualIp,omitempty"`
}

type IPSource struct {
Value *commonv1alpha1.IP `json:"value,omitempty"`
EphemeralPrefix *EphemeralPrefixSource `json:"ephemeralPrefix,omitempty"`
}

type VirtualIPSource struct {
VirtualIPClaimRef *corev1.LocalObjectReference `json:"virtualIPClaimRef,omitempty"`
Ephemeral *EphemeralVirtualIPSource `json:"ephemeral,omitempty"`
}

// NetworkInterfaceStatus defines the observed state of NetworkInterface
type NetworkInterfaceStatus struct {
// TODO: Add State, Conditions
// IPs represent the effective IP addresses of the NetworkInterface
IPs []commonv1alpha1.IP `json:"ips,omitempty"`
}
Expand Down
4 changes: 3 additions & 1 deletion apis/networking/v1alpha1/networkinterfacebinding_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ import (
type NetworkInterfaceBinding struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
IPs []commonv1alpha1.IP `json:"ips,omitempty"`

IPs []commonv1alpha1.IP `json:"ips,omitempty"`
VirtualIPRef *commonv1alpha1.LocalUIDReference `json:"virtualIPRef,omitempty"`
}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
Expand Down
4 changes: 2 additions & 2 deletions apis/networking/v1alpha1/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ func addKnownTypes(scheme *runtime.Scheme) error {
&NetworkInterfaceBindingList{},
&VirtualIP{},
&VirtualIPList{},
&VirtualIPRouting{},
&VirtualIPRoutingList{},
&VirtualIPClaim{},
&VirtualIPClaimList{},
&AliasPrefix{},
&AliasPrefixList{},
&AliasPrefixRouting{},
Expand Down
6 changes: 3 additions & 3 deletions apis/networking/v1alpha1/virtualip_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ type VirtualIPSpec struct {
Type VirtualIPType `json:"type"`
// IPFamily is the ip family of the VirtualIP.
IPFamily corev1.IPFamily `json:"ipFamily"`
// NetworkInterfaceSelector selects any NetworkInterface that should get the VirtualIP routed.
// If empty, it is assumed that an external process manages the VirtualIPRouting for this VirtualIP.
NetworkInterfaceSelector *metav1.LabelSelector `json:"networkInterfaceSelector,omitempty"`

// ClaimRef references the VirtualIPClaim that claimed this virtual ip.
ClaimRef *commonv1alpha1.LocalUIDReference `json:"claimRef,omitempty"`
}

// VirtualIPType is a type of VirtualIP.
Expand Down
64 changes: 64 additions & 0 deletions apis/networking/v1alpha1/virtualipclaim_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// Copyright 2022 OnMetal authors
//
// 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 v1alpha1

import (
commonv1alpha1 "github.com/onmetal/onmetal-api/apis/common/v1alpha1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

// VirtualIPClaimSpec defines the desired state of VirtualIPClaim
type VirtualIPClaimSpec struct {
// Type is the type of VirtualIP.
Type VirtualIPType `json:"type"`
// IPFamily is the ip family of the VirtualIP.
IPFamily corev1.IPFamily `json:"ipFamily"`

// VirtualIPRef references the virtual ip to claim.
VirtualIPRef *corev1.LocalObjectReference `json:"virtualIPRef,omitempty"`
}

// VirtualIPClaimStatus defines the observed state of VirtualIPClaim
type VirtualIPClaimStatus struct {
// IP is the allocated IP, if any.
IP *commonv1alpha1.IP `json:"ip,omitempty"`
}

// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

// VirtualIPClaim is the Schema for the virtualipclaims API
type VirtualIPClaim struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec VirtualIPClaimSpec `json:"spec,omitempty"`
Status VirtualIPClaimStatus `json:"status,omitempty"`
}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

// VirtualIPClaimList contains a list of VirtualIPClaim
type VirtualIPClaimList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []VirtualIPClaim `json:"items"`
}

type VirtualIPClaimTemplateSpec struct {
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec VirtualIPClaimSpec `json:"spec,omitempty"`
}
57 changes: 0 additions & 57 deletions apis/networking/v1alpha1/virtualiprouting_types.go

This file was deleted.

Loading

0 comments on commit e810c2a

Please sign in to comment.