Skip to content

Commit

Permalink
Add/Remove entries in NatMapping CR
Browse files Browse the repository at this point in the history
  • Loading branch information
davidefalcone1 committed May 26, 2021
1 parent eef6ed6 commit 00a983f
Show file tree
Hide file tree
Showing 9 changed files with 842 additions and 106 deletions.
4 changes: 4 additions & 0 deletions apis/net/v1alpha1/groupversion_info.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ var (
IpamGroupResource = schema.GroupVersionResource{Group: GroupVersion.Group, Version: GroupVersion.Version,
Resource: "ipamstorages"}

// NatMappingGroupResource is group resource used to register natmappings.
NatMappingGroupResource = schema.GroupVersionResource{Group: GroupVersion.Group, Version: GroupVersion.Version,
Resource: "natmappings"}

// SchemeBuilder is used to add go types to the GroupVersionKind scheme.
SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

Expand Down
6 changes: 3 additions & 3 deletions apis/net/v1alpha1/ipamstorage_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,13 +80,13 @@ type IpamStorage struct {

// +kubebuilder:object:root=true

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

func init() {
SchemeBuilder.Register(&IpamStorage{}, &IpamList{})
SchemeBuilder.Register(&IpamStorage{}, &IpamStorageList{})
}
73 changes: 73 additions & 0 deletions apis/net/v1alpha1/natmapping_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/*
Copyright 2021.
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 (
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.

// NatMappingSpec defines the desired state of NatMapping.
type NatMappingSpec struct {
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file

// ClusterID is the cluster this resource refers to.
ClusterID string `json:"clusterID"`
// PodCIDR is the network used for remote pods in the local cluster.
// It can be either the RemotePodCIDR or the RemoteNATPodCIDR.
PodCIDR string `json:"podCIDR"`
// ExternalCIDR is the ExternalCIDR used in the remote cluster for local endpoints.
// It can be either the LocalExternalCIDR or the LocalNATExternalCIDR.
ExternalCIDR string `json:"externalCIDR"`
// Mappings is the set of NAT mappings currently active. Key is the old IP, value is the new NAT-ted IP.
Mappings map[string]string `json:"mappings"`
}

// NatMappingStatus defines the observed state of NatMapping.
type NatMappingStatus 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:resource:scope=Cluster

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

Spec NatMappingSpec `json:"spec,omitempty"`
Status NatMappingStatus `json:"status,omitempty"`
}

//+kubebuilder:object:root=true

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

func init() {
SchemeBuilder.Register(&NatMapping{}, &NatMappingList{})
}
160 changes: 128 additions & 32 deletions apis/net/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

76 changes: 76 additions & 0 deletions deployments/liqo/crds/net.liqo.io_natmappings.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.4.0
creationTimestamp: null
name: natmappings.net.liqo.io
spec:
group: net.liqo.io
names:
kind: NatMapping
listKind: NatMappingList
plural: natmappings
singular: natmapping
scope: Cluster
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: NatMapping is the Schema for the natmappings API.
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: NatMappingSpec defines the desired state of NatMapping.
properties:
clusterID:
description: ClusterID is the cluster this resource refers to.
type: string
externalCIDR:
description: ExternalCIDR is the ExternalCIDR used in the remote cluster
for local endpoints. It can be either the LocalExternalCIDR or the
LocalNATExternalCIDR.
type: string
mappings:
additionalProperties:
type: string
description: Mappings is the set of NAT mappings currently active.
Key is the old IP, value is the new NAT-ted IP.
type: object
podCIDR:
description: PodCIDR is the network used for remote pods in the local
cluster. It can be either the RemotePodCIDR or the RemoteNATPodCIDR.
type: string
required:
- clusterID
- externalCIDR
- mappings
- podCIDR
type: object
status:
description: NatMappingStatus defines the observed state of NatMapping.
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
Loading

0 comments on commit 00a983f

Please sign in to comment.