---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
    operatorframework.io/installed-alongside-e33812b81c25fb40: openshift-storage/odf-csi-addons-operator.v4.19.6-rhodf
  creationTimestamp: "2025-10-27T12:44:07Z"
  generation: 1
  labels:
    olm.managed: "true"
    operators.coreos.com/odf-csi-addons-operator.openshift-storage: ""
  managedFields:
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:controller-gen.kubebuilder.io/version: {}
          f:operatorframework.io/installed-alongside-e33812b81c25fb40: {}
        f:labels:
          .: {}
          f:olm.managed: {}
      f:spec:
        f:conversion:
          .: {}
          f:strategy: {}
        f:group: {}
        f:names:
          f:kind: {}
          f:listKind: {}
          f:plural: {}
          f:singular: {}
        f:scope: {}
        f:versions: {}
    manager: catalog
    operation: Update
    time: "2025-10-27T12:44:07Z"
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:status:
        f:acceptedNames:
          f:kind: {}
          f:listKind: {}
          f:plural: {}
          f:singular: {}
        f:conditions:
          k:{"type":"Established"}:
            .: {}
            f:lastTransitionTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
          k:{"type":"NamesAccepted"}:
            .: {}
            f:lastTransitionTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
    manager: kube-apiserver
    operation: Update
    subresource: status
    time: "2025-10-27T12:44:07Z"
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:labels:
          f:operators.coreos.com/odf-csi-addons-operator.openshift-storage: {}
    manager: olm
    operation: Update
    time: "2025-10-27T12:47:13Z"
  name: networkfences.csiaddons.openshift.io
  resourceVersion: "62919"
  uid: d068f731-119c-436a-b209-842a34bc671c
spec:
  conversion:
    strategy: None
  group: csiaddons.openshift.io
  names:
    kind: NetworkFence
    listKind: NetworkFenceList
    plural: networkfences
    singular: networkfence
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.driver
      name: Driver
      type: string
    - jsonPath: .spec.cidrs
      name: Cidrs
      type: string
    - jsonPath: .spec.fenceState
      name: FenceState
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - jsonPath: .status.result
      name: Result
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: NetworkFence is the Schema for the networkfences 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:
            description: NetworkFenceSpec defines the desired state of NetworkFence
            properties:
              cidrs:
                description: Cidrs contains a list of CIDR blocks, which are required
                  to be fenced.
                items:
                  type: string
                type: array
              driver:
                description: Driver contains the name of CSI driver, required if NetworkFenceClassName
                  is absent
                type: string
                x-kubernetes-validations:
                - message: driver is immutable
                  rule: self == oldSelf
              fenceState:
                default: Fenced
                description: |-
                  FenceState contains the desired state for the CIDRs
                  mentioned in the Spec. i.e. Fenced or Unfenced
                enum:
                - Fenced
                - Unfenced
                type: string
              networkFenceClassName:
                description: NetworkFenceClassName contains the name of the NetworkFenceClass
                type: string
                x-kubernetes-validations:
                - message: networkFenceClassName is immutable
                  rule: self == oldSelf
              parameters:
                additionalProperties:
                  type: string
                description: Parameters is used to pass additional parameters to the
                  CSI driver.
                type: object
                x-kubernetes-validations:
                - message: parameters are immutable
                  rule: self == oldSelf
              secret:
                description: Secret is a kubernetes secret, which is required to perform
                  the fence/unfence operation.
                properties:
                  name:
                    description: Name specifies the name of the secret.
                    type: string
                    x-kubernetes-validations:
                    - message: name is immutable
                      rule: self == oldSelf
                  namespace:
                    description: |-
                      Namespace specifies the namespace in which the secret
                      is located.
                    type: string
                    x-kubernetes-validations:
                    - message: namespace is immutable
                      rule: self == oldSelf
                type: object
                x-kubernetes-validations:
                - message: secrets are immutable
                  rule: self == oldSelf
                - message: secret is immutable
                  rule: self == oldSelf
            required:
            - cidrs
            - fenceState
            type: object
            x-kubernetes-validations:
            - message: one of driver or networkFenceClassName must be present
              rule: has(self.driver) || has(self.networkFenceClassName)
            - message: secret must be present when networkFenceClassName is not specified
              rule: has(self.networkFenceClassName) || has(self.secret)
          status:
            description: NetworkFenceStatus defines the observed state of NetworkFence
            properties:
              conditions:
                description: Conditions are the list of conditions and their status.
                items:
                  description: Condition contains details for one aspect of the current
                    state of this API Resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        lastTransitionTime is the last time the condition transitioned from one status to another.
                        This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        message is a human readable message indicating details about the transition.
                        This may be an empty string.
                      maxLength: 32768
                      type: string
                    observedGeneration:
                      description: |-
                        observedGeneration represents the .metadata.generation that the condition was set based upon.
                        For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                        with respect to the current state of the instance.
                      format: int64
                      minimum: 0
                      type: integer
                    reason:
                      description: |-
                        reason contains a programmatic identifier indicating the reason for the condition's last transition.
                        Producers of specific condition types may define expected values and meanings for this field,
                        and whether the values are considered a guaranteed API.
                        The value should be a CamelCase string.
                        This field may not be empty.
                      maxLength: 1024
                      minLength: 1
                      pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                      type: string
                    status:
                      description: status of the condition, one of True, False, Unknown.
                      enum:
                      - "True"
                      - "False"
                      - Unknown
                      type: string
                    type:
                      description: type of condition in CamelCase or in foo.example.com/CamelCase.
                      maxLength: 316
                      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])$
                      type: string
                  required:
                  - lastTransitionTime
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
              message:
                description: Message contains any message from the NetworkFence operation.
                type: string
              result:
                description: Result indicates the result of Network Fence/Unfence
                  operation.
                type: string
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: NetworkFence
    listKind: NetworkFenceList
    plural: networkfences
    singular: networkfence
  conditions:
  - lastTransitionTime: "2025-10-27T12:44:07Z"
    message: no conflicts found
    reason: NoConflicts
    status: "True"
    type: NamesAccepted
  - lastTransitionTime: "2025-10-27T12:44:07Z"
    message: the initial names have been accepted
    reason: InitialNamesAccepted
    status: "True"
    type: Established
  storedVersions:
  - v1alpha1
