diff --git a/bindata/assets/deployments/downloads-deployment.yaml b/bindata/assets/deployments/downloads-deployment.yaml index ffb4dc49c..ad0259a6f 100644 --- a/bindata/assets/deployments/downloads-deployment.yaml +++ b/bindata/assets/deployments/downloads-deployment.yaml @@ -154,12 +154,20 @@ spec: for arch, operating_system, path in [ ('amd64', 'linux', '/usr/share/openshift/linux_amd64/oc'), + ('amd64', 'linux', '/usr/share/openshift/linux_amd64/oc.rhel8'), + ('amd64', 'linux', '/usr/share/openshift/linux_amd64/oc.rhel9'), ('amd64', 'mac', '/usr/share/openshift/mac/oc'), ('amd64', 'windows', '/usr/share/openshift/windows/oc.exe'), ('arm64', 'linux', '/usr/share/openshift/linux_arm64/oc'), + ('arm64', 'linux', '/usr/share/openshift/linux_arm64/oc.rhel8'), + ('arm64', 'linux', '/usr/share/openshift/linux_arm64/oc.rhel9'), ('arm64', 'mac', '/usr/share/openshift/mac_arm64/oc'), ('ppc64le', 'linux', '/usr/share/openshift/linux_ppc64le/oc'), + ('ppc64le', 'linux', '/usr/share/openshift/linux_ppc64le/oc.rhel8'), + ('ppc64le', 'linux', '/usr/share/openshift/linux_ppc64le/oc.rhel9'), ('s390x', 'linux', '/usr/share/openshift/linux_s390x/oc'), + ('s390x', 'linux', '/usr/share/openshift/linux_s390x/oc.rhel8'), + ('s390x', 'linux', '/usr/share/openshift/linux_s390x/oc.rhel9'), ]: try: print(' Processing {} {} ({})...'.format(arch, operating_system, path), flush=True) @@ -176,12 +184,16 @@ spec: target_path = os.path.join(arch, operating_system, basename) print(' Creating directory...', flush=True) - os.mkdir(os.path.join(arch, operating_system)) + os.makedirs(os.path.join(arch, operating_system), exist_ok=True) print(' Creating symlink...', flush=True) os.symlink(path, target_path) - base_root, _ = os.path.splitext(basename) + # Only strip .exe extension, keep everything else (e.g., oc.rhel8 stays oc.rhel8) + if basename.endswith('.exe'): + base_root = basename[:-4] + else: + base_root = basename archive_path_root = os.path.join(arch, operating_system, base_root) # Start background thread to create archives diff --git a/pkg/console/controllers/clidownloads/controller.go b/pkg/console/controllers/clidownloads/controller.go index 6bf0eea8c..79ea6f70f 100644 --- a/pkg/console/controllers/clidownloads/controller.go +++ b/pkg/console/controllers/clidownloads/controller.go @@ -177,12 +177,20 @@ func PlatformBasedOCConsoleCLIDownloads(host, cliDownloadsName string) *v1.Conso archType string }{ {"Linux for x86_64", "amd64/linux", "oc.tar"}, + {"Linux for x86_64 - RHEL 8", "amd64/linux", "oc.rhel8.tar"}, + {"Linux for x86_64 - RHEL 9", "amd64/linux", "oc.rhel9.tar"}, {"Mac for x86_64", "amd64/mac", "oc.zip"}, {"Windows for x86_64", "amd64/windows", "oc.zip"}, {"Linux for ARM 64", "arm64/linux", "oc.tar"}, + {"Linux for ARM 64 - RHEL 8", "arm64/linux", "oc.rhel8.tar"}, + {"Linux for ARM 64 - RHEL 9", "arm64/linux", "oc.rhel9.tar"}, {"Mac for ARM 64", "arm64/mac", "oc.zip"}, {"Linux for IBM Power, little endian", "ppc64le/linux", "oc.tar"}, + {"Linux for IBM Power, little endian - RHEL 8", "ppc64le/linux", "oc.rhel8.tar"}, + {"Linux for IBM Power, little endian - RHEL 9", "ppc64le/linux", "oc.rhel9.tar"}, {"Linux for IBM Z", "s390x/linux", "oc.tar"}, + {"Linux for IBM Z - RHEL 8", "s390x/linux", "oc.rhel8.tar"}, + {"Linux for IBM Z - RHEL 9", "s390x/linux", "oc.rhel9.tar"}, } links := []v1.CLIDownloadLink{} @@ -205,7 +213,7 @@ func PlatformBasedOCConsoleCLIDownloads(host, cliDownloadsName string) *v1.Conso Spec: v1.ConsoleCLIDownloadSpec{ Description: `With the OpenShift command line interface, you can create applications and manage OpenShift projects from a terminal. -The oc binary offers the same capabilities as the kubectl binary, but it is further extended to natively support OpenShift Container Platform features. +The oc binary offers the same capabilities as the kubectl binary, but it is further extended to natively support OpenShift Container Platform features. You can download oc using the following links. `, DisplayName: "oc - OpenShift Command Line Interface (CLI)", Links: links, diff --git a/pkg/console/controllers/clidownloads/controller_test.go b/pkg/console/controllers/clidownloads/controller_test.go index b67751aba..d2f85631f 100644 --- a/pkg/console/controllers/clidownloads/controller_test.go +++ b/pkg/console/controllers/clidownloads/controller_test.go @@ -116,7 +116,7 @@ func TestPlatformBasedOCConsoleCLIDownloads(t *testing.T) { Spec: v1.ConsoleCLIDownloadSpec{ Description: `With the OpenShift command line interface, you can create applications and manage OpenShift projects from a terminal. -The oc binary offers the same capabilities as the kubectl binary, but it is further extended to natively support OpenShift Container Platform features. +The oc binary offers the same capabilities as the kubectl binary, but it is further extended to natively support OpenShift Container Platform features. You can download oc using the following links. `, DisplayName: "oc - OpenShift Command Line Interface (CLI)", Links: []v1.CLIDownloadLink{ @@ -124,6 +124,14 @@ The oc binary offers the same capabilities as the kubectl binary, but it is furt Href: "https://www.example.com/amd64/linux/oc.tar", Text: "Download oc for Linux for x86_64", }, + { + Href: "https://www.example.com/amd64/linux/oc.rhel8.tar", + Text: "Download oc for Linux for x86_64 - RHEL 8", + }, + { + Href: "https://www.example.com/amd64/linux/oc.rhel9.tar", + Text: "Download oc for Linux for x86_64 - RHEL 9", + }, { Href: "https://www.example.com/amd64/mac/oc.zip", Text: "Download oc for Mac for x86_64", @@ -136,6 +144,14 @@ The oc binary offers the same capabilities as the kubectl binary, but it is furt Href: "https://www.example.com/arm64/linux/oc.tar", Text: "Download oc for Linux for ARM 64", }, + { + Href: "https://www.example.com/arm64/linux/oc.rhel8.tar", + Text: "Download oc for Linux for ARM 64 - RHEL 8", + }, + { + Href: "https://www.example.com/arm64/linux/oc.rhel9.tar", + Text: "Download oc for Linux for ARM 64 - RHEL 9", + }, { Href: "https://www.example.com/arm64/mac/oc.zip", Text: "Download oc for Mac for ARM 64", @@ -144,10 +160,26 @@ The oc binary offers the same capabilities as the kubectl binary, but it is furt Href: "https://www.example.com/ppc64le/linux/oc.tar", Text: "Download oc for Linux for IBM Power, little endian", }, + { + Href: "https://www.example.com/ppc64le/linux/oc.rhel8.tar", + Text: "Download oc for Linux for IBM Power, little endian - RHEL 8", + }, + { + Href: "https://www.example.com/ppc64le/linux/oc.rhel9.tar", + Text: "Download oc for Linux for IBM Power, little endian - RHEL 9", + }, { Href: "https://www.example.com/s390x/linux/oc.tar", Text: "Download oc for Linux for IBM Z", }, + { + Href: "https://www.example.com/s390x/linux/oc.rhel8.tar", + Text: "Download oc for Linux for IBM Z - RHEL 8", + }, + { + Href: "https://www.example.com/s390x/linux/oc.rhel9.tar", + Text: "Download oc for Linux for IBM Z - RHEL 9", + }, { Href: "https://www.example.com/oc-license", Text: "LICENSE", diff --git a/test/e2e/downloads_test.go b/test/e2e/downloads_test.go index 78e30d0ae..58de453e9 100644 --- a/test/e2e/downloads_test.go +++ b/test/e2e/downloads_test.go @@ -42,6 +42,7 @@ func TestDownloadsEndpoint(t *testing.T) { req := getRequest(t, link.Href) client := getInsecureClient() resp, err := client.Do(req) + t.Logf("Requesting %s at %s...", link.Text, link.Href) if err != nil { t.Fatalf("http error getting %s at %s: %s", link.Text, link.Href, err) @@ -50,6 +51,6 @@ func TestDownloadsEndpoint(t *testing.T) { t.Fatalf("http error for %s at %s: %d %s", link.Text, link.Href, resp.StatusCode, http.StatusText(resp.StatusCode)) } resp.Body.Close() - t.Logf("%s %s\n", link.Text, resp.Status) + t.Logf("%s %s...", link.Text, resp.Status) } }