mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
79 lines
2.3 KiB
Go
79 lines
2.3 KiB
Go
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
// Licensed under the MIT License. See License-MIT.txt in the project root for license information.
|
|
|
|
package cmd
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/gitpod-io/gitpod/common-go/log"
|
|
"github.com/gitpod-io/gitpod/installer/pkg/common"
|
|
configv1 "github.com/gitpod-io/gitpod/installer/pkg/config/v1"
|
|
"github.com/gitpod-io/gitpod/installer/pkg/shiftfs"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var configClusterShiftfsOpts struct {
|
|
ServiceAccountName string
|
|
Timeout int
|
|
}
|
|
|
|
// configClusterShiftfsCmd represents the validate command
|
|
var configClusterShiftfsCmd = &cobra.Command{
|
|
Use: "shiftfs",
|
|
Short: "Detects if a cluster can support ShiftFS",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
if _, err := configFileExistsAndInit(); err != nil {
|
|
return err
|
|
}
|
|
|
|
_, _, cfg, err := loadConfig(configOpts.ConfigFile)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
versionMF, err := getVersionManifest()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
gitpodCtx, err := common.NewRenderContext(*cfg, *versionMF, configClusterOpts.Namespace)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
_, clientset, err := authClusterOrKubeconfig(configClusterOpts.Kube.Config)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Infof("Deploying ShiftFS check to %s namespace with timeout of %d seconds", configClusterOpts.Namespace, configClusterShiftfsOpts.Timeout)
|
|
supported, err := shiftfs.IsSupported(
|
|
gitpodCtx,
|
|
configClusterShiftfsOpts.ServiceAccountName,
|
|
clientset,
|
|
time.Duration(configClusterShiftfsOpts.Timeout)*time.Second,
|
|
)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if *supported {
|
|
log.Info("ShiftFS is supported")
|
|
cfg.Workspace.Runtime.FSShiftMethod = configv1.FSShiftShiftFS
|
|
} else {
|
|
log.Info("ShiftFS is not supported - use Fuse instead")
|
|
cfg.Workspace.Runtime.FSShiftMethod = configv1.FSShiftFuseFS
|
|
}
|
|
|
|
return saveConfigFile(cfg)
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
configClusterCmd.AddCommand(configClusterShiftfsCmd)
|
|
|
|
configClusterShiftfsCmd.Flags().StringVar(&configClusterShiftfsOpts.ServiceAccountName, "serviceAccount", getEnvvar("SERVICE_ACCOUNT", "default"), "service account name to use for the job - this requires full cluster access")
|
|
configClusterShiftfsCmd.Flags().IntVar(&configClusterShiftfsOpts.Timeout, "timeout", 10, "timeout in sec")
|
|
}
|