{
  "kind": "Pod",
  "apiVersion": "v1",
  "metadata": {
    "name": "downloads-7644b6f88d-gdpqq",
    "generateName": "downloads-7644b6f88d-",
    "namespace": "openshift-console",
    "uid": "c8f2bf7c-697e-48d8-aec0-2132c45277ec",
    "resourceVersion": "151566490",
    "generation": 1,
    "creationTimestamp": "2026-03-01T11:10:22Z",
    "labels": {
      "app": "console",
      "component": "downloads",
      "pod-template-hash": "7644b6f88d"
    },
    "annotations": {
      "k8s.ovn.org/pod-networks": "{\"default\":{\"ip_addresses\":[\"10.128.0.173/23\"],\"mac_address\":\"0a:58:0a:80:00:ad\",\"gateway_ips\":[\"10.128.0.1\"],\"routes\":[{\"dest\":\"10.128.0.0/14\",\"nextHop\":\"10.128.0.1\"},{\"dest\":\"172.30.0.0/16\",\"nextHop\":\"10.128.0.1\"},{\"dest\":\"169.254.0.5/32\",\"nextHop\":\"10.128.0.1\"},{\"dest\":\"100.64.0.0/16\",\"nextHop\":\"10.128.0.1\"}],\"ip_address\":\"10.128.0.173/23\",\"gateway_ip\":\"10.128.0.1\",\"role\":\"primary\"}}",
      "k8s.v1.cni.cncf.io/network-status": "[{\n    \"name\": \"ovn-kubernetes\",\n    \"interface\": \"eth0\",\n    \"ips\": [\n        \"10.128.0.173\"\n    ],\n    \"mac\": \"0a:58:0a:80:00:ad\",\n    \"default\": true,\n    \"dns\": {}\n}]",
      "openshift.io/required-scc": "restricted-v2",
      "openshift.io/scc": "restricted-v2",
      "seccomp.security.alpha.kubernetes.io/pod": "runtime/default",
      "security.openshift.io/validated-scc-subject-type": "user"
    },
    "ownerReferences": [
      {
        "apiVersion": "apps/v1",
        "kind": "ReplicaSet",
        "name": "downloads-7644b6f88d",
        "uid": "fd70f3f5-f59e-417c-88c3-b58193901b98",
        "controller": true,
        "blockOwnerDeletion": true
      }
    ],
    "managedFields": [
      {
        "manager": "kube-controller-manager",
        "operation": "Update",
        "apiVersion": "v1",
        "time": "2026-03-01T11:10:22Z",
        "fieldsType": "FieldsV1",
        "fieldsV1": {
          "f:metadata": {
            "f:annotations": {
              ".": {},
              "f:openshift.io/required-scc": {},
              "f:target.workload.openshift.io/management": {}
            },
            "f:generateName": {},
            "f:labels": {
              ".": {},
              "f:app": {},
              "f:component": {},
              "f:pod-template-hash": {}
            },
            "f:ownerReferences": {
              ".": {},
              "k:{\"uid\":\"fd70f3f5-f59e-417c-88c3-b58193901b98\"}": {}
            }
          },
          "f:spec": {
            "f:affinity": {},
            "f:containers": {
              "k:{\"name\":\"download-server\"}": {
                ".": {},
                "f:args": {},
                "f:command": {},
                "f:image": {},
                "f:imagePullPolicy": {},
                "f:livenessProbe": {
                  ".": {},
                  "f:failureThreshold": {},
                  "f:httpGet": {
                    ".": {},
                    "f:path": {},
                    "f:port": {},
                    "f:scheme": {}
                  },
                  "f:periodSeconds": {},
                  "f:successThreshold": {},
                  "f:timeoutSeconds": {}
                },
                "f:name": {},
                "f:ports": {
                  ".": {},
                  "k:{\"containerPort\":8080,\"protocol\":\"TCP\"}": {
                    ".": {},
                    "f:containerPort": {},
                    "f:name": {},
                    "f:protocol": {}
                  }
                },
                "f:readinessProbe": {
                  ".": {},
                  "f:failureThreshold": {},
                  "f:httpGet": {
                    ".": {},
                    "f:path": {},
                    "f:port": {},
                    "f:scheme": {}
                  },
                  "f:periodSeconds": {},
                  "f:successThreshold": {},
                  "f:timeoutSeconds": {}
                },
                "f:resources": {
                  ".": {},
                  "f:requests": {
                    ".": {},
                    "f:cpu": {},
                    "f:memory": {}
                  }
                },
                "f:securityContext": {
                  ".": {},
                  "f:allowPrivilegeEscalation": {},
                  "f:capabilities": {
                    ".": {},
                    "f:drop": {}
                  },
                  "f:readOnlyRootFilesystem": {}
                },
                "f:terminationMessagePath": {},
                "f:terminationMessagePolicy": {}
              }
            },
            "f:dnsPolicy": {},
            "f:enableServiceLinks": {},
            "f:nodeSelector": {},
            "f:priorityClassName": {},
            "f:restartPolicy": {},
            "f:schedulerName": {},
            "f:securityContext": {
              ".": {},
              "f:runAsNonRoot": {},
              "f:seccompProfile": {
                ".": {},
                "f:type": {}
              }
            },
            "f:terminationGracePeriodSeconds": {},
            "f:tolerations": {}
          }
        }
      },
      {
        "manager": "master-0",
        "operation": "Update",
        "apiVersion": "v1",
        "time": "2026-03-01T11:10:22Z",
        "fieldsType": "FieldsV1",
        "fieldsV1": {
          "f:metadata": {
            "f:annotations": {
              "f:k8s.ovn.org/pod-networks": {}
            }
          }
        },
        "subresource": "status"
      },
      {
        "manager": "multus-daemon",
        "operation": "Update",
        "apiVersion": "v1",
        "time": "2026-03-01T11:52:03Z",
        "fieldsType": "FieldsV1",
        "fieldsV1": {
          "f:metadata": {
            "f:annotations": {
              "f:k8s.v1.cni.cncf.io/network-status": {}
            }
          }
        },
        "subresource": "status"
      },
      {
        "manager": "kubelet",
        "operation": "Update",
        "apiVersion": "v1",
        "time": "2026-03-01T11:53:08Z",
        "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\":\"PodReadyToStartContainers\"}": {
                ".": {},
                "f:lastProbeTime": {},
                "f:lastTransitionTime": {},
                "f:status": {},
                "f:type": {}
              },
              "k:{\"type\":\"Ready\"}": {
                ".": {},
                "f:lastProbeTime": {},
                "f:lastTransitionTime": {},
                "f:status": {},
                "f:type": {}
              }
            },
            "f:containerStatuses": {},
            "f:hostIP": {},
            "f:hostIPs": {},
            "f:phase": {},
            "f:podIP": {},
            "f:podIPs": {
              ".": {},
              "k:{\"ip\":\"10.128.0.173\"}": {
                ".": {},
                "f:ip": {}
              }
            },
            "f:startTime": {}
          }
        },
        "subresource": "status"
      }
    ]
  },
  "spec": {
    "volumes": [
      {
        "name": "kube-api-access-qj2gh",
        "projected": {
          "sources": [
            {
              "serviceAccountToken": {
                "expirationSeconds": 3607,
                "path": "token"
              }
            },
            {
              "configMap": {
                "name": "kube-root-ca.crt",
                "items": [
                  {
                    "key": "ca.crt",
                    "path": "ca.crt"
                  }
                ]
              }
            },
            {
              "downwardAPI": {
                "items": [
                  {
                    "path": "namespace",
                    "fieldRef": {
                      "apiVersion": "v1",
                      "fieldPath": "metadata.namespace"
                    }
                  }
                ]
              }
            },
            {
              "configMap": {
                "name": "openshift-service-ca.crt",
                "items": [
                  {
                    "key": "service-ca.crt",
                    "path": "service-ca.crt"
                  }
                ]
              }
            }
          ],
          "defaultMode": 420
        }
      }
    ],
    "containers": [
      {
        "name": "download-server",
        "image": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:7aca367821614925d35e1b466169afbd7812a3cbceac19dbd8be18aef943a272",
        "command": [
          "/bin/sh"
        ],
        "args": [
          "-c",
          "cat \u003c\u003cEOF \u003e/tmp/serve.py\nimport errno, http.server, os, re, signal, socket, sys, tarfile, tempfile, threading, time, zipfile\n\ndef shutdown_handler(signum, frame):\n  print(\"Received signal {}, shutting down...\".format(signum), flush=True)\n  os._exit(0)\nsignal.signal(signal.SIGTERM, shutdown_handler)\n\ndef write_index(path, message):\n  with open(path, 'wb') as f:\n    f.write('\\n'.join([\n      '\u003c!doctype html\u003e',\n      '\u003chtml lang=\"en\"\u003e',\n      '\u003chead\u003e',\n      '  \u003cmeta charset=\"utf-8\"\u003e',\n      '\u003c/head\u003e',\n      '\u003cbody\u003e',\n      '  {}'.format(message),\n      '\u003c/body\u003e',\n      '\u003c/html\u003e',\n      '',\n    ]).encode('utf-8'))\n\n# Launch multiple listeners as threads\nclass Thread(threading.Thread):\n  def __init__(self, i, socket):\n    threading.Thread.__init__(self)\n    self.i = i\n    self.socket = socket\n    self.daemon = True\n    self.start()\n\n  def run(self):\n    server = http.server.SimpleHTTPRequestHandler\n    server.server_version = \"OpenShift Downloads Server\"\n    server.sys_version = \"\"\n    httpd = http.server.HTTPServer(addr, server, False)\n\n    # Prevent the HTTP server from re-binding every handler.\n    # https://stackoverflow.com/questions/46210672/\n    httpd.socket = self.socket\n    httpd.server_bind = self.server_close = lambda self: None\n\n    httpd.serve_forever()\n\nprint('Starting downloads server...', flush=True)\ntemp_dir = tempfile.mkdtemp()\nprint('Serving from: {}'.format(temp_dir), flush=True)\nos.chdir(temp_dir)\n\nprint('Creating arch directories...', flush=True)\nfor arch in ['amd64', 'arm64', 'ppc64le', 's390x']:\n  os.mkdir(arch)\n\ncontent = ['\u003ca href=\"oc-license\"\u003elicense\u003c/a\u003e']\nprint('Creating license symlink...', flush=True)\nos.symlink('/usr/share/openshift/LICENSE', 'oc-license')\n\n# Function to create archives in background\ndef create_archives_async(arch, operating_system, path, basename, archive_path_root):\n  try:\n    print('  [Background] Creating archives for {} {}...'.format(arch, operating_system), flush=True)\n    \n    print('    [Background] Creating tar archive...', flush=True)\n    with tarfile.open('{}.tar'.format(archive_path_root), 'w') as tar:\n      tar.add(path, basename)\n    \n    print('    [Background] Creating zip archive...', flush=True)\n    with zipfile.ZipFile('{}.zip'.format(archive_path_root), 'w') as zip:\n      zip.write(path, basename)\n    \n    print('  [Background] Done with archives for {} {}'.format(arch, operating_system), flush=True)\n  except Exception as e:\n    print('  [Background] ERROR creating archives for {} {}: {}'.format(arch, operating_system, str(e)), flush=True)\n\nprint('Creating oc binary symlinks (archives will be created asynchronously)...', flush=True)\narchive_threads = []\n\nfor arch, operating_system, path in [\n    ('amd64', 'linux', '/usr/share/openshift/linux_amd64/oc'),\n    ('amd64', 'mac', '/usr/share/openshift/mac/oc'),\n    ('amd64', 'windows', '/usr/share/openshift/windows/oc.exe'),\n    ('arm64', 'linux', '/usr/share/openshift/linux_arm64/oc'),\n    ('arm64', 'mac', '/usr/share/openshift/mac_arm64/oc'),\n    ('ppc64le', 'linux', '/usr/share/openshift/linux_ppc64le/oc'),\n    ('s390x', 'linux', '/usr/share/openshift/linux_s390x/oc'),\n    ]:\n  try:\n    print('  Processing {} {} ({})...'.format(arch, operating_system, path), flush=True)\n    \n    # Check if source file exists\n    if not os.path.exists(path):\n      print('    WARNING: {} does not exist, skipping'.format(path), flush=True)\n      continue\n    \n    file_size = os.path.getsize(path)\n    print('    Source file size: {} MB'.format(file_size // (1024*1024)), flush=True)\n    \n    basename = os.path.basename(path)\n    target_path = os.path.join(arch, operating_system, basename)\n    \n    print('    Creating directory...', flush=True)\n    os.mkdir(os.path.join(arch, operating_system))\n    \n    print('    Creating symlink...', flush=True)\n    os.symlink(path, target_path)\n    \n    base_root, _ = os.path.splitext(basename)\n    archive_path_root = os.path.join(arch, operating_system, base_root)\n    \n    # Start background thread to create archives\n    archive_thread = threading.Thread(\n      target=create_archives_async,\n      args=(arch, operating_system, path, basename, archive_path_root),\n      daemon=True\n    )\n    archive_thread.start()\n    archive_threads.append(archive_thread)\n    \n    content.append(\n      '\u003ca href=\"{0}\"\u003eoc ({1} {2})\u003c/a\u003e (\u003ca href=\"{3}.tar\"\u003etar\u003c/a\u003e \u003ca href=\"{3}.zip\"\u003ezip\u003c/a\u003e)'.format(\n        target_path, arch, operating_system, archive_path_root\n      )\n    )\n    print('  Done with {} {} (archives creating in background)'.format(arch, operating_system), flush=True)\n  except Exception as e:\n    print('  ERROR processing {} {}: {}'.format(arch, operating_system, str(e)), flush=True)\n\nprint('All symlinks created. {} background threads creating archives...'.format(len(archive_threads)), flush=True)\n\nfor root, directories, filenames in os.walk(temp_dir):\n  root_link = os.path.relpath(temp_dir, os.path.join(root, 'child')).replace(os.path.sep, '/')\n  for directory in directories:\n    write_index(\n      path=os.path.join(root, directory, 'index.html'),\n      message='\u003cp\u003eDirectory listings are disabled.  See \u003ca href=\"{}\"\u003ehere\u003c/a\u003e for available content.\u003c/p\u003e'.format(root_link),\n    )\n\nwrite_index(\n  path=os.path.join(temp_dir, 'index.html'),\n  message='\\n'.join(\n    ['\u003cp\u003e\u003cem\u003eNote: Archive files (.tar, .zip) are generated on server startup and may take a few moments to become available.\u003c/em\u003e\u003c/p\u003e'] +\n    ['\u003cul\u003e'] +\n    ['  \u003cli\u003e{}\u003c/li\u003e'.format(entry) for entry in content] +\n    ['\u003c/ul\u003e']\n  ),\n)\n\n# Create socket\n# IPv6 should handle IPv4 passively so long as it is not bound to a\n# specific address or set to IPv6_ONLY\n# https://stackoverflow.com/questions/25817848/python-3-does-http-server-support-ipv6\ntry:\n  addr = ('::', 8080)\n  sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)\nexcept socket.error as err:\n  # errno.EAFNOSUPPORT is \"socket.error: [Errno 97] Address family not supported by protocol\"\n  # When IPv6 is disabled, socket will bind using IPv4.\n  if err.errno == errno.EAFNOSUPPORT:\n    addr = ('', 8080)\n    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n  else:\n    raise    \nsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)\nprint('Binding to {}...'.format(addr), flush=True)\nsock.bind(addr)\nsock.listen(5)\n\nprint('Starting 100 worker threads...', flush=True)\n[Thread(i, socket=sock) for i in range(100)]\nprint('Server ready on port 8080!', flush=True)\ntime.sleep(9e9)\nEOF\nexec python3 /tmp/serve.py\n"
        ],
        "ports": [
          {
            "name": "http",
            "containerPort": 8080,
            "protocol": "TCP"
          }
        ],
        "resources": {
          "requests": {
            "cpu": "10m",
            "memory": "50Mi"
          }
        },
        "volumeMounts": [
          {
            "name": "kube-api-access-qj2gh",
            "readOnly": true,
            "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount"
          }
        ],
        "livenessProbe": {
          "httpGet": {
            "path": "/",
            "port": 8080,
            "scheme": "HTTP"
          },
          "timeoutSeconds": 1,
          "periodSeconds": 10,
          "successThreshold": 1,
          "failureThreshold": 3
        },
        "readinessProbe": {
          "httpGet": {
            "path": "/",
            "port": 8080,
            "scheme": "HTTP"
          },
          "timeoutSeconds": 1,
          "periodSeconds": 10,
          "successThreshold": 1,
          "failureThreshold": 3
        },
        "terminationMessagePath": "/dev/termination-log",
        "terminationMessagePolicy": "FallbackToLogsOnError",
        "imagePullPolicy": "IfNotPresent",
        "securityContext": {
          "capabilities": {
            "drop": [
              "ALL"
            ]
          },
          "runAsUser": 1000700000,
          "readOnlyRootFilesystem": false,
          "allowPrivilegeEscalation": false
        }
      }
    ],
    "restartPolicy": "Always",
    "terminationGracePeriodSeconds": 5,
    "dnsPolicy": "ClusterFirst",
    "nodeSelector": {
      "kubernetes.io/os": "linux",
      "node-role.kubernetes.io/master": ""
    },
    "serviceAccountName": "default",
    "serviceAccount": "default",
    "nodeName": "master-0",
    "securityContext": {
      "seLinuxOptions": {
        "level": "s0:c26,c25"
      },
      "runAsNonRoot": true,
      "fsGroup": 1000700000,
      "seccompProfile": {
        "type": "RuntimeDefault"
      }
    },
    "imagePullSecrets": [
      {
        "name": "default-dockercfg-k7bb9"
      }
    ],
    "affinity": {},
    "schedulerName": "default-scheduler",
    "tolerations": [
      {
        "key": "node-role.kubernetes.io/master",
        "operator": "Exists",
        "effect": "NoSchedule"
      },
      {
        "key": "node.kubernetes.io/unreachable",
        "operator": "Exists",
        "effect": "NoExecute",
        "tolerationSeconds": 120
      },
      {
        "key": "node.kubernetes.io/not-ready",
        "operator": "Exists",
        "effect": "NoExecute",
        "tolerationSeconds": 300
      },
      {
        "key": "node.kubernetes.io/memory-pressure",
        "operator": "Exists",
        "effect": "NoSchedule"
      }
    ],
    "priorityClassName": "system-cluster-critical",
    "priority": 2000000000,
    "enableServiceLinks": true,
    "preemptionPolicy": "PreemptLowerPriority"
  },
  "status": {
    "phase": "Running",
    "conditions": [
      {
        "type": "PodReadyToStartContainers",
        "status": "True",
        "lastProbeTime": null,
        "lastTransitionTime": "2026-03-01T11:52:25Z"
      },
      {
        "type": "Initialized",
        "status": "True",
        "lastProbeTime": null,
        "lastTransitionTime": "2026-03-01T11:10:22Z"
      },
      {
        "type": "Ready",
        "status": "True",
        "lastProbeTime": null,
        "lastTransitionTime": "2026-03-01T11:52:26Z"
      },
      {
        "type": "ContainersReady",
        "status": "True",
        "lastProbeTime": null,
        "lastTransitionTime": "2026-03-01T11:52:26Z"
      },
      {
        "type": "PodScheduled",
        "status": "True",
        "lastProbeTime": null,
        "lastTransitionTime": "2026-03-01T11:10:22Z"
      }
    ],
    "hostIP": "193.176.244.127",
    "hostIPs": [
      {
        "ip": "193.176.244.127"
      }
    ],
    "podIP": "10.128.0.173",
    "podIPs": [
      {
        "ip": "10.128.0.173"
      }
    ],
    "startTime": "2026-03-01T11:10:22Z",
    "containerStatuses": [
      {
        "name": "download-server",
        "state": {
          "running": {
            "startedAt": "2026-03-01T11:52:24Z"
          }
        },
        "lastState": {},
        "ready": true,
        "restartCount": 1,
        "image": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:7aca367821614925d35e1b466169afbd7812a3cbceac19dbd8be18aef943a272",
        "imageID": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:7aca367821614925d35e1b466169afbd7812a3cbceac19dbd8be18aef943a272",
        "containerID": "cri-o://bc4bddd80f6337462a1238e3b3fee45d1a63bc8a6224567342c12fc2ebf96272",
        "started": true,
        "allocatedResources": {
          "cpu": "10m",
          "memory": "50Mi"
        },
        "resources": {
          "requests": {
            "cpu": "10m",
            "memory": "50Mi"
          }
        },
        "volumeMounts": [
          {
            "name": "kube-api-access-qj2gh",
            "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount",
            "readOnly": true,
            "recursiveReadOnly": "Disabled"
          }
        ],
        "user": {
          "linux": {
            "uid": 1000700000,
            "gid": 0,
            "supplementalGroups": [
              0,
              1000700000
            ]
          }
        }
      }
    ],
    "qosClass": "Burstable"
  }
}