Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,14 @@ resources:
kind: AAAConfig
path: github.com/ironcore-dev/network-operator/api/cisco/nx/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
namespaced: true
domain: cisco.networking.metal.ironcore.dev
group: nx
kind: EVPNInstanceConfig
path: github.com/ironcore-dev/network-operator/api/cisco/nx/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
namespaced: true
Expand Down
3 changes: 3 additions & 0 deletions Tiltfile
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,9 @@ k8s_resource(new_name='ospf-underlay', objects=['underlay:ospf'], resource_deps=
k8s_yaml('./config/samples/v1alpha1_vlan.yaml')
k8s_resource(new_name='vlan-10', objects=['vlan-10:vlan'], trigger_mode=TRIGGER_MODE_MANUAL, auto_init=False, labels=['samples'])

k8s_yaml('./config/samples/cisco/nx/v1alpha1_evpninstanceconfig.yaml')
k8s_resource(new_name='evpninstanceconfig-multisite', objects=['evpninstanceconfig-multisite:evpninstanceconfig'], trigger_mode=TRIGGER_MODE_MANUAL, auto_init=False, labels=['samples'])

k8s_yaml('./config/samples/v1alpha1_evi.yaml')
k8s_resource(new_name='vxlan-100010', objects=['vxlan-100010:evpninstance'], resource_deps=['vlan-10'], trigger_mode=TRIGGER_MODE_MANUAL, auto_init=False, labels=['samples'])

Expand Down
71 changes: 71 additions & 0 deletions api/cisco/nx/v1alpha1/evpninstanceconfig_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
// SPDX-FileCopyrightText: SAP SE or an SAP affiliate company and IronCore contributors
// SPDX-License-Identifier: Apache-2.0

package v1alpha1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"

v1alpha1 "github.com/ironcore-dev/network-operator/api/core/v1alpha1"
)

// +kubebuilder:rbac:groups=nx.cisco.networking.metal.ironcore.dev,resources=evpninstanceconfigs,verbs=get;list;watch

// EVPNInstanceConfigSpec defines the Cisco NX-OS-specific configuration of an EVPNInstance.
type EVPNInstanceConfigSpec struct {
// MultisiteIngressReplication controls per-VNI multisite ingress replication.
// When enabled, BUM traffic for this VNI is replicated to remote VTEP peers
// in the multisite domain via ingress replication.
// Typically used on Border Gateway (BGW) nodes.
// +optional
// +kubebuilder:default=Disabled
MultisiteIngressReplication MultisiteIngReplMode `json:"multisiteIngressReplication,omitempty"`
}

// MultisiteIngReplMode defines the per-VNI multisite ingress-replication mode.
// +kubebuilder:validation:Enum=Disabled;Enabled;EnabledOptimized
type MultisiteIngReplMode string

const (
// MultisiteIngReplDisabled disables multisite ingress replication (default).
MultisiteIngReplDisabled MultisiteIngReplMode = "Disabled"
// MultisiteIngReplEnabled enables multisite ingress replication.
MultisiteIngReplEnabled MultisiteIngReplMode = "Enabled"
// MultisiteIngReplEnabledOptimized enables optimized multisite ingress replication.
MultisiteIngReplEnabledOptimized MultisiteIngReplMode = "EnabledOptimized"
)

// +kubebuilder:object:root=true
// +kubebuilder:resource:path=evpninstanceconfigs
// +kubebuilder:resource:singular=evpninstanceconfig
// +kubebuilder:resource:shortName=nxevi

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

// spec defines the desired state of the EVPNInstanceConfig
// +required
Spec EVPNInstanceConfigSpec `json:"spec"`
}

// +kubebuilder:object:root=true

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

// init registers the EVPNInstanceConfig type with the core v1alpha1 scheme and sets
// itself as a dependency for the EVPNInstance core type.
func init() {
v1alpha1.RegisterEVPNInstanceDependency(GroupVersion.WithKind("EVPNInstanceConfig"))
SchemeBuilder.Register(func(s *runtime.Scheme) error {
s.AddKnownTypes(GroupVersion, &EVPNInstanceConfig{}, &EVPNInstanceConfigList{})
return nil
})
}
73 changes: 73 additions & 0 deletions api/cisco/nx/v1alpha1/zz_generated.deepcopy.go

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

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

1 change: 1 addition & 0 deletions charts/network-operator/templates/rbac/manager-role.yaml

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

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

1 change: 1 addition & 0 deletions config/crd/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ resources:
- bases/nx.cisco.networking.metal.ironcore.dev_lldpconfigs.yaml
- bases/nx.cisco.networking.metal.ironcore.dev_bgpconfigs.yaml
- bases/nx.cisco.networking.metal.ironcore.dev_aaaconfigs.yaml
- bases/nx.cisco.networking.metal.ironcore.dev_evpninstanceconfigs.yaml
# +kubebuilder:scaffold:crdkustomizeresource

patches: []
Expand Down
1 change: 1 addition & 0 deletions config/rbac/role.yaml

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

9 changes: 9 additions & 0 deletions config/samples/cisco/nx/v1alpha1_evpninstanceconfig.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
apiVersion: nx.cisco.networking.metal.ironcore.dev/v1alpha1
kind: EVPNInstanceConfig
metadata:
labels:
app.kubernetes.io/name: network-operator
app.kubernetes.io/managed-by: kustomize
name: evpninstanceconfig-multisite
spec:
multisiteIngressReplication: EnabledOptimized
1 change: 1 addition & 0 deletions config/samples/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,5 @@ resources:
- cisco/nx/v1alpha1_lldpconfig.yaml
- cisco/nx/v1alpha1_bgpconfig.yaml
- cisco/nx/v1alpha1_aaaconfig.yaml
- cisco/nx/v1alpha1_evpninstanceconfig.yaml
# +kubebuilder:scaffold:manifestskustomizesamples
6 changes: 6 additions & 0 deletions config/samples/v1alpha1_evi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@ metadata:
spec:
deviceRef:
name: leaf1
# Uncomment to add NXOS provider-specific config
# See: ./cisco/nx/v1alpha1_evpninstanceconfig.yaml
# providerConfigRef:
# apiVersion: nx.cisco.networking.metal.ironcore.dev/v1alpha1
# kind: EVPNInstanceConfig
# name: evpninstanceconfig-multisite
vni: 100010
type: Bridged
multicastGroupAddress: 239.1.1.100
Expand Down
Loading
Loading