diff --git a/cli/pkg/common/common.go b/cli/pkg/common/common.go index 7afae53e0..e02988e80 100755 --- a/cli/pkg/common/common.go +++ b/cli/pkg/common/common.go @@ -279,30 +279,29 @@ const ( ) const ( - ENV_OLARES_BASE_DIR = "OLARES_BASE_DIR" - ENV_OLARES_VERSION = "OLARES_VERSION" - ENV_TERMINUS_IS_CLOUD_VERSION = "TERMINUS_IS_CLOUD_VERSION" - ENV_KUBE_TYPE = "KUBE_TYPE" - ENV_REGISTRY_MIRRORS = "REGISTRY_MIRRORS" - ENV_NVIDIA_CONTAINER_REPO_MIRROR = "NVIDIA_CONTAINER_REPO_MIRROR" - ENV_OLARES_CDN_SERVICE = "OLARES_SYSTEM_CDN_SERVICE" - ENV_STORAGE = "STORAGE" - ENV_S3_BUCKET = "S3_BUCKET" - ENV_LOCAL_GPU_ENABLE = "LOCAL_GPU_ENABLE" - ENV_AWS_ACCESS_KEY_ID_SETUP = "AWS_ACCESS_KEY_ID_SETUP" - ENV_AWS_SECRET_ACCESS_KEY_SETUP = "AWS_SECRET_ACCESS_KEY_SETUP" - ENV_AWS_SESSION_TOKEN_SETUP = "AWS_SESSION_TOKEN_SETUP" - ENV_BACKUP_KEY_PREFIX = "BACKUP_KEY_PREFIX" - ENV_BACKUP_SECRET = "BACKUP_SECRET" - ENV_CLUSTER_ID = "CLUSTER_ID" - ENV_BACKUP_CLUSTER_BUCKET = "BACKUP_CLUSTER_BUCKET" - ENV_TOKEN_MAX_AGE = "TOKEN_MAX_AGE" - ENV_HOST_IP = "HOST_IP" - ENV_PREINSTALL = "PREINSTALL" - ENV_DISABLE_HOST_IP_PROMPT = "DISABLE_HOST_IP_PROMPT" - ENV_AUTO_ADD_FIREWALL_RULES = "AUTO_ADD_FIREWALL_RULES" - ENV_TERMINUS_OS_DOMAINNAME = "TERMINUS_OS_DOMAINNAME" - ENV_DEFAULT_WSL_DISTRO_LOCATION = "DEFAULT_WSL_DISTRO_LOCATION" // If set to 1, the default WSL distro storage will be used. + ENV_OLARES_BASE_DIR = "OLARES_BASE_DIR" + ENV_OLARES_VERSION = "OLARES_VERSION" + ENV_TERMINUS_IS_CLOUD_VERSION = "TERMINUS_IS_CLOUD_VERSION" + ENV_KUBE_TYPE = "KUBE_TYPE" + ENV_REGISTRY_MIRRORS = "REGISTRY_MIRRORS" + ENV_OLARES_CDN_SERVICE = "OLARES_SYSTEM_CDN_SERVICE" + ENV_STORAGE = "STORAGE" + ENV_S3_BUCKET = "S3_BUCKET" + ENV_LOCAL_GPU_ENABLE = "LOCAL_GPU_ENABLE" + ENV_AWS_ACCESS_KEY_ID_SETUP = "AWS_ACCESS_KEY_ID_SETUP" + ENV_AWS_SECRET_ACCESS_KEY_SETUP = "AWS_SECRET_ACCESS_KEY_SETUP" + ENV_AWS_SESSION_TOKEN_SETUP = "AWS_SESSION_TOKEN_SETUP" + ENV_BACKUP_KEY_PREFIX = "BACKUP_KEY_PREFIX" + ENV_BACKUP_SECRET = "BACKUP_SECRET" + ENV_CLUSTER_ID = "CLUSTER_ID" + ENV_BACKUP_CLUSTER_BUCKET = "BACKUP_CLUSTER_BUCKET" + ENV_TOKEN_MAX_AGE = "TOKEN_MAX_AGE" + ENV_HOST_IP = "HOST_IP" + ENV_PREINSTALL = "PREINSTALL" + ENV_DISABLE_HOST_IP_PROMPT = "DISABLE_HOST_IP_PROMPT" + ENV_AUTO_ADD_FIREWALL_RULES = "AUTO_ADD_FIREWALL_RULES" + ENV_TERMINUS_OS_DOMAINNAME = "TERMINUS_OS_DOMAINNAME" + ENV_DEFAULT_WSL_DISTRO_LOCATION = "DEFAULT_WSL_DISTRO_LOCATION" // If set to 1, the default WSL distro storage will be used. ENV_CONTAINER = "container" ENV_CONTAINER_MODE = "CONTAINER_MODE" // running in docker container diff --git a/cli/pkg/gpu/tasks.go b/cli/pkg/gpu/tasks.go index 9c937fe19..87f863dc2 100644 --- a/cli/pkg/gpu/tasks.go +++ b/cli/pkg/gpu/tasks.go @@ -209,19 +209,30 @@ func (t *UpdateNvidiaContainerToolkitSource) Execute(runtime connector.Runtime) return err } - mirrorRepo := os.Getenv(common.ENV_NVIDIA_CONTAINER_REPO_MIRROR) - if mirrorRepo == "" { + // decide mirror based on OLARES_SYSTEM_CDN_SERVICE + var mirrorHost string + cdnService := os.Getenv(common.ENV_OLARES_CDN_SERVICE) + if cdnService != "" { + cdnRaw := cdnService + if !strings.HasPrefix(cdnRaw, "http") { + cdnRaw = "https://" + cdnRaw + } + if cdnURL, err := url.Parse(cdnRaw); err == nil { + host := cdnURL.Host + if host == "" { + host = cdnService + } + if strings.HasSuffix(host, "olares.cn") { + mirrorHost = "mirrors.ustc.edu.cn" + } + } else if strings.HasSuffix(cdnService, "olares.cn") { + mirrorHost = "mirrors.ustc.edu.cn" + } + } + if mirrorHost == "" { return nil } - mirrorRepoRawURL := mirrorRepo - if !strings.HasPrefix(mirrorRepoRawURL, "http") { - mirrorRepoRawURL = "https://" + mirrorRepoRawURL - } - mirrorRepoURL, err := url.Parse(mirrorRepoRawURL) - if err != nil || mirrorRepoURL.Host == "" { - return fmt.Errorf("invalid mirror for nvidia container: %s", mirrorRepo) - } - cmd = fmt.Sprintf("sed -i 's#nvidia.github.io#%s#g' %s", mirrorRepoURL.Host, dstPath) + cmd = fmt.Sprintf("sed -i 's#nvidia.github.io#%s#g' %s", mirrorHost, dstPath) if _, err := runtime.GetRunner().SudoCmd(cmd, false, false); err != nil { return errors.Wrap(errors.WithStack(err), "failed to switch nvidia container repo to mirror site") } diff --git a/cli/pkg/windows/tasks.go b/cli/pkg/windows/tasks.go index e05162261..b8e507c3d 100644 --- a/cli/pkg/windows/tasks.go +++ b/cli/pkg/windows/tasks.go @@ -493,7 +493,6 @@ func (i *InstallTerminus) Execute(runtime connector.Runtime) error { fmt.Sprintf("export %s=%s", common.ENV_HOST_IP, systemInfo.GetLocalIp()), fmt.Sprintf("export %s=%s", common.ENV_DISABLE_HOST_IP_PROMPT, os.Getenv(common.ENV_DISABLE_HOST_IP_PROMPT)), fmt.Sprintf("export %s=%s", common.ENV_OLARES_CDN_SERVICE, i.KubeConf.Arg.OlaresCDNService), - fmt.Sprintf("export %s=%s", common.ENV_NVIDIA_CONTAINER_REPO_MIRROR, os.Getenv(common.ENV_NVIDIA_CONTAINER_REPO_MIRROR)), } var bashUrl = fmt.Sprintf("https://%s", cc.DefaultBashUrl)