Skip to content
Merged
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
2 changes: 2 additions & 0 deletions pkg/cmd/cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import (
"github.com/brevdev/brev-cli/pkg/cmd/refresh"
"github.com/brevdev/brev-cli/pkg/cmd/register"
"github.com/brevdev/brev-cli/pkg/cmd/reset"
"github.com/brevdev/brev-cli/pkg/cmd/revokessh"
"github.com/brevdev/brev-cli/pkg/cmd/runtasks"
"github.com/brevdev/brev-cli/pkg/cmd/scale"
"github.com/brevdev/brev-cli/pkg/cmd/set"
Expand Down Expand Up @@ -333,6 +334,7 @@ func createCmdTree(cmd *cobra.Command, t *terminal.Terminal, loginCmdStore *stor
cmd.AddCommand(deregister.NewCmdDeregister(t, externalNodeCmdStore))
cmd.AddCommand(enablessh.NewCmdEnableSSH(t, externalNodeCmdStore))
cmd.AddCommand(grantssh.NewCmdGrantSSH(t, externalNodeCmdStore))
cmd.AddCommand(revokessh.NewCmdRevokeSSH(t, externalNodeCmdStore))
cmd.AddCommand(runtasks.NewCmdRunTasks(t, noLoginCmdStore))
cmd.AddCommand(proxy.NewCmdProxy(t, noLoginCmdStore))
cmd.AddCommand(healthcheck.NewCmdHealthcheck(t, noLoginCmdStore))
Expand Down
25 changes: 6 additions & 19 deletions pkg/cmd/deregister/deregister.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import (

nodev1 "buf.build/gen/go/brevdev/devplane/protocolbuffers/go/devplaneapi/v1"
"connectrpc.com/connect"
breverrors "github.com/brevdev/brev-cli/pkg/errors"

"github.com/brevdev/brev-cli/pkg/cmd/register"
"github.com/brevdev/brev-cli/pkg/config"
"github.com/brevdev/brev-cli/pkg/entity"
breverrors "github.com/brevdev/brev-cli/pkg/errors"
"github.com/brevdev/brev-cli/pkg/externalnode"
"github.com/brevdev/brev-cli/pkg/terminal"

Expand All @@ -22,7 +22,6 @@ import (
// DeregisterStore defines the store methods needed by the deregister command.
type DeregisterStore interface {
GetCurrentUser() (*entity.User, error)
GetBrevHomePath() (string, error)
GetAccessToken() (string, error)
}

Expand Down Expand Up @@ -53,13 +52,13 @@ type deregisterDeps struct {
sshKeys SSHKeyRemover
}

func defaultDeregisterDeps(brevHome string) deregisterDeps {
func defaultDeregisterDeps() deregisterDeps {
return deregisterDeps{
platform: register.LinuxPlatform{},
prompter: register.TerminalPrompter{},
netbird: register.Netbird{},
nodeClients: register.DefaultNodeClientFactory{},
registrationStore: register.NewFileRegistrationStore(brevHome),
registrationStore: register.NewFileRegistrationStore(),
sshKeys: brevSSHKeyRemover{},
}
}
Expand All @@ -82,11 +81,7 @@ func NewCmdDeregister(t *terminal.Terminal, store DeregisterStore) *cobra.Comman
Long: deregisterLong,
Example: deregisterExample,
RunE: func(cmd *cobra.Command, args []string) error {
brevHome, err := store.GetBrevHomePath()
if err != nil {
return breverrors.WrapAndTrace(err)
}
return runDeregister(cmd.Context(), t, store, defaultDeregisterDeps(brevHome))
return runDeregister(cmd.Context(), t, store, defaultDeregisterDeps())
},
}

Expand All @@ -98,17 +93,9 @@ func runDeregister(ctx context.Context, t *terminal.Terminal, s DeregisterStore,
return fmt.Errorf("brev deregister is only supported on Linux")
}

registered, err := deps.registrationStore.Exists()
if err != nil {
return breverrors.WrapAndTrace(err)
}
if !registered {
return fmt.Errorf("no registration found; this machine does not appear to be registered\nRun 'brev register' to register your device")
}

reg, err := deps.registrationStore.Load()
if err != nil {
return fmt.Errorf("failed to read registration file: %w", err)
return breverrors.WrapAndTrace(err)
}

t.Vprint("")
Expand Down Expand Up @@ -169,7 +156,7 @@ func runDeregister(ctx context.Context, t *terminal.Terminal, s DeregisterStore,
t.Vprint("Removing registration data...")
if err := deps.registrationStore.Delete(); err != nil {
t.Vprintf(" Warning: failed to remove local registration file: %v\n", err)
t.Vprint(" You can manually remove it with: rm ~/.brev/device_registration.json")
t.Vprint(" You can manually remove it with: rm /etc/brev/device_registration.json")
}

t.Vprint(t.Green("Deregistration complete."))
Expand Down
28 changes: 13 additions & 15 deletions pkg/cmd/deregister/deregister_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (

type mockDeregisterStore struct {
user *entity.User
home string
token string
err error
}
Expand All @@ -31,8 +30,7 @@ func (m *mockDeregisterStore) GetCurrentUser() (*entity.User, error) {
return m.user, nil
}

func (m *mockDeregisterStore) GetBrevHomePath() (string, error) { return m.home, nil }
func (m *mockDeregisterStore) GetAccessToken() (string, error) { return m.token, nil }
func (m *mockDeregisterStore) GetAccessToken() (string, error) { return m.token, nil }

// fakeNodeService implements the server side of ExternalNodeService for testing.
type fakeNodeService struct {
Expand Down Expand Up @@ -150,8 +148,8 @@ func Test_runDeregister_HappyPath(t *testing.T) {
}

store := &mockDeregisterStore{
user: &entity.User{ID: "user_1"},
home: "/home/testuser/.brev",
user: &entity.User{ID: "user_1"},

token: "tok",
}

Expand Down Expand Up @@ -196,8 +194,8 @@ func Test_runDeregister_UserCancels(t *testing.T) {
}

store := &mockDeregisterStore{
user: &entity.User{ID: "user_1"},
home: "/home/testuser/.brev",
user: &entity.User{ID: "user_1"},

token: "tok",
}

Expand Down Expand Up @@ -229,8 +227,8 @@ func Test_runDeregister_NotRegistered(t *testing.T) {
regStore := &mockRegistrationStore{}

store := &mockDeregisterStore{
user: &entity.User{ID: "user_1"},
home: "/home/testuser/.brev",
user: &entity.User{ID: "user_1"},

token: "tok",
}

Expand All @@ -255,8 +253,8 @@ func Test_runDeregister_RemoveNodeFails(t *testing.T) {
}

store := &mockDeregisterStore{
user: &entity.User{ID: "user_1"},
home: "/home/testuser/.brev",
user: &entity.User{ID: "user_1"},

token: "tok",
}

Expand Down Expand Up @@ -295,8 +293,8 @@ func Test_runDeregister_AlwaysUninstallsNetbird(t *testing.T) {
}

store := &mockDeregisterStore{
user: &entity.User{ID: "user_1"},
home: "/home/testuser/.brev",
user: &entity.User{ID: "user_1"},

token: "tok",
}

Expand Down Expand Up @@ -343,8 +341,8 @@ func Test_runDeregister_RemoveBrevKeysHandling(t *testing.T) {
}

store := &mockDeregisterStore{
user: &entity.User{ID: "user_1"},
home: "/home/testuser/.brev",
user: &entity.User{ID: "user_1"},

token: "tok",
}

Expand Down
19 changes: 3 additions & 16 deletions pkg/cmd/enablessh/enablessh.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import (
// EnableSSHStore defines the store methods needed by the enableSSH command.
type EnableSSHStore interface {
GetCurrentUser() (*entity.User, error)
GetBrevHomePath() (string, error)
GetAccessToken() (string, error)
}

Expand All @@ -32,11 +31,11 @@ type enableSSHDeps struct {
registrationStore register.RegistrationStore
}

func defaultEnableSSHDeps(brevHome string) enableSSHDeps {
func defaultEnableSSHDeps() enableSSHDeps {
return enableSSHDeps{
platform: register.LinuxPlatform{},
nodeClients: register.DefaultNodeClientFactory{},
registrationStore: register.NewFileRegistrationStore(brevHome),
registrationStore: register.NewFileRegistrationStore(),
}
}

Expand All @@ -49,11 +48,7 @@ func NewCmdEnableSSH(t *terminal.Terminal, store EnableSSHStore) *cobra.Command
Long: "Enable SSH access to this registered device for the current Brev user.",
Example: " brev enable-ssh",
RunE: func(cmd *cobra.Command, args []string) error {
brevHome, err := store.GetBrevHomePath()
if err != nil {
return breverrors.WrapAndTrace(err)
}
return runEnableSSH(cmd.Context(), t, store, defaultEnableSSHDeps(brevHome))
return runEnableSSH(cmd.Context(), t, store, defaultEnableSSHDeps())
},
}

Expand All @@ -65,14 +60,6 @@ func runEnableSSH(ctx context.Context, t *terminal.Terminal, s EnableSSHStore, d
return fmt.Errorf("brev enable-ssh is only supported on Linux")
}

registered, err := deps.registrationStore.Exists()
if err != nil {
return breverrors.WrapAndTrace(err)
}
if !registered {
return fmt.Errorf("no registration found; this machine does not appear to be registered\nRun 'brev register' to register your device first")
}

reg, err := deps.registrationStore.Load()
if err != nil {
return fmt.Errorf("failed to read registration file: %w", err)
Expand Down
Loading
Loading