-
Notifications
You must be signed in to change notification settings - Fork 5
/
pre_remove.go
95 lines (76 loc) · 1.99 KB
/
pre_remove.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package hooks
import (
"encoding/json"
"github.com/eleven-sh/cli/internal/config"
cliEntities "github.com/eleven-sh/cli/internal/entities"
"github.com/eleven-sh/cli/internal/interfaces"
"github.com/eleven-sh/eleven/entities"
)
type PreRemove struct {
sshConfig interfaces.SSHConfigManager
sshKeys interfaces.SSHKeysManager
sshKnownHosts interfaces.SSHKnownHostsManager
userConfig interfaces.UserConfigManager
github interfaces.GitHubManager
}
func NewPreRemove(
sshConfig interfaces.SSHConfigManager,
sshKeys interfaces.SSHKeysManager,
sshKnownHosts interfaces.SSHKnownHostsManager,
userConfig interfaces.UserConfigManager,
github interfaces.GitHubManager,
) PreRemove {
return PreRemove{
sshConfig: sshConfig,
sshKeys: sshKeys,
sshKnownHosts: sshKnownHosts,
userConfig: userConfig,
github: github,
}
}
func (p PreRemove) Run(
cloudService entities.CloudService,
elevenConfig *entities.Config,
cluster *entities.Cluster,
env *entities.Env,
) error {
err := p.sshKeys.RemovePEMIfExists(env.GetSSHKeyPairName())
if err != nil {
return err
}
err = p.sshConfig.RemoveHostIfExists(env.LocalSSHConfigHostname)
if err != nil {
return err
}
sshHostname := env.InstancePublicIPAddress
err = p.sshKnownHosts.RemoveIfExists(sshHostname)
if err != nil {
return err
}
// User could remove dev env in creating state
// (in case of error for example)
if len(env.AdditionalPropertiesJSON) == 0 {
return nil
}
var envAdditionalProperties *cliEntities.EnvAdditionalProperties
err = json.Unmarshal(
[]byte(env.AdditionalPropertiesJSON),
&envAdditionalProperties,
)
if err != nil {
return err
}
githubAccessToken := p.userConfig.GetString(
config.UserConfigKeyGitHubAccessToken,
)
if envAdditionalProperties.GitHubCreatedSSHKeyId != nil {
err = p.github.RemoveSSHKey(
githubAccessToken,
*envAdditionalProperties.GitHubCreatedSSHKeyId,
)
if err != nil && !p.github.IsNotFoundError(err) {
return err
}
}
return nil
}