-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
55 changed files
with
4,811 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
/* | ||
* Copyright (c) 2022 by the 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" | ||
) | ||
|
||
// VirtualIPSpec defines the desired state of VirtualIP | ||
type VirtualIPSpec struct { | ||
// Type is the type of VirtualIP. | ||
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"` | ||
} | ||
|
||
// VirtualIPType is a type of VirtualIP. | ||
type VirtualIPType string | ||
|
||
const ( | ||
// VirtualIPTypePublic is a VirtualIP that allocates and routes a stable public IP. | ||
VirtualIPTypePublic VirtualIPType = "Public" | ||
) | ||
|
||
// VirtualIPStatus defines the observed state of VirtualIP | ||
type VirtualIPStatus 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 | ||
|
||
// VirtualIP is the Schema for the virtualips API | ||
type VirtualIP struct { | ||
metav1.TypeMeta `json:",inline"` | ||
metav1.ObjectMeta `json:"metadata,omitempty"` | ||
|
||
Spec VirtualIPSpec `json:"spec,omitempty"` | ||
Status VirtualIPStatus `json:"status,omitempty"` | ||
} | ||
|
||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object | ||
|
||
// VirtualIPList contains a list of VirtualIP | ||
type VirtualIPList struct { | ||
metav1.TypeMeta `json:",inline"` | ||
metav1.ListMeta `json:"metadata,omitempty"` | ||
Items []VirtualIP `json:"items"` | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
/* | ||
* Copyright (c) 2022 by the 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" | ||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||
"k8s.io/apimachinery/pkg/types" | ||
) | ||
|
||
// +genclient | ||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object | ||
|
||
// VirtualIPRouting is the Schema for the virtualiproutings API | ||
type VirtualIPRouting struct { | ||
metav1.TypeMeta `json:",inline"` | ||
metav1.ObjectMeta `json:"metadata,omitempty"` | ||
|
||
// Subsets are the subsets that make up a VirtualIPRouting. | ||
Subsets []VirtualIPRoutingSubset `json:"subsets,omitempty"` | ||
} | ||
|
||
// LocalUIDReference is a reference to another entity including its UID. | ||
type LocalUIDReference struct { | ||
// Name is the name of the referenced entity. | ||
Name string `json:"name"` | ||
// UID is the UID of the referenced entity. | ||
UID types.UID | ||
} | ||
|
||
// VirtualIPRoutingSubset is one of the targets of a VirtualIPRouting. | ||
type VirtualIPRoutingSubset struct { | ||
// IP is the IP of the entity routed towards. | ||
IP commonv1alpha1.IP `json:"ip"` | ||
// TargetRef is the targeted entity. | ||
TargetRef LocalUIDReference `json:"targetRef"` | ||
} | ||
|
||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object | ||
|
||
// VirtualIPRoutingList contains a list of VirtualIPRouting | ||
type VirtualIPRoutingList struct { | ||
metav1.TypeMeta `json:",inline"` | ||
metav1.ListMeta `json:"metadata,omitempty"` | ||
Items []VirtualIPRouting `json:"items"` | ||
} |
Oops, something went wrong.