k8s_pb/api/networking/v1beta1/mod.rs
1// This file is @generated by prost-build.
2/// HTTPIngressPath associates a path with a backend. Incoming urls matching the
3/// path are forwarded to the backend.
4#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5pub struct HttpIngressPath {
6 /// path is matched against the path of an incoming request. Currently it can
7 /// contain characters disallowed from the conventional "path" part of a URL
8 /// as defined by RFC 3986. Paths must begin with a '/' and must be present
9 /// when using PathType with value "Exact" or "Prefix".
10 /// +optional
11 #[prost(string, optional, tag = "1")]
12 pub path: ::core::option::Option<::prost::alloc::string::String>,
13 /// pathType determines the interpretation of the path matching. PathType can
14 /// be one of the following values:
15 /// * Exact: Matches the URL path exactly.
16 /// * Prefix: Matches based on a URL path prefix split by '/'. Matching is
17 /// done on a path element by element basis. A path element refers is the
18 /// list of labels in the path split by the '/' separator. A request is a
19 /// match for path p if every p is an element-wise prefix of p of the
20 /// request path. Note that if the last element of the path is a substring
21 /// of the last element in request path, it is not a match (e.g. /foo/bar
22 /// matches /foo/bar/baz, but does not match /foo/barbaz).
23 /// * ImplementationSpecific: Interpretation of the Path matching is up to
24 /// the IngressClass. Implementations can treat this as a separate PathType
25 /// or treat it identically to Prefix or Exact path types.
26 /// Implementations are required to support all path types.
27 /// Defaults to ImplementationSpecific.
28 #[prost(string, optional, tag = "3")]
29 pub path_type: ::core::option::Option<::prost::alloc::string::String>,
30 /// backend defines the referenced service endpoint to which the traffic
31 /// will be forwarded to.
32 #[prost(message, optional, tag = "2")]
33 pub backend: ::core::option::Option<IngressBackend>,
34}
35/// HTTPIngressRuleValue is a list of http selectors pointing to backends.
36/// In the example: <http://<host>/<path>?<searchpart>> -> backend where
37/// where parts of the url correspond to RFC 3986, this resource will be used
38/// to match against everything after the last '/' and before the first '?'
39/// or '#'.
40#[derive(Clone, PartialEq, ::prost::Message)]
41pub struct HttpIngressRuleValue {
42 /// paths is a collection of paths that map requests to backends.
43 /// +listType=atomic
44 #[prost(message, repeated, tag = "1")]
45 pub paths: ::prost::alloc::vec::Vec<HttpIngressPath>,
46}
47/// IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs
48/// that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses.
49/// An IP address can be represented in different formats, to guarantee the uniqueness of the IP,
50/// the name of the object is the IP address in canonical format, four decimal digits separated
51/// by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6.
52/// Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1
53/// Invalid: 10.01.2.3 or 2001:db8:0:0:0::1
54#[derive(Clone, PartialEq, ::prost::Message)]
55pub struct IPAddress {
56 /// Standard object's metadata.
57 /// More info: <https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata>
58 /// +optional
59 #[prost(message, optional, tag = "1")]
60 pub metadata: ::core::option::Option<super::super::super::apimachinery::pkg::apis::meta::v1::ObjectMeta>,
61 /// spec is the desired state of the IPAddress.
62 /// More info: <https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status>
63 /// +optional
64 #[prost(message, optional, tag = "2")]
65 pub spec: ::core::option::Option<IPAddressSpec>,
66}
67/// IPAddressList contains a list of IPAddress.
68#[derive(Clone, PartialEq, ::prost::Message)]
69pub struct IPAddressList {
70 /// Standard object's metadata.
71 /// More info: <https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata>
72 /// +optional
73 #[prost(message, optional, tag = "1")]
74 pub metadata: ::core::option::Option<super::super::super::apimachinery::pkg::apis::meta::v1::ListMeta>,
75 /// items is the list of IPAddresses.
76 #[prost(message, repeated, tag = "2")]
77 pub items: ::prost::alloc::vec::Vec<IPAddress>,
78}
79/// IPAddressSpec describe the attributes in an IP Address.
80#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
81pub struct IPAddressSpec {
82 /// ParentRef references the resource that an IPAddress is attached to.
83 /// An IPAddress must reference a parent object.
84 /// +required
85 #[prost(message, optional, tag = "1")]
86 pub parent_ref: ::core::option::Option<ParentReference>,
87}
88/// Ingress is a collection of rules that allow inbound connections to reach the
89/// endpoints defined by a backend. An Ingress can be configured to give services
90/// externally-reachable urls, load balance traffic, terminate SSL, offer name
91/// based virtual hosting etc.
92#[derive(Clone, PartialEq, ::prost::Message)]
93pub struct Ingress {
94 /// Standard object's metadata.
95 /// More info: <https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata>
96 /// +optional
97 #[prost(message, optional, tag = "1")]
98 pub metadata: ::core::option::Option<super::super::super::apimachinery::pkg::apis::meta::v1::ObjectMeta>,
99 /// spec is the desired state of the Ingress.
100 /// More info: <https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status>
101 /// +optional
102 #[prost(message, optional, tag = "2")]
103 pub spec: ::core::option::Option<IngressSpec>,
104 /// status is the current state of the Ingress.
105 /// More info: <https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status>
106 /// +optional
107 #[prost(message, optional, tag = "3")]
108 pub status: ::core::option::Option<IngressStatus>,
109}
110/// IngressBackend describes all endpoints for a given service and port.
111#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
112pub struct IngressBackend {
113 /// serviceName specifies the name of the referenced service.
114 /// +optional
115 #[prost(string, optional, tag = "1")]
116 pub service_name: ::core::option::Option<::prost::alloc::string::String>,
117 /// servicePort Specifies the port of the referenced service.
118 /// +optional
119 #[prost(message, optional, tag = "2")]
120 pub service_port:
121 ::core::option::Option<super::super::super::apimachinery::pkg::util::intstr::IntOrString>,
122 /// resource is an ObjectRef to another Kubernetes resource in the namespace
123 /// of the Ingress object. If resource is specified, serviceName and servicePort
124 /// must not be specified.
125 /// +optional
126 #[prost(message, optional, tag = "3")]
127 pub resource: ::core::option::Option<super::super::core::v1::TypedLocalObjectReference>,
128}
129/// IngressClass represents the class of the Ingress, referenced by the Ingress
130/// Spec. The `ingressclass.kubernetes.io/is-default-class` annotation can be
131/// used to indicate that an IngressClass should be considered default. When a
132/// single IngressClass resource has this annotation set to true, new Ingress
133/// resources without a class specified will be assigned this default class.
134#[derive(Clone, PartialEq, ::prost::Message)]
135pub struct IngressClass {
136 /// Standard object's metadata.
137 /// More info: <https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata>
138 /// +optional
139 #[prost(message, optional, tag = "1")]
140 pub metadata: ::core::option::Option<super::super::super::apimachinery::pkg::apis::meta::v1::ObjectMeta>,
141 /// spec is the desired state of the IngressClass.
142 /// More info: <https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status>
143 /// +optional
144 #[prost(message, optional, tag = "2")]
145 pub spec: ::core::option::Option<IngressClassSpec>,
146}
147/// IngressClassList is a collection of IngressClasses.
148#[derive(Clone, PartialEq, ::prost::Message)]
149pub struct IngressClassList {
150 /// Standard list metadata.
151 /// +optional
152 #[prost(message, optional, tag = "1")]
153 pub metadata: ::core::option::Option<super::super::super::apimachinery::pkg::apis::meta::v1::ListMeta>,
154 /// items is the list of IngressClasses.
155 #[prost(message, repeated, tag = "2")]
156 pub items: ::prost::alloc::vec::Vec<IngressClass>,
157}
158/// IngressClassParametersReference identifies an API object. This can be used
159/// to specify a cluster or namespace-scoped resource.
160#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
161pub struct IngressClassParametersReference {
162 /// apiGroup is the group for the resource being referenced. If APIGroup is
163 /// not specified, the specified Kind must be in the core API group. For any
164 /// other third-party types, APIGroup is required.
165 /// +optional
166 #[prost(string, optional, tag = "1")]
167 pub a_pi_group: ::core::option::Option<::prost::alloc::string::String>,
168 /// kind is the type of resource being referenced.
169 #[prost(string, optional, tag = "2")]
170 pub kind: ::core::option::Option<::prost::alloc::string::String>,
171 /// name is the name of resource being referenced.
172 #[prost(string, optional, tag = "3")]
173 pub name: ::core::option::Option<::prost::alloc::string::String>,
174 /// scope represents if this refers to a cluster or namespace scoped resource.
175 /// This may be set to "Cluster" (default) or "Namespace".
176 #[prost(string, optional, tag = "4")]
177 pub scope: ::core::option::Option<::prost::alloc::string::String>,
178 /// namespace is the namespace of the resource being referenced. This field is
179 /// required when scope is set to "Namespace" and must be unset when scope is set to
180 /// "Cluster".
181 /// +optional
182 #[prost(string, optional, tag = "5")]
183 pub namespace: ::core::option::Option<::prost::alloc::string::String>,
184}
185/// IngressClassSpec provides information about the class of an Ingress.
186#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
187pub struct IngressClassSpec {
188 /// controller refers to the name of the controller that should handle this
189 /// class. This allows for different "flavors" that are controlled by the
190 /// same controller. For example, you may have different parameters for the
191 /// same implementing controller. This should be specified as a
192 /// domain-prefixed path no more than 250 characters in length, e.g.
193 /// "acme.io/ingress-controller". This field is immutable.
194 #[prost(string, optional, tag = "1")]
195 pub controller: ::core::option::Option<::prost::alloc::string::String>,
196 /// parameters is a link to a custom resource containing additional
197 /// configuration for the controller. This is optional if the controller does
198 /// not require extra parameters.
199 /// +optional
200 #[prost(message, optional, tag = "2")]
201 pub parameters: ::core::option::Option<IngressClassParametersReference>,
202}
203/// IngressList is a collection of Ingress.
204#[derive(Clone, PartialEq, ::prost::Message)]
205pub struct IngressList {
206 /// Standard object's metadata.
207 /// More info: <https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata>
208 /// +optional
209 #[prost(message, optional, tag = "1")]
210 pub metadata: ::core::option::Option<super::super::super::apimachinery::pkg::apis::meta::v1::ListMeta>,
211 /// items is the list of Ingress.
212 #[prost(message, repeated, tag = "2")]
213 pub items: ::prost::alloc::vec::Vec<Ingress>,
214}
215/// IngressLoadBalancerIngress represents the status of a load-balancer ingress point.
216#[derive(Clone, PartialEq, ::prost::Message)]
217pub struct IngressLoadBalancerIngress {
218 /// ip is set for load-balancer ingress points that are IP based.
219 /// +optional
220 #[prost(string, optional, tag = "1")]
221 pub ip: ::core::option::Option<::prost::alloc::string::String>,
222 /// hostname is set for load-balancer ingress points that are DNS based.
223 /// +optional
224 #[prost(string, optional, tag = "2")]
225 pub hostname: ::core::option::Option<::prost::alloc::string::String>,
226 /// ports provides information about the ports exposed by this LoadBalancer.
227 /// +listType=atomic
228 /// +optional
229 #[prost(message, repeated, tag = "4")]
230 pub ports: ::prost::alloc::vec::Vec<IngressPortStatus>,
231}
232/// LoadBalancerStatus represents the status of a load-balancer.
233#[derive(Clone, PartialEq, ::prost::Message)]
234pub struct IngressLoadBalancerStatus {
235 /// ingress is a list containing ingress points for the load-balancer.
236 /// +optional
237 /// +listType=atomic
238 #[prost(message, repeated, tag = "1")]
239 pub ingress: ::prost::alloc::vec::Vec<IngressLoadBalancerIngress>,
240}
241/// IngressPortStatus represents the error condition of a service port
242#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
243pub struct IngressPortStatus {
244 /// port is the port number of the ingress port.
245 #[prost(int32, optional, tag = "1")]
246 pub port: ::core::option::Option<i32>,
247 /// protocol is the protocol of the ingress port.
248 /// The supported values are: "TCP", "UDP", "SCTP"
249 #[prost(string, optional, tag = "2")]
250 pub protocol: ::core::option::Option<::prost::alloc::string::String>,
251 /// error is to record the problem with the service port
252 /// The format of the error shall comply with the following rules:
253 /// - built-in error values shall be specified in this file and those shall use
254 /// CamelCase names
255 /// - cloud provider specific error values must have names that comply with the
256 /// format foo.example.com/CamelCase.
257 /// ---
258 /// The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
259 /// +optional
260 /// +kubebuilder:validation:Required
261 /// +kubebuilder:validation: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\])$`
262 /// +kubebuilder:validation:MaxLength=316
263 #[prost(string, optional, tag = "3")]
264 pub error: ::core::option::Option<::prost::alloc::string::String>,
265}
266/// IngressRule represents the rules mapping the paths under a specified host to
267/// the related backend services. Incoming requests are first evaluated for a host
268/// match, then routed to the backend associated with the matching IngressRuleValue.
269#[derive(Clone, PartialEq, ::prost::Message)]
270pub struct IngressRule {
271 /// host is the fully qualified domain name of a network host, as defined by RFC 3986.
272 /// Note the following deviations from the "host" part of the
273 /// URI as defined in RFC 3986:
274 /// 1. IPs are not allowed. Currently an IngressRuleValue can only apply to
275 /// the IP in the Spec of the parent Ingress.
276 /// 2. The `:` delimiter is not respected because ports are not allowed.
277 /// Currently the port of an Ingress is implicitly :80 for http and
278 /// :443 for https.
279 /// Both these may change in the future.
280 /// Incoming requests are matched against the host before the
281 /// IngressRuleValue. If the host is unspecified, the Ingress routes all
282 /// traffic based on the specified IngressRuleValue.
283 ///
284 /// host can be "precise" which is a domain name without the terminating dot of
285 /// a network host (e.g. "foo.bar.com") or "wildcard", which is a domain name
286 /// prefixed with a single wildcard label (e.g. "*.foo.com").
287 /// The wildcard character '*' must appear by itself as the first DNS label and
288 /// matches only a single label. You cannot have a wildcard label by itself (e.g. Host == "*").
289 /// Requests will be matched against the Host field in the following way:
290 /// 1. If Host is precise, the request matches this rule if the http host header is equal to Host.
291 /// 2. If Host is a wildcard, then the request matches this rule if the http host header
292 /// is to equal to the suffix (removing the first label) of the wildcard rule.
293 /// +optional
294 #[prost(string, optional, tag = "1")]
295 pub host: ::core::option::Option<::prost::alloc::string::String>,
296 /// IngressRuleValue represents a rule to route requests for this IngressRule.
297 /// If unspecified, the rule defaults to a http catch-all. Whether that sends
298 /// just traffic matching the host to the default backend or all traffic to the
299 /// default backend, is left to the controller fulfilling the Ingress. Http is
300 /// currently the only supported IngressRuleValue.
301 /// +optional
302 #[prost(message, optional, tag = "2")]
303 pub ingress_rule_value: ::core::option::Option<IngressRuleValue>,
304}
305/// IngressRuleValue represents a rule to apply against incoming requests. If the
306/// rule is satisfied, the request is routed to the specified backend. Currently
307/// mixing different types of rules in a single Ingress is disallowed, so exactly
308/// one of the following must be set.
309#[derive(Clone, PartialEq, ::prost::Message)]
310pub struct IngressRuleValue {
311 /// +optional
312 #[prost(message, optional, tag = "1")]
313 pub http: ::core::option::Option<HttpIngressRuleValue>,
314}
315/// IngressSpec describes the Ingress the user wishes to exist.
316#[derive(Clone, PartialEq, ::prost::Message)]
317pub struct IngressSpec {
318 /// ingressClassName is the name of the IngressClass cluster resource. The
319 /// associated IngressClass defines which controller will implement the
320 /// resource. This replaces the deprecated `kubernetes.io/ingress.class`
321 /// annotation. For backwards compatibility, when that annotation is set, it
322 /// must be given precedence over this field. The controller may emit a
323 /// warning if the field and annotation have different values.
324 /// Implementations of this API should ignore Ingresses without a class
325 /// specified. An IngressClass resource may be marked as default, which can
326 /// be used to set a default value for this field. For more information,
327 /// refer to the IngressClass documentation.
328 /// +optional
329 #[prost(string, optional, tag = "4")]
330 pub ingress_class_name: ::core::option::Option<::prost::alloc::string::String>,
331 /// backend is the default backend capable of servicing requests that don't match any
332 /// rule. At least one of 'backend' or 'rules' must be specified. This field
333 /// is optional to allow the loadbalancer controller or defaulting logic to
334 /// specify a global default.
335 /// +optional
336 #[prost(message, optional, tag = "1")]
337 pub backend: ::core::option::Option<IngressBackend>,
338 /// tls represents the TLS configuration. Currently the Ingress only supports a
339 /// single TLS port, 443. If multiple members of this list specify different hosts,
340 /// they will be multiplexed on the same port according to the hostname specified
341 /// through the SNI TLS extension, if the ingress controller fulfilling the
342 /// ingress supports SNI.
343 /// +optional
344 /// +listType=atomic
345 #[prost(message, repeated, tag = "2")]
346 pub tls: ::prost::alloc::vec::Vec<IngressTls>,
347 /// rules is a list of host rules used to configure the Ingress. If unspecified, or
348 /// no rule matches, all traffic is sent to the default backend.
349 /// +optional
350 /// +listType=atomic
351 #[prost(message, repeated, tag = "3")]
352 pub rules: ::prost::alloc::vec::Vec<IngressRule>,
353}
354/// IngressStatus describes the current state of the Ingress.
355#[derive(Clone, PartialEq, ::prost::Message)]
356pub struct IngressStatus {
357 /// loadBalancer contains the current status of the load-balancer.
358 /// +optional
359 #[prost(message, optional, tag = "1")]
360 pub load_balancer: ::core::option::Option<IngressLoadBalancerStatus>,
361}
362/// IngressTLS describes the transport layer security associated with an Ingress.
363#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
364pub struct IngressTls {
365 /// hosts is a list of hosts included in the TLS certificate. The values in
366 /// this list must match the name/s used in the tlsSecret. Defaults to the
367 /// wildcard host setting for the loadbalancer controller fulfilling this
368 /// Ingress, if left unspecified.
369 /// +optional
370 /// +listType=atomic
371 #[prost(string, repeated, tag = "1")]
372 pub hosts: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
373 /// secretName is the name of the secret used to terminate TLS traffic on
374 /// port 443. Field is left optional to allow TLS routing based on SNI
375 /// hostname alone. If the SNI host in a listener conflicts with the "Host"
376 /// header field used by an IngressRule, the SNI host is used for termination
377 /// and value of the Host header is used for routing.
378 /// +optional
379 #[prost(string, optional, tag = "2")]
380 pub secret_name: ::core::option::Option<::prost::alloc::string::String>,
381}
382/// ParentReference describes a reference to a parent object.
383#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
384pub struct ParentReference {
385 /// Group is the group of the object being referenced.
386 /// +optional
387 #[prost(string, optional, tag = "1")]
388 pub group: ::core::option::Option<::prost::alloc::string::String>,
389 /// Resource is the resource of the object being referenced.
390 /// +required
391 #[prost(string, optional, tag = "2")]
392 pub resource: ::core::option::Option<::prost::alloc::string::String>,
393 /// Namespace is the namespace of the object being referenced.
394 /// +optional
395 #[prost(string, optional, tag = "3")]
396 pub namespace: ::core::option::Option<::prost::alloc::string::String>,
397 /// Name is the name of the object being referenced.
398 /// +required
399 #[prost(string, optional, tag = "4")]
400 pub name: ::core::option::Option<::prost::alloc::string::String>,
401}
402/// ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64).
403/// This range is used to allocate ClusterIPs to Service objects.
404#[derive(Clone, PartialEq, ::prost::Message)]
405pub struct ServiceCIDR {
406 /// Standard object's metadata.
407 /// More info: <https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata>
408 /// +optional
409 #[prost(message, optional, tag = "1")]
410 pub metadata: ::core::option::Option<super::super::super::apimachinery::pkg::apis::meta::v1::ObjectMeta>,
411 /// spec is the desired state of the ServiceCIDR.
412 /// More info: <https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status>
413 /// +optional
414 #[prost(message, optional, tag = "2")]
415 pub spec: ::core::option::Option<ServiceCIDRSpec>,
416 /// status represents the current state of the ServiceCIDR.
417 /// More info: <https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status>
418 /// +optional
419 #[prost(message, optional, tag = "3")]
420 pub status: ::core::option::Option<ServiceCIDRStatus>,
421}
422/// ServiceCIDRList contains a list of ServiceCIDR objects.
423#[derive(Clone, PartialEq, ::prost::Message)]
424pub struct ServiceCIDRList {
425 /// Standard object's metadata.
426 /// More info: <https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata>
427 /// +optional
428 #[prost(message, optional, tag = "1")]
429 pub metadata: ::core::option::Option<super::super::super::apimachinery::pkg::apis::meta::v1::ListMeta>,
430 /// items is the list of ServiceCIDRs.
431 #[prost(message, repeated, tag = "2")]
432 pub items: ::prost::alloc::vec::Vec<ServiceCIDR>,
433}
434/// ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services.
435#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
436pub struct ServiceCIDRSpec {
437 /// CIDRs defines the IP blocks in CIDR notation (e.g. "192.168.0.0/24" or "2001:db8::/64")
438 /// from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family.
439 /// This field is immutable.
440 /// +optional
441 /// +listType=atomic
442 #[prost(string, repeated, tag = "1")]
443 pub cidrs: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
444}
445/// ServiceCIDRStatus describes the current state of the ServiceCIDR.
446#[derive(Clone, PartialEq, ::prost::Message)]
447pub struct ServiceCIDRStatus {
448 /// conditions holds an array of metav1.Condition that describe the state of the ServiceCIDR.
449 /// Current service state
450 /// +optional
451 /// +patchMergeKey=type
452 /// +patchStrategy=merge
453 /// +listType=map
454 /// +listMapKey=type
455 #[prost(message, repeated, tag = "1")]
456 pub conditions:
457 ::prost::alloc::vec::Vec<super::super::super::apimachinery::pkg::apis::meta::v1::Condition>,
458}
459
460impl crate::Resource for IPAddress {
461 const API_VERSION: &'static str = "networking.k8s.io/v1beta1";
462 const GROUP: &'static str = "networking.k8s.io";
463 const VERSION: &'static str = "v1beta1";
464 const KIND: &'static str = "IPAddress";
465 const URL_PATH_SEGMENT: &'static str = "ipaddresses";
466 type Scope = crate::ClusterResourceScope;
467}
468impl crate::Metadata for IPAddress {
469 type Ty = crate::apimachinery::pkg::apis::meta::v1::ObjectMeta;
470 fn metadata(&self) -> Option<&<Self as crate::Metadata>::Ty> {
471 self.metadata.as_ref()
472 }
473 fn metadata_mut(&mut self) -> Option<&mut <Self as crate::Metadata>::Ty> {
474 self.metadata.as_mut()
475 }
476}
477impl crate::HasSpec for IPAddress {
478 type Spec = crate::api::networking::v1beta1::IPAddressSpec;
479 fn spec(&self) -> Option<&<Self as crate::HasSpec>::Spec> {
480 self.spec.as_ref()
481 }
482 fn spec_mut(&mut self) -> Option<&mut <Self as crate::HasSpec>::Spec> {
483 self.spec.as_mut()
484 }
485}
486
487impl crate::Resource for ServiceCIDR {
488 const API_VERSION: &'static str = "networking.k8s.io/v1beta1";
489 const GROUP: &'static str = "networking.k8s.io";
490 const VERSION: &'static str = "v1beta1";
491 const KIND: &'static str = "ServiceCIDR";
492 const URL_PATH_SEGMENT: &'static str = "servicecidrs";
493 type Scope = crate::ClusterResourceScope;
494}
495impl crate::Metadata for ServiceCIDR {
496 type Ty = crate::apimachinery::pkg::apis::meta::v1::ObjectMeta;
497 fn metadata(&self) -> Option<&<Self as crate::Metadata>::Ty> {
498 self.metadata.as_ref()
499 }
500 fn metadata_mut(&mut self) -> Option<&mut <Self as crate::Metadata>::Ty> {
501 self.metadata.as_mut()
502 }
503}
504impl crate::HasSpec for ServiceCIDR {
505 type Spec = crate::api::networking::v1beta1::ServiceCIDRSpec;
506 fn spec(&self) -> Option<&<Self as crate::HasSpec>::Spec> {
507 self.spec.as_ref()
508 }
509 fn spec_mut(&mut self) -> Option<&mut <Self as crate::HasSpec>::Spec> {
510 self.spec.as_mut()
511 }
512}
513impl crate::HasStatus for ServiceCIDR {
514 type Status = crate::api::networking::v1beta1::ServiceCIDRStatus;
515 fn status(&self) -> Option<&<Self as crate::HasStatus>::Status> {
516 self.status.as_ref()
517 }
518 fn status_mut(&mut self) -> Option<&mut <Self as crate::HasStatus>::Status> {
519 self.status.as_mut()
520 }
521}
522impl crate::HasConditions for ServiceCIDR {
523 type Condition = crate::apimachinery::pkg::apis::meta::v1::Condition;
524 fn conditions(&self) -> Option<&[<Self as crate::HasConditions>::Condition]> {
525 self.status.as_ref().map(|s| s.conditions.as_slice())
526 }
527 fn conditions_mut(&mut self) -> Option<&mut Vec<<Self as crate::HasConditions>::Condition>> {
528 self.status.as_mut().and_then(|s| Some(s.conditions.as_mut()))
529 }
530}