in pkg/install/openshift.go [59:150]
func OpenShiftConsoleDownloadLink(ctx context.Context, c client.Client) error {
// Check the ConsoleCLIDownload CRD is present, which should be starting OpenShift version 4.2.
// That check is also enough to exclude Kubernetes clusters.
ok, err := kubernetes.IsAPIResourceInstalled(c, "console.openshift.io/v1", reflect.TypeOf(console.ConsoleCLIDownload{}).Name())
if err != nil {
return err
} else if !ok {
return nil
}
// Check for permission to create the ConsoleCLIDownload resource
ok, err = kubernetes.CheckPermission(ctx, c, console.GroupName, "consoleclidownloads", "", KamelCLIDownloadName, "create")
if err != nil {
return err
}
if !ok {
// Let's just skip the ConsoleCLIDownload resource creation
return nil
}
// Check for an existing ConsoleCLIDownload resource
existing := &console.ConsoleCLIDownload{}
err = c.Get(ctx, types.NamespacedName{Name: KamelCLIDownloadName}, existing)
if err != nil {
if k8serrors.IsNotFound(err) {
existing = nil
} else {
return err
}
}
if existing != nil {
if version, ok := existing.Annotations[kamelVersionAnnotation]; ok {
current, err := semver.NewVersion(version)
if err != nil {
return err
}
this, err := semver.NewVersion(defaults.Version)
if err != nil {
return err
}
if this.LessThan(current) {
// Keep the most recent version
return nil
}
// Else delete the older version
err = c.Delete(ctx, existing)
if err != nil {
if k8serrors.IsForbidden(err) {
// Let's just skip the ConsoleCLIDownload resource creation
return nil
}
return err
}
}
}
// Create the ConsoleCLIDownload for Kamel CLI
link := console.ConsoleCLIDownload{
ObjectMeta: metav1.ObjectMeta{
Annotations: map[string]string{
kamelVersionAnnotation: defaults.Version,
},
Name: KamelCLIDownloadName,
},
Spec: console.ConsoleCLIDownloadSpec{
DisplayName: KamelCLIDownloadDisplayName,
Description: KamelCLIDownloadDescription,
Links: []console.Link{
{
Text: "Download the kamel binary for Linux",
Href: fmt.Sprintf(KamelCLIDownloadURLTemplate, defaults.Version, defaults.Version, "linux"),
},
{
Text: "Download the kamel binary for Mac",
Href: fmt.Sprintf(KamelCLIDownloadURLTemplate, defaults.Version, defaults.Version, "mac"),
},
{
Text: "Download the kamel binary for Windows",
Href: fmt.Sprintf(KamelCLIDownloadURLTemplate, defaults.Version, defaults.Version, "windows"),
},
},
},
}
err = c.Create(ctx, &link)
if err != nil {
return err
}
return nil
}