Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 26 additions & 12 deletions bindata/assets/deployments/downloads-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -126,28 +126,42 @@ 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'),
]:
if not os.path.exists(path):
print('Skipping {} (not found)'.format(path))
continue
basename = os.path.basename(path)
target_path = os.path.join(arch, operating_system, basename)
os.mkdir(os.path.join(arch, operating_system))
os.symlink(path, target_path)
base_root, _ = os.path.splitext(basename)
archive_path_root = os.path.join(arch, operating_system, base_root)
with tarfile.open('{}.tar'.format(archive_path_root), 'w') as tar:
tar.add(path, basename)
with zipfile.ZipFile('{}.zip'.format(archive_path_root), 'w') as zip:
zip.write(path, basename)
content.append(
'<a href="{0}">oc ({1} {2})</a> (<a href="{3}.tar">tar</a> <a href="{3}.zip">zip</a>)'.format(
target_path, arch, operating_system, archive_path_root
os.makedirs(os.path.join(arch, operating_system), exist_ok=True)
try:
os.symlink(path, target_path)
archive_path_root = os.path.join(arch, operating_system, basename)
with tarfile.open('{}.tar'.format(archive_path_root), 'w') as tar:
tar.add(path, basename)
with zipfile.ZipFile('{}.zip'.format(archive_path_root), 'w') as zip:
zip.write(path, basename)
content.append(
'<a href="{0}">oc ({1} {2})</a> (<a href="{3}.tar">tar</a> <a href="{3}.zip">zip</a>)'.format(
target_path, arch, operating_system, archive_path_root
)
)
)
except (OSError, FileNotFoundError) as e:
print('Error processing {}: {}, skipping'.format(path, e))
continue

for root, directories, filenames in os.walk(temp_dir):
root_link = os.path.relpath(temp_dir, os.path.join(root, 'child')).replace(os.path.sep, '/')
Expand Down
12 changes: 10 additions & 2 deletions pkg/console/controllers/clidownloads/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"},
{"Windows for x86_64", "amd64/windows", "oc.exe.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{}
Expand All @@ -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,
Expand Down
36 changes: 34 additions & 2 deletions pkg/console/controllers/clidownloads/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,26 +116,42 @@ 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{
{
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",
},
{
Href: "https://www.example.com/amd64/windows/oc.zip",
Href: "https://www.example.com/amd64/windows/oc.exe.zip",
Text: "Download oc for Windows for x86_64",
},
{
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",
Expand All @@ -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",
Expand Down
1 change: 1 addition & 0 deletions test/e2e/downloads_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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\n", link.Text, link.Href)

if err != nil {
t.Fatalf("http error getting %s at %s: %s", link.Text, link.Href, err)
Expand Down