Skip to content

Commit 60d8acb

Browse files
Fix NetworkVirtualizationEdge rbac and regenerate helm chart
1 parent 80d337c commit 60d8acb

File tree

40 files changed

+583
-51
lines changed

40 files changed

+583
-51
lines changed

PROJECT

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,6 @@ resources:
247247
domain: cisco.networking.metal.ironcore.dev
248248
group: nx
249249
kind: NetworkVirtualizationEdgeConfig
250-
controller: false
251250
path: github.com/ironcore-dev/network-operator/api/cisco/nx/v1alpha1
252251
version: v1alpha1
253252
webhooks:
Lines changed: 316 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,316 @@
1+
{{- if .Values.crd.enable }}
2+
---
3+
apiVersion: apiextensions.k8s.io/v1
4+
kind: CustomResourceDefinition
5+
metadata:
6+
labels:
7+
{{- include "chart.labels" . | nindent 4 }}
8+
annotations:
9+
{{- if .Values.crd.keep }}
10+
"helm.sh/resource-policy": keep
11+
{{- end }}
12+
controller-gen.kubebuilder.io/version: v0.20.0
13+
name: networkvirtualizationedges.networking.metal.ironcore.dev
14+
spec:
15+
group: networking.metal.ironcore.dev
16+
names:
17+
kind: NetworkVirtualizationEdge
18+
listKind: NetworkVirtualizationEdgeList
19+
plural: networkvirtualizationedges
20+
shortNames:
21+
- nve
22+
singular: networkvirtualizationedge
23+
scope: Namespaced
24+
versions:
25+
- additionalPrinterColumns:
26+
- jsonPath: .spec.deviceRef.name
27+
name: Device
28+
type: string
29+
- jsonPath: .status.conditions[?(@.type=="Ready")].status
30+
name: Ready
31+
type: string
32+
- jsonPath: .status.conditions[?(@.type=="Configured")].status
33+
name: Configured
34+
priority: 1
35+
type: string
36+
- jsonPath: .status.conditions[?(@.type=="Operational")].status
37+
name: Operational
38+
priority: 1
39+
type: string
40+
- jsonPath: .status.sourceInterfaceName
41+
name: SrcIf
42+
type: string
43+
- jsonPath: .status.anycastSourceInterfaceName
44+
name: AnycastSrcIf
45+
type: string
46+
- jsonPath: .status.hostReachability
47+
name: HostReachability
48+
type: string
49+
- jsonPath: .metadata.creationTimestamp
50+
name: Age
51+
type: date
52+
name: v1alpha1
53+
schema:
54+
openAPIV3Schema:
55+
description: |-
56+
NetworkVirtualizationEdge is the Schema for the networkvirtualizationedges API
57+
The NVE resource is the equivalent to an Endpoint for a Network Virtualization Overlay Object in OpenConfig (`nvo:Ep`).
58+
properties:
59+
apiVersion:
60+
description: |-
61+
APIVersion defines the versioned schema of this representation of an object.
62+
Servers should convert recognized schemas to the latest internal value, and
63+
may reject unrecognized values.
64+
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
65+
type: string
66+
kind:
67+
description: |-
68+
Kind is a string value representing the REST resource this object represents.
69+
Servers may infer this from the endpoint the client submits requests to.
70+
Cannot be updated.
71+
In CamelCase.
72+
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
73+
type: string
74+
metadata:
75+
type: object
76+
spec:
77+
description: NetworkVirtualizationEdgeSpec defines the desired state of
78+
a Network Virtualization Edge (NVE).
79+
properties:
80+
adminState:
81+
description: AdminState indicates whether the interface is administratively
82+
up or down.
83+
enum:
84+
- Up
85+
- Down
86+
type: string
87+
anycastGateway:
88+
description: |-
89+
AnycastGateway defines the distributed anycast gateway configuration.
90+
This enables multiple NVEs to share the same gateway IP and MAC
91+
for active-active first-hop redundancy.
92+
properties:
93+
virtualMAC:
94+
description: |-
95+
VirtualMAC is the shared MAC address used by all NVEs in the fabric
96+
for anycast gateway functionality on RoutedVLAN (SVI) interfaces.
97+
All switches in the fabric must use the same MAC address.
98+
Format: IEEE 802 MAC-48 address (e.g., "00:00:5E:00:01:01")
99+
pattern: ^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$
100+
type: string
101+
required:
102+
- virtualMAC
103+
type: object
104+
anycastSourceInterfaceRef:
105+
description: AnycastSourceInterfaceRef is the reference to the loopback
106+
interface used for anycast NVE IP address.
107+
properties:
108+
name:
109+
description: |-
110+
Name of the referent.
111+
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
112+
maxLength: 63
113+
minLength: 1
114+
type: string
115+
required:
116+
- name
117+
type: object
118+
x-kubernetes-map-type: atomic
119+
deviceRef:
120+
description: |-
121+
DeviceName is the name of the Device this object belongs to. The Device object must exist in the same namespace.
122+
Immutable.
123+
properties:
124+
name:
125+
description: |-
126+
Name of the referent.
127+
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
128+
maxLength: 63
129+
minLength: 1
130+
type: string
131+
required:
132+
- name
133+
type: object
134+
x-kubernetes-map-type: atomic
135+
x-kubernetes-validations:
136+
- message: DeviceRef is immutable
137+
rule: self == oldSelf
138+
hostReachability:
139+
description: HostReachability specifies the method used for host reachability.
140+
enum:
141+
- FloodAndLearn
142+
- BGP
143+
type: string
144+
multicastGroups:
145+
description: MulticastGroups defines multicast group addresses for
146+
BUM traffic.
147+
properties:
148+
l2:
149+
description: L2 is the multicast group for Layer 2 VNIs (BUM traffic
150+
in bridged VLANs).
151+
format: ipv4
152+
type: string
153+
l3:
154+
description: L3 is the multicast group for Layer 3 VNIs (BUM traffic
155+
in routed VRFs).
156+
format: ipv4
157+
type: string
158+
type: object
159+
providerConfigRef:
160+
description: |-
161+
ProviderConfigRef is a reference to a resource holding the provider-specific configuration for this NVE.
162+
If not specified the provider applies the target platform's default settings.
163+
properties:
164+
apiVersion:
165+
description: APIVersion is the api group version of the resource
166+
being referenced.
167+
maxLength: 253
168+
minLength: 1
169+
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/)?([a-z0-9]([-a-z0-9]*[a-z0-9])?)$
170+
type: string
171+
kind:
172+
description: |-
173+
Kind of the resource being referenced.
174+
Kind must consist of alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character.
175+
maxLength: 63
176+
minLength: 1
177+
pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
178+
type: string
179+
name:
180+
description: |-
181+
Name of the resource being referenced.
182+
Name must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character.
183+
maxLength: 253
184+
minLength: 1
185+
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
186+
type: string
187+
required:
188+
- apiVersion
189+
- kind
190+
- name
191+
type: object
192+
x-kubernetes-map-type: atomic
193+
sourceInterfaceRef:
194+
description: SourceInterface is the reference to the loopback interface
195+
used for the primary NVE IP address.
196+
properties:
197+
name:
198+
description: |-
199+
Name of the referent.
200+
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
201+
maxLength: 63
202+
minLength: 1
203+
type: string
204+
required:
205+
- name
206+
type: object
207+
x-kubernetes-map-type: atomic
208+
suppressARP:
209+
default: false
210+
description: SuppressARP indicates whether ARP suppression is enabled
211+
for this NVE.
212+
type: boolean
213+
required:
214+
- adminState
215+
- deviceRef
216+
- hostReachability
217+
- sourceInterfaceRef
218+
type: object
219+
x-kubernetes-validations:
220+
- message: anycastSourceInterfaceRef.name must differ from sourceInterfaceRef.name
221+
rule: '!has(self.anycastSourceInterfaceRef) || self.anycastSourceInterfaceRef.name
222+
!= self.sourceInterfaceRef.name'
223+
status:
224+
description: NetworkVirtualizationEdgeStatus defines the observed state
225+
of the NVE.
226+
properties:
227+
anycastSourceInterfaceName:
228+
description: AnycastSourceInterfaceName is the resolved anycast source
229+
interface IP address used for NVE encapsulation.
230+
type: string
231+
conditions:
232+
description: |-
233+
conditions represent the current state of the NVE resource.
234+
Each condition has a unique type and reflects the status of a specific aspect of the resource.
235+
236+
Standard condition types include:
237+
- "Available": the resource is fully functional
238+
- "Progressing": the resource is being created or updated
239+
- "Degraded": the resource failed to reach or maintain its desired state
240+
241+
The conditions are a list of status objects that describe the state of the NVE.
242+
items:
243+
description: Condition contains details for one aspect of the current
244+
state of this API Resource.
245+
properties:
246+
lastTransitionTime:
247+
description: |-
248+
lastTransitionTime is the last time the condition transitioned from one status to another.
249+
This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
250+
format: date-time
251+
type: string
252+
message:
253+
description: |-
254+
message is a human readable message indicating details about the transition.
255+
This may be an empty string.
256+
maxLength: 32768
257+
type: string
258+
observedGeneration:
259+
description: |-
260+
observedGeneration represents the .metadata.generation that the condition was set based upon.
261+
For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
262+
with respect to the current state of the instance.
263+
format: int64
264+
minimum: 0
265+
type: integer
266+
reason:
267+
description: |-
268+
reason contains a programmatic identifier indicating the reason for the condition's last transition.
269+
Producers of specific condition types may define expected values and meanings for this field,
270+
and whether the values are considered a guaranteed API.
271+
The value should be a CamelCase string.
272+
This field may not be empty.
273+
maxLength: 1024
274+
minLength: 1
275+
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
276+
type: string
277+
status:
278+
description: status of the condition, one of True, False, Unknown.
279+
enum:
280+
- "True"
281+
- "False"
282+
- Unknown
283+
type: string
284+
type:
285+
description: type of condition in CamelCase or in foo.example.com/CamelCase.
286+
maxLength: 316
287+
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
288+
type: string
289+
required:
290+
- lastTransitionTime
291+
- message
292+
- reason
293+
- status
294+
- type
295+
type: object
296+
type: array
297+
x-kubernetes-list-map-keys:
298+
- type
299+
x-kubernetes-list-type: map
300+
hostReachability:
301+
description: HostReachability indicates the actual method used for
302+
host reachability.
303+
type: string
304+
sourceInterfaceName:
305+
description: SourceInterfaceName is the resolved source interface
306+
IP address used for NVE encapsulation.
307+
type: string
308+
type: object
309+
required:
310+
- spec
311+
type: object
312+
served: true
313+
storage: true
314+
subresources:
315+
status: {}
316+
{{- end -}}

0 commit comments

Comments
 (0)