---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: (unknown)
  name: computerouterpeers.compute.cnrm.cloud.google.com
spec:
  group: compute.cnrm.cloud.google.com
  names:
    kind: ComputeRouterPeer
    listKind: ComputeRouterPeerList
    plural: computerouterpeers
    singular: computerouterpeer
  scope: Namespaced
  versions:
  - name: v1beta1
    schema:
      openAPIV3Schema:
        description: ComputeRouterPeer is the Schema for the compute API
        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/sig-architecture/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/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            properties:
              advertiseMode:
                description: |-
                  User-specified flag to indicate which mode to use for advertisement.
                  Valid values of this enum field are: 'DEFAULT', 'CUSTOM' Default value: "DEFAULT" Possible values: ["DEFAULT", "CUSTOM"].
                type: string
              advertisedGroups:
                description: |-
                  User-specified list of prefix groups to advertise in custom
                  mode, which can take one of the following options:


                  * 'ALL_SUBNETS': Advertises all available subnets, including peer VPC subnets.
                  * 'ALL_VPC_SUBNETS': Advertises the router's own VPC subnets.
                  * 'ALL_PEER_VPC_SUBNETS': Advertises peer subnets of the router's VPC network.


                  Note that this field can only be populated if advertiseMode is 'CUSTOM'
                  and overrides the list defined for the router (in the "bgp" message).
                  These groups are advertised in addition to any specified prefixes.
                  Leave this field blank to advertise no custom groups.
                items:
                  type: string
                type: array
              advertisedIpRanges:
                description: |-
                  User-specified list of individual IP ranges to advertise in
                  custom mode. This field can only be populated if advertiseMode
                  is 'CUSTOM' and is advertised to all peers of the router. These IP
                  ranges will be advertised in addition to any specified groups.
                  Leave this field blank to advertise no custom IP ranges.
                items:
                  properties:
                    description:
                      description: User-specified description for the IP range.
                      type: string
                    range:
                      description: |-
                        The IP range to advertise. The value must be a
                        CIDR-formatted string.
                      type: string
                  required:
                  - range
                  type: object
                type: array
              advertisedRoutePriority:
                description: |-
                  The priority of routes advertised to this BGP peer.
                  Where there is more than one matching route of maximum
                  length, the routes with the lowest priority value win.
                type: integer
              bfd:
                description: BFD configuration for the BGP peering.
                properties:
                  minReceiveInterval:
                    description: |-
                      The minimum interval, in milliseconds, between BFD control packets
                      received from the peer router. The actual value is negotiated
                      between the two routers and is equal to the greater of this value
                      and the transmit interval of the other router. If set, this value
                      must be between 1000 and 30000.
                    type: integer
                  minTransmitInterval:
                    description: |-
                      The minimum interval, in milliseconds, between BFD control packets
                      transmitted to the peer router. The actual value is negotiated
                      between the two routers and is equal to the greater of this value
                      and the corresponding receive interval of the other router. If set,
                      this value must be between 1000 and 30000.
                    type: integer
                  multiplier:
                    description: |-
                      The number of consecutive BFD packets that must be missed before
                      BFD declares that a peer is unavailable. If set, the value must
                      be a value between 5 and 16.
                    type: integer
                  sessionInitializationMode:
                    description: |-
                      The BFD session initialization mode for this BGP peer.
                      If set to 'ACTIVE', the Cloud Router will initiate the BFD session
                      for this BGP peer. If set to 'PASSIVE', the Cloud Router will wait
                      for the peer router to initiate the BFD session for this BGP peer.
                      If set to 'DISABLED', BFD is disabled for this BGP peer. Possible values: ["ACTIVE", "DISABLED", "PASSIVE"].
                    type: string
                required:
                - sessionInitializationMode
                type: object
              enable:
                description: |-
                  The status of the BGP peer connection. If set to false, any active session
                  with the peer is terminated and all associated routing information is removed.
                  If set to true, the peer connection can be established with routing information.
                  The default is true.
                type: boolean
              enableIpv6:
                description: Enable IPv6 traffic over BGP Peer. If not specified,
                  it is disabled by default.
                type: boolean
              ipAddress:
                description: |-
                  IP address of the interface inside Google Cloud Platform.
                  Only IPv4 is supported.
                properties:
                  external:
                    type: string
                type: object
              ipv6NexthopAddress:
                description: |-
                  IPv6 address of the interface inside Google Cloud Platform.
                  The address must be in the range 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64.
                  If you do not specify the next hop addresses, Google Cloud automatically
                  assigns unused addresses from the 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64 range for you.
                type: string
              peerAsn:
                description: |-
                  Peer BGP Autonomous System Number (ASN).
                  Each BGP interface may use a different value.
                type: integer
              peerIpAddress:
                description: |-
                  IP address of the BGP interface outside Google Cloud Platform.
                  Only IPv4 is supported.
                type: string
              peerIpv6NexthopAddress:
                description: |-
                  IPv6 address of the BGP interface outside Google Cloud Platform.
                  The address must be in the range 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64.
                  If you do not specify the next hop addresses, Google Cloud automatically
                  assigns unused addresses from the 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64 range for you.
                type: string
              region:
                description: |-
                  Immutable. Region where the router and BgpPeer reside.
                  If it is not provided, the provider region is used.
                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
              routerApplianceInstanceRef:
                description: |-
                  The URI of the VM instance that is used as third-party router
                  appliances such as Next Gen Firewalls, Virtual Routers, or Router
                  Appliances. The VM instance must be located in zones contained in
                  the same region as this Cloud Router. The VM instance is the peer
                  side of the BGP session.
                properties:
                  external:
                    description: The external name of the referenced resource
                    type: string
                  kind:
                    description: Kind of the referent.
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  namespace:
                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                    type: string
                type: object
              routerInterfaceRef:
                description: The interface the BGP peer is associated with.
                properties:
                  external:
                    description: The external name of the referenced resource
                    type: string
                  kind:
                    description: Kind of the referent.
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  namespace:
                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                    type: string
                type: object
              routerRef:
                description: The Cloud Router in which this BGP peer will be configured.
                properties:
                  external:
                    description: The external name of the referenced resource
                    type: string
                  kind:
                    description: Kind of the referent.
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  namespace:
                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                    type: string
                type: object
            required:
            - peerAsn
            - peerIpAddress
            - region
            - routerInterfaceRef
            - routerRef
            type: object
          status:
            properties:
              conditions:
                description: |-
                  Conditions represent the latest available observations of the
                  ComputeRouterPeer'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
              managementType:
                description: |-
                  The resource that configures and manages this BGP peer.


                  * 'MANAGED_BY_USER' is the default value and can be managed by
                  you or other users
                  * 'MANAGED_BY_ATTACHMENT' is a BGP peer that is configured and
                  managed by Cloud Interconnect, specifically by an
                  InterconnectAttachment of type PARTNER. Google automatically
                  creates, updates, and deletes this type of BGP peer when the
                  PARTNER InterconnectAttachment is created, updated,
                  or deleted.
                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
            type: object
        type: object
    served: true
    storage: true