# Copyright 2025 Google LLC
#
# 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.

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    cnrm.cloud.google.com/version: 1.128.0
  creationTimestamp: null
  labels:
    cnrm.cloud.google.com/managed-by-kcc: "true"
    cnrm.cloud.google.com/stability-level: stable
    cnrm.cloud.google.com/system: "true"
    cnrm.cloud.google.com/tf2crd: "true"
  name: computenetworks.compute.cnrm.cloud.google.com
spec:
  group: compute.cnrm.cloud.google.com
  names:
    categories:
    - gcp
    kind: ComputeNetwork
    plural: computenetworks
    shortNames:
    - gcpcomputenetwork
    - gcpcomputenetworks
    singular: computenetwork
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: When 'True', the most recent reconcile of the resource succeeded
      jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: Ready
      type: string
    - description: The reason for the value in 'Ready'
      jsonPath: .status.conditions[?(@.type=='Ready')].reason
      name: Status
      type: string
    - description: The last transition time for the value in 'Status'
      jsonPath: .status.conditions[?(@.type=='Ready')].lastTransitionTime
      name: Status Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        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/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/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            properties:
              autoCreateSubnetworks:
                description: |-
                  Immutable. When set to 'true', the network is created in "auto subnet mode" and
                  it will create a subnet for each region automatically across the
                  '10.128.0.0/9' address range.

                  When set to 'false', the network is created in "custom subnet mode" so
                  the user can explicitly connect subnetwork resources.
                type: boolean
              deleteDefaultRoutesOnCreate:
                description: |-
                  If set to 'true', default routes ('0.0.0.0/0') will be deleted
                  immediately after network creation. Defaults to 'false'.
                type: boolean
              description:
                description: |-
                  Immutable. An optional description of this resource. The resource must be
                  recreated to modify this field.
                type: string
              enableUlaInternalIpv6:
                description: |-
                  Enable ULA internal ipv6 on this network. Enabling this feature will assign
                  a /48 from google defined ULA prefix fd20::/20.
                type: boolean
              internalIpv6Range:
                description: |-
                  Immutable. When enabling ula internal ipv6, caller optionally can specify the /48 range
                  they want from the google defined ULA prefix fd20::/20. The input must be a
                  valid /48 ULA IPv6 address and must be within the fd20::/20. Operation will
                  fail if the speficied /48 is already in used by another resource.
                  If the field is not speficied, then a /48 range will be randomly allocated from fd20::/20 and returned via this field.
                type: string
              mtu:
                description: |-
                  Immutable. Maximum Transmission Unit in bytes. The default value is 1460 bytes.
                  The minimum value for this field is 1300 and the maximum value is 8896 bytes (jumbo frames).
                  Note that packets larger than 1500 bytes (standard Ethernet) can be subject to TCP-MSS clamping or dropped
                  with an ICMP 'Fragmentation-Needed' message if the packets are routed to the Internet or other VPCs
                  with varying MTUs.
                type: integer
              networkFirewallPolicyEnforcementOrder:
                description: 'Set the order that Firewall Rules and Firewall Policies
                  are evaluated. Default value: "AFTER_CLASSIC_FIREWALL" Possible
                  values: ["BEFORE_CLASSIC_FIREWALL", "AFTER_CLASSIC_FIREWALL"].'
                type: string
              resourceID:
                description: Immutable. Optional. The name of the resource. Used for
                  creation and acquisition. When unset, the value of `metadata.name`
                  is used as the default.
                type: string
              routingMode:
                description: |-
                  The network-wide routing mode to use. If set to 'REGIONAL', this
                  network's cloud routers will only advertise routes with subnetworks
                  of this network in the same region as the router. If set to 'GLOBAL',
                  this network's cloud routers will advertise routes with all
                  subnetworks of this network, across regions. Possible values: ["REGIONAL", "GLOBAL"].
                type: string
            type: object
          status:
            properties:
              conditions:
                description: Conditions represent the latest available observation
                  of the resource's current state.
                items:
                  properties:
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status
                        to another.
                      type: string
                    message:
                      description: Human-readable message indicating details about
                        last transition.
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's
                        last transition.
                      type: string
                    status:
                      description: Status is the status of the condition. Can be True,
                        False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                type: array
              gatewayIpv4:
                description: |-
                  The gateway address for default routing out of the network. This value
                  is selected by GCP.
                type: string
              observedGeneration:
                description: ObservedGeneration is the generation of the resource
                  that was most recently observed by the Config Connector controller.
                  If this is equal to metadata.generation, then that means that the
                  current reported status reflects the most recent desired state of
                  the resource.
                type: integer
              selfLink:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
