diff --git a/cmd/pro/cluster/add.go b/cmd/pro/cluster/add.go index 1d01ce3107..3a6338c251 100644 --- a/cmd/pro/cluster/add.go +++ b/cmd/pro/cluster/add.go @@ -425,21 +425,21 @@ func ensureHost(devsyConfig *config.Config, host string) (string, error) { return host, nil } - proInstances, err := workspace.ListPlatformInstances(devsyConfig) + platformInstances, err := workspace.ListPlatformInstances(devsyConfig) if err != nil { - return "", fmt.Errorf("list pro instances: %w", err) + return "", fmt.Errorf("list platform instances: %w", err) } options := []string{} - for _, pro := range proInstances { + for _, pro := range platformInstances { options = append(options, pro.Host) } h, err := log.QuestionDefault(&survey.QuestionOptions{ - Question: "Select Pro instance to connect your cluster to", + Question: "Select Platform instance to connect your cluster to", Options: options, DefaultValue: options[0], }) if err != nil { - return "", fmt.Errorf("select pro instance: %w", err) + return "", fmt.Errorf("select platform instance: %w", err) } return h, nil diff --git a/cmd/pro/completion/suggestions.go b/cmd/pro/completion/suggestions.go index a60dd8964c..08fa327c85 100644 --- a/cmd/pro/completion/suggestions.go +++ b/cmd/pro/completion/suggestions.go @@ -21,14 +21,14 @@ func GetPlatformHostSuggestions( return nil, cobra.ShellCompDirectiveError } - proInstances, err := workspace.ListPlatformInstances(devsyConfig) + platformInstances, err := workspace.ListPlatformInstances(devsyConfig) if err != nil { return nil, cobra.ShellCompDirectiveError } var suggestions []string - for _, instance := range proInstances { + for _, instance := range platformInstances { if strings.HasPrefix(instance.Host, toComplete) { suggestions = append(suggestions, instance.Host) } diff --git a/cmd/pro/list.go b/cmd/pro/list.go index a13a8039c4..fc6670d7b3 100644 --- a/cmd/pro/list.go +++ b/cmd/pro/list.go @@ -48,7 +48,7 @@ func NewListCmd(flags *proflags.GlobalFlags) *cobra.Command { &cmd.Login, names.Login, false, - "Check if the user is logged into the pro instance", + "Check if the user is logged into the platform instance", ), ) return listCmd @@ -61,7 +61,7 @@ func (cmd *ListCmd) Run(ctx context.Context) error { return err } - proInstances, err := workspace.ListPlatformInstances(devsyConfig) + platformInstances, err := workspace.ListPlatformInstances(devsyConfig) if err != nil { return err } @@ -72,9 +72,9 @@ func (cmd *ListCmd) Run(ctx context.Context) error { } switch mode { case output.ModePlain: - cmd.printPlain(ctx, devsyConfig, proInstances) + cmd.printPlain(ctx, devsyConfig, platformInstances) case output.ModeJSON: - return cmd.printJSON(ctx, devsyConfig, proInstances) + return cmd.printJSON(ctx, devsyConfig, platformInstances) } return nil @@ -83,17 +83,17 @@ func (cmd *ListCmd) Run(ctx context.Context) error { func (cmd *ListCmd) printPlain( ctx context.Context, devsyConfig *config.Config, - proInstances []*provider.ProInstance, + platformInstances []*provider.PlatformInstance, ) { tableEntries := [][]string{} - for _, proInstance := range proInstances { + for _, platformInstance := range platformInstances { entry := []string{ - proInstance.Host, - proInstance.Provider, - time.Since(proInstance.CreationTimestamp.Time).Round(1 * time.Second).String(), + platformInstance.Host, + platformInstance.Provider, + time.Since(platformInstance.CreationTimestamp.Time).Round(1 * time.Second).String(), } if cmd.Login { - err := checkLogin(ctx, devsyConfig, proInstance) + err := checkLogin(ctx, devsyConfig, platformInstance) entry = append(entry, fmt.Sprintf("%t", err == nil)) } @@ -118,17 +118,17 @@ func (cmd *ListCmd) printPlain( func (cmd *ListCmd) printJSON( ctx context.Context, devsyConfig *config.Config, - proInstances []*provider.ProInstance, + platformInstances []*provider.PlatformInstance, ) error { tableEntries := []*proTableEntry{} - for _, proInstance := range proInstances { + for _, platformInstance := range platformInstances { entry := &proTableEntry{ - ProInstance: proInstance, - Context: devsyConfig.DefaultContext, - Capabilities: getCapabilities(devsyConfig, proInstance), + PlatformInstance: platformInstance, + Context: devsyConfig.DefaultContext, + Capabilities: getCapabilities(devsyConfig, platformInstance), } if cmd.Login { - err := checkLogin(ctx, devsyConfig, proInstance) + err := checkLogin(ctx, devsyConfig, platformInstance) isAuthenticated := err == nil entry.Authenticated = &isAuthenticated } @@ -149,7 +149,7 @@ func (cmd *ListCmd) printJSON( } type proTableEntry struct { - *provider.ProInstance + *provider.PlatformInstance Authenticated *bool `json:"authenticated,omitempty"` Context string `json:"context,omitempty"` @@ -167,19 +167,19 @@ var ( func checkLogin( ctx context.Context, devsyConfig *config.Config, - proInstance *provider.ProInstance, + platformInstance *provider.PlatformInstance, ) error { - // for every pro instance, check auth status by calling login + // for every platform instance, check auth status by calling login if err := login( ctx, devsyConfig, - proInstance.Host, - proInstance.Provider, + platformInstance.Host, + platformInstance.Provider, "", true, false, ); err != nil { - return fmt.Errorf("not logged into %s", proInstance.Host) + return fmt.Errorf("not logged into %s", platformInstance.Host) } return nil @@ -187,10 +187,10 @@ func checkLogin( func getCapabilities( devsyConfig *config.Config, - proInstance *provider.ProInstance, + platformInstance *provider.PlatformInstance, ) []Capability { capabilities := []Capability{} - provider, err := workspace.FindProvider(devsyConfig, proInstance.Provider) + provider, err := workspace.FindProvider(devsyConfig, platformInstance.Provider) if err != nil { return capabilities } diff --git a/cmd/pro/login.go b/cmd/pro/login.go index 1eced745fa..38c5dd5156 100644 --- a/cmd/pro/login.go +++ b/cmd/pro/login.go @@ -125,7 +125,10 @@ func (cmd *LoginCmd) prepareProvider(ctx context.Context, fullURL string) (*conf if err != nil { return nil, fmt.Errorf("invalid url %s: %w", fullURL, err) } - loginLock, err := provider.GetProInstanceOperationLock(initial.DefaultContext, parsedURL.Host) + loginLock, err := provider.GetPlatformInstanceOperationLock( + initial.DefaultContext, + parsedURL.Host, + ) if err != nil { return nil, fmt.Errorf("get Pro login lock: %w", err) } @@ -187,7 +190,7 @@ func (cmd *LoginCmd) normalizeURL(fullURL string) (string, error) { func (cmd *LoginCmd) resolveInstance( fullURL string, contextName string, -) (*config.Config, *provider.ProInstance, error) { +) (*config.Config, *provider.PlatformInstance, error) { parsedURL, err := url.Parse(fullURL) if err != nil { return nil, nil, fmt.Errorf("invalid url %s: %w", fullURL, err) @@ -199,12 +202,12 @@ func (cmd *LoginCmd) resolveInstance( return nil, nil, err } - proInstances, err := workspace.ListPlatformInstances(devsyConfig) + platformInstances, err := workspace.ListPlatformInstances(devsyConfig) if err != nil { return nil, nil, err } - currentInstance, err := findInstance(proInstances, host) + currentInstance, err := findInstance(platformInstances, host) if err != nil { return nil, nil, err } @@ -220,15 +223,18 @@ func (cmd *LoginCmd) resolveInstance( return devsyConfig, nil, nil } -func findInstance(instances []*provider.ProInstance, host string) (*provider.ProInstance, error) { - instanceID := provider.ToProInstanceID(host) +func findInstance( + instances []*provider.PlatformInstance, + host string, +) (*provider.PlatformInstance, error) { + instanceID := provider.ToPlatformInstanceID(host) for _, inst := range instances { if strings.EqualFold(inst.Host, host) { return inst, nil } - if provider.ToProInstanceID(inst.Host) == instanceID { + if provider.ToPlatformInstanceID(inst.Host) == instanceID { return nil, fmt.Errorf( - "pro instance host %q conflicts with existing host %q after normalization", + "platform instance host %q conflicts with existing host %q after normalization", host, inst.Host, ) @@ -241,7 +247,7 @@ func (cmd *LoginCmd) resolveNewProviderName(devsyConfig *config.Config, host str if cmd.Provider == "" { cmd.Provider = config.ProReleaseName } - cmd.Provider = provider.ToProInstanceID(cmd.Provider) + cmd.Provider = provider.ToPlatformInstanceID(cmd.Provider) providers, err := workspace.LoadAllProviders(devsyConfig) if err != nil { @@ -249,7 +255,7 @@ func (cmd *LoginCmd) resolveNewProviderName(devsyConfig *config.Config, host str } if providers[cmd.Provider] != nil { - cmd.Provider = provider.ToProInstanceID(config.BinaryName + "-" + host) + cmd.Provider = provider.ToPlatformInstanceID(config.BinaryName + "-" + host) if providers[cmd.Provider] != nil { return fmt.Errorf( "provider %s already exists, choose a different name via --provider", @@ -264,7 +270,7 @@ func (cmd *LoginCmd) resolveNewProviderName(devsyConfig *config.Config, host str func (cmd *LoginCmd) ensureProvider( ctx context.Context, devsyConfig *config.Config, - currentInstance *provider.ProInstance, + currentInstance *provider.PlatformInstance, fullURL string, ) (*config.Config, error) { if currentInstance != nil { @@ -272,7 +278,7 @@ func (cmd *LoginCmd) ensureProvider( } parsedURL, _ := url.Parse(fullURL) - instance := &provider.ProInstance{ + instance := &provider.PlatformInstance{ Provider: cmd.Provider, Host: parsedURL.Host, CreationTimestamp: types.Now(), @@ -282,7 +288,10 @@ func (cmd *LoginCmd) ensureProvider( return nil, err } - if err := provider.SaveProInstanceConfig(devsyConfig.DefaultContext, instance); err != nil { + if err := provider.SavePlatformInstanceConfig( + devsyConfig.DefaultContext, + instance, + ); err != nil { return nil, err } diff --git a/cmd/pro/login_test.go b/cmd/pro/login_test.go index 0945f91582..e88feb7957 100644 --- a/cmd/pro/login_test.go +++ b/cmd/pro/login_test.go @@ -40,7 +40,7 @@ func (s *loginSuite) TearDownTest() { } func (s *loginSuite) TestConcurrentLoginFindsCreatedInstance() { - lock, err := provider.GetProInstanceOperationLock("default", "pro.example") + lock, err := provider.GetPlatformInstanceOperationLock("default", "pro.example") s.Require().NoError(err) s.Require().NoError(lock.Lock()) s.T().Cleanup(func() { _ = lock.Unlock() }) @@ -57,7 +57,7 @@ func (s *loginSuite) TestConcurrentLoginFindsCreatedInstance() { case <-time.After(50 * time.Millisecond): } - s.Require().NoError(provider.SaveProInstanceConfig("default", &provider.ProInstance{ + s.Require().NoError(provider.SavePlatformInstanceConfig("default", &provider.PlatformInstance{ Provider: testProProviderName, Host: "pro.example", })) @@ -67,11 +67,11 @@ func (s *loginSuite) TestConcurrentLoginFindsCreatedInstance() { } func (s *loginSuite) TestDifferentHostDoesNotWaitForLoginLock() { - lock, err := provider.GetProInstanceOperationLock("default", "first.example") + lock, err := provider.GetPlatformInstanceOperationLock("default", "first.example") s.Require().NoError(err) s.Require().NoError(lock.Lock()) defer func() { _ = lock.Unlock() }() - s.Require().NoError(provider.SaveProInstanceConfig("default", &provider.ProInstance{ + s.Require().NoError(provider.SavePlatformInstanceConfig("default", &provider.PlatformInstance{ Provider: "other", Host: "second.example", })) @@ -92,7 +92,7 @@ func (s *loginSuite) TestDifferentHostDoesNotWaitForLoginLock() { } func (s *loginSuite) TestHostLockDoesNotConflictWithProviderLock() { - hostLock, err := provider.GetProInstanceOperationLock("default", "pro.example") + hostLock, err := provider.GetPlatformInstanceOperationLock("default", "pro.example") s.Require().NoError(err) providerLock, err := provider.GetProviderOperationLock("default", "pro-login") s.Require().NoError(err) @@ -105,15 +105,15 @@ func (s *loginSuite) TestHostLockDoesNotConflictWithProviderLock() { } func (s *loginSuite) TestEquivalentHostsShareLock() { - first, err := provider.GetProInstanceOperationLock("default", "Foo.Example.com") + first, err := provider.GetPlatformInstanceOperationLock("default", "Foo.Example.com") s.Require().NoError(err) - second, err := provider.GetProInstanceOperationLock("default", "foo.example.com") + second, err := provider.GetPlatformInstanceOperationLock("default", "foo.example.com") s.Require().NoError(err) s.Equal(first.Path(), second.Path()) } func (s *loginSuite) TestEquivalentHostFindsExistingInstance() { - s.Require().NoError(provider.SaveProInstanceConfig("default", &provider.ProInstance{ + s.Require().NoError(provider.SavePlatformInstanceConfig("default", &provider.PlatformInstance{ Provider: testProProviderName, Host: "Foo.Example.com", })) @@ -124,14 +124,14 @@ func (s *loginSuite) TestEquivalentHostFindsExistingInstance() { } func (s *loginSuite) TestDistinctHostsWithSameInstanceIDAreRejected() { - s.Require().NoError(provider.SaveProInstanceConfig("default", &provider.ProInstance{ + s.Require().NoError(provider.SavePlatformInstanceConfig("default", &provider.PlatformInstance{ Provider: testProProviderName, Host: "foo.example.com", })) cmd := &LoginCmd{GlobalFlags: proflags.GlobalFlags{GlobalFlags: &rootflags.GlobalFlags{}}} _, err := cmd.prepareProvider(context.Background(), "https://foo-example.com") s.Require().ErrorContains(err, "conflicts with existing host") - stored, err := provider.LoadProInstanceConfig("default", "foo.example.com") + stored, err := provider.LoadPlatformInstanceConfig("default", "foo.example.com") s.Require().NoError(err) s.Equal("foo.example.com", stored.Host) } diff --git a/cmd/pro/logout.go b/cmd/pro/logout.go index b9b3d83063..cf0e4c059c 100644 --- a/cmd/pro/logout.go +++ b/cmd/pro/logout.go @@ -48,7 +48,7 @@ func NewLogoutCmd(flags *proflags.GlobalFlags) *cobra.Command { &cmd.IgnoreNotFound, names.IgnoreNotFound, false, - "Treat \"pro instance not found\" as a successful logout", + "Treat \"platform instance not found\" as a successful logout", ), ) return logoutCmd @@ -57,7 +57,7 @@ func NewLogoutCmd(flags *proflags.GlobalFlags) *cobra.Command { //nolint:cyclop,funlen // logout sequences provider/daemon teardown; complexity reflects domain workflow func (cmd *LogoutCmd) Run(ctx context.Context, args []string) error { if len(args) != 1 { - return fmt.Errorf("specify a pro instance to log out of") + return fmt.Errorf("specify a platform instance to log out of") } devsyConfig, err := config.LoadConfig(cmd.Context, cmd.Provider) @@ -65,23 +65,23 @@ func (cmd *LogoutCmd) Run(ctx context.Context, args []string) error { return err } - // load pro instance config - proInstanceName := args[0] - proInstanceConfig, err := provider.LoadProInstanceConfig( + // load platform instance config + platformInstanceName := args[0] + platformInstanceConfig, err := provider.LoadPlatformInstanceConfig( devsyConfig.DefaultContext, - proInstanceName, + platformInstanceName, ) if err != nil { if os.IsNotExist(err) && cmd.IgnoreNotFound { return nil } - return fmt.Errorf("load pro instance %s: %w", proInstanceName, err) + return fmt.Errorf("load platform instance %s: %w", platformInstanceName, err) } providerConfig, err := provider.LoadProviderConfig( devsyConfig.DefaultContext, - proInstanceConfig.Provider, + platformInstanceConfig.Provider, ) if err != nil { return fmt.Errorf("load provider: %w", err) @@ -106,7 +106,7 @@ func (cmd *LogoutCmd) Run(ctx context.Context, args []string) error { ) } - daemonClient := daemon.NewLocalClient(proInstanceConfig.Provider) + daemonClient := daemon.NewLocalClient(platformInstanceConfig.Provider) err = daemonClient.Shutdown(ctx) if err != nil { log.Warnf("failed to shut down daemon: %v", err) @@ -118,15 +118,18 @@ func (cmd *LogoutCmd) Run(ctx context.Context, args []string) error { } } - if err := deleteProInstanceFiles(devsyConfig.DefaultContext, proInstanceConfig); err != nil { + if err := deletePlatformInstanceFiles( + devsyConfig.DefaultContext, + platformInstanceConfig, + ); err != nil { return err } - log.Infof("logged out of pro instance: proInstanceName=%s", proInstanceName) + log.Infof("logged out of platform instance: platformInstanceName=%s", platformInstanceName) return nil } -func deleteProInstanceFiles(contextName string, instance *provider.ProInstance) error { +func deletePlatformInstanceFiles(contextName string, instance *provider.PlatformInstance) error { opLock, err := provider.GetProviderOperationLock(contextName, instance.Provider) if err != nil { return err @@ -144,14 +147,14 @@ func deleteProInstanceFiles(contextName string, instance *provider.ProInstance) return err } - proInstanceDir, err := provider.GetProInstanceDir(contextName, instance.Host) + platformInstanceDir, err := provider.GetPlatformInstanceDir(contextName, instance.Host) if err != nil { return err } - err = os.RemoveAll(proInstanceDir) + err = os.RemoveAll(platformInstanceDir) if err != nil { - return fmt.Errorf("delete pro instance dir: %w", err) + return fmt.Errorf("delete platform instance dir: %w", err) } return nil diff --git a/cmd/provider/delete.go b/cmd/provider/delete.go index 0861ac3513..42ecb7dc2c 100644 --- a/cmd/provider/delete.go +++ b/cmd/provider/delete.go @@ -100,18 +100,18 @@ func DeleteProvider( provider string, ignoreNotFound, force bool, ) error { - // if force is not set, check if the provider is associated with a pro instance or workspace + // if force is not set, check if the provider is associated with a platform instance or workspace if !force { - // check if this provider is associated with a pro instance - proInstances, err := workspace.ListPlatformInstances(devsyConfig) + // check if this provider is associated with a platform instance + platformInstances, err := workspace.ListPlatformInstances(devsyConfig) if err != nil { - return fmt.Errorf("list pro instances: %w", err) + return fmt.Errorf("list platform instances: %w", err) } - for _, instance := range proInstances { + for _, instance := range platformInstances { if instance.Provider == provider { return fmt.Errorf( - "cannot delete provider %q, because it is connected to Pro instance %q. "+ - "Removing the Pro instance will automatically delete this provider", + "cannot delete provider %q, because it is connected to Platform instance %q. "+ + "Removing the Platform instance will automatically delete this provider", instance.Provider, instance.Host, ) diff --git a/cmd/provider/rename.go b/cmd/provider/rename.go index 55ab564776..28322ee575 100644 --- a/cmd/provider/rename.go +++ b/cmd/provider/rename.go @@ -235,7 +235,7 @@ func (r *renameState) restoreProviderState(ctx context.Context) error { } // validateProviderRename verifies that the provider exists, is not a pro -// provider, is not backing a pro instance, and has configuration state. +// provider, is not backing a platform instance, and has configuration state. func validateProviderRename(devsyConfig *config.Config, oldName string) error { providerWithOptions, err := workspace.FindProvider(devsyConfig, oldName) if err != nil { @@ -247,14 +247,14 @@ func validateProviderRename(devsyConfig *config.Config, oldName string) error { return fmt.Errorf("cannot rename a pro provider; pro providers are managed by the platform") } - proInstances, err := workspace.ListPlatformInstances(devsyConfig) + platformInstances, err := workspace.ListPlatformInstances(devsyConfig) if err != nil { - return fmt.Errorf("listing pro instances: %w", err) + return fmt.Errorf("listing platform instances: %w", err) } - for _, inst := range proInstances { + for _, inst := range platformInstances { if inst.Provider == oldName { return fmt.Errorf( - "cannot rename provider %s: it is used by pro instance %s", + "cannot rename provider %s: it is used by platform instance %s", oldName, inst.Host, ) diff --git a/cmd/workspace/troubleshoot.go b/cmd/workspace/troubleshoot.go index c9235d4ab3..4e35f575a7 100644 --- a/cmd/workspace/troubleshoot.go +++ b/cmd/workspace/troubleshoot.go @@ -55,7 +55,7 @@ type troubleshootInfo struct { CLIVersion string Config *config.Config Providers map[string]provider.ProviderWithDefault - DevsyProInstances []DevsyProInstance + DevsyProInstances []DevsyPlatformInstance Workspace *pkgprovider.Workspace WorkspaceStatus client.Status WorkspaceTroubleshoot *managementv1.DevsyWorkspaceInstanceTroubleshoot @@ -143,29 +143,35 @@ func (cmd *TroubleshootCmd) collectWorkspaceInfo( } } -// collectWorkspaceProTroubleshoot locates the pro instance that owns the given +// collectWorkspaceProTroubleshoot locates the platform instance that owns the given // workspace and retrieves its troubleshooting info. It returns (nil, nil) when -// no matching pro instance is configured. +// no matching platform instance is configured. func collectWorkspaceProTroubleshoot( ctx context.Context, devsyConfig *config.Config, ws *pkgprovider.Workspace, - proInstances []DevsyProInstance, + platformInstances []DevsyPlatformInstance, ) (*managementv1.DevsyWorkspaceInstanceTroubleshoot, error) { - // Multiple pro instances may be configured; locate the one that owns this workspace. - var proInstance DevsyProInstance - for _, instance := range proInstances { + // Multiple platform instances may be configured; locate the one that owns this workspace. + var platformInstance DevsyPlatformInstance + for _, instance := range platformInstances { if instance.ProviderName == ws.Provider.Name { - proInstance = instance + platformInstance = instance break } } - if proInstance.ProviderName == "" { + if platformInstance.ProviderName == "" { return nil, nil } - return collectProWorkspaceInfo(ctx, devsyConfig, proInstance.Host, ws.UID, ws.Platform.Project) + return collectProWorkspaceInfo( + ctx, + devsyConfig, + platformInstance.Host, + ws.UID, + ws.Platform.Project, + ) } // collectDaemonStatus returns the local daemon status when the client is a @@ -259,40 +265,40 @@ func collectProviders( return retMap, nil } -type DevsyProInstance struct { +type DevsyPlatformInstance struct { Host string ProviderName string Version string } // collectPlatformInfo collects information about all platform instances in a given devsyConfig. -// It iterates over the pro instances, retrieves their versions, and appends them to the ProInstance slice. -// Any errors encountered during this process are combined and returned along with the ProInstance slice. -// This means that even when an error value is returned, the pro instance slice will contain valid values. +// It iterates over the platform instances, retrieves their versions, and appends them to the PlatformInstance slice. +// Any errors encountered during this process are combined and returned along with the PlatformInstance slice. +// This means that even when an error value is returned, the platform instance slice will contain valid values. func collectPlatformInfo( devsyConfig *config.Config, -) ([]DevsyProInstance, error) { - proInstanceList, err := workspace.ListPlatformInstances(devsyConfig) +) ([]DevsyPlatformInstance, error) { + platformInstanceList, err := workspace.ListPlatformInstances(devsyConfig) if err != nil { - return nil, fmt.Errorf("list pro instances: %w", err) + return nil, fmt.Errorf("list platform instances: %w", err) } - var proInstances []DevsyProInstance + var platformInstances []DevsyPlatformInstance var combinedErrs error - for _, proInstance := range proInstanceList { - version, err := platform.GetProInstanceDevsyVersion( - &pkgprovider.ProInstance{Host: proInstance.Host}, + for _, platformInstance := range platformInstanceList { + version, err := platform.GetPlatformInstanceDevsyVersion( + &pkgprovider.PlatformInstance{Host: platformInstance.Host}, ) combinedErrs = errors.Join(combinedErrs, err) - proInstances = append(proInstances, DevsyProInstance{ - Host: proInstance.Host, - ProviderName: proInstance.Provider, + platformInstances = append(platformInstances, DevsyPlatformInstance{ + Host: platformInstance.Host, + ProviderName: platformInstance.Provider, Version: version, }) } - return proInstances, combinedErrs + return platformInstances, combinedErrs } // PrintableError serialises a wrapped error's message via json.Marshal. diff --git a/pkg/config/pathmanager.go b/pkg/config/pathmanager.go index dd5aaf833c..162c2e344a 100644 --- a/pkg/config/pathmanager.go +++ b/pkg/config/pathmanager.go @@ -55,7 +55,7 @@ func joinUnder(parent func() (string, error), elems ...string) (string, error) { // ├── contents/ (WorkspaceContentsDir/WorkspaceContentDir - parent never removed) // ├── machines/ (MachineDir) // ├── providers//{binaries,daemon} (ProviderDir) -// ├── pro_instances/ (ProInstanceDir) +// ├── pro_instances/ (PlatformInstanceDir) // └── locks/ (LocksDir) // CacheDir() (default $HOME/.cache/devsy, or $DEVSY_HOME/cache when set) // ├── agents/, providers/, features//, platform/, keys/ @@ -91,8 +91,8 @@ type PathManager interface { ProviderDir(context, providerName string) (string, error) ProviderBinariesDir(context, providerName string) (string, error) ProviderDaemonDir(context, providerName string) (string, error) - ProInstancesDir(context string) (string, error) - ProInstanceDir(context, proInstanceHost string) (string, error) + PlatformInstancesDir(context string) (string, error) + PlatformInstanceDir(context, platformInstanceHost string) (string, error) LocksDir(context string) (string, error) // Cache sub-paths. @@ -203,12 +203,14 @@ func (b *basePathManager) ProviderDaemonDir(context, providerName string) (strin return b.inContext(context, "providers", providerName, "daemon") } -func (b *basePathManager) ProInstancesDir(context string) (string, error) { +func (b *basePathManager) PlatformInstancesDir(context string) (string, error) { return b.inContext(context, "pro_instances") } -func (b *basePathManager) ProInstanceDir(context, proInstanceHost string) (string, error) { - return b.inContext(context, "pro_instances", proInstanceHost) +func (b *basePathManager) PlatformInstanceDir( + context, platformInstanceHost string, +) (string, error) { + return b.inContext(context, "pro_instances", platformInstanceHost) } func (b *basePathManager) LocksDir(context string) (string, error) { diff --git a/pkg/config/pathmanager_linux_test.go b/pkg/config/pathmanager_linux_test.go index 4b06a87d51..a8886e08f2 100644 --- a/pkg/config/pathmanager_linux_test.go +++ b/pkg/config/pathmanager_linux_test.go @@ -177,7 +177,7 @@ func TestContextDataSubPaths(t *testing.T) { } } -func TestProviderAndProInstanceSubPaths(t *testing.T) { +func TestProviderAndPlatformInstanceSubPaths(t *testing.T) { skipIfNotLinux(t) home := t.TempDir() @@ -208,13 +208,13 @@ func TestProviderAndProInstanceSubPaths(t *testing.T) { filepath.Join(base, "providers", "docker", "daemon"), }, { - "ProInstancesDir", - func() (string, error) { return pm.ProInstancesDir(ctx) }, + "PlatformInstancesDir", + func() (string, error) { return pm.PlatformInstancesDir(ctx) }, filepath.Join(base, "pro_instances"), }, { - "ProInstanceDir", - func() (string, error) { return pm.ProInstanceDir(ctx, "pro.example.com") }, + "PlatformInstanceDir", + func() (string, error) { return pm.PlatformInstanceDir(ctx, "pro.example.com") }, filepath.Join(base, "pro_instances", "pro.example.com"), }, { diff --git a/pkg/platform/client.go b/pkg/platform/client.go index c9e6c6739a..42e0f60487 100644 --- a/pkg/platform/client.go +++ b/pkg/platform/client.go @@ -17,7 +17,7 @@ func InitClientFromHost( ) (client.Client, error) { provider, err := ProviderFromHost(ctx, devsyConfig, devsyProHost) if err != nil { - return nil, fmt.Errorf("provider from pro instance: %w", err) + return nil, fmt.Errorf("provider from platform instance: %w", err) } return InitClientFromProvider(ctx, devsyConfig, provider) @@ -41,15 +41,15 @@ func ProviderFromHost( devsyConfig *config.Config, devsyProHost string, ) (string, error) { - proInstanceConfig, err := provider.LoadProInstanceConfig( + platformInstanceConfig, err := provider.LoadPlatformInstanceConfig( devsyConfig.DefaultContext, devsyProHost, ) if err != nil { - return "", fmt.Errorf("load pro instance %s: %w", devsyProHost, err) + return "", fmt.Errorf("load platform instance %s: %w", devsyProHost, err) } - return proInstanceConfig.Provider, nil + return platformInstanceConfig.Provider, nil } func DevsyConfigPath(context string, providerName string) (string, error) { diff --git a/pkg/platform/version.go b/pkg/platform/version.go index 1d3ffaa22a..c40796c21d 100644 --- a/pkg/platform/version.go +++ b/pkg/platform/version.go @@ -18,8 +18,8 @@ type VersionObject struct { DevsyVersion string `json:"devsyVersion,omitempty"` } -func GetProInstanceDevsyVersion(proInstance *provider.ProInstance) (string, error) { - url := "https://" + proInstance.Host +func GetPlatformInstanceDevsyVersion(platformInstance *provider.PlatformInstance) (string, error) { + url := "https://" + platformInstance.Host return GetDevsyVersion(url) } diff --git a/pkg/provider/dir.go b/pkg/provider/dir.go index 6d25eeae38..4fbb6f4c40 100644 --- a/pkg/provider/dir.go +++ b/pkg/provider/dir.go @@ -16,17 +16,17 @@ import ( ) const ( - WorkspaceConfigFile = "workspace.json" - WorkspaceResultFile = "workspace_result.json" - MachineConfigFile = "machine.json" - ProInstanceConfigFile = "pro.json" - ProviderConfigFile = "provider.json" + WorkspaceConfigFile = "workspace.json" + WorkspaceResultFile = "workspace_result.json" + MachineConfigFile = "machine.json" + PlatformInstanceConfigFile = "pro.json" + ProviderConfigFile = "provider.json" DaemonStateFile = config.BinaryName + "_ts.state" ) -func GetProInstancesDir(context string) (string, error) { - return config.DefaultPathManager().ProInstancesDir(context) +func GetPlatformInstancesDir(context string) (string, error) { + return config.DefaultPathManager().PlatformInstancesDir(context) } func GetMachinesDir(context string) (string, error) { @@ -110,23 +110,27 @@ func GetWorkspaceLogDir(context, workspaceID string) (string, error) { return config.DefaultPathManager().WorkspaceLogDir(context, workspaceID) } -func GetProInstanceDir(context, proInstanceHost string) (string, error) { - if err := requireID("pro instance host", proInstanceHost); err != nil { +func GetPlatformInstanceDir(context, platformInstanceHost string) (string, error) { + if err := requireID("platform instance host", platformInstanceHost); err != nil { return "", err } - return config.DefaultPathManager().ProInstanceDir(context, ToProInstanceID(proInstanceHost)) + return config.DefaultPathManager(). + PlatformInstanceDir(context, ToPlatformInstanceID(platformInstanceHost)) } var ( - proInstanceIDRegEx1 = regexp.MustCompile(`[^\w\-]`) - proInstanceIDRegEx2 = regexp.MustCompile(`[^0-9a-z\-]+`) + platformInstanceIDRegEx1 = regexp.MustCompile(`[^\w\-]`) + platformInstanceIDRegEx2 = regexp.MustCompile(`[^0-9a-z\-]+`) ) -func ToProInstanceID(url string) string { +func ToPlatformInstanceID(url string) string { url = strings.TrimPrefix(url, "https://") url = strings.ToLower(url) - url = proInstanceIDRegEx2.ReplaceAllString(proInstanceIDRegEx1.ReplaceAllString(url, "-"), "") + url = platformInstanceIDRegEx2.ReplaceAllString( + platformInstanceIDRegEx1.ReplaceAllString(url, "-"), + "", + ) url = strings.Trim(url, "-") return id.SafeConcatNameMax([]string{url}, 32) } @@ -141,13 +145,13 @@ func WorkspaceExists(context, workspaceID string) bool { return err == nil } -func ProInstanceExists(context, proInstanceID string) bool { - proDir, err := GetProInstanceDir(context, proInstanceID) +func PlatformInstanceExists(context, platformInstanceID string) bool { + platformInstanceDir, err := GetPlatformInstanceDir(context, platformInstanceID) if err != nil { return false } - _, err = os.Stat(proDir) + _, err = os.Stat(platformInstanceDir) return err == nil } @@ -160,13 +164,13 @@ func SaveProviderConfig(context string, provider *ProviderConfig) error { return saveJSON(providerDir, ProviderConfigFile, provider, 0o600) } -func SaveProInstanceConfig(context string, proInstance *ProInstance) error { - proDir, err := GetProInstanceDir(context, proInstance.Host) +func SavePlatformInstanceConfig(context string, platformInstance *PlatformInstance) error { + platformInstanceDir, err := GetPlatformInstanceDir(context, platformInstance.Host) if err != nil { return err } - return saveJSON(proDir, ProInstanceConfigFile, proInstance, 0o600) + return saveJSON(platformInstanceDir, PlatformInstanceConfigFile, platformInstance, 0o600) } func SaveWorkspaceResult(workspace *Workspace, result *config2.Result) error { @@ -292,13 +296,15 @@ func LoadMachineConfig(context, machineID string) (*Machine, error) { return machineConfig, nil } -func LoadProInstanceConfig(context, proInstanceHost string) (*ProInstance, error) { - proDir, err := GetProInstanceDir(context, proInstanceHost) +func LoadPlatformInstanceConfig(context, platformInstanceHost string) (*PlatformInstance, error) { + platformInstanceDir, err := GetPlatformInstanceDir(context, platformInstanceHost) if err != nil { return nil, err } - return loadJSON[ProInstance](filepath.Join(proDir, ProInstanceConfigFile)) + return loadJSON[PlatformInstance]( + filepath.Join(platformInstanceDir, PlatformInstanceConfigFile), + ) } func LoadWorkspaceConfig(context, workspaceID string) (*Workspace, error) { diff --git a/pkg/provider/operationlock.go b/pkg/provider/operationlock.go index 4759c4cf76..494030d4e5 100644 --- a/pkg/provider/operationlock.go +++ b/pkg/provider/operationlock.go @@ -47,17 +47,17 @@ func lockProvider(contextName, providerName, errSuffix string) (func(), error) { return func() { _ = opLock.Unlock() }, nil } -// GetProInstanceOperationLock serializes creation of one Pro host without +// GetPlatformInstanceOperationLock serializes creation of one Platform host without // sharing a lock file with provider rename or lifecycle operations. -func GetProInstanceOperationLock(contextName, host string) (*flock.Flock, error) { +func GetPlatformInstanceOperationLock(contextName, host string) (*flock.Flock, error) { if host == "" { - return nil, fmt.Errorf("pro instance host is empty") + return nil, fmt.Errorf("platform instance host is empty") } locksDir, err := ensureOperationLocksDir(contextName) if err != nil { return nil, err } - digest := sha256.Sum256([]byte(ToProInstanceID(host))) + digest := sha256.Sum256([]byte(ToPlatformInstanceID(host))) return flock.New(filepath.Join(locksDir, fmt.Sprintf("pro-instance-%x.lock", digest[:16]))), nil } diff --git a/pkg/provider/persist_test.go b/pkg/provider/persist_test.go index 4d1289da51..266002d064 100644 --- a/pkg/provider/persist_test.go +++ b/pkg/provider/persist_test.go @@ -26,9 +26,9 @@ func TestRequireID(t *testing.T) { {name: "empty machine id", kind: "machine id", wantErr: "machine id is empty"}, {name: "empty workspace id", kind: "workspace id", wantErr: "workspace id is empty"}, { - name: "empty pro instance host", - kind: "pro instance host", - wantErr: "pro instance host is empty", + name: "empty platform instance host", + kind: "platform instance host", + wantErr: "platform instance host is empty", }, } for _, tt := range tests { diff --git a/pkg/provider/platform.go b/pkg/provider/platform.go new file mode 100644 index 0000000000..b5311bb0f0 --- /dev/null +++ b/pkg/provider/platform.go @@ -0,0 +1,14 @@ +package provider + +import "github.com/devsy-org/devsy/pkg/types" + +type PlatformInstance struct { + // Provider is the provider name this platform instance belongs to + Provider string `json:"provider,omitempty"` + + // Host is Devsy Platform host to use + Host string `json:"host,omitempty"` + + // CreationTimestamp is the timestamp when this platform instance was created + CreationTimestamp types.Time `json:"creationTimestamp"` +} diff --git a/pkg/provider/pro.go b/pkg/provider/pro.go deleted file mode 100644 index 2b68395911..0000000000 --- a/pkg/provider/pro.go +++ /dev/null @@ -1,14 +0,0 @@ -package provider - -import "github.com/devsy-org/devsy/pkg/types" - -type ProInstance struct { - // Provider is the provider name this pro instance belongs to - Provider string `json:"provider,omitempty"` - - // Host is Devsy Pro host to use - Host string `json:"host,omitempty"` - - // CreationTimestamp is the timestamp when this pro instance was created - CreationTimestamp types.Time `json:"creationTimestamp"` -} diff --git a/pkg/provider/provider.go b/pkg/provider/provider.go index a9e998032a..2bfd3c446c 100644 --- a/pkg/provider/provider.go +++ b/pkg/provider/provider.go @@ -600,7 +600,7 @@ type GetProxyCommands struct { // Self gets self for this provider Self types.StrArray `json:"self,omitempty"` - // Version gets the for this pro instance + // Version gets the for this platform instance Version types.StrArray `json:"version,omitempty"` } diff --git a/pkg/workspace/platform.go b/pkg/workspace/platform.go index d1c15baf41..238c162433 100644 --- a/pkg/workspace/platform.go +++ b/pkg/workspace/platform.go @@ -10,8 +10,8 @@ import ( func ListPlatformInstances( devsyConfig *config.Config, -) ([]*provider2.ProInstance, error) { - platformInstanceDir, err := provider2.GetProInstancesDir(devsyConfig.DefaultContext) +) ([]*provider2.PlatformInstance, error) { + platformInstanceDir, err := provider2.GetPlatformInstancesDir(devsyConfig.DefaultContext) if err != nil { return nil, err } @@ -21,9 +21,9 @@ func ListPlatformInstances( return nil, err } - retPlatformInstances := []*provider2.ProInstance{} + retPlatformInstances := []*provider2.PlatformInstance{} for _, entry := range entries { - platformInstanceConfig, err := provider2.LoadProInstanceConfig( + platformInstanceConfig, err := provider2.LoadPlatformInstanceConfig( devsyConfig.DefaultContext, entry.Name(), ) @@ -39,9 +39,9 @@ func ListPlatformInstances( } func FindProviderPlatformInstance( - platformInstances []*provider2.ProInstance, + platformInstances []*provider2.PlatformInstance, providerName string, -) (*provider2.ProInstance, bool) { +) (*provider2.PlatformInstance, bool) { for _, instance := range platformInstances { if instance.Provider == providerName { return instance, true diff --git a/pkg/workspace/provider.go b/pkg/workspace/provider.go index e1c634ff4c..4f7781b3c2 100644 --- a/pkg/workspace/provider.go +++ b/pkg/workspace/provider.go @@ -110,7 +110,7 @@ func ProviderFromHost( devsyConfig *config.Config, platformHost string, ) (*provider.ProviderConfig, error) { - platformInstanceConfig, err := provider.LoadProInstanceConfig( + platformInstanceConfig, err := provider.LoadPlatformInstanceConfig( devsyConfig.DefaultContext, platformHost, ) diff --git a/pkg/workspace/provider_update.go b/pkg/workspace/provider_update.go index b77cd08665..437d158652 100644 --- a/pkg/workspace/provider_update.go +++ b/pkg/workspace/provider_update.go @@ -18,7 +18,7 @@ import ( func CheckProviderUpdate( ctx context.Context, devsyConfig *config.Config, - platformInstance *provider2.ProInstance, + platformInstance *provider2.PlatformInstance, ) error { if version.GetVersion() == version.DevVersion { log.Debugf("skipping provider upgrade check during development") @@ -35,9 +35,9 @@ func CheckProviderUpdate( func checkProviderUpdateForInstance( ctx context.Context, devsyConfig *config.Config, - platformInstance *provider2.ProInstance, + platformInstance *provider2.PlatformInstance, ) error { - newVersion, err := platform.GetProInstanceDevsyVersion(platformInstance) + newVersion, err := platform.GetPlatformInstanceDevsyVersion(platformInstance) if err != nil { return fmt.Errorf("version for platform instance %s: %w", platformInstance.Host, err) } @@ -161,7 +161,7 @@ func providerUpdateSkipReason( func GetProInstance( devsyConfig *config.Config, providerName string, -) *provider2.ProInstance { +) *provider2.PlatformInstance { platformInstances, err := ListPlatformInstances(devsyConfig) if err != nil { return nil