Skip to content

Commit

Permalink
Add HostDeviceNetwork basic support
Browse files Browse the repository at this point in the history
This patch adds HostDeviceNetwork CRD support and basic
transformation to NetworkAttachmentDefinition to allow
Multus create secondary network.

Signed-off-by: Ivan Kolodiazhnyi <ikolodiazhny@nvidia.com>
  • Loading branch information
e0ne committed Mar 2, 2021
1 parent 9bbf380 commit 03bbd3b
Show file tree
Hide file tree
Showing 12 changed files with 709 additions and 0 deletions.
75 changes: 75 additions & 0 deletions api/v1alpha1/hostdevicenetwork_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/*
Copyright 2021 NVIDIA
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"
)

const (
HostDeviceNetworkCRDName = "HostDeviceNetwork"
)

// HostDeviceNetworkSpec defines the desired state of HostDeviceNetwork
type HostDeviceNetworkSpec struct {
// Namespace of the NetworkAttachmentDefinition custom resource
NetworkNamespace string `json:"networkNamespace,omitempty"`
SriovDevicePluginConfigmap string `json:"sriovdpConfigmap,omitempty"`
// PCI address of network device, e.g 0000:00:1f.6
PciBusID []string `json:"pciBusID,omitempty"`
// IPAM configuration to be used for this network.
IPAM string `json:"ipam,omitempty"`
}

// HostDeviceNetworkStatus defines the observed state of HostDeviceNetwork
type HostDeviceNetworkStatus struct {
// Reflects the state of the MacvlanNetwork
// +kubebuilder:validation:Enum={"notReady", "ready", "error"}
State State `json:"state"`
// Network attachment definition generated from HostDeviceNetworkSpec
HostDeviceNetworkAttachmentDef string `json:"hostDeviceNetworkAttachmentDef,omitempty"`
// Informative string in case the observed state is error
Reason string `json:"reason,omitempty"`
}

// +kubebuilder:object:root=true
// kubebuilder:object:generate
// +kubebuilder:subresource:status
// +kubebuilder:resource:scope=Cluster

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

Spec HostDeviceNetworkSpec `json:"spec,omitempty"`
Status HostDeviceNetworkStatus `json:"status,omitempty"`
}

// +kubebuilder:object:root=true
// kubebuilder:object:generate

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

func init() {
SchemeBuilder.Register(&HostDeviceNetwork{}, &HostDeviceNetworkList{})
}
94 changes: 94 additions & 0 deletions api/v1alpha1/zz_generated.deepcopy.go

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

82 changes: 82 additions & 0 deletions config/crd/bases/mellanox.com_hostdevicenetworks.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.4.1
creationTimestamp: null
name: hostdevicenetworks.mellanox.com
spec:
group: mellanox.com
names:
kind: HostDeviceNetwork
listKind: HostDeviceNetworkList
plural: hostdevicenetworks
singular: hostdevicenetwork
scope: Cluster
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: MacvlanNetwork is the Schema for the macvlannetworks 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: HostDeviceNetworkSpec defines the desired state of HostDeviceNetwork
properties:
ipam:
description: IPAM configuration to be used for this network.
type: string
networkNamespace:
description: Namespace of the NetworkAttachmentDefinition custom resource
type: string
pciBusID:
description: PCI address of network device, e.g 0000:00:1f.6
items:
type: string
type: array
sriovdpConfigmap:
type: string
type: object
status:
description: HostDeviceNetworkStatus defines the observed state of HostDeviceNetwork
properties:
hostDeviceNetworkAttachmentDef:
description: Network attachment definition generated from HostDeviceNetworkSpec
type: string
reason:
description: Informative string in case the observed state is error
type: string
state:
description: Reflects the state of the MacvlanNetwork
enum:
- notReady
- ready
- error
type: string
required:
- state
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
20 changes: 20 additions & 0 deletions config/rbac/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,26 @@ metadata:
creationTimestamp: null
name: manager-role
rules:
- apiGroups:
- mellanox.com
resources:
- hostdevicenetworks
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- mellanox.com
resources:
- hostdevicenetworks/status
verbs:
- get
- patch
- update
- apiGroups:
- mellanox.com
resources:
Expand Down
Loading

0 comments on commit 03bbd3b

Please sign in to comment.