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}