---
apiVersion: v1
items:
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:46:28Z"
    generateName: ovs-
    labels:
      app: ovs
      component: network
      controller-revision-hash: 79d97b545c
      openshift.io/component: network
      pod-template-generation: "1"
      type: infra
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:component: {}
            f:controller-revision-hash: {}
            f:openshift.io/component: {}
            f:pod-template-generation: {}
            f:type: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"bb69a0b2-e1b9-40de-be1a-2ef10cd41b70"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"openvswitch"}:
              .: {}
              f:command: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:readinessProbe:
                .: {}
                f:exec:
                  .: {}
                  f:command: {}
                f:failureThreshold: {}
                f:initialDelaySeconds: {}
                f:periodSeconds: {}
                f:successThreshold: {}
                f:timeoutSeconds: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:securityContext:
                .: {}
                f:privileged: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/etc/openvswitch"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/host"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/lib/modules"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/run"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/sys"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:nodeSelector:
            .: {}
            f:kubernetes.io/os: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"host-config-openvswitch"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-modules"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-run"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-slash"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-sys"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:46:28Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.94.235"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:47:24Z"
    name: ovs-8mdrj
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: ovs
      uid: bb69a0b2-e1b9-40de-be1a-2ef10cd41b70
    resourceVersion: "19725"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/ovs-8mdrj
    uid: ad841fad-c5d5-4ec0-96c0-2a7225bf2550
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - worker-2.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail
        export SYSTEMD_IGNORE_CHROOT=yes

        # systemctl cannot be used in a separate PID namespace to reach
        # the systemd running in PID 1. Therefore we need to use the dbus API
        systemctl_restart(){
          gdbus call \
            --system \
            --dest org.freedesktop.systemd1 \
            --object-path /org/freedesktop/systemd1/unit/"$(svc_encode_name ${1})"_2eservice \
            --method org.freedesktop.systemd1.Unit.Restart "replace"
        }
        svc_encode_name(){
          # systemd encodes some characters, so far we only need to encode
          # the character "-" but there may be more in the future.
          echo "${1//-/_2d}"
        }

        # Check to see if ovs is provided by the node:
        if [ -f /host/var/run/ovs-config-executed ]; then
          echo "openvswitch is running in systemd"
          # In some very strange corner cases, the owner for /run/openvswitch
          # can be wrong, so we need to clean up and restart.
          ovs_uid=$(chroot /host id -u openvswitch)
          ovs_gid=$(chroot /host id -g openvswitch)
          chown -R "${ovs_uid}:${ovs_gid}" /run/openvswitch
          if [[ ! -S /run/openvswitch/db.sock ]]; then
            systemctl_restart ovsdb-server
          fi
          # Don't need to worry about restoring flows; this can only change if we've rebooted
          exec tail -F /host/var/log/openvswitch/ovs-vswitchd.log /host/var/log/openvswitch/ovsdb-server.log
        else
          echo "openvswitch is running in container"
          # if another process is listening on the cni-server socket, wait until it exits
          retries=0
          while true; do
            if /usr/share/openvswitch/scripts/ovs-ctl status &>/dev/null; then
              echo "warning: Another process is currently managing OVS, waiting 15s ..." 2>&1
              sleep 15 & wait
              (( retries += 1 ))
            else
              break
            fi
            if [[ "${retries}" -gt 40 ]]; then
              echo "error: Another process is currently managing OVS, exiting" 2>&1
              exit 1
            fi
          done

          function quit {
              # Save the flows
              echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Saving flows ..." 2>&1
              bridges=$(ovs-vsctl -- --real list-br)
              TMPDIR=/var/run/openvswitch /usr/share/openvswitch/scripts/ovs-save save-flows $bridges > /var/run/openvswitch/flows.sh
              echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Saved flows" 2>&1

              # Don't allow ovs-vswitchd to clear datapath flows on exit
              kill -9 $(cat /var/run/openvswitch/ovs-vswitchd.pid 2>/dev/null) 2>/dev/null || true
              kill $(cat /var/run/openvswitch/ovsdb-server.pid 2>/dev/null) 2>/dev/null || true
              exit 0
          }
          trap quit SIGTERM

          function deletePid {
              rm /var/run/openvswitch/ovs-vswitchd.pid
              rm /var/run/openvswitch/ovsdb-server.pid
          }
          trap deletePid EXIT

          chown -R openvswitch:openvswitch /var/run/openvswitch
          chown -R openvswitch:openvswitch /etc/openvswitch

          # launch OVS
          # Start the ovsdb so that we can prep it before we start the ovs-vswitchd
          /usr/share/openvswitch/scripts/ovs-ctl start --ovs-user=openvswitch:openvswitch --no-ovs-vswitchd --system-id=random --no-monitor

          # Set the flow-restore-wait to true so ovs-vswitchd will wait till flows are restored
          ovs-vsctl --no-wait set Open_vSwitch . other_config:flow-restore-wait=true

          # Restrict the number of pthreads ovs-vswitchd creates to reduce the
          # amount of RSS it uses on hosts with many cores
          # https://bugzilla.redhat.com/show_bug.cgi?id=1571379
          # https://bugzilla.redhat.com/show_bug.cgi?id=1572797
          if [[ `nproc` -gt 12 ]]; then
              ovs-vsctl --no-wait set Open_vSwitch . other_config:n-revalidator-threads=4
              ovs-vsctl --no-wait set Open_vSwitch . other_config:n-handler-threads=10
          fi

          # And finally start the ovs-vswitchd now the DB is prepped
          /usr/share/openvswitch/scripts/ovs-ctl start --ovs-user=openvswitch:openvswitch --no-ovsdb-server --system-id=random --no-monitor

          # Load any flows that we saved
          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Loading previous flows ..." 2>&1
          if [[ -f /var/run/openvswitch/flows.sh ]]; then

            # There's a bug in the ovs-save script which causes flows.sh to specify
            # OpenFlow14, replace that to OpenFlow13 which is the only version we support.
            sed -i 's/OpenFlow[0-9][0-9]/OpenFlow13/g' /var/run/openvswitch/flows.sh

            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Adding br0 if it doesn't exist ..." 2>&1
            /usr/bin/ovs-vsctl --may-exist add-br br0 -- set Bridge br0 fail_mode=secure protocols=OpenFlow13
            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Created br0, now adding flows ..." 2>&1
            mv /var/run/openvswitch/flows.sh /var/run/openvswitch/flows-old.sh
            sh -x /var/run/openvswitch/flows-old.sh
            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Done restoring the existing flows ..." 2>&1
            rm /var/run/openvswitch/flows-old.sh
          fi

          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Remove other config ..." 2>&1
          ovs-vsctl --no-wait --if-exists remove Open_vSwitch . other_config flow-restore-wait=true
          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Removed other config ..." 2>&1

          tail -F --pid=$(cat /var/run/openvswitch/ovs-vswitchd.pid) /var/log/openvswitch/ovs-vswitchd.log &
          tail -F --pid=$(cat /var/run/openvswitch/ovsdb-server.pid) /var/log/openvswitch/ovsdb-server.log &
          wait
        fi
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      name: openvswitch
      readinessProbe:
        exec:
          command:
          - /bin/bash
          - -c
          - |
            #!/bin/bash
            /usr/bin/ovs-vsctl -t 5 show > /dev/null
        failureThreshold: 3
        initialDelaySeconds: 15
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 6
      resources:
        requests:
          cpu: 100m
          memory: 400Mi
      securityContext:
        privileged: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /lib/modules
        name: host-modules
        readOnly: true
      - mountPath: /run
        name: host-run
      - mountPath: /sys
        name: host-sys
        readOnly: true
      - mountPath: /etc/openvswitch
        name: host-config-openvswitch
      - mountPath: /host
        name: host-slash
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    imagePullSecrets:
    - name: sdn-dockercfg-4w66z
    nodeName: worker-2.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 2000001000
    priorityClassName: system-node-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: sdn
    serviceAccountName: sdn
    terminationGracePeriodSeconds: 30
    tolerations:
    - operator: Exists
    volumes:
    - hostPath:
        path: /lib/modules
        type: ""
      name: host-modules
    - hostPath:
        path: /run
        type: ""
      name: host-run
    - hostPath:
        path: /sys
        type: ""
      name: host-sys
    - hostPath:
        path: /var/lib/openvswitch
        type: DirectoryOrCreate
      name: host-config-openvswitch
    - hostPath:
        path: /
        type: ""
      name: host-slash
    - name: sdn-token-45pnf
      secret:
        defaultMode: 420
        secretName: sdn-token-45pnf
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:46:54Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:24Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:24Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:46:28Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://0d83f9987aadc7e4d075c3a890f279dca6bcd5ecaa3c488054e77acb6e643af9
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: openvswitch
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:47:06Z"
    hostIP: 10.0.94.235
    phase: Running
    podIP: 10.0.94.235
    podIPs:
    - ip: 10.0.94.235
    qosClass: Burstable
    startTime: "2022-03-08T10:46:54Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:46:28Z"
    generateName: ovs-
    labels:
      app: ovs
      component: network
      controller-revision-hash: 79d97b545c
      openshift.io/component: network
      pod-template-generation: "1"
      type: infra
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:component: {}
            f:controller-revision-hash: {}
            f:openshift.io/component: {}
            f:pod-template-generation: {}
            f:type: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"bb69a0b2-e1b9-40de-be1a-2ef10cd41b70"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"openvswitch"}:
              .: {}
              f:command: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:readinessProbe:
                .: {}
                f:exec:
                  .: {}
                  f:command: {}
                f:failureThreshold: {}
                f:initialDelaySeconds: {}
                f:periodSeconds: {}
                f:successThreshold: {}
                f:timeoutSeconds: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:securityContext:
                .: {}
                f:privileged: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/etc/openvswitch"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/host"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/lib/modules"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/run"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/sys"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:nodeSelector:
            .: {}
            f:kubernetes.io/os: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"host-config-openvswitch"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-modules"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-run"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-slash"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-sys"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:46:28Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.89.30"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:47:36Z"
    name: ovs-cb7xs
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: ovs
      uid: bb69a0b2-e1b9-40de-be1a-2ef10cd41b70
    resourceVersion: "20122"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/ovs-cb7xs
    uid: 8bbcff41-b781-4b31-a59f-527b9be91f92
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - worker-0.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail
        export SYSTEMD_IGNORE_CHROOT=yes

        # systemctl cannot be used in a separate PID namespace to reach
        # the systemd running in PID 1. Therefore we need to use the dbus API
        systemctl_restart(){
          gdbus call \
            --system \
            --dest org.freedesktop.systemd1 \
            --object-path /org/freedesktop/systemd1/unit/"$(svc_encode_name ${1})"_2eservice \
            --method org.freedesktop.systemd1.Unit.Restart "replace"
        }
        svc_encode_name(){
          # systemd encodes some characters, so far we only need to encode
          # the character "-" but there may be more in the future.
          echo "${1//-/_2d}"
        }

        # Check to see if ovs is provided by the node:
        if [ -f /host/var/run/ovs-config-executed ]; then
          echo "openvswitch is running in systemd"
          # In some very strange corner cases, the owner for /run/openvswitch
          # can be wrong, so we need to clean up and restart.
          ovs_uid=$(chroot /host id -u openvswitch)
          ovs_gid=$(chroot /host id -g openvswitch)
          chown -R "${ovs_uid}:${ovs_gid}" /run/openvswitch
          if [[ ! -S /run/openvswitch/db.sock ]]; then
            systemctl_restart ovsdb-server
          fi
          # Don't need to worry about restoring flows; this can only change if we've rebooted
          exec tail -F /host/var/log/openvswitch/ovs-vswitchd.log /host/var/log/openvswitch/ovsdb-server.log
        else
          echo "openvswitch is running in container"
          # if another process is listening on the cni-server socket, wait until it exits
          retries=0
          while true; do
            if /usr/share/openvswitch/scripts/ovs-ctl status &>/dev/null; then
              echo "warning: Another process is currently managing OVS, waiting 15s ..." 2>&1
              sleep 15 & wait
              (( retries += 1 ))
            else
              break
            fi
            if [[ "${retries}" -gt 40 ]]; then
              echo "error: Another process is currently managing OVS, exiting" 2>&1
              exit 1
            fi
          done

          function quit {
              # Save the flows
              echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Saving flows ..." 2>&1
              bridges=$(ovs-vsctl -- --real list-br)
              TMPDIR=/var/run/openvswitch /usr/share/openvswitch/scripts/ovs-save save-flows $bridges > /var/run/openvswitch/flows.sh
              echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Saved flows" 2>&1

              # Don't allow ovs-vswitchd to clear datapath flows on exit
              kill -9 $(cat /var/run/openvswitch/ovs-vswitchd.pid 2>/dev/null) 2>/dev/null || true
              kill $(cat /var/run/openvswitch/ovsdb-server.pid 2>/dev/null) 2>/dev/null || true
              exit 0
          }
          trap quit SIGTERM

          function deletePid {
              rm /var/run/openvswitch/ovs-vswitchd.pid
              rm /var/run/openvswitch/ovsdb-server.pid
          }
          trap deletePid EXIT

          chown -R openvswitch:openvswitch /var/run/openvswitch
          chown -R openvswitch:openvswitch /etc/openvswitch

          # launch OVS
          # Start the ovsdb so that we can prep it before we start the ovs-vswitchd
          /usr/share/openvswitch/scripts/ovs-ctl start --ovs-user=openvswitch:openvswitch --no-ovs-vswitchd --system-id=random --no-monitor

          # Set the flow-restore-wait to true so ovs-vswitchd will wait till flows are restored
          ovs-vsctl --no-wait set Open_vSwitch . other_config:flow-restore-wait=true

          # Restrict the number of pthreads ovs-vswitchd creates to reduce the
          # amount of RSS it uses on hosts with many cores
          # https://bugzilla.redhat.com/show_bug.cgi?id=1571379
          # https://bugzilla.redhat.com/show_bug.cgi?id=1572797
          if [[ `nproc` -gt 12 ]]; then
              ovs-vsctl --no-wait set Open_vSwitch . other_config:n-revalidator-threads=4
              ovs-vsctl --no-wait set Open_vSwitch . other_config:n-handler-threads=10
          fi

          # And finally start the ovs-vswitchd now the DB is prepped
          /usr/share/openvswitch/scripts/ovs-ctl start --ovs-user=openvswitch:openvswitch --no-ovsdb-server --system-id=random --no-monitor

          # Load any flows that we saved
          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Loading previous flows ..." 2>&1
          if [[ -f /var/run/openvswitch/flows.sh ]]; then

            # There's a bug in the ovs-save script which causes flows.sh to specify
            # OpenFlow14, replace that to OpenFlow13 which is the only version we support.
            sed -i 's/OpenFlow[0-9][0-9]/OpenFlow13/g' /var/run/openvswitch/flows.sh

            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Adding br0 if it doesn't exist ..." 2>&1
            /usr/bin/ovs-vsctl --may-exist add-br br0 -- set Bridge br0 fail_mode=secure protocols=OpenFlow13
            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Created br0, now adding flows ..." 2>&1
            mv /var/run/openvswitch/flows.sh /var/run/openvswitch/flows-old.sh
            sh -x /var/run/openvswitch/flows-old.sh
            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Done restoring the existing flows ..." 2>&1
            rm /var/run/openvswitch/flows-old.sh
          fi

          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Remove other config ..." 2>&1
          ovs-vsctl --no-wait --if-exists remove Open_vSwitch . other_config flow-restore-wait=true
          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Removed other config ..." 2>&1

          tail -F --pid=$(cat /var/run/openvswitch/ovs-vswitchd.pid) /var/log/openvswitch/ovs-vswitchd.log &
          tail -F --pid=$(cat /var/run/openvswitch/ovsdb-server.pid) /var/log/openvswitch/ovsdb-server.log &
          wait
        fi
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      name: openvswitch
      readinessProbe:
        exec:
          command:
          - /bin/bash
          - -c
          - |
            #!/bin/bash
            /usr/bin/ovs-vsctl -t 5 show > /dev/null
        failureThreshold: 3
        initialDelaySeconds: 15
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 6
      resources:
        requests:
          cpu: 100m
          memory: 400Mi
      securityContext:
        privileged: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /lib/modules
        name: host-modules
        readOnly: true
      - mountPath: /run
        name: host-run
      - mountPath: /sys
        name: host-sys
        readOnly: true
      - mountPath: /etc/openvswitch
        name: host-config-openvswitch
      - mountPath: /host
        name: host-slash
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    imagePullSecrets:
    - name: sdn-dockercfg-4w66z
    nodeName: worker-0.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 2000001000
    priorityClassName: system-node-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: sdn
    serviceAccountName: sdn
    terminationGracePeriodSeconds: 30
    tolerations:
    - operator: Exists
    volumes:
    - hostPath:
        path: /lib/modules
        type: ""
      name: host-modules
    - hostPath:
        path: /run
        type: ""
      name: host-run
    - hostPath:
        path: /sys
        type: ""
      name: host-sys
    - hostPath:
        path: /var/lib/openvswitch
        type: DirectoryOrCreate
      name: host-config-openvswitch
    - hostPath:
        path: /
        type: ""
      name: host-slash
    - name: sdn-token-45pnf
      secret:
        defaultMode: 420
        secretName: sdn-token-45pnf
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:46:54Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:36Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:36Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:46:28Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://04d11a0c9cbf9b298503f06d26dd478246f0433a6cdd1ab58fe674e21b1e5c77
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: openvswitch
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:47:17Z"
    hostIP: 10.0.89.30
    phase: Running
    podIP: 10.0.89.30
    podIPs:
    - ip: 10.0.89.30
    qosClass: Burstable
    startTime: "2022-03-08T10:46:54Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:38:11Z"
    generateName: ovs-
    labels:
      app: ovs
      component: network
      controller-revision-hash: 79d97b545c
      openshift.io/component: network
      pod-template-generation: "1"
      type: infra
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:component: {}
            f:controller-revision-hash: {}
            f:openshift.io/component: {}
            f:pod-template-generation: {}
            f:type: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"bb69a0b2-e1b9-40de-be1a-2ef10cd41b70"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"openvswitch"}:
              .: {}
              f:command: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:readinessProbe:
                .: {}
                f:exec:
                  .: {}
                  f:command: {}
                f:failureThreshold: {}
                f:initialDelaySeconds: {}
                f:periodSeconds: {}
                f:successThreshold: {}
                f:timeoutSeconds: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:securityContext:
                .: {}
                f:privileged: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/etc/openvswitch"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/host"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/lib/modules"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/run"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/sys"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:nodeSelector:
            .: {}
            f:kubernetes.io/os: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"host-config-openvswitch"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-modules"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-run"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-slash"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-sys"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:38:11Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.95.76"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:38:37Z"
    name: ovs-cc5d4
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: ovs
      uid: bb69a0b2-e1b9-40de-be1a-2ef10cd41b70
    resourceVersion: "5593"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/ovs-cc5d4
    uid: 77711e3d-72bc-471b-8324-24dfdaa1f338
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - master-1.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail
        export SYSTEMD_IGNORE_CHROOT=yes

        # systemctl cannot be used in a separate PID namespace to reach
        # the systemd running in PID 1. Therefore we need to use the dbus API
        systemctl_restart(){
          gdbus call \
            --system \
            --dest org.freedesktop.systemd1 \
            --object-path /org/freedesktop/systemd1/unit/"$(svc_encode_name ${1})"_2eservice \
            --method org.freedesktop.systemd1.Unit.Restart "replace"
        }
        svc_encode_name(){
          # systemd encodes some characters, so far we only need to encode
          # the character "-" but there may be more in the future.
          echo "${1//-/_2d}"
        }

        # Check to see if ovs is provided by the node:
        if [ -f /host/var/run/ovs-config-executed ]; then
          echo "openvswitch is running in systemd"
          # In some very strange corner cases, the owner for /run/openvswitch
          # can be wrong, so we need to clean up and restart.
          ovs_uid=$(chroot /host id -u openvswitch)
          ovs_gid=$(chroot /host id -g openvswitch)
          chown -R "${ovs_uid}:${ovs_gid}" /run/openvswitch
          if [[ ! -S /run/openvswitch/db.sock ]]; then
            systemctl_restart ovsdb-server
          fi
          # Don't need to worry about restoring flows; this can only change if we've rebooted
          exec tail -F /host/var/log/openvswitch/ovs-vswitchd.log /host/var/log/openvswitch/ovsdb-server.log
        else
          echo "openvswitch is running in container"
          # if another process is listening on the cni-server socket, wait until it exits
          retries=0
          while true; do
            if /usr/share/openvswitch/scripts/ovs-ctl status &>/dev/null; then
              echo "warning: Another process is currently managing OVS, waiting 15s ..." 2>&1
              sleep 15 & wait
              (( retries += 1 ))
            else
              break
            fi
            if [[ "${retries}" -gt 40 ]]; then
              echo "error: Another process is currently managing OVS, exiting" 2>&1
              exit 1
            fi
          done

          function quit {
              # Save the flows
              echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Saving flows ..." 2>&1
              bridges=$(ovs-vsctl -- --real list-br)
              TMPDIR=/var/run/openvswitch /usr/share/openvswitch/scripts/ovs-save save-flows $bridges > /var/run/openvswitch/flows.sh
              echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Saved flows" 2>&1

              # Don't allow ovs-vswitchd to clear datapath flows on exit
              kill -9 $(cat /var/run/openvswitch/ovs-vswitchd.pid 2>/dev/null) 2>/dev/null || true
              kill $(cat /var/run/openvswitch/ovsdb-server.pid 2>/dev/null) 2>/dev/null || true
              exit 0
          }
          trap quit SIGTERM

          function deletePid {
              rm /var/run/openvswitch/ovs-vswitchd.pid
              rm /var/run/openvswitch/ovsdb-server.pid
          }
          trap deletePid EXIT

          chown -R openvswitch:openvswitch /var/run/openvswitch
          chown -R openvswitch:openvswitch /etc/openvswitch

          # launch OVS
          # Start the ovsdb so that we can prep it before we start the ovs-vswitchd
          /usr/share/openvswitch/scripts/ovs-ctl start --ovs-user=openvswitch:openvswitch --no-ovs-vswitchd --system-id=random --no-monitor

          # Set the flow-restore-wait to true so ovs-vswitchd will wait till flows are restored
          ovs-vsctl --no-wait set Open_vSwitch . other_config:flow-restore-wait=true

          # Restrict the number of pthreads ovs-vswitchd creates to reduce the
          # amount of RSS it uses on hosts with many cores
          # https://bugzilla.redhat.com/show_bug.cgi?id=1571379
          # https://bugzilla.redhat.com/show_bug.cgi?id=1572797
          if [[ `nproc` -gt 12 ]]; then
              ovs-vsctl --no-wait set Open_vSwitch . other_config:n-revalidator-threads=4
              ovs-vsctl --no-wait set Open_vSwitch . other_config:n-handler-threads=10
          fi

          # And finally start the ovs-vswitchd now the DB is prepped
          /usr/share/openvswitch/scripts/ovs-ctl start --ovs-user=openvswitch:openvswitch --no-ovsdb-server --system-id=random --no-monitor

          # Load any flows that we saved
          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Loading previous flows ..." 2>&1
          if [[ -f /var/run/openvswitch/flows.sh ]]; then

            # There's a bug in the ovs-save script which causes flows.sh to specify
            # OpenFlow14, replace that to OpenFlow13 which is the only version we support.
            sed -i 's/OpenFlow[0-9][0-9]/OpenFlow13/g' /var/run/openvswitch/flows.sh

            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Adding br0 if it doesn't exist ..." 2>&1
            /usr/bin/ovs-vsctl --may-exist add-br br0 -- set Bridge br0 fail_mode=secure protocols=OpenFlow13
            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Created br0, now adding flows ..." 2>&1
            mv /var/run/openvswitch/flows.sh /var/run/openvswitch/flows-old.sh
            sh -x /var/run/openvswitch/flows-old.sh
            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Done restoring the existing flows ..." 2>&1
            rm /var/run/openvswitch/flows-old.sh
          fi

          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Remove other config ..." 2>&1
          ovs-vsctl --no-wait --if-exists remove Open_vSwitch . other_config flow-restore-wait=true
          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Removed other config ..." 2>&1

          tail -F --pid=$(cat /var/run/openvswitch/ovs-vswitchd.pid) /var/log/openvswitch/ovs-vswitchd.log &
          tail -F --pid=$(cat /var/run/openvswitch/ovsdb-server.pid) /var/log/openvswitch/ovsdb-server.log &
          wait
        fi
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      name: openvswitch
      readinessProbe:
        exec:
          command:
          - /bin/bash
          - -c
          - |
            #!/bin/bash
            /usr/bin/ovs-vsctl -t 5 show > /dev/null
        failureThreshold: 3
        initialDelaySeconds: 15
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 6
      resources:
        requests:
          cpu: 100m
          memory: 400Mi
      securityContext:
        privileged: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /lib/modules
        name: host-modules
        readOnly: true
      - mountPath: /run
        name: host-run
      - mountPath: /sys
        name: host-sys
        readOnly: true
      - mountPath: /etc/openvswitch
        name: host-config-openvswitch
      - mountPath: /host
        name: host-slash
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    nodeName: master-1.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 2000001000
    priorityClassName: system-node-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: sdn
    serviceAccountName: sdn
    terminationGracePeriodSeconds: 30
    tolerations:
    - operator: Exists
    volumes:
    - hostPath:
        path: /lib/modules
        type: ""
      name: host-modules
    - hostPath:
        path: /run
        type: ""
      name: host-run
    - hostPath:
        path: /sys
        type: ""
      name: host-sys
    - hostPath:
        path: /var/lib/openvswitch
        type: DirectoryOrCreate
      name: host-config-openvswitch
    - hostPath:
        path: /
        type: ""
      name: host-slash
    - name: sdn-token-45pnf
      secret:
        defaultMode: 420
        secretName: sdn-token-45pnf
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:11Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:37Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:37Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:11Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://0a530c08fe7a7bfa3e69c7403d41c4f8c522fe9e89f9eabb4fb38fc985b7e7b7
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: openvswitch
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:38:21Z"
    hostIP: 10.0.95.76
    phase: Running
    podIP: 10.0.95.76
    podIPs:
    - ip: 10.0.95.76
    qosClass: Burstable
    startTime: "2022-03-08T10:38:11Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:38:15Z"
    generateName: ovs-
    labels:
      app: ovs
      component: network
      controller-revision-hash: 79d97b545c
      openshift.io/component: network
      pod-template-generation: "1"
      type: infra
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:component: {}
            f:controller-revision-hash: {}
            f:openshift.io/component: {}
            f:pod-template-generation: {}
            f:type: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"bb69a0b2-e1b9-40de-be1a-2ef10cd41b70"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"openvswitch"}:
              .: {}
              f:command: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:readinessProbe:
                .: {}
                f:exec:
                  .: {}
                  f:command: {}
                f:failureThreshold: {}
                f:initialDelaySeconds: {}
                f:periodSeconds: {}
                f:successThreshold: {}
                f:timeoutSeconds: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:securityContext:
                .: {}
                f:privileged: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/etc/openvswitch"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/host"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/lib/modules"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/run"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/sys"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:nodeSelector:
            .: {}
            f:kubernetes.io/os: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"host-config-openvswitch"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-modules"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-run"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-slash"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-sys"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:38:15Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.94.219"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:38:47Z"
    name: ovs-d5br9
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: ovs
      uid: bb69a0b2-e1b9-40de-be1a-2ef10cd41b70
    resourceVersion: "6036"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/ovs-d5br9
    uid: ab6c5f2b-d0bc-4bff-86f2-2f445838035d
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - master-2.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail
        export SYSTEMD_IGNORE_CHROOT=yes

        # systemctl cannot be used in a separate PID namespace to reach
        # the systemd running in PID 1. Therefore we need to use the dbus API
        systemctl_restart(){
          gdbus call \
            --system \
            --dest org.freedesktop.systemd1 \
            --object-path /org/freedesktop/systemd1/unit/"$(svc_encode_name ${1})"_2eservice \
            --method org.freedesktop.systemd1.Unit.Restart "replace"
        }
        svc_encode_name(){
          # systemd encodes some characters, so far we only need to encode
          # the character "-" but there may be more in the future.
          echo "${1//-/_2d}"
        }

        # Check to see if ovs is provided by the node:
        if [ -f /host/var/run/ovs-config-executed ]; then
          echo "openvswitch is running in systemd"
          # In some very strange corner cases, the owner for /run/openvswitch
          # can be wrong, so we need to clean up and restart.
          ovs_uid=$(chroot /host id -u openvswitch)
          ovs_gid=$(chroot /host id -g openvswitch)
          chown -R "${ovs_uid}:${ovs_gid}" /run/openvswitch
          if [[ ! -S /run/openvswitch/db.sock ]]; then
            systemctl_restart ovsdb-server
          fi
          # Don't need to worry about restoring flows; this can only change if we've rebooted
          exec tail -F /host/var/log/openvswitch/ovs-vswitchd.log /host/var/log/openvswitch/ovsdb-server.log
        else
          echo "openvswitch is running in container"
          # if another process is listening on the cni-server socket, wait until it exits
          retries=0
          while true; do
            if /usr/share/openvswitch/scripts/ovs-ctl status &>/dev/null; then
              echo "warning: Another process is currently managing OVS, waiting 15s ..." 2>&1
              sleep 15 & wait
              (( retries += 1 ))
            else
              break
            fi
            if [[ "${retries}" -gt 40 ]]; then
              echo "error: Another process is currently managing OVS, exiting" 2>&1
              exit 1
            fi
          done

          function quit {
              # Save the flows
              echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Saving flows ..." 2>&1
              bridges=$(ovs-vsctl -- --real list-br)
              TMPDIR=/var/run/openvswitch /usr/share/openvswitch/scripts/ovs-save save-flows $bridges > /var/run/openvswitch/flows.sh
              echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Saved flows" 2>&1

              # Don't allow ovs-vswitchd to clear datapath flows on exit
              kill -9 $(cat /var/run/openvswitch/ovs-vswitchd.pid 2>/dev/null) 2>/dev/null || true
              kill $(cat /var/run/openvswitch/ovsdb-server.pid 2>/dev/null) 2>/dev/null || true
              exit 0
          }
          trap quit SIGTERM

          function deletePid {
              rm /var/run/openvswitch/ovs-vswitchd.pid
              rm /var/run/openvswitch/ovsdb-server.pid
          }
          trap deletePid EXIT

          chown -R openvswitch:openvswitch /var/run/openvswitch
          chown -R openvswitch:openvswitch /etc/openvswitch

          # launch OVS
          # Start the ovsdb so that we can prep it before we start the ovs-vswitchd
          /usr/share/openvswitch/scripts/ovs-ctl start --ovs-user=openvswitch:openvswitch --no-ovs-vswitchd --system-id=random --no-monitor

          # Set the flow-restore-wait to true so ovs-vswitchd will wait till flows are restored
          ovs-vsctl --no-wait set Open_vSwitch . other_config:flow-restore-wait=true

          # Restrict the number of pthreads ovs-vswitchd creates to reduce the
          # amount of RSS it uses on hosts with many cores
          # https://bugzilla.redhat.com/show_bug.cgi?id=1571379
          # https://bugzilla.redhat.com/show_bug.cgi?id=1572797
          if [[ `nproc` -gt 12 ]]; then
              ovs-vsctl --no-wait set Open_vSwitch . other_config:n-revalidator-threads=4
              ovs-vsctl --no-wait set Open_vSwitch . other_config:n-handler-threads=10
          fi

          # And finally start the ovs-vswitchd now the DB is prepped
          /usr/share/openvswitch/scripts/ovs-ctl start --ovs-user=openvswitch:openvswitch --no-ovsdb-server --system-id=random --no-monitor

          # Load any flows that we saved
          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Loading previous flows ..." 2>&1
          if [[ -f /var/run/openvswitch/flows.sh ]]; then

            # There's a bug in the ovs-save script which causes flows.sh to specify
            # OpenFlow14, replace that to OpenFlow13 which is the only version we support.
            sed -i 's/OpenFlow[0-9][0-9]/OpenFlow13/g' /var/run/openvswitch/flows.sh

            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Adding br0 if it doesn't exist ..." 2>&1
            /usr/bin/ovs-vsctl --may-exist add-br br0 -- set Bridge br0 fail_mode=secure protocols=OpenFlow13
            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Created br0, now adding flows ..." 2>&1
            mv /var/run/openvswitch/flows.sh /var/run/openvswitch/flows-old.sh
            sh -x /var/run/openvswitch/flows-old.sh
            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Done restoring the existing flows ..." 2>&1
            rm /var/run/openvswitch/flows-old.sh
          fi

          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Remove other config ..." 2>&1
          ovs-vsctl --no-wait --if-exists remove Open_vSwitch . other_config flow-restore-wait=true
          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Removed other config ..." 2>&1

          tail -F --pid=$(cat /var/run/openvswitch/ovs-vswitchd.pid) /var/log/openvswitch/ovs-vswitchd.log &
          tail -F --pid=$(cat /var/run/openvswitch/ovsdb-server.pid) /var/log/openvswitch/ovsdb-server.log &
          wait
        fi
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      name: openvswitch
      readinessProbe:
        exec:
          command:
          - /bin/bash
          - -c
          - |
            #!/bin/bash
            /usr/bin/ovs-vsctl -t 5 show > /dev/null
        failureThreshold: 3
        initialDelaySeconds: 15
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 6
      resources:
        requests:
          cpu: 100m
          memory: 400Mi
      securityContext:
        privileged: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /lib/modules
        name: host-modules
        readOnly: true
      - mountPath: /run
        name: host-run
      - mountPath: /sys
        name: host-sys
        readOnly: true
      - mountPath: /etc/openvswitch
        name: host-config-openvswitch
      - mountPath: /host
        name: host-slash
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    nodeName: master-2.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 2000001000
    priorityClassName: system-node-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: sdn
    serviceAccountName: sdn
    terminationGracePeriodSeconds: 30
    tolerations:
    - operator: Exists
    volumes:
    - hostPath:
        path: /lib/modules
        type: ""
      name: host-modules
    - hostPath:
        path: /run
        type: ""
      name: host-run
    - hostPath:
        path: /sys
        type: ""
      name: host-sys
    - hostPath:
        path: /var/lib/openvswitch
        type: DirectoryOrCreate
      name: host-config-openvswitch
    - hostPath:
        path: /
        type: ""
      name: host-slash
    - name: sdn-token-45pnf
      secret:
        defaultMode: 420
        secretName: sdn-token-45pnf
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:17Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:47Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:47Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:15Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://520b127d592775f9123734a94077f51d632eb6e2f37b51de82d135aa118bd79a
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: openvswitch
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:38:28Z"
    hostIP: 10.0.94.219
    phase: Running
    podIP: 10.0.94.219
    podIPs:
    - ip: 10.0.94.219
    qosClass: Burstable
    startTime: "2022-03-08T10:38:17Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:46:29Z"
    generateName: ovs-
    labels:
      app: ovs
      component: network
      controller-revision-hash: 79d97b545c
      openshift.io/component: network
      pod-template-generation: "1"
      type: infra
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:component: {}
            f:controller-revision-hash: {}
            f:openshift.io/component: {}
            f:pod-template-generation: {}
            f:type: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"bb69a0b2-e1b9-40de-be1a-2ef10cd41b70"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"openvswitch"}:
              .: {}
              f:command: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:readinessProbe:
                .: {}
                f:exec:
                  .: {}
                  f:command: {}
                f:failureThreshold: {}
                f:initialDelaySeconds: {}
                f:periodSeconds: {}
                f:successThreshold: {}
                f:timeoutSeconds: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:securityContext:
                .: {}
                f:privileged: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/etc/openvswitch"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/host"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/lib/modules"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/run"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/sys"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:nodeSelector:
            .: {}
            f:kubernetes.io/os: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"host-config-openvswitch"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-modules"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-run"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-slash"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-sys"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:46:29Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.90.58"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:47:50Z"
    name: ovs-dpkmc
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: ovs
      uid: bb69a0b2-e1b9-40de-be1a-2ef10cd41b70
    resourceVersion: "20803"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/ovs-dpkmc
    uid: 6488fffd-ec28-411e-87b1-442958e1f39f
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - worker-1.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail
        export SYSTEMD_IGNORE_CHROOT=yes

        # systemctl cannot be used in a separate PID namespace to reach
        # the systemd running in PID 1. Therefore we need to use the dbus API
        systemctl_restart(){
          gdbus call \
            --system \
            --dest org.freedesktop.systemd1 \
            --object-path /org/freedesktop/systemd1/unit/"$(svc_encode_name ${1})"_2eservice \
            --method org.freedesktop.systemd1.Unit.Restart "replace"
        }
        svc_encode_name(){
          # systemd encodes some characters, so far we only need to encode
          # the character "-" but there may be more in the future.
          echo "${1//-/_2d}"
        }

        # Check to see if ovs is provided by the node:
        if [ -f /host/var/run/ovs-config-executed ]; then
          echo "openvswitch is running in systemd"
          # In some very strange corner cases, the owner for /run/openvswitch
          # can be wrong, so we need to clean up and restart.
          ovs_uid=$(chroot /host id -u openvswitch)
          ovs_gid=$(chroot /host id -g openvswitch)
          chown -R "${ovs_uid}:${ovs_gid}" /run/openvswitch
          if [[ ! -S /run/openvswitch/db.sock ]]; then
            systemctl_restart ovsdb-server
          fi
          # Don't need to worry about restoring flows; this can only change if we've rebooted
          exec tail -F /host/var/log/openvswitch/ovs-vswitchd.log /host/var/log/openvswitch/ovsdb-server.log
        else
          echo "openvswitch is running in container"
          # if another process is listening on the cni-server socket, wait until it exits
          retries=0
          while true; do
            if /usr/share/openvswitch/scripts/ovs-ctl status &>/dev/null; then
              echo "warning: Another process is currently managing OVS, waiting 15s ..." 2>&1
              sleep 15 & wait
              (( retries += 1 ))
            else
              break
            fi
            if [[ "${retries}" -gt 40 ]]; then
              echo "error: Another process is currently managing OVS, exiting" 2>&1
              exit 1
            fi
          done

          function quit {
              # Save the flows
              echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Saving flows ..." 2>&1
              bridges=$(ovs-vsctl -- --real list-br)
              TMPDIR=/var/run/openvswitch /usr/share/openvswitch/scripts/ovs-save save-flows $bridges > /var/run/openvswitch/flows.sh
              echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Saved flows" 2>&1

              # Don't allow ovs-vswitchd to clear datapath flows on exit
              kill -9 $(cat /var/run/openvswitch/ovs-vswitchd.pid 2>/dev/null) 2>/dev/null || true
              kill $(cat /var/run/openvswitch/ovsdb-server.pid 2>/dev/null) 2>/dev/null || true
              exit 0
          }
          trap quit SIGTERM

          function deletePid {
              rm /var/run/openvswitch/ovs-vswitchd.pid
              rm /var/run/openvswitch/ovsdb-server.pid
          }
          trap deletePid EXIT

          chown -R openvswitch:openvswitch /var/run/openvswitch
          chown -R openvswitch:openvswitch /etc/openvswitch

          # launch OVS
          # Start the ovsdb so that we can prep it before we start the ovs-vswitchd
          /usr/share/openvswitch/scripts/ovs-ctl start --ovs-user=openvswitch:openvswitch --no-ovs-vswitchd --system-id=random --no-monitor

          # Set the flow-restore-wait to true so ovs-vswitchd will wait till flows are restored
          ovs-vsctl --no-wait set Open_vSwitch . other_config:flow-restore-wait=true

          # Restrict the number of pthreads ovs-vswitchd creates to reduce the
          # amount of RSS it uses on hosts with many cores
          # https://bugzilla.redhat.com/show_bug.cgi?id=1571379
          # https://bugzilla.redhat.com/show_bug.cgi?id=1572797
          if [[ `nproc` -gt 12 ]]; then
              ovs-vsctl --no-wait set Open_vSwitch . other_config:n-revalidator-threads=4
              ovs-vsctl --no-wait set Open_vSwitch . other_config:n-handler-threads=10
          fi

          # And finally start the ovs-vswitchd now the DB is prepped
          /usr/share/openvswitch/scripts/ovs-ctl start --ovs-user=openvswitch:openvswitch --no-ovsdb-server --system-id=random --no-monitor

          # Load any flows that we saved
          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Loading previous flows ..." 2>&1
          if [[ -f /var/run/openvswitch/flows.sh ]]; then

            # There's a bug in the ovs-save script which causes flows.sh to specify
            # OpenFlow14, replace that to OpenFlow13 which is the only version we support.
            sed -i 's/OpenFlow[0-9][0-9]/OpenFlow13/g' /var/run/openvswitch/flows.sh

            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Adding br0 if it doesn't exist ..." 2>&1
            /usr/bin/ovs-vsctl --may-exist add-br br0 -- set Bridge br0 fail_mode=secure protocols=OpenFlow13
            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Created br0, now adding flows ..." 2>&1
            mv /var/run/openvswitch/flows.sh /var/run/openvswitch/flows-old.sh
            sh -x /var/run/openvswitch/flows-old.sh
            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Done restoring the existing flows ..." 2>&1
            rm /var/run/openvswitch/flows-old.sh
          fi

          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Remove other config ..." 2>&1
          ovs-vsctl --no-wait --if-exists remove Open_vSwitch . other_config flow-restore-wait=true
          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Removed other config ..." 2>&1

          tail -F --pid=$(cat /var/run/openvswitch/ovs-vswitchd.pid) /var/log/openvswitch/ovs-vswitchd.log &
          tail -F --pid=$(cat /var/run/openvswitch/ovsdb-server.pid) /var/log/openvswitch/ovsdb-server.log &
          wait
        fi
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      name: openvswitch
      readinessProbe:
        exec:
          command:
          - /bin/bash
          - -c
          - |
            #!/bin/bash
            /usr/bin/ovs-vsctl -t 5 show > /dev/null
        failureThreshold: 3
        initialDelaySeconds: 15
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 6
      resources:
        requests:
          cpu: 100m
          memory: 400Mi
      securityContext:
        privileged: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /lib/modules
        name: host-modules
        readOnly: true
      - mountPath: /run
        name: host-run
      - mountPath: /sys
        name: host-sys
        readOnly: true
      - mountPath: /etc/openvswitch
        name: host-config-openvswitch
      - mountPath: /host
        name: host-slash
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    imagePullSecrets:
    - name: sdn-dockercfg-4w66z
    nodeName: worker-1.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 2000001000
    priorityClassName: system-node-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: sdn
    serviceAccountName: sdn
    terminationGracePeriodSeconds: 30
    tolerations:
    - operator: Exists
    volumes:
    - hostPath:
        path: /lib/modules
        type: ""
      name: host-modules
    - hostPath:
        path: /run
        type: ""
      name: host-run
    - hostPath:
        path: /sys
        type: ""
      name: host-sys
    - hostPath:
        path: /var/lib/openvswitch
        type: DirectoryOrCreate
      name: host-config-openvswitch
    - hostPath:
        path: /
        type: ""
      name: host-slash
    - name: sdn-token-45pnf
      secret:
        defaultMode: 420
        secretName: sdn-token-45pnf
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:23Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:50Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:50Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:46:29Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://d80cd76c47ec4de7fc99b22773c9bbc933080f743fae2818c6efe7951c364805
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: openvswitch
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:47:34Z"
    hostIP: 10.0.90.58
    phase: Running
    podIP: 10.0.90.58
    podIPs:
    - ip: 10.0.90.58
    qosClass: Burstable
    startTime: "2022-03-08T10:47:23Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:38:11Z"
    generateName: ovs-
    labels:
      app: ovs
      component: network
      controller-revision-hash: 79d97b545c
      openshift.io/component: network
      pod-template-generation: "1"
      type: infra
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:component: {}
            f:controller-revision-hash: {}
            f:openshift.io/component: {}
            f:pod-template-generation: {}
            f:type: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"bb69a0b2-e1b9-40de-be1a-2ef10cd41b70"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"openvswitch"}:
              .: {}
              f:command: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:readinessProbe:
                .: {}
                f:exec:
                  .: {}
                  f:command: {}
                f:failureThreshold: {}
                f:initialDelaySeconds: {}
                f:periodSeconds: {}
                f:successThreshold: {}
                f:timeoutSeconds: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:securityContext:
                .: {}
                f:privileged: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/etc/openvswitch"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/host"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/lib/modules"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/run"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/sys"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:nodeSelector:
            .: {}
            f:kubernetes.io/os: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"host-config-openvswitch"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-modules"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-run"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-slash"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-sys"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:38:11Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.94.119"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:38:41Z"
    name: ovs-jxg8z
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: ovs
      uid: bb69a0b2-e1b9-40de-be1a-2ef10cd41b70
    resourceVersion: "5705"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/ovs-jxg8z
    uid: 1d257323-d453-4c3b-b0ff-139604528773
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - master-0.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail
        export SYSTEMD_IGNORE_CHROOT=yes

        # systemctl cannot be used in a separate PID namespace to reach
        # the systemd running in PID 1. Therefore we need to use the dbus API
        systemctl_restart(){
          gdbus call \
            --system \
            --dest org.freedesktop.systemd1 \
            --object-path /org/freedesktop/systemd1/unit/"$(svc_encode_name ${1})"_2eservice \
            --method org.freedesktop.systemd1.Unit.Restart "replace"
        }
        svc_encode_name(){
          # systemd encodes some characters, so far we only need to encode
          # the character "-" but there may be more in the future.
          echo "${1//-/_2d}"
        }

        # Check to see if ovs is provided by the node:
        if [ -f /host/var/run/ovs-config-executed ]; then
          echo "openvswitch is running in systemd"
          # In some very strange corner cases, the owner for /run/openvswitch
          # can be wrong, so we need to clean up and restart.
          ovs_uid=$(chroot /host id -u openvswitch)
          ovs_gid=$(chroot /host id -g openvswitch)
          chown -R "${ovs_uid}:${ovs_gid}" /run/openvswitch
          if [[ ! -S /run/openvswitch/db.sock ]]; then
            systemctl_restart ovsdb-server
          fi
          # Don't need to worry about restoring flows; this can only change if we've rebooted
          exec tail -F /host/var/log/openvswitch/ovs-vswitchd.log /host/var/log/openvswitch/ovsdb-server.log
        else
          echo "openvswitch is running in container"
          # if another process is listening on the cni-server socket, wait until it exits
          retries=0
          while true; do
            if /usr/share/openvswitch/scripts/ovs-ctl status &>/dev/null; then
              echo "warning: Another process is currently managing OVS, waiting 15s ..." 2>&1
              sleep 15 & wait
              (( retries += 1 ))
            else
              break
            fi
            if [[ "${retries}" -gt 40 ]]; then
              echo "error: Another process is currently managing OVS, exiting" 2>&1
              exit 1
            fi
          done

          function quit {
              # Save the flows
              echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Saving flows ..." 2>&1
              bridges=$(ovs-vsctl -- --real list-br)
              TMPDIR=/var/run/openvswitch /usr/share/openvswitch/scripts/ovs-save save-flows $bridges > /var/run/openvswitch/flows.sh
              echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Saved flows" 2>&1

              # Don't allow ovs-vswitchd to clear datapath flows on exit
              kill -9 $(cat /var/run/openvswitch/ovs-vswitchd.pid 2>/dev/null) 2>/dev/null || true
              kill $(cat /var/run/openvswitch/ovsdb-server.pid 2>/dev/null) 2>/dev/null || true
              exit 0
          }
          trap quit SIGTERM

          function deletePid {
              rm /var/run/openvswitch/ovs-vswitchd.pid
              rm /var/run/openvswitch/ovsdb-server.pid
          }
          trap deletePid EXIT

          chown -R openvswitch:openvswitch /var/run/openvswitch
          chown -R openvswitch:openvswitch /etc/openvswitch

          # launch OVS
          # Start the ovsdb so that we can prep it before we start the ovs-vswitchd
          /usr/share/openvswitch/scripts/ovs-ctl start --ovs-user=openvswitch:openvswitch --no-ovs-vswitchd --system-id=random --no-monitor

          # Set the flow-restore-wait to true so ovs-vswitchd will wait till flows are restored
          ovs-vsctl --no-wait set Open_vSwitch . other_config:flow-restore-wait=true

          # Restrict the number of pthreads ovs-vswitchd creates to reduce the
          # amount of RSS it uses on hosts with many cores
          # https://bugzilla.redhat.com/show_bug.cgi?id=1571379
          # https://bugzilla.redhat.com/show_bug.cgi?id=1572797
          if [[ `nproc` -gt 12 ]]; then
              ovs-vsctl --no-wait set Open_vSwitch . other_config:n-revalidator-threads=4
              ovs-vsctl --no-wait set Open_vSwitch . other_config:n-handler-threads=10
          fi

          # And finally start the ovs-vswitchd now the DB is prepped
          /usr/share/openvswitch/scripts/ovs-ctl start --ovs-user=openvswitch:openvswitch --no-ovsdb-server --system-id=random --no-monitor

          # Load any flows that we saved
          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Loading previous flows ..." 2>&1
          if [[ -f /var/run/openvswitch/flows.sh ]]; then

            # There's a bug in the ovs-save script which causes flows.sh to specify
            # OpenFlow14, replace that to OpenFlow13 which is the only version we support.
            sed -i 's/OpenFlow[0-9][0-9]/OpenFlow13/g' /var/run/openvswitch/flows.sh

            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Adding br0 if it doesn't exist ..." 2>&1
            /usr/bin/ovs-vsctl --may-exist add-br br0 -- set Bridge br0 fail_mode=secure protocols=OpenFlow13
            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Created br0, now adding flows ..." 2>&1
            mv /var/run/openvswitch/flows.sh /var/run/openvswitch/flows-old.sh
            sh -x /var/run/openvswitch/flows-old.sh
            echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Done restoring the existing flows ..." 2>&1
            rm /var/run/openvswitch/flows-old.sh
          fi

          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Remove other config ..." 2>&1
          ovs-vsctl --no-wait --if-exists remove Open_vSwitch . other_config flow-restore-wait=true
          echo "$(date -u "+%Y-%m-%d %H:%M:%S") info: Removed other config ..." 2>&1

          tail -F --pid=$(cat /var/run/openvswitch/ovs-vswitchd.pid) /var/log/openvswitch/ovs-vswitchd.log &
          tail -F --pid=$(cat /var/run/openvswitch/ovsdb-server.pid) /var/log/openvswitch/ovsdb-server.log &
          wait
        fi
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      name: openvswitch
      readinessProbe:
        exec:
          command:
          - /bin/bash
          - -c
          - |
            #!/bin/bash
            /usr/bin/ovs-vsctl -t 5 show > /dev/null
        failureThreshold: 3
        initialDelaySeconds: 15
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 6
      resources:
        requests:
          cpu: 100m
          memory: 400Mi
      securityContext:
        privileged: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /lib/modules
        name: host-modules
        readOnly: true
      - mountPath: /run
        name: host-run
      - mountPath: /sys
        name: host-sys
        readOnly: true
      - mountPath: /etc/openvswitch
        name: host-config-openvswitch
      - mountPath: /host
        name: host-slash
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    nodeName: master-0.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 2000001000
    priorityClassName: system-node-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: sdn
    serviceAccountName: sdn
    terminationGracePeriodSeconds: 30
    tolerations:
    - operator: Exists
    volumes:
    - hostPath:
        path: /lib/modules
        type: ""
      name: host-modules
    - hostPath:
        path: /run
        type: ""
      name: host-run
    - hostPath:
        path: /sys
        type: ""
      name: host-sys
    - hostPath:
        path: /var/lib/openvswitch
        type: DirectoryOrCreate
      name: host-config-openvswitch
    - hostPath:
        path: /
        type: ""
      name: host-slash
    - name: sdn-token-45pnf
      secret:
        defaultMode: 420
        secretName: sdn-token-45pnf
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:11Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:41Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:41Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:11Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://d82691ddf15db969d02cb07bd6dc4e6790d9fe15f671d5f517d386aff854a718
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: openvswitch
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:38:21Z"
    hostIP: 10.0.94.119
    phase: Running
    podIP: 10.0.94.119
    podIPs:
    - ip: 10.0.94.119
    qosClass: Burstable
    startTime: "2022-03-08T10:38:11Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:46:28Z"
    generateName: sdn-
    labels:
      app: sdn
      component: network
      controller-revision-hash: 7c6586c5cb
      openshift.io/component: network
      pod-template-generation: "1"
      type: infra
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:component: {}
            f:controller-revision-hash: {}
            f:openshift.io/component: {}
            f:pod-template-generation: {}
            f:type: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"b00eb0b3-e2b2-46b1-b233-ccd1a93462cd"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"kube-rbac-proxy"}:
              .: {}
              f:command: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:ports:
                .: {}
                k:{"containerPort":9101,"protocol":"TCP"}:
                  .: {}
                  f:containerPort: {}
                  f:hostPort: {}
                  f:name: {}
                  f:protocol: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/etc/pki/tls/metrics-certs"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
            k:{"name":"sdn"}:
              .: {}
              f:command: {}
              f:env:
                .: {}
                k:{"name":"K8S_NODE_IP"}:
                  .: {}
                  f:name: {}
                  f:valueFrom:
                    .: {}
                    f:fieldRef:
                      .: {}
                      f:apiVersion: {}
                      f:fieldPath: {}
                k:{"name":"K8S_NODE_NAME"}:
                  .: {}
                  f:name: {}
                  f:valueFrom:
                    .: {}
                    f:fieldRef:
                      .: {}
                      f:apiVersion: {}
                      f:fieldPath: {}
                k:{"name":"KUBERNETES_SERVICE_HOST"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"KUBERNETES_SERVICE_PORT"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"OPENSHIFT_DNS_DOMAIN"}:
                  .: {}
                  f:name: {}
                  f:value: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:lifecycle:
                .: {}
                f:preStop:
                  .: {}
                  f:exec:
                    .: {}
                    f:command: {}
              f:name: {}
              f:ports:
                .: {}
                k:{"containerPort":10256,"protocol":"TCP"}:
                  .: {}
                  f:containerPort: {}
                  f:hostPort: {}
                  f:name: {}
                  f:protocol: {}
              f:readinessProbe:
                .: {}
                f:exec:
                  .: {}
                  f:command: {}
                f:failureThreshold: {}
                f:initialDelaySeconds: {}
                f:periodSeconds: {}
                f:successThreshold: {}
                f:timeoutSeconds: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:securityContext:
                .: {}
                f:privileged: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/config"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/env"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/etc/cni/net.d"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/etc/sysconfig"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/host"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/host/opt/cni/bin"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/host/var/run/netns"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/lib/modules"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/run/netns"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/lib/cni/networks/openshift-sdn"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run/dbus/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/run/kubernetes/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/run/openshift-sdn"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run/openvswitch/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:hostPID: {}
          f:nodeSelector:
            .: {}
            f:kubernetes.io/os: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"config"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
              f:name: {}
            k:{"name":"env-overrides"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
                f:optional: {}
              f:name: {}
            k:{"name":"etc-sysconfig"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-cni-bin"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-cni-conf"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-modules"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-run-netns"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-slash"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-lib-cni-networks-openshift-sdn"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-dbus"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-kubernetes"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-netns"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-openshift-sdn"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-ovs"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"sdn-metrics-certs"}:
              .: {}
              f:name: {}
              f:secret:
                .: {}
                f:defaultMode: {}
                f:optional: {}
                f:secretName: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:46:28Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.89.30"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:47:23Z"
    name: sdn-2ff5l
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: sdn
      uid: b00eb0b3-e2b2-46b1-b233-ccd1a93462cd
    resourceVersion: "19716"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/sdn-2ff5l
    uid: 0c45b94e-1cc2-452d-a057-2be66d91970b
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - worker-0.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail

        # if another process is listening on the cni-server socket, wait until it exits
        trap 'kill $(jobs -p); rm -f /etc/cni/net.d/80-openshift-network.conf ; exit 0' TERM
        retries=0
        while true; do
          if echo 'test' | socat - UNIX-CONNECT:/var/run/openshift-sdn/cniserver/socket &>/dev/null; then
            echo "warning: Another process is currently listening on the CNI socket, waiting 15s ..." 2>&1
            sleep 15 & wait
            (( retries += 1 ))
          else
            break
          fi
          if [[ "${retries}" -gt 40 ]]; then
            echo "error: Another process is currently listening on the CNI socket, exiting" 2>&1
            exit 1
          fi
        done

        # local environment overrides
        if [[ -f /etc/sysconfig/openshift-sdn ]]; then
          set -o allexport
          source /etc/sysconfig/openshift-sdn
          set +o allexport
        fi
        #BUG: cdc accidentally mounted /etc/sysconfig/openshift-sdn as DirectoryOrCreate; clean it up so we can ultimately mount /etc/sysconfig/openshift-sdn as FileOrCreate
        # Once this is released, then we can mount it properly
        if [[ -d /etc/sysconfig/openshift-sdn ]]; then
          rmdir /etc/sysconfig/openshift-sdn || true
        fi

        # configmap-based overrides
        if [[ -f /env/${K8S_NODE_NAME} ]]; then
          set -o allexport
          source /env/${K8S_NODE_NAME}
          set +o allexport
        fi

        # Take over network functions on the node
        rm -f /etc/cni/net.d/80-openshift-network.conf
        cp -f /opt/cni/bin/openshift-sdn /host/opt/cni/bin/

        # Launch the network process
        exec /usr/bin/openshift-sdn-node \
          --node-name ${K8S_NODE_NAME} --node-ip ${K8S_NODE_IP} \
          --proxy-config /config/kube-proxy-config.yaml \
          --v ${OPENSHIFT_SDN_LOG_LEVEL:-2}
      env:
      - name: KUBERNETES_SERVICE_PORT
        value: "6443"
      - name: KUBERNETES_SERVICE_HOST
        value: api-int.case03116926.lab.upshift.rdu2.redhat.com
      - name: OPENSHIFT_DNS_DOMAIN
        value: cluster.local
      - name: K8S_NODE_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: spec.nodeName
      - name: K8S_NODE_IP
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: status.hostIP
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      lifecycle:
        preStop:
          exec:
            command:
            - rm
            - -f
            - /etc/cni/net.d/80-openshift-network.conf
            - /host/opt/cni/bin/openshift-sdn
      name: sdn
      ports:
      - containerPort: 10256
        hostPort: 10256
        name: healthz
        protocol: TCP
      readinessProbe:
        exec:
          command:
          - test
          - -f
          - /etc/cni/net.d/80-openshift-network.conf
        failureThreshold: 3
        initialDelaySeconds: 5
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 1
      resources:
        requests:
          cpu: 100m
          memory: 200Mi
      securityContext:
        privileged: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /config
        name: config
        readOnly: true
      - mountPath: /env
        name: env-overrides
      - mountPath: /var/run
        name: host-var-run
      - mountPath: /var/run/dbus/
        name: host-var-run-dbus
        readOnly: true
      - mountPath: /var/run/openvswitch/
        name: host-var-run-ovs
        readOnly: true
      - mountPath: /var/run/kubernetes/
        name: host-var-run-kubernetes
        readOnly: true
      - mountPath: /run/netns
        mountPropagation: HostToContainer
        name: host-run-netns
        readOnly: true
      - mountPath: /host/var/run/netns
        mountPropagation: HostToContainer
        name: host-var-run-netns
        readOnly: true
      - mountPath: /var/run/openshift-sdn
        name: host-var-run-openshift-sdn
      - mountPath: /host
        mountPropagation: HostToContainer
        name: host-slash
        readOnly: true
      - mountPath: /host/opt/cni/bin
        name: host-cni-bin
      - mountPath: /etc/cni/net.d
        name: host-cni-conf
      - mountPath: /var/lib/cni/networks/openshift-sdn
        name: host-var-lib-cni-networks-openshift-sdn
      - mountPath: /lib/modules
        name: host-modules
        readOnly: true
      - mountPath: /etc/sysconfig
        name: etc-sysconfig
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail
        TLS_PK=/etc/pki/tls/metrics-certs/tls.key
        TLS_CERT=/etc/pki/tls/metrics-certs/tls.crt

        # As the secret mount is optional we must wait for the files to be present.
        # The service is created in monitor.yaml and this is created in sdn.yaml.
        # If it isn't created there is probably an issue so we want to crashloop.
        TS=$(date +%s)
        WARN_TS=$(( ${TS} + $(( 20 * 60)) ))
        HAS_LOGGED_INFO=0

        log_missing_certs(){
            CUR_TS=$(date +%s)
            if [[ "${CUR_TS}" -gt "WARN_TS"  ]]; then
              echo $(date -Iseconds) WARN: sdn-metrics-certs not mounted after 20 minutes.
            elif [[ "${HAS_LOGGED_INFO}" -eq 0 ]] ; then
              echo $(date -Iseconds) INFO: sdn-metrics-certs not mounted. Waiting 20 minutes.
              HAS_LOGGED_INFO=1
            fi
        }

        while [[ ! -f "${TLS_PK}" ||  ! -f "${TLS_CERT}" ]] ; do
          log_missing_certs
          sleep 5
        done

        echo $(date -Iseconds) INFO: sdn-metrics-certs mounted, starting kube-rbac-proxy
        exec /usr/bin/kube-rbac-proxy \
          --logtostderr \
          --secure-listen-address=:9101 \
          --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 \
          --upstream=http://127.0.0.1:29101/ \
          --tls-private-key-file=${TLS_PK} \
          --tls-cert-file=${TLS_CERT}
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      imagePullPolicy: IfNotPresent
      name: kube-rbac-proxy
      ports:
      - containerPort: 9101
        hostPort: 9101
        name: https
        protocol: TCP
      resources:
        requests:
          cpu: 10m
          memory: 20Mi
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /etc/pki/tls/metrics-certs
        name: sdn-metrics-certs
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    hostPID: true
    imagePullSecrets:
    - name: sdn-dockercfg-4w66z
    nodeName: worker-0.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 2000001000
    priorityClassName: system-node-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: sdn
    serviceAccountName: sdn
    terminationGracePeriodSeconds: 30
    tolerations:
    - operator: Exists
    volumes:
    - configMap:
        defaultMode: 420
        name: sdn-config
      name: config
    - configMap:
        defaultMode: 420
        name: env-overrides
        optional: true
      name: env-overrides
    - hostPath:
        path: /etc/sysconfig
        type: ""
      name: etc-sysconfig
    - hostPath:
        path: /lib/modules
        type: ""
      name: host-modules
    - hostPath:
        path: /var/run
        type: ""
      name: host-var-run
    - hostPath:
        path: /run/netns
        type: ""
      name: host-run-netns
    - hostPath:
        path: /var/run/netns
        type: ""
      name: host-var-run-netns
    - hostPath:
        path: /var/run/dbus
        type: ""
      name: host-var-run-dbus
    - hostPath:
        path: /var/run/openvswitch
        type: ""
      name: host-var-run-ovs
    - hostPath:
        path: /var/run/kubernetes
        type: ""
      name: host-var-run-kubernetes
    - hostPath:
        path: /var/run/openshift-sdn
        type: ""
      name: host-var-run-openshift-sdn
    - hostPath:
        path: /
        type: ""
      name: host-slash
    - hostPath:
        path: /var/lib/cni/bin
        type: ""
      name: host-cni-bin
    - hostPath:
        path: /var/run/multus/cni/net.d
        type: ""
      name: host-cni-conf
    - hostPath:
        path: /var/lib/cni/networks/openshift-sdn
        type: ""
      name: host-var-lib-cni-networks-openshift-sdn
    - name: sdn-metrics-certs
      secret:
        defaultMode: 420
        optional: true
        secretName: sdn-metrics-certs
    - name: sdn-token-45pnf
      secret:
        defaultMode: 420
        secretName: sdn-token-45pnf
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:46:54Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:23Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:23Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:46:28Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://a90a5169f6b6fa34dbdf87915e586b3e8ccf9e1f1d62a78729791da72653bbb5
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      lastState: {}
      name: kube-rbac-proxy
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:47:18Z"
    - containerID: cri-o://b83d88321e04388bffa21ea9a3ab4ad488f96b315e724615f413ddcc8c200cfa
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: sdn
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:47:18Z"
    hostIP: 10.0.89.30
    phase: Running
    podIP: 10.0.89.30
    podIPs:
    - ip: 10.0.89.30
    qosClass: Burstable
    startTime: "2022-03-08T10:46:54Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:46:29Z"
    generateName: sdn-
    labels:
      app: sdn
      component: network
      controller-revision-hash: 7c6586c5cb
      openshift.io/component: network
      pod-template-generation: "1"
      type: infra
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:component: {}
            f:controller-revision-hash: {}
            f:openshift.io/component: {}
            f:pod-template-generation: {}
            f:type: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"b00eb0b3-e2b2-46b1-b233-ccd1a93462cd"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"kube-rbac-proxy"}:
              .: {}
              f:command: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:ports:
                .: {}
                k:{"containerPort":9101,"protocol":"TCP"}:
                  .: {}
                  f:containerPort: {}
                  f:hostPort: {}
                  f:name: {}
                  f:protocol: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/etc/pki/tls/metrics-certs"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
            k:{"name":"sdn"}:
              .: {}
              f:command: {}
              f:env:
                .: {}
                k:{"name":"K8S_NODE_IP"}:
                  .: {}
                  f:name: {}
                  f:valueFrom:
                    .: {}
                    f:fieldRef:
                      .: {}
                      f:apiVersion: {}
                      f:fieldPath: {}
                k:{"name":"K8S_NODE_NAME"}:
                  .: {}
                  f:name: {}
                  f:valueFrom:
                    .: {}
                    f:fieldRef:
                      .: {}
                      f:apiVersion: {}
                      f:fieldPath: {}
                k:{"name":"KUBERNETES_SERVICE_HOST"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"KUBERNETES_SERVICE_PORT"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"OPENSHIFT_DNS_DOMAIN"}:
                  .: {}
                  f:name: {}
                  f:value: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:lifecycle:
                .: {}
                f:preStop:
                  .: {}
                  f:exec:
                    .: {}
                    f:command: {}
              f:name: {}
              f:ports:
                .: {}
                k:{"containerPort":10256,"protocol":"TCP"}:
                  .: {}
                  f:containerPort: {}
                  f:hostPort: {}
                  f:name: {}
                  f:protocol: {}
              f:readinessProbe:
                .: {}
                f:exec:
                  .: {}
                  f:command: {}
                f:failureThreshold: {}
                f:initialDelaySeconds: {}
                f:periodSeconds: {}
                f:successThreshold: {}
                f:timeoutSeconds: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:securityContext:
                .: {}
                f:privileged: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/config"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/env"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/etc/cni/net.d"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/etc/sysconfig"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/host"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/host/opt/cni/bin"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/host/var/run/netns"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/lib/modules"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/run/netns"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/lib/cni/networks/openshift-sdn"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run/dbus/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/run/kubernetes/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/run/openshift-sdn"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run/openvswitch/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:hostPID: {}
          f:nodeSelector:
            .: {}
            f:kubernetes.io/os: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"config"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
              f:name: {}
            k:{"name":"env-overrides"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
                f:optional: {}
              f:name: {}
            k:{"name":"etc-sysconfig"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-cni-bin"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-cni-conf"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-modules"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-run-netns"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-slash"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-lib-cni-networks-openshift-sdn"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-dbus"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-kubernetes"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-netns"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-openshift-sdn"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-ovs"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"sdn-metrics-certs"}:
              .: {}
              f:name: {}
              f:secret:
                .: {}
                f:defaultMode: {}
                f:optional: {}
                f:secretName: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:46:29Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.90.58"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:47:43Z"
    name: sdn-5vdnk
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: sdn
      uid: b00eb0b3-e2b2-46b1-b233-ccd1a93462cd
    resourceVersion: "20500"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/sdn-5vdnk
    uid: 3b87bfdf-cc5b-43b5-b71e-42df657bc17b
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - worker-1.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail

        # if another process is listening on the cni-server socket, wait until it exits
        trap 'kill $(jobs -p); rm -f /etc/cni/net.d/80-openshift-network.conf ; exit 0' TERM
        retries=0
        while true; do
          if echo 'test' | socat - UNIX-CONNECT:/var/run/openshift-sdn/cniserver/socket &>/dev/null; then
            echo "warning: Another process is currently listening on the CNI socket, waiting 15s ..." 2>&1
            sleep 15 & wait
            (( retries += 1 ))
          else
            break
          fi
          if [[ "${retries}" -gt 40 ]]; then
            echo "error: Another process is currently listening on the CNI socket, exiting" 2>&1
            exit 1
          fi
        done

        # local environment overrides
        if [[ -f /etc/sysconfig/openshift-sdn ]]; then
          set -o allexport
          source /etc/sysconfig/openshift-sdn
          set +o allexport
        fi
        #BUG: cdc accidentally mounted /etc/sysconfig/openshift-sdn as DirectoryOrCreate; clean it up so we can ultimately mount /etc/sysconfig/openshift-sdn as FileOrCreate
        # Once this is released, then we can mount it properly
        if [[ -d /etc/sysconfig/openshift-sdn ]]; then
          rmdir /etc/sysconfig/openshift-sdn || true
        fi

        # configmap-based overrides
        if [[ -f /env/${K8S_NODE_NAME} ]]; then
          set -o allexport
          source /env/${K8S_NODE_NAME}
          set +o allexport
        fi

        # Take over network functions on the node
        rm -f /etc/cni/net.d/80-openshift-network.conf
        cp -f /opt/cni/bin/openshift-sdn /host/opt/cni/bin/

        # Launch the network process
        exec /usr/bin/openshift-sdn-node \
          --node-name ${K8S_NODE_NAME} --node-ip ${K8S_NODE_IP} \
          --proxy-config /config/kube-proxy-config.yaml \
          --v ${OPENSHIFT_SDN_LOG_LEVEL:-2}
      env:
      - name: KUBERNETES_SERVICE_PORT
        value: "6443"
      - name: KUBERNETES_SERVICE_HOST
        value: api-int.case03116926.lab.upshift.rdu2.redhat.com
      - name: OPENSHIFT_DNS_DOMAIN
        value: cluster.local
      - name: K8S_NODE_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: spec.nodeName
      - name: K8S_NODE_IP
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: status.hostIP
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      lifecycle:
        preStop:
          exec:
            command:
            - rm
            - -f
            - /etc/cni/net.d/80-openshift-network.conf
            - /host/opt/cni/bin/openshift-sdn
      name: sdn
      ports:
      - containerPort: 10256
        hostPort: 10256
        name: healthz
        protocol: TCP
      readinessProbe:
        exec:
          command:
          - test
          - -f
          - /etc/cni/net.d/80-openshift-network.conf
        failureThreshold: 3
        initialDelaySeconds: 5
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 1
      resources:
        requests:
          cpu: 100m
          memory: 200Mi
      securityContext:
        privileged: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /config
        name: config
        readOnly: true
      - mountPath: /env
        name: env-overrides
      - mountPath: /var/run
        name: host-var-run
      - mountPath: /var/run/dbus/
        name: host-var-run-dbus
        readOnly: true
      - mountPath: /var/run/openvswitch/
        name: host-var-run-ovs
        readOnly: true
      - mountPath: /var/run/kubernetes/
        name: host-var-run-kubernetes
        readOnly: true
      - mountPath: /run/netns
        mountPropagation: HostToContainer
        name: host-run-netns
        readOnly: true
      - mountPath: /host/var/run/netns
        mountPropagation: HostToContainer
        name: host-var-run-netns
        readOnly: true
      - mountPath: /var/run/openshift-sdn
        name: host-var-run-openshift-sdn
      - mountPath: /host
        mountPropagation: HostToContainer
        name: host-slash
        readOnly: true
      - mountPath: /host/opt/cni/bin
        name: host-cni-bin
      - mountPath: /etc/cni/net.d
        name: host-cni-conf
      - mountPath: /var/lib/cni/networks/openshift-sdn
        name: host-var-lib-cni-networks-openshift-sdn
      - mountPath: /lib/modules
        name: host-modules
        readOnly: true
      - mountPath: /etc/sysconfig
        name: etc-sysconfig
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail
        TLS_PK=/etc/pki/tls/metrics-certs/tls.key
        TLS_CERT=/etc/pki/tls/metrics-certs/tls.crt

        # As the secret mount is optional we must wait for the files to be present.
        # The service is created in monitor.yaml and this is created in sdn.yaml.
        # If it isn't created there is probably an issue so we want to crashloop.
        TS=$(date +%s)
        WARN_TS=$(( ${TS} + $(( 20 * 60)) ))
        HAS_LOGGED_INFO=0

        log_missing_certs(){
            CUR_TS=$(date +%s)
            if [[ "${CUR_TS}" -gt "WARN_TS"  ]]; then
              echo $(date -Iseconds) WARN: sdn-metrics-certs not mounted after 20 minutes.
            elif [[ "${HAS_LOGGED_INFO}" -eq 0 ]] ; then
              echo $(date -Iseconds) INFO: sdn-metrics-certs not mounted. Waiting 20 minutes.
              HAS_LOGGED_INFO=1
            fi
        }

        while [[ ! -f "${TLS_PK}" ||  ! -f "${TLS_CERT}" ]] ; do
          log_missing_certs
          sleep 5
        done

        echo $(date -Iseconds) INFO: sdn-metrics-certs mounted, starting kube-rbac-proxy
        exec /usr/bin/kube-rbac-proxy \
          --logtostderr \
          --secure-listen-address=:9101 \
          --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 \
          --upstream=http://127.0.0.1:29101/ \
          --tls-private-key-file=${TLS_PK} \
          --tls-cert-file=${TLS_CERT}
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      imagePullPolicy: IfNotPresent
      name: kube-rbac-proxy
      ports:
      - containerPort: 9101
        hostPort: 9101
        name: https
        protocol: TCP
      resources:
        requests:
          cpu: 10m
          memory: 20Mi
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /etc/pki/tls/metrics-certs
        name: sdn-metrics-certs
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    hostPID: true
    imagePullSecrets:
    - name: sdn-dockercfg-4w66z
    nodeName: worker-1.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 2000001000
    priorityClassName: system-node-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: sdn
    serviceAccountName: sdn
    terminationGracePeriodSeconds: 30
    tolerations:
    - operator: Exists
    volumes:
    - configMap:
        defaultMode: 420
        name: sdn-config
      name: config
    - configMap:
        defaultMode: 420
        name: env-overrides
        optional: true
      name: env-overrides
    - hostPath:
        path: /etc/sysconfig
        type: ""
      name: etc-sysconfig
    - hostPath:
        path: /lib/modules
        type: ""
      name: host-modules
    - hostPath:
        path: /var/run
        type: ""
      name: host-var-run
    - hostPath:
        path: /run/netns
        type: ""
      name: host-run-netns
    - hostPath:
        path: /var/run/netns
        type: ""
      name: host-var-run-netns
    - hostPath:
        path: /var/run/dbus
        type: ""
      name: host-var-run-dbus
    - hostPath:
        path: /var/run/openvswitch
        type: ""
      name: host-var-run-ovs
    - hostPath:
        path: /var/run/kubernetes
        type: ""
      name: host-var-run-kubernetes
    - hostPath:
        path: /var/run/openshift-sdn
        type: ""
      name: host-var-run-openshift-sdn
    - hostPath:
        path: /
        type: ""
      name: host-slash
    - hostPath:
        path: /var/lib/cni/bin
        type: ""
      name: host-cni-bin
    - hostPath:
        path: /var/run/multus/cni/net.d
        type: ""
      name: host-cni-conf
    - hostPath:
        path: /var/lib/cni/networks/openshift-sdn
        type: ""
      name: host-var-lib-cni-networks-openshift-sdn
    - name: sdn-metrics-certs
      secret:
        defaultMode: 420
        optional: true
        secretName: sdn-metrics-certs
    - name: sdn-token-45pnf
      secret:
        defaultMode: 420
        secretName: sdn-token-45pnf
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:23Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:43Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:43Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:46:29Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://89443d05e222f852939c264b9213a634f5442e087cf1fe81e5659bb43013ad8b
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      lastState: {}
      name: kube-rbac-proxy
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:47:36Z"
    - containerID: cri-o://957fa56a65b9d9d5d4a3736831ea3522d68c33df75130f19b6ba031ec889fdb6
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: sdn
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:47:34Z"
    hostIP: 10.0.90.58
    phase: Running
    podIP: 10.0.90.58
    podIPs:
    - ip: 10.0.90.58
    qosClass: Burstable
    startTime: "2022-03-08T10:47:23Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:46:28Z"
    generateName: sdn-
    labels:
      app: sdn
      component: network
      controller-revision-hash: 7c6586c5cb
      openshift.io/component: network
      pod-template-generation: "1"
      type: infra
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:component: {}
            f:controller-revision-hash: {}
            f:openshift.io/component: {}
            f:pod-template-generation: {}
            f:type: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"b00eb0b3-e2b2-46b1-b233-ccd1a93462cd"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"kube-rbac-proxy"}:
              .: {}
              f:command: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:ports:
                .: {}
                k:{"containerPort":9101,"protocol":"TCP"}:
                  .: {}
                  f:containerPort: {}
                  f:hostPort: {}
                  f:name: {}
                  f:protocol: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/etc/pki/tls/metrics-certs"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
            k:{"name":"sdn"}:
              .: {}
              f:command: {}
              f:env:
                .: {}
                k:{"name":"K8S_NODE_IP"}:
                  .: {}
                  f:name: {}
                  f:valueFrom:
                    .: {}
                    f:fieldRef:
                      .: {}
                      f:apiVersion: {}
                      f:fieldPath: {}
                k:{"name":"K8S_NODE_NAME"}:
                  .: {}
                  f:name: {}
                  f:valueFrom:
                    .: {}
                    f:fieldRef:
                      .: {}
                      f:apiVersion: {}
                      f:fieldPath: {}
                k:{"name":"KUBERNETES_SERVICE_HOST"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"KUBERNETES_SERVICE_PORT"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"OPENSHIFT_DNS_DOMAIN"}:
                  .: {}
                  f:name: {}
                  f:value: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:lifecycle:
                .: {}
                f:preStop:
                  .: {}
                  f:exec:
                    .: {}
                    f:command: {}
              f:name: {}
              f:ports:
                .: {}
                k:{"containerPort":10256,"protocol":"TCP"}:
                  .: {}
                  f:containerPort: {}
                  f:hostPort: {}
                  f:name: {}
                  f:protocol: {}
              f:readinessProbe:
                .: {}
                f:exec:
                  .: {}
                  f:command: {}
                f:failureThreshold: {}
                f:initialDelaySeconds: {}
                f:periodSeconds: {}
                f:successThreshold: {}
                f:timeoutSeconds: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:securityContext:
                .: {}
                f:privileged: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/config"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/env"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/etc/cni/net.d"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/etc/sysconfig"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/host"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/host/opt/cni/bin"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/host/var/run/netns"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/lib/modules"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/run/netns"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/lib/cni/networks/openshift-sdn"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run/dbus/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/run/kubernetes/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/run/openshift-sdn"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run/openvswitch/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:hostPID: {}
          f:nodeSelector:
            .: {}
            f:kubernetes.io/os: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"config"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
              f:name: {}
            k:{"name":"env-overrides"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
                f:optional: {}
              f:name: {}
            k:{"name":"etc-sysconfig"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-cni-bin"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-cni-conf"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-modules"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-run-netns"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-slash"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-lib-cni-networks-openshift-sdn"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-dbus"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-kubernetes"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-netns"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-openshift-sdn"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-ovs"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"sdn-metrics-certs"}:
              .: {}
              f:name: {}
              f:secret:
                .: {}
                f:defaultMode: {}
                f:optional: {}
                f:secretName: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:46:28Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.94.235"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:47:14Z"
    name: sdn-9n262
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: sdn
      uid: b00eb0b3-e2b2-46b1-b233-ccd1a93462cd
    resourceVersion: "19527"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/sdn-9n262
    uid: 371c366f-c08b-48ba-b1e7-aacc26f6226e
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - worker-2.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail

        # if another process is listening on the cni-server socket, wait until it exits
        trap 'kill $(jobs -p); rm -f /etc/cni/net.d/80-openshift-network.conf ; exit 0' TERM
        retries=0
        while true; do
          if echo 'test' | socat - UNIX-CONNECT:/var/run/openshift-sdn/cniserver/socket &>/dev/null; then
            echo "warning: Another process is currently listening on the CNI socket, waiting 15s ..." 2>&1
            sleep 15 & wait
            (( retries += 1 ))
          else
            break
          fi
          if [[ "${retries}" -gt 40 ]]; then
            echo "error: Another process is currently listening on the CNI socket, exiting" 2>&1
            exit 1
          fi
        done

        # local environment overrides
        if [[ -f /etc/sysconfig/openshift-sdn ]]; then
          set -o allexport
          source /etc/sysconfig/openshift-sdn
          set +o allexport
        fi
        #BUG: cdc accidentally mounted /etc/sysconfig/openshift-sdn as DirectoryOrCreate; clean it up so we can ultimately mount /etc/sysconfig/openshift-sdn as FileOrCreate
        # Once this is released, then we can mount it properly
        if [[ -d /etc/sysconfig/openshift-sdn ]]; then
          rmdir /etc/sysconfig/openshift-sdn || true
        fi

        # configmap-based overrides
        if [[ -f /env/${K8S_NODE_NAME} ]]; then
          set -o allexport
          source /env/${K8S_NODE_NAME}
          set +o allexport
        fi

        # Take over network functions on the node
        rm -f /etc/cni/net.d/80-openshift-network.conf
        cp -f /opt/cni/bin/openshift-sdn /host/opt/cni/bin/

        # Launch the network process
        exec /usr/bin/openshift-sdn-node \
          --node-name ${K8S_NODE_NAME} --node-ip ${K8S_NODE_IP} \
          --proxy-config /config/kube-proxy-config.yaml \
          --v ${OPENSHIFT_SDN_LOG_LEVEL:-2}
      env:
      - name: KUBERNETES_SERVICE_PORT
        value: "6443"
      - name: KUBERNETES_SERVICE_HOST
        value: api-int.case03116926.lab.upshift.rdu2.redhat.com
      - name: OPENSHIFT_DNS_DOMAIN
        value: cluster.local
      - name: K8S_NODE_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: spec.nodeName
      - name: K8S_NODE_IP
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: status.hostIP
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      lifecycle:
        preStop:
          exec:
            command:
            - rm
            - -f
            - /etc/cni/net.d/80-openshift-network.conf
            - /host/opt/cni/bin/openshift-sdn
      name: sdn
      ports:
      - containerPort: 10256
        hostPort: 10256
        name: healthz
        protocol: TCP
      readinessProbe:
        exec:
          command:
          - test
          - -f
          - /etc/cni/net.d/80-openshift-network.conf
        failureThreshold: 3
        initialDelaySeconds: 5
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 1
      resources:
        requests:
          cpu: 100m
          memory: 200Mi
      securityContext:
        privileged: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /config
        name: config
        readOnly: true
      - mountPath: /env
        name: env-overrides
      - mountPath: /var/run
        name: host-var-run
      - mountPath: /var/run/dbus/
        name: host-var-run-dbus
        readOnly: true
      - mountPath: /var/run/openvswitch/
        name: host-var-run-ovs
        readOnly: true
      - mountPath: /var/run/kubernetes/
        name: host-var-run-kubernetes
        readOnly: true
      - mountPath: /run/netns
        mountPropagation: HostToContainer
        name: host-run-netns
        readOnly: true
      - mountPath: /host/var/run/netns
        mountPropagation: HostToContainer
        name: host-var-run-netns
        readOnly: true
      - mountPath: /var/run/openshift-sdn
        name: host-var-run-openshift-sdn
      - mountPath: /host
        mountPropagation: HostToContainer
        name: host-slash
        readOnly: true
      - mountPath: /host/opt/cni/bin
        name: host-cni-bin
      - mountPath: /etc/cni/net.d
        name: host-cni-conf
      - mountPath: /var/lib/cni/networks/openshift-sdn
        name: host-var-lib-cni-networks-openshift-sdn
      - mountPath: /lib/modules
        name: host-modules
        readOnly: true
      - mountPath: /etc/sysconfig
        name: etc-sysconfig
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail
        TLS_PK=/etc/pki/tls/metrics-certs/tls.key
        TLS_CERT=/etc/pki/tls/metrics-certs/tls.crt

        # As the secret mount is optional we must wait for the files to be present.
        # The service is created in monitor.yaml and this is created in sdn.yaml.
        # If it isn't created there is probably an issue so we want to crashloop.
        TS=$(date +%s)
        WARN_TS=$(( ${TS} + $(( 20 * 60)) ))
        HAS_LOGGED_INFO=0

        log_missing_certs(){
            CUR_TS=$(date +%s)
            if [[ "${CUR_TS}" -gt "WARN_TS"  ]]; then
              echo $(date -Iseconds) WARN: sdn-metrics-certs not mounted after 20 minutes.
            elif [[ "${HAS_LOGGED_INFO}" -eq 0 ]] ; then
              echo $(date -Iseconds) INFO: sdn-metrics-certs not mounted. Waiting 20 minutes.
              HAS_LOGGED_INFO=1
            fi
        }

        while [[ ! -f "${TLS_PK}" ||  ! -f "${TLS_CERT}" ]] ; do
          log_missing_certs
          sleep 5
        done

        echo $(date -Iseconds) INFO: sdn-metrics-certs mounted, starting kube-rbac-proxy
        exec /usr/bin/kube-rbac-proxy \
          --logtostderr \
          --secure-listen-address=:9101 \
          --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 \
          --upstream=http://127.0.0.1:29101/ \
          --tls-private-key-file=${TLS_PK} \
          --tls-cert-file=${TLS_CERT}
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      imagePullPolicy: IfNotPresent
      name: kube-rbac-proxy
      ports:
      - containerPort: 9101
        hostPort: 9101
        name: https
        protocol: TCP
      resources:
        requests:
          cpu: 10m
          memory: 20Mi
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /etc/pki/tls/metrics-certs
        name: sdn-metrics-certs
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    hostPID: true
    imagePullSecrets:
    - name: sdn-dockercfg-4w66z
    nodeName: worker-2.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 2000001000
    priorityClassName: system-node-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: sdn
    serviceAccountName: sdn
    terminationGracePeriodSeconds: 30
    tolerations:
    - operator: Exists
    volumes:
    - configMap:
        defaultMode: 420
        name: sdn-config
      name: config
    - configMap:
        defaultMode: 420
        name: env-overrides
        optional: true
      name: env-overrides
    - hostPath:
        path: /etc/sysconfig
        type: ""
      name: etc-sysconfig
    - hostPath:
        path: /lib/modules
        type: ""
      name: host-modules
    - hostPath:
        path: /var/run
        type: ""
      name: host-var-run
    - hostPath:
        path: /run/netns
        type: ""
      name: host-run-netns
    - hostPath:
        path: /var/run/netns
        type: ""
      name: host-var-run-netns
    - hostPath:
        path: /var/run/dbus
        type: ""
      name: host-var-run-dbus
    - hostPath:
        path: /var/run/openvswitch
        type: ""
      name: host-var-run-ovs
    - hostPath:
        path: /var/run/kubernetes
        type: ""
      name: host-var-run-kubernetes
    - hostPath:
        path: /var/run/openshift-sdn
        type: ""
      name: host-var-run-openshift-sdn
    - hostPath:
        path: /
        type: ""
      name: host-slash
    - hostPath:
        path: /var/lib/cni/bin
        type: ""
      name: host-cni-bin
    - hostPath:
        path: /var/run/multus/cni/net.d
        type: ""
      name: host-cni-conf
    - hostPath:
        path: /var/lib/cni/networks/openshift-sdn
        type: ""
      name: host-var-lib-cni-networks-openshift-sdn
    - name: sdn-metrics-certs
      secret:
        defaultMode: 420
        optional: true
        secretName: sdn-metrics-certs
    - name: sdn-token-45pnf
      secret:
        defaultMode: 420
        secretName: sdn-token-45pnf
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:46:54Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:14Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:47:14Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:46:28Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://3b448a0f077dec8cbc08a937da2f9dd1464a035f17f460de17e1f197a8b83fac
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      lastState: {}
      name: kube-rbac-proxy
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:47:09Z"
    - containerID: cri-o://6c8e4adca27b9d78c7acc8f1696ddf0ca0867ac5efa04a82cd65ced1baa3b1fa
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: sdn
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:47:05Z"
    hostIP: 10.0.94.235
    phase: Running
    podIP: 10.0.94.235
    podIPs:
    - ip: 10.0.94.235
    qosClass: Burstable
    startTime: "2022-03-08T10:46:54Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:38:11Z"
    generateName: sdn-
    labels:
      app: sdn
      component: network
      controller-revision-hash: 7c6586c5cb
      openshift.io/component: network
      pod-template-generation: "1"
      type: infra
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:component: {}
            f:controller-revision-hash: {}
            f:openshift.io/component: {}
            f:pod-template-generation: {}
            f:type: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"b00eb0b3-e2b2-46b1-b233-ccd1a93462cd"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"kube-rbac-proxy"}:
              .: {}
              f:command: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:ports:
                .: {}
                k:{"containerPort":9101,"protocol":"TCP"}:
                  .: {}
                  f:containerPort: {}
                  f:hostPort: {}
                  f:name: {}
                  f:protocol: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/etc/pki/tls/metrics-certs"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
            k:{"name":"sdn"}:
              .: {}
              f:command: {}
              f:env:
                .: {}
                k:{"name":"K8S_NODE_IP"}:
                  .: {}
                  f:name: {}
                  f:valueFrom:
                    .: {}
                    f:fieldRef:
                      .: {}
                      f:apiVersion: {}
                      f:fieldPath: {}
                k:{"name":"K8S_NODE_NAME"}:
                  .: {}
                  f:name: {}
                  f:valueFrom:
                    .: {}
                    f:fieldRef:
                      .: {}
                      f:apiVersion: {}
                      f:fieldPath: {}
                k:{"name":"KUBERNETES_SERVICE_HOST"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"KUBERNETES_SERVICE_PORT"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"OPENSHIFT_DNS_DOMAIN"}:
                  .: {}
                  f:name: {}
                  f:value: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:lifecycle:
                .: {}
                f:preStop:
                  .: {}
                  f:exec:
                    .: {}
                    f:command: {}
              f:name: {}
              f:ports:
                .: {}
                k:{"containerPort":10256,"protocol":"TCP"}:
                  .: {}
                  f:containerPort: {}
                  f:hostPort: {}
                  f:name: {}
                  f:protocol: {}
              f:readinessProbe:
                .: {}
                f:exec:
                  .: {}
                  f:command: {}
                f:failureThreshold: {}
                f:initialDelaySeconds: {}
                f:periodSeconds: {}
                f:successThreshold: {}
                f:timeoutSeconds: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:securityContext:
                .: {}
                f:privileged: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/config"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/env"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/etc/cni/net.d"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/etc/sysconfig"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/host"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/host/opt/cni/bin"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/host/var/run/netns"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/lib/modules"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/run/netns"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/lib/cni/networks/openshift-sdn"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run/dbus/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/run/kubernetes/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/run/openshift-sdn"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run/openvswitch/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:hostPID: {}
          f:nodeSelector:
            .: {}
            f:kubernetes.io/os: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"config"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
              f:name: {}
            k:{"name":"env-overrides"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
                f:optional: {}
              f:name: {}
            k:{"name":"etc-sysconfig"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-cni-bin"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-cni-conf"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-modules"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-run-netns"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-slash"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-lib-cni-networks-openshift-sdn"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-dbus"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-kubernetes"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-netns"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-openshift-sdn"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-ovs"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"sdn-metrics-certs"}:
              .: {}
              f:name: {}
              f:secret:
                .: {}
                f:defaultMode: {}
                f:optional: {}
                f:secretName: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:38:11Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.95.76"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:38:27Z"
    name: sdn-b667g
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: sdn
      uid: b00eb0b3-e2b2-46b1-b233-ccd1a93462cd
    resourceVersion: "5376"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/sdn-b667g
    uid: e8e7a984-47d1-4134-89b9-d4be814dc007
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - master-1.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail

        # if another process is listening on the cni-server socket, wait until it exits
        trap 'kill $(jobs -p); rm -f /etc/cni/net.d/80-openshift-network.conf ; exit 0' TERM
        retries=0
        while true; do
          if echo 'test' | socat - UNIX-CONNECT:/var/run/openshift-sdn/cniserver/socket &>/dev/null; then
            echo "warning: Another process is currently listening on the CNI socket, waiting 15s ..." 2>&1
            sleep 15 & wait
            (( retries += 1 ))
          else
            break
          fi
          if [[ "${retries}" -gt 40 ]]; then
            echo "error: Another process is currently listening on the CNI socket, exiting" 2>&1
            exit 1
          fi
        done

        # local environment overrides
        if [[ -f /etc/sysconfig/openshift-sdn ]]; then
          set -o allexport
          source /etc/sysconfig/openshift-sdn
          set +o allexport
        fi
        #BUG: cdc accidentally mounted /etc/sysconfig/openshift-sdn as DirectoryOrCreate; clean it up so we can ultimately mount /etc/sysconfig/openshift-sdn as FileOrCreate
        # Once this is released, then we can mount it properly
        if [[ -d /etc/sysconfig/openshift-sdn ]]; then
          rmdir /etc/sysconfig/openshift-sdn || true
        fi

        # configmap-based overrides
        if [[ -f /env/${K8S_NODE_NAME} ]]; then
          set -o allexport
          source /env/${K8S_NODE_NAME}
          set +o allexport
        fi

        # Take over network functions on the node
        rm -f /etc/cni/net.d/80-openshift-network.conf
        cp -f /opt/cni/bin/openshift-sdn /host/opt/cni/bin/

        # Launch the network process
        exec /usr/bin/openshift-sdn-node \
          --node-name ${K8S_NODE_NAME} --node-ip ${K8S_NODE_IP} \
          --proxy-config /config/kube-proxy-config.yaml \
          --v ${OPENSHIFT_SDN_LOG_LEVEL:-2}
      env:
      - name: KUBERNETES_SERVICE_PORT
        value: "6443"
      - name: KUBERNETES_SERVICE_HOST
        value: api-int.case03116926.lab.upshift.rdu2.redhat.com
      - name: OPENSHIFT_DNS_DOMAIN
        value: cluster.local
      - name: K8S_NODE_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: spec.nodeName
      - name: K8S_NODE_IP
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: status.hostIP
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      lifecycle:
        preStop:
          exec:
            command:
            - rm
            - -f
            - /etc/cni/net.d/80-openshift-network.conf
            - /host/opt/cni/bin/openshift-sdn
      name: sdn
      ports:
      - containerPort: 10256
        hostPort: 10256
        name: healthz
        protocol: TCP
      readinessProbe:
        exec:
          command:
          - test
          - -f
          - /etc/cni/net.d/80-openshift-network.conf
        failureThreshold: 3
        initialDelaySeconds: 5
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 1
      resources:
        requests:
          cpu: 100m
          memory: 200Mi
      securityContext:
        privileged: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /config
        name: config
        readOnly: true
      - mountPath: /env
        name: env-overrides
      - mountPath: /var/run
        name: host-var-run
      - mountPath: /var/run/dbus/
        name: host-var-run-dbus
        readOnly: true
      - mountPath: /var/run/openvswitch/
        name: host-var-run-ovs
        readOnly: true
      - mountPath: /var/run/kubernetes/
        name: host-var-run-kubernetes
        readOnly: true
      - mountPath: /run/netns
        mountPropagation: HostToContainer
        name: host-run-netns
        readOnly: true
      - mountPath: /host/var/run/netns
        mountPropagation: HostToContainer
        name: host-var-run-netns
        readOnly: true
      - mountPath: /var/run/openshift-sdn
        name: host-var-run-openshift-sdn
      - mountPath: /host
        mountPropagation: HostToContainer
        name: host-slash
        readOnly: true
      - mountPath: /host/opt/cni/bin
        name: host-cni-bin
      - mountPath: /etc/cni/net.d
        name: host-cni-conf
      - mountPath: /var/lib/cni/networks/openshift-sdn
        name: host-var-lib-cni-networks-openshift-sdn
      - mountPath: /lib/modules
        name: host-modules
        readOnly: true
      - mountPath: /etc/sysconfig
        name: etc-sysconfig
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail
        TLS_PK=/etc/pki/tls/metrics-certs/tls.key
        TLS_CERT=/etc/pki/tls/metrics-certs/tls.crt

        # As the secret mount is optional we must wait for the files to be present.
        # The service is created in monitor.yaml and this is created in sdn.yaml.
        # If it isn't created there is probably an issue so we want to crashloop.
        TS=$(date +%s)
        WARN_TS=$(( ${TS} + $(( 20 * 60)) ))
        HAS_LOGGED_INFO=0

        log_missing_certs(){
            CUR_TS=$(date +%s)
            if [[ "${CUR_TS}" -gt "WARN_TS"  ]]; then
              echo $(date -Iseconds) WARN: sdn-metrics-certs not mounted after 20 minutes.
            elif [[ "${HAS_LOGGED_INFO}" -eq 0 ]] ; then
              echo $(date -Iseconds) INFO: sdn-metrics-certs not mounted. Waiting 20 minutes.
              HAS_LOGGED_INFO=1
            fi
        }

        while [[ ! -f "${TLS_PK}" ||  ! -f "${TLS_CERT}" ]] ; do
          log_missing_certs
          sleep 5
        done

        echo $(date -Iseconds) INFO: sdn-metrics-certs mounted, starting kube-rbac-proxy
        exec /usr/bin/kube-rbac-proxy \
          --logtostderr \
          --secure-listen-address=:9101 \
          --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 \
          --upstream=http://127.0.0.1:29101/ \
          --tls-private-key-file=${TLS_PK} \
          --tls-cert-file=${TLS_CERT}
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      imagePullPolicy: IfNotPresent
      name: kube-rbac-proxy
      ports:
      - containerPort: 9101
        hostPort: 9101
        name: https
        protocol: TCP
      resources:
        requests:
          cpu: 10m
          memory: 20Mi
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /etc/pki/tls/metrics-certs
        name: sdn-metrics-certs
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    hostPID: true
    nodeName: master-1.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 2000001000
    priorityClassName: system-node-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: sdn
    serviceAccountName: sdn
    terminationGracePeriodSeconds: 30
    tolerations:
    - operator: Exists
    volumes:
    - configMap:
        defaultMode: 420
        name: sdn-config
      name: config
    - configMap:
        defaultMode: 420
        name: env-overrides
        optional: true
      name: env-overrides
    - hostPath:
        path: /etc/sysconfig
        type: ""
      name: etc-sysconfig
    - hostPath:
        path: /lib/modules
        type: ""
      name: host-modules
    - hostPath:
        path: /var/run
        type: ""
      name: host-var-run
    - hostPath:
        path: /run/netns
        type: ""
      name: host-run-netns
    - hostPath:
        path: /var/run/netns
        type: ""
      name: host-var-run-netns
    - hostPath:
        path: /var/run/dbus
        type: ""
      name: host-var-run-dbus
    - hostPath:
        path: /var/run/openvswitch
        type: ""
      name: host-var-run-ovs
    - hostPath:
        path: /var/run/kubernetes
        type: ""
      name: host-var-run-kubernetes
    - hostPath:
        path: /var/run/openshift-sdn
        type: ""
      name: host-var-run-openshift-sdn
    - hostPath:
        path: /
        type: ""
      name: host-slash
    - hostPath:
        path: /var/lib/cni/bin
        type: ""
      name: host-cni-bin
    - hostPath:
        path: /var/run/multus/cni/net.d
        type: ""
      name: host-cni-conf
    - hostPath:
        path: /var/lib/cni/networks/openshift-sdn
        type: ""
      name: host-var-lib-cni-networks-openshift-sdn
    - name: sdn-metrics-certs
      secret:
        defaultMode: 420
        optional: true
        secretName: sdn-metrics-certs
    - name: sdn-token-45pnf
      secret:
        defaultMode: 420
        secretName: sdn-token-45pnf
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:11Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:27Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:27Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:11Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://31af10cba9d21178fc1d238671c7beeee5d95be54cc9395a6c0f00569a2806c0
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      lastState: {}
      name: kube-rbac-proxy
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:38:23Z"
    - containerID: cri-o://4cc57e45b43e24b9aeac7be8a483d6464631c60ce1a6ea2b6e7545a18ef9c303
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: sdn
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:38:21Z"
    hostIP: 10.0.95.76
    phase: Running
    podIP: 10.0.95.76
    podIPs:
    - ip: 10.0.95.76
    qosClass: Burstable
    startTime: "2022-03-08T10:38:11Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:38:15Z"
    generateName: sdn-
    labels:
      app: sdn
      component: network
      controller-revision-hash: 7c6586c5cb
      openshift.io/component: network
      pod-template-generation: "1"
      type: infra
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:component: {}
            f:controller-revision-hash: {}
            f:openshift.io/component: {}
            f:pod-template-generation: {}
            f:type: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"b00eb0b3-e2b2-46b1-b233-ccd1a93462cd"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"kube-rbac-proxy"}:
              .: {}
              f:command: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:ports:
                .: {}
                k:{"containerPort":9101,"protocol":"TCP"}:
                  .: {}
                  f:containerPort: {}
                  f:hostPort: {}
                  f:name: {}
                  f:protocol: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/etc/pki/tls/metrics-certs"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
            k:{"name":"sdn"}:
              .: {}
              f:command: {}
              f:env:
                .: {}
                k:{"name":"K8S_NODE_IP"}:
                  .: {}
                  f:name: {}
                  f:valueFrom:
                    .: {}
                    f:fieldRef:
                      .: {}
                      f:apiVersion: {}
                      f:fieldPath: {}
                k:{"name":"K8S_NODE_NAME"}:
                  .: {}
                  f:name: {}
                  f:valueFrom:
                    .: {}
                    f:fieldRef:
                      .: {}
                      f:apiVersion: {}
                      f:fieldPath: {}
                k:{"name":"KUBERNETES_SERVICE_HOST"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"KUBERNETES_SERVICE_PORT"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"OPENSHIFT_DNS_DOMAIN"}:
                  .: {}
                  f:name: {}
                  f:value: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:lifecycle:
                .: {}
                f:preStop:
                  .: {}
                  f:exec:
                    .: {}
                    f:command: {}
              f:name: {}
              f:ports:
                .: {}
                k:{"containerPort":10256,"protocol":"TCP"}:
                  .: {}
                  f:containerPort: {}
                  f:hostPort: {}
                  f:name: {}
                  f:protocol: {}
              f:readinessProbe:
                .: {}
                f:exec:
                  .: {}
                  f:command: {}
                f:failureThreshold: {}
                f:initialDelaySeconds: {}
                f:periodSeconds: {}
                f:successThreshold: {}
                f:timeoutSeconds: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:securityContext:
                .: {}
                f:privileged: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/config"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/env"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/etc/cni/net.d"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/etc/sysconfig"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/host"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/host/opt/cni/bin"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/host/var/run/netns"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/lib/modules"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/run/netns"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/lib/cni/networks/openshift-sdn"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run/dbus/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/run/kubernetes/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/run/openshift-sdn"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run/openvswitch/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:hostPID: {}
          f:nodeSelector:
            .: {}
            f:kubernetes.io/os: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"config"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
              f:name: {}
            k:{"name":"env-overrides"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
                f:optional: {}
              f:name: {}
            k:{"name":"etc-sysconfig"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-cni-bin"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-cni-conf"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-modules"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-run-netns"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-slash"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-lib-cni-networks-openshift-sdn"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-dbus"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-kubernetes"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-netns"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-openshift-sdn"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-ovs"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"sdn-metrics-certs"}:
              .: {}
              f:name: {}
              f:secret:
                .: {}
                f:defaultMode: {}
                f:optional: {}
                f:secretName: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:38:15Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.94.219"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:38:37Z"
    name: sdn-cgjgd
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: sdn
      uid: b00eb0b3-e2b2-46b1-b233-ccd1a93462cd
    resourceVersion: "5548"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/sdn-cgjgd
    uid: 6135e9d7-5418-4afa-80c1-089a1ce10260
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - master-2.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail

        # if another process is listening on the cni-server socket, wait until it exits
        trap 'kill $(jobs -p); rm -f /etc/cni/net.d/80-openshift-network.conf ; exit 0' TERM
        retries=0
        while true; do
          if echo 'test' | socat - UNIX-CONNECT:/var/run/openshift-sdn/cniserver/socket &>/dev/null; then
            echo "warning: Another process is currently listening on the CNI socket, waiting 15s ..." 2>&1
            sleep 15 & wait
            (( retries += 1 ))
          else
            break
          fi
          if [[ "${retries}" -gt 40 ]]; then
            echo "error: Another process is currently listening on the CNI socket, exiting" 2>&1
            exit 1
          fi
        done

        # local environment overrides
        if [[ -f /etc/sysconfig/openshift-sdn ]]; then
          set -o allexport
          source /etc/sysconfig/openshift-sdn
          set +o allexport
        fi
        #BUG: cdc accidentally mounted /etc/sysconfig/openshift-sdn as DirectoryOrCreate; clean it up so we can ultimately mount /etc/sysconfig/openshift-sdn as FileOrCreate
        # Once this is released, then we can mount it properly
        if [[ -d /etc/sysconfig/openshift-sdn ]]; then
          rmdir /etc/sysconfig/openshift-sdn || true
        fi

        # configmap-based overrides
        if [[ -f /env/${K8S_NODE_NAME} ]]; then
          set -o allexport
          source /env/${K8S_NODE_NAME}
          set +o allexport
        fi

        # Take over network functions on the node
        rm -f /etc/cni/net.d/80-openshift-network.conf
        cp -f /opt/cni/bin/openshift-sdn /host/opt/cni/bin/

        # Launch the network process
        exec /usr/bin/openshift-sdn-node \
          --node-name ${K8S_NODE_NAME} --node-ip ${K8S_NODE_IP} \
          --proxy-config /config/kube-proxy-config.yaml \
          --v ${OPENSHIFT_SDN_LOG_LEVEL:-2}
      env:
      - name: KUBERNETES_SERVICE_PORT
        value: "6443"
      - name: KUBERNETES_SERVICE_HOST
        value: api-int.case03116926.lab.upshift.rdu2.redhat.com
      - name: OPENSHIFT_DNS_DOMAIN
        value: cluster.local
      - name: K8S_NODE_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: spec.nodeName
      - name: K8S_NODE_IP
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: status.hostIP
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      lifecycle:
        preStop:
          exec:
            command:
            - rm
            - -f
            - /etc/cni/net.d/80-openshift-network.conf
            - /host/opt/cni/bin/openshift-sdn
      name: sdn
      ports:
      - containerPort: 10256
        hostPort: 10256
        name: healthz
        protocol: TCP
      readinessProbe:
        exec:
          command:
          - test
          - -f
          - /etc/cni/net.d/80-openshift-network.conf
        failureThreshold: 3
        initialDelaySeconds: 5
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 1
      resources:
        requests:
          cpu: 100m
          memory: 200Mi
      securityContext:
        privileged: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /config
        name: config
        readOnly: true
      - mountPath: /env
        name: env-overrides
      - mountPath: /var/run
        name: host-var-run
      - mountPath: /var/run/dbus/
        name: host-var-run-dbus
        readOnly: true
      - mountPath: /var/run/openvswitch/
        name: host-var-run-ovs
        readOnly: true
      - mountPath: /var/run/kubernetes/
        name: host-var-run-kubernetes
        readOnly: true
      - mountPath: /run/netns
        mountPropagation: HostToContainer
        name: host-run-netns
        readOnly: true
      - mountPath: /host/var/run/netns
        mountPropagation: HostToContainer
        name: host-var-run-netns
        readOnly: true
      - mountPath: /var/run/openshift-sdn
        name: host-var-run-openshift-sdn
      - mountPath: /host
        mountPropagation: HostToContainer
        name: host-slash
        readOnly: true
      - mountPath: /host/opt/cni/bin
        name: host-cni-bin
      - mountPath: /etc/cni/net.d
        name: host-cni-conf
      - mountPath: /var/lib/cni/networks/openshift-sdn
        name: host-var-lib-cni-networks-openshift-sdn
      - mountPath: /lib/modules
        name: host-modules
        readOnly: true
      - mountPath: /etc/sysconfig
        name: etc-sysconfig
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail
        TLS_PK=/etc/pki/tls/metrics-certs/tls.key
        TLS_CERT=/etc/pki/tls/metrics-certs/tls.crt

        # As the secret mount is optional we must wait for the files to be present.
        # The service is created in monitor.yaml and this is created in sdn.yaml.
        # If it isn't created there is probably an issue so we want to crashloop.
        TS=$(date +%s)
        WARN_TS=$(( ${TS} + $(( 20 * 60)) ))
        HAS_LOGGED_INFO=0

        log_missing_certs(){
            CUR_TS=$(date +%s)
            if [[ "${CUR_TS}" -gt "WARN_TS"  ]]; then
              echo $(date -Iseconds) WARN: sdn-metrics-certs not mounted after 20 minutes.
            elif [[ "${HAS_LOGGED_INFO}" -eq 0 ]] ; then
              echo $(date -Iseconds) INFO: sdn-metrics-certs not mounted. Waiting 20 minutes.
              HAS_LOGGED_INFO=1
            fi
        }

        while [[ ! -f "${TLS_PK}" ||  ! -f "${TLS_CERT}" ]] ; do
          log_missing_certs
          sleep 5
        done

        echo $(date -Iseconds) INFO: sdn-metrics-certs mounted, starting kube-rbac-proxy
        exec /usr/bin/kube-rbac-proxy \
          --logtostderr \
          --secure-listen-address=:9101 \
          --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 \
          --upstream=http://127.0.0.1:29101/ \
          --tls-private-key-file=${TLS_PK} \
          --tls-cert-file=${TLS_CERT}
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      imagePullPolicy: IfNotPresent
      name: kube-rbac-proxy
      ports:
      - containerPort: 9101
        hostPort: 9101
        name: https
        protocol: TCP
      resources:
        requests:
          cpu: 10m
          memory: 20Mi
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /etc/pki/tls/metrics-certs
        name: sdn-metrics-certs
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    hostPID: true
    nodeName: master-2.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 2000001000
    priorityClassName: system-node-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: sdn
    serviceAccountName: sdn
    terminationGracePeriodSeconds: 30
    tolerations:
    - operator: Exists
    volumes:
    - configMap:
        defaultMode: 420
        name: sdn-config
      name: config
    - configMap:
        defaultMode: 420
        name: env-overrides
        optional: true
      name: env-overrides
    - hostPath:
        path: /etc/sysconfig
        type: ""
      name: etc-sysconfig
    - hostPath:
        path: /lib/modules
        type: ""
      name: host-modules
    - hostPath:
        path: /var/run
        type: ""
      name: host-var-run
    - hostPath:
        path: /run/netns
        type: ""
      name: host-run-netns
    - hostPath:
        path: /var/run/netns
        type: ""
      name: host-var-run-netns
    - hostPath:
        path: /var/run/dbus
        type: ""
      name: host-var-run-dbus
    - hostPath:
        path: /var/run/openvswitch
        type: ""
      name: host-var-run-ovs
    - hostPath:
        path: /var/run/kubernetes
        type: ""
      name: host-var-run-kubernetes
    - hostPath:
        path: /var/run/openshift-sdn
        type: ""
      name: host-var-run-openshift-sdn
    - hostPath:
        path: /
        type: ""
      name: host-slash
    - hostPath:
        path: /var/lib/cni/bin
        type: ""
      name: host-cni-bin
    - hostPath:
        path: /var/run/multus/cni/net.d
        type: ""
      name: host-cni-conf
    - hostPath:
        path: /var/lib/cni/networks/openshift-sdn
        type: ""
      name: host-var-lib-cni-networks-openshift-sdn
    - name: sdn-metrics-certs
      secret:
        defaultMode: 420
        optional: true
        secretName: sdn-metrics-certs
    - name: sdn-token-45pnf
      secret:
        defaultMode: 420
        secretName: sdn-token-45pnf
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:17Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:37Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:37Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:15Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://862e7f4b79012da806331a1c8d993e302f1c583bee41af2df1a018b0f33b26a1
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      lastState: {}
      name: kube-rbac-proxy
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:38:30Z"
    - containerID: cri-o://aba58c0b06f116d09ec244d22df0a583e72dee9dbe0c880d3c6d9f825367428b
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: sdn
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:38:28Z"
    hostIP: 10.0.94.219
    phase: Running
    podIP: 10.0.94.219
    podIPs:
    - ip: 10.0.94.219
    qosClass: Burstable
    startTime: "2022-03-08T10:38:17Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:38:10Z"
    generateName: sdn-controller-
    labels:
      app: sdn-controller
      controller-revision-hash: 67d9dbd6bd
      pod-template-generation: "1"
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:controller-revision-hash: {}
            f:pod-template-generation: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"9d97d59e-f663-4f94-bc48-f162e440e448"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"sdn-controller"}:
              .: {}
              f:command: {}
              f:env:
                .: {}
                k:{"name":"KUBERNETES_SERVICE_HOST"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"KUBERNETES_SERVICE_PORT"}:
                  .: {}
                  f:name: {}
                  f:value: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/env"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:nodeSelector:
            .: {}
            f:node-role.kubernetes.io/master: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext:
            .: {}
            f:runAsNonRoot: {}
            f:runAsUser: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"env-overrides"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
                f:optional: {}
              f:name: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:38:10Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.94.119"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:42:38Z"
    name: sdn-controller-2pwxc
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: sdn-controller
      uid: 9d97d59e-f663-4f94-bc48-f162e440e448
    resourceVersion: "15452"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/sdn-controller-2pwxc
    uid: 621e521b-5153-4408-9b01-c149bf2f7051
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - master-0.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        if [[ -f /env/_master ]]; then
          set -o allexport
          source /env/_master
          set +o allexport
        fi

        exec openshift-sdn-controller --v=${OPENSHIFT_SDN_LOG_LEVEL:-2}
      env:
      - name: KUBERNETES_SERVICE_PORT
        value: "6443"
      - name: KUBERNETES_SERVICE_HOST
        value: api-int.case03116926.lab.upshift.rdu2.redhat.com
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      name: sdn-controller
      resources:
        requests:
          cpu: 10m
          memory: 50Mi
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /env
        name: env-overrides
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-controller-token-f8nkk
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    nodeName: master-0.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      node-role.kubernetes.io/master: ""
    preemptionPolicy: PreemptLowerPriority
    priority: 2000000000
    priorityClassName: system-cluster-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext:
      runAsNonRoot: true
      runAsUser: 65534
    serviceAccount: sdn-controller
    serviceAccountName: sdn-controller
    terminationGracePeriodSeconds: 30
    tolerations:
    - effect: NoSchedule
      key: node-role.kubernetes.io/master
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/not-ready
      operator: Exists
    - effect: NoExecute
      key: node.kubernetes.io/not-ready
      operator: Exists
    - effect: NoExecute
      key: node.kubernetes.io/unreachable
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/disk-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/memory-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/pid-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/unschedulable
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/network-unavailable
      operator: Exists
    volumes:
    - configMap:
        defaultMode: 420
        name: env-overrides
        optional: true
      name: env-overrides
    - name: sdn-controller-token-f8nkk
      secret:
        defaultMode: 420
        secretName: sdn-controller-token-f8nkk
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:11Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:42:38Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:42:38Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:11Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://6476e4942d6a26a1b93fcc1faea15ee2b900a7496b55ea0c4fdce64949116fc6
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState:
        terminated:
          containerID: cri-o://185d16c0f93f2e2010c7bdf0d982386b6dc2a73770ca03f2671130d73984654e
          exitCode: 255
          finishedAt: "2022-03-08T10:42:36Z"
          message: |
            61549       1 vnids.go:117] Allocated netid 16374726 for namespace "openshift-authentication"
            I0308 10:38:57.660294       1 vnids.go:117] Allocated netid 15333970 for namespace "openshift-oauth-apiserver"
            I0308 10:39:51.650231       1 vnids.go:117] Allocated netid 8038480 for namespace "openshift-dns"
            I0308 10:39:53.604404       1 vnids.go:117] Allocated netid 4167470 for namespace "openshift-ingress"
            I0308 10:41:31.480661       1 vnids.go:117] Allocated netid 5908197 for namespace "openshift"
            I0308 10:41:31.532558       1 vnids.go:117] Allocated netid 16429946 for namespace "openshift-node"
            E0308 10:42:36.629863       1 leaderelection.go:320] error retrieving resource lock openshift-sdn/openshift-network-controller: Get "https://api-int.case03116926.lab.upshift.rdu2.redhat.com:6443/api/v1/namespaces/openshift-sdn/configmaps/openshift-network-controller": context deadline exceeded
            E0308 10:42:36.629948       1 event.go:316] Could not construct reference to: '&v1.ConfigMap{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, ObjectMeta:v1.ObjectMeta{Name:"", GenerateName:"", Namespace:"", SelfLink:"", UID:"", ResourceVersion:"", Generation:0, CreationTimestamp:v1.Time{Time:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}}, DeletionTimestamp:(*v1.Time)(nil), DeletionGracePeriodSeconds:(*int64)(nil), Labels:map[string]string(nil), Annotations:map[string]string(nil), OwnerReferences:[]v1.OwnerReference(nil), Finalizers:[]string(nil), ClusterName:"", ManagedFields:[]v1.ManagedFieldsEntry(nil)}, Immutable:(*bool)(nil), Data:map[string]string(nil), BinaryData:map[string][]uint8(nil)}' due to: 'no kind is registered for the type v1.ConfigMap in scheme "pkg/runtime/scheme.go:101"'. Will not report event: 'Normal' 'LeaderElection' 'master-0.case03116926.lab.upshift.rdu2.redhat.com stopped leading'
            I0308 10:42:36.630026       1 leaderelection.go:277] failed to renew lease openshift-sdn/openshift-network-controller: timed out waiting for the condition
            F0308 10:42:36.630049       1 network_controller.go:97] leaderelection lost
          reason: Error
          startedAt: "2022-03-08T10:38:21Z"
      name: sdn-controller
      ready: true
      restartCount: 1
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:42:38Z"
    hostIP: 10.0.94.119
    phase: Running
    podIP: 10.0.94.119
    podIPs:
    - ip: 10.0.94.119
    qosClass: Burstable
    startTime: "2022-03-08T10:38:11Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:38:11Z"
    generateName: sdn-controller-
    labels:
      app: sdn-controller
      controller-revision-hash: 67d9dbd6bd
      pod-template-generation: "1"
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:controller-revision-hash: {}
            f:pod-template-generation: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"9d97d59e-f663-4f94-bc48-f162e440e448"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"sdn-controller"}:
              .: {}
              f:command: {}
              f:env:
                .: {}
                k:{"name":"KUBERNETES_SERVICE_HOST"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"KUBERNETES_SERVICE_PORT"}:
                  .: {}
                  f:name: {}
                  f:value: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/env"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:nodeSelector:
            .: {}
            f:node-role.kubernetes.io/master: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext:
            .: {}
            f:runAsNonRoot: {}
            f:runAsUser: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"env-overrides"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
                f:optional: {}
              f:name: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:38:11Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.95.76"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:38:22Z"
    name: sdn-controller-65mtj
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: sdn-controller
      uid: 9d97d59e-f663-4f94-bc48-f162e440e448
    resourceVersion: "5276"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/sdn-controller-65mtj
    uid: 21758b3a-ee4f-4833-a60d-aa4bc44e960c
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - master-1.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        if [[ -f /env/_master ]]; then
          set -o allexport
          source /env/_master
          set +o allexport
        fi

        exec openshift-sdn-controller --v=${OPENSHIFT_SDN_LOG_LEVEL:-2}
      env:
      - name: KUBERNETES_SERVICE_PORT
        value: "6443"
      - name: KUBERNETES_SERVICE_HOST
        value: api-int.case03116926.lab.upshift.rdu2.redhat.com
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      name: sdn-controller
      resources:
        requests:
          cpu: 10m
          memory: 50Mi
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /env
        name: env-overrides
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-controller-token-f8nkk
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    nodeName: master-1.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      node-role.kubernetes.io/master: ""
    preemptionPolicy: PreemptLowerPriority
    priority: 2000000000
    priorityClassName: system-cluster-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext:
      runAsNonRoot: true
      runAsUser: 65534
    serviceAccount: sdn-controller
    serviceAccountName: sdn-controller
    terminationGracePeriodSeconds: 30
    tolerations:
    - effect: NoSchedule
      key: node-role.kubernetes.io/master
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/not-ready
      operator: Exists
    - effect: NoExecute
      key: node.kubernetes.io/not-ready
      operator: Exists
    - effect: NoExecute
      key: node.kubernetes.io/unreachable
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/disk-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/memory-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/pid-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/unschedulable
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/network-unavailable
      operator: Exists
    volumes:
    - configMap:
        defaultMode: 420
        name: env-overrides
        optional: true
      name: env-overrides
    - name: sdn-controller-token-f8nkk
      secret:
        defaultMode: 420
        secretName: sdn-controller-token-f8nkk
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:11Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:22Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:22Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:11Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://7f8d3f810769fdb70958b37d65b45dc5102e56fc47c0adf6d69b6a018f78da09
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: sdn-controller
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:38:21Z"
    hostIP: 10.0.95.76
    phase: Running
    podIP: 10.0.95.76
    podIPs:
    - ip: 10.0.95.76
    qosClass: Burstable
    startTime: "2022-03-08T10:38:11Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:38:15Z"
    generateName: sdn-controller-
    labels:
      app: sdn-controller
      controller-revision-hash: 67d9dbd6bd
      pod-template-generation: "1"
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:controller-revision-hash: {}
            f:pod-template-generation: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"9d97d59e-f663-4f94-bc48-f162e440e448"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"sdn-controller"}:
              .: {}
              f:command: {}
              f:env:
                .: {}
                k:{"name":"KUBERNETES_SERVICE_HOST"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"KUBERNETES_SERVICE_PORT"}:
                  .: {}
                  f:name: {}
                  f:value: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/env"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:nodeSelector:
            .: {}
            f:node-role.kubernetes.io/master: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext:
            .: {}
            f:runAsNonRoot: {}
            f:runAsUser: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"env-overrides"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
                f:optional: {}
              f:name: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:38:15Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.94.219"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:38:28Z"
    name: sdn-controller-bzqsb
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: sdn-controller
      uid: 9d97d59e-f663-4f94-bc48-f162e440e448
    resourceVersion: "5418"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/sdn-controller-bzqsb
    uid: 53e96211-3973-43a9-a301-45623d9313be
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - master-2.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        if [[ -f /env/_master ]]; then
          set -o allexport
          source /env/_master
          set +o allexport
        fi

        exec openshift-sdn-controller --v=${OPENSHIFT_SDN_LOG_LEVEL:-2}
      env:
      - name: KUBERNETES_SERVICE_PORT
        value: "6443"
      - name: KUBERNETES_SERVICE_HOST
        value: api-int.case03116926.lab.upshift.rdu2.redhat.com
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      name: sdn-controller
      resources:
        requests:
          cpu: 10m
          memory: 50Mi
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /env
        name: env-overrides
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-controller-token-f8nkk
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    nodeName: master-2.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      node-role.kubernetes.io/master: ""
    preemptionPolicy: PreemptLowerPriority
    priority: 2000000000
    priorityClassName: system-cluster-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext:
      runAsNonRoot: true
      runAsUser: 65534
    serviceAccount: sdn-controller
    serviceAccountName: sdn-controller
    terminationGracePeriodSeconds: 30
    tolerations:
    - effect: NoSchedule
      key: node-role.kubernetes.io/master
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/not-ready
      operator: Exists
    - effect: NoExecute
      key: node.kubernetes.io/not-ready
      operator: Exists
    - effect: NoExecute
      key: node.kubernetes.io/unreachable
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/disk-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/memory-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/pid-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/unschedulable
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/network-unavailable
      operator: Exists
    volumes:
    - configMap:
        defaultMode: 420
        name: env-overrides
        optional: true
      name: env-overrides
    - name: sdn-controller-token-f8nkk
      secret:
        defaultMode: 420
        secretName: sdn-controller-token-f8nkk
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:17Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:28Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:28Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:15Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://939ef5a6cc147198d5e4b6c9bf67023e4ed160b4a38ec8ce0a024517980c05df
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: sdn-controller
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:38:28Z"
    hostIP: 10.0.94.219
    phase: Running
    podIP: 10.0.94.219
    podIPs:
    - ip: 10.0.94.219
    qosClass: Burstable
    startTime: "2022-03-08T10:38:17Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2022-03-08T10:38:11Z"
    generateName: sdn-
    labels:
      app: sdn
      component: network
      controller-revision-hash: 7c6586c5cb
      openshift.io/component: network
      pod-template-generation: "1"
      type: infra
    managedFields:
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:generateName: {}
          f:labels:
            .: {}
            f:app: {}
            f:component: {}
            f:controller-revision-hash: {}
            f:openshift.io/component: {}
            f:pod-template-generation: {}
            f:type: {}
          f:ownerReferences:
            .: {}
            k:{"uid":"b00eb0b3-e2b2-46b1-b233-ccd1a93462cd"}:
              .: {}
              f:apiVersion: {}
              f:blockOwnerDeletion: {}
              f:controller: {}
              f:kind: {}
              f:name: {}
              f:uid: {}
        f:spec:
          f:affinity:
            .: {}
            f:nodeAffinity:
              .: {}
              f:requiredDuringSchedulingIgnoredDuringExecution:
                .: {}
                f:nodeSelectorTerms: {}
          f:containers:
            k:{"name":"kube-rbac-proxy"}:
              .: {}
              f:command: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:name: {}
              f:ports:
                .: {}
                k:{"containerPort":9101,"protocol":"TCP"}:
                  .: {}
                  f:containerPort: {}
                  f:hostPort: {}
                  f:name: {}
                  f:protocol: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/etc/pki/tls/metrics-certs"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
            k:{"name":"sdn"}:
              .: {}
              f:command: {}
              f:env:
                .: {}
                k:{"name":"K8S_NODE_IP"}:
                  .: {}
                  f:name: {}
                  f:valueFrom:
                    .: {}
                    f:fieldRef:
                      .: {}
                      f:apiVersion: {}
                      f:fieldPath: {}
                k:{"name":"K8S_NODE_NAME"}:
                  .: {}
                  f:name: {}
                  f:valueFrom:
                    .: {}
                    f:fieldRef:
                      .: {}
                      f:apiVersion: {}
                      f:fieldPath: {}
                k:{"name":"KUBERNETES_SERVICE_HOST"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"KUBERNETES_SERVICE_PORT"}:
                  .: {}
                  f:name: {}
                  f:value: {}
                k:{"name":"OPENSHIFT_DNS_DOMAIN"}:
                  .: {}
                  f:name: {}
                  f:value: {}
              f:image: {}
              f:imagePullPolicy: {}
              f:lifecycle:
                .: {}
                f:preStop:
                  .: {}
                  f:exec:
                    .: {}
                    f:command: {}
              f:name: {}
              f:ports:
                .: {}
                k:{"containerPort":10256,"protocol":"TCP"}:
                  .: {}
                  f:containerPort: {}
                  f:hostPort: {}
                  f:name: {}
                  f:protocol: {}
              f:readinessProbe:
                .: {}
                f:exec:
                  .: {}
                  f:command: {}
                f:failureThreshold: {}
                f:initialDelaySeconds: {}
                f:periodSeconds: {}
                f:successThreshold: {}
                f:timeoutSeconds: {}
              f:resources:
                .: {}
                f:requests:
                  .: {}
                  f:cpu: {}
                  f:memory: {}
              f:securityContext:
                .: {}
                f:privileged: {}
              f:terminationMessagePath: {}
              f:terminationMessagePolicy: {}
              f:volumeMounts:
                .: {}
                k:{"mountPath":"/config"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/env"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/etc/cni/net.d"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/etc/sysconfig"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/host"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/host/opt/cni/bin"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/host/var/run/netns"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/lib/modules"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/run/netns"}:
                  .: {}
                  f:mountPath: {}
                  f:mountPropagation: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/lib/cni/networks/openshift-sdn"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run/dbus/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/run/kubernetes/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
                k:{"mountPath":"/var/run/openshift-sdn"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                k:{"mountPath":"/var/run/openvswitch/"}:
                  .: {}
                  f:mountPath: {}
                  f:name: {}
                  f:readOnly: {}
          f:dnsPolicy: {}
          f:enableServiceLinks: {}
          f:hostNetwork: {}
          f:hostPID: {}
          f:nodeSelector:
            .: {}
            f:kubernetes.io/os: {}
          f:priorityClassName: {}
          f:restartPolicy: {}
          f:schedulerName: {}
          f:securityContext: {}
          f:serviceAccount: {}
          f:serviceAccountName: {}
          f:terminationGracePeriodSeconds: {}
          f:tolerations: {}
          f:volumes:
            .: {}
            k:{"name":"config"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
              f:name: {}
            k:{"name":"env-overrides"}:
              .: {}
              f:configMap:
                .: {}
                f:defaultMode: {}
                f:name: {}
                f:optional: {}
              f:name: {}
            k:{"name":"etc-sysconfig"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-cni-bin"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-cni-conf"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-modules"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-run-netns"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-slash"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-lib-cni-networks-openshift-sdn"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-dbus"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-kubernetes"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-netns"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-openshift-sdn"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"host-var-run-ovs"}:
              .: {}
              f:hostPath:
                .: {}
                f:path: {}
                f:type: {}
              f:name: {}
            k:{"name":"sdn-metrics-certs"}:
              .: {}
              f:name: {}
              f:secret:
                .: {}
                f:defaultMode: {}
                f:optional: {}
                f:secretName: {}
      manager: kube-controller-manager
      operation: Update
      time: "2022-03-08T10:38:11Z"
    - apiVersion: v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:conditions:
            k:{"type":"ContainersReady"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Initialized"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
            k:{"type":"Ready"}:
              .: {}
              f:lastProbeTime: {}
              f:lastTransitionTime: {}
              f:status: {}
              f:type: {}
          f:containerStatuses: {}
          f:hostIP: {}
          f:phase: {}
          f:podIP: {}
          f:podIPs:
            .: {}
            k:{"ip":"10.0.94.119"}:
              .: {}
              f:ip: {}
          f:startTime: {}
      manager: kubelet
      operation: Update
      time: "2022-03-08T10:38:28Z"
    name: sdn-hjzkb
    namespace: openshift-sdn
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: sdn
      uid: b00eb0b3-e2b2-46b1-b233-ccd1a93462cd
    resourceVersion: "5409"
    selfLink: /api/v1/namespaces/openshift-sdn/pods/sdn-hjzkb
    uid: b352ab33-725f-4277-8c1c-75a9eee1442e
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - master-0.case03116926.lab.upshift.rdu2.redhat.com
    containers:
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail

        # if another process is listening on the cni-server socket, wait until it exits
        trap 'kill $(jobs -p); rm -f /etc/cni/net.d/80-openshift-network.conf ; exit 0' TERM
        retries=0
        while true; do
          if echo 'test' | socat - UNIX-CONNECT:/var/run/openshift-sdn/cniserver/socket &>/dev/null; then
            echo "warning: Another process is currently listening on the CNI socket, waiting 15s ..." 2>&1
            sleep 15 & wait
            (( retries += 1 ))
          else
            break
          fi
          if [[ "${retries}" -gt 40 ]]; then
            echo "error: Another process is currently listening on the CNI socket, exiting" 2>&1
            exit 1
          fi
        done

        # local environment overrides
        if [[ -f /etc/sysconfig/openshift-sdn ]]; then
          set -o allexport
          source /etc/sysconfig/openshift-sdn
          set +o allexport
        fi
        #BUG: cdc accidentally mounted /etc/sysconfig/openshift-sdn as DirectoryOrCreate; clean it up so we can ultimately mount /etc/sysconfig/openshift-sdn as FileOrCreate
        # Once this is released, then we can mount it properly
        if [[ -d /etc/sysconfig/openshift-sdn ]]; then
          rmdir /etc/sysconfig/openshift-sdn || true
        fi

        # configmap-based overrides
        if [[ -f /env/${K8S_NODE_NAME} ]]; then
          set -o allexport
          source /env/${K8S_NODE_NAME}
          set +o allexport
        fi

        # Take over network functions on the node
        rm -f /etc/cni/net.d/80-openshift-network.conf
        cp -f /opt/cni/bin/openshift-sdn /host/opt/cni/bin/

        # Launch the network process
        exec /usr/bin/openshift-sdn-node \
          --node-name ${K8S_NODE_NAME} --node-ip ${K8S_NODE_IP} \
          --proxy-config /config/kube-proxy-config.yaml \
          --v ${OPENSHIFT_SDN_LOG_LEVEL:-2}
      env:
      - name: KUBERNETES_SERVICE_PORT
        value: "6443"
      - name: KUBERNETES_SERVICE_HOST
        value: api-int.case03116926.lab.upshift.rdu2.redhat.com
      - name: OPENSHIFT_DNS_DOMAIN
        value: cluster.local
      - name: K8S_NODE_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: spec.nodeName
      - name: K8S_NODE_IP
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: status.hostIP
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imagePullPolicy: IfNotPresent
      lifecycle:
        preStop:
          exec:
            command:
            - rm
            - -f
            - /etc/cni/net.d/80-openshift-network.conf
            - /host/opt/cni/bin/openshift-sdn
      name: sdn
      ports:
      - containerPort: 10256
        hostPort: 10256
        name: healthz
        protocol: TCP
      readinessProbe:
        exec:
          command:
          - test
          - -f
          - /etc/cni/net.d/80-openshift-network.conf
        failureThreshold: 3
        initialDelaySeconds: 5
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 1
      resources:
        requests:
          cpu: 100m
          memory: 200Mi
      securityContext:
        privileged: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /config
        name: config
        readOnly: true
      - mountPath: /env
        name: env-overrides
      - mountPath: /var/run
        name: host-var-run
      - mountPath: /var/run/dbus/
        name: host-var-run-dbus
        readOnly: true
      - mountPath: /var/run/openvswitch/
        name: host-var-run-ovs
        readOnly: true
      - mountPath: /var/run/kubernetes/
        name: host-var-run-kubernetes
        readOnly: true
      - mountPath: /run/netns
        mountPropagation: HostToContainer
        name: host-run-netns
        readOnly: true
      - mountPath: /host/var/run/netns
        mountPropagation: HostToContainer
        name: host-var-run-netns
        readOnly: true
      - mountPath: /var/run/openshift-sdn
        name: host-var-run-openshift-sdn
      - mountPath: /host
        mountPropagation: HostToContainer
        name: host-slash
        readOnly: true
      - mountPath: /host/opt/cni/bin
        name: host-cni-bin
      - mountPath: /etc/cni/net.d
        name: host-cni-conf
      - mountPath: /var/lib/cni/networks/openshift-sdn
        name: host-var-lib-cni-networks-openshift-sdn
      - mountPath: /lib/modules
        name: host-modules
        readOnly: true
      - mountPath: /etc/sysconfig
        name: etc-sysconfig
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    - command:
      - /bin/bash
      - -c
      - |
        #!/bin/bash
        set -euo pipefail
        TLS_PK=/etc/pki/tls/metrics-certs/tls.key
        TLS_CERT=/etc/pki/tls/metrics-certs/tls.crt

        # As the secret mount is optional we must wait for the files to be present.
        # The service is created in monitor.yaml and this is created in sdn.yaml.
        # If it isn't created there is probably an issue so we want to crashloop.
        TS=$(date +%s)
        WARN_TS=$(( ${TS} + $(( 20 * 60)) ))
        HAS_LOGGED_INFO=0

        log_missing_certs(){
            CUR_TS=$(date +%s)
            if [[ "${CUR_TS}" -gt "WARN_TS"  ]]; then
              echo $(date -Iseconds) WARN: sdn-metrics-certs not mounted after 20 minutes.
            elif [[ "${HAS_LOGGED_INFO}" -eq 0 ]] ; then
              echo $(date -Iseconds) INFO: sdn-metrics-certs not mounted. Waiting 20 minutes.
              HAS_LOGGED_INFO=1
            fi
        }

        while [[ ! -f "${TLS_PK}" ||  ! -f "${TLS_CERT}" ]] ; do
          log_missing_certs
          sleep 5
        done

        echo $(date -Iseconds) INFO: sdn-metrics-certs mounted, starting kube-rbac-proxy
        exec /usr/bin/kube-rbac-proxy \
          --logtostderr \
          --secure-listen-address=:9101 \
          --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 \
          --upstream=http://127.0.0.1:29101/ \
          --tls-private-key-file=${TLS_PK} \
          --tls-cert-file=${TLS_CERT}
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      imagePullPolicy: IfNotPresent
      name: kube-rbac-proxy
      ports:
      - containerPort: 9101
        hostPort: 9101
        name: https
        protocol: TCP
      resources:
        requests:
          cpu: 10m
          memory: 20Mi
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: FallbackToLogsOnError
      volumeMounts:
      - mountPath: /etc/pki/tls/metrics-certs
        name: sdn-metrics-certs
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: sdn-token-45pnf
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    hostPID: true
    nodeName: master-0.case03116926.lab.upshift.rdu2.redhat.com
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 2000001000
    priorityClassName: system-node-critical
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: sdn
    serviceAccountName: sdn
    terminationGracePeriodSeconds: 30
    tolerations:
    - operator: Exists
    volumes:
    - configMap:
        defaultMode: 420
        name: sdn-config
      name: config
    - configMap:
        defaultMode: 420
        name: env-overrides
        optional: true
      name: env-overrides
    - hostPath:
        path: /etc/sysconfig
        type: ""
      name: etc-sysconfig
    - hostPath:
        path: /lib/modules
        type: ""
      name: host-modules
    - hostPath:
        path: /var/run
        type: ""
      name: host-var-run
    - hostPath:
        path: /run/netns
        type: ""
      name: host-run-netns
    - hostPath:
        path: /var/run/netns
        type: ""
      name: host-var-run-netns
    - hostPath:
        path: /var/run/dbus
        type: ""
      name: host-var-run-dbus
    - hostPath:
        path: /var/run/openvswitch
        type: ""
      name: host-var-run-ovs
    - hostPath:
        path: /var/run/kubernetes
        type: ""
      name: host-var-run-kubernetes
    - hostPath:
        path: /var/run/openshift-sdn
        type: ""
      name: host-var-run-openshift-sdn
    - hostPath:
        path: /
        type: ""
      name: host-slash
    - hostPath:
        path: /var/lib/cni/bin
        type: ""
      name: host-cni-bin
    - hostPath:
        path: /var/run/multus/cni/net.d
        type: ""
      name: host-cni-conf
    - hostPath:
        path: /var/lib/cni/networks/openshift-sdn
        type: ""
      name: host-var-lib-cni-networks-openshift-sdn
    - name: sdn-metrics-certs
      secret:
        defaultMode: 420
        optional: true
        secretName: sdn-metrics-certs
    - name: sdn-token-45pnf
      secret:
        defaultMode: 420
        secretName: sdn-token-45pnf
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:11Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:28Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:28Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2022-03-08T10:38:11Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: cri-o://53ababec97e04967302e95abce0ab191dddd989f945df478147ef60d25d90109
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:533973e0b3b8e64b0fd672a78ebabc5accc5f9a969c6a610ce14aa73d9685874
      lastState: {}
      name: kube-rbac-proxy
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:38:23Z"
    - containerID: cri-o://a8747b3c35112e68a9caf0358f3c07c6aff211f0199dcdd5bb01f332dc4e5b07
      image: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:980d20b31cdcd9db0a94e393b53799985ea399bbe8dbd552bf2e27e32cf0be7e
      lastState: {}
      name: sdn
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2022-03-08T10:38:21Z"
    hostIP: 10.0.94.119
    phase: Running
    podIP: 10.0.94.119
    podIPs:
    - ip: 10.0.94.119
    qosClass: Burstable
    startTime: "2022-03-08T10:38:11Z"
kind: PodList
metadata:
  resourceVersion: "83121"
  selfLink: /api/v1/namespaces/openshift-sdn/pods
