Skip to content

Commit 7ac9544

Browse files
committed
REVErT
1 parent 5633448 commit 7ac9544

File tree

2 files changed

+63
-1
lines changed

2 files changed

+63
-1
lines changed

pkg/provider/aws/modules/ec2/compute/dedicated-host/dedicated-host.go

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/redhat-developer/mapt/pkg/provider/aws"
1313
awsConstants "github.com/redhat-developer/mapt/pkg/provider/aws/constants"
1414
"github.com/redhat-developer/mapt/pkg/provider/aws/data"
15+
"github.com/redhat-developer/mapt/pkg/provider/aws/services/ec2/compute"
1516
"github.com/redhat-developer/mapt/pkg/provider/util/output"
1617
"github.com/redhat-developer/mapt/pkg/util/logging"
1718
resourcesUtil "github.com/redhat-developer/mapt/pkg/util/resources"
@@ -72,13 +73,50 @@ func Destroy(prefix *string) (err error) {
7273
if prefix == nil {
7374
prefix = &defaultPrefix
7475
}
75-
return aws.DestroyStack(
76+
// Get stack first and export host-id and region
77+
regionId, dhId, err := getDedicatedHostData(prefix)
78+
if err != nil {
79+
return err
80+
}
81+
err = aws.DestroyStack(
7682
aws.DestroyStackRequest{
7783
ProjectName: fmt.Sprintf("%s-%s",
7884
*prefix,
7985
maptContext.ProjectName()),
8086
Stackname: maptContext.StackNameByProject(maptDHDefaultPrefix),
8187
})
88+
if err != nil {
89+
return err
90+
}
91+
return compute.DedicatedHostRelease(regionId, dhId)
92+
}
93+
94+
func getDedicatedHostData(prefix *string) (region *string, hostId *string, err error) {
95+
s, err := manager.CheckStack(
96+
manager.Stack{
97+
ProjectName: fmt.Sprintf("%s-%s",
98+
*prefix,
99+
maptContext.ProjectName()),
100+
StackName: maptContext.StackNameByProject(maptDHDefaultPrefix),
101+
BackedURL: maptContext.BackedURL(),
102+
ProviderCredentials: aws.DefaultCredentials,
103+
})
104+
if err != nil {
105+
return nil, nil, err
106+
}
107+
outputs, err := manager.GetOutputs(s)
108+
if err != nil {
109+
return nil, nil, err
110+
}
111+
if value, exists := outputs[fmt.Sprintf("%s-%s", *prefix, outputRegion)]; exists {
112+
regionV := value.Value.(string)
113+
region = &regionV
114+
}
115+
if value, exists := outputs[fmt.Sprintf("%s-%s", *prefix, outputDedicatedHostID)]; exists {
116+
dhIdV := value.Value.(string)
117+
hostId = &dhIdV
118+
}
119+
return
82120
}
83121

84122
// this function will create the dedicated host resource

pkg/provider/aws/services/ec2/compute/compute.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,27 @@ func DedicatedHost(region, azId, instanceType *string, tags map[string]string) (
105105
}
106106
return &hostID, err
107107
}
108+
109+
func DedicatedHostRelease(region, hostId *string) error {
110+
ctx := context.Background()
111+
cfg, err := config.LoadDefaultConfig(
112+
ctx,
113+
config.WithRegion(*region))
114+
if err != nil {
115+
return err
116+
}
117+
client := ec2.NewFromConfig(cfg)
118+
logging.Debugf("destroying dedicated host: %s", *hostId)
119+
output, err := client.ReleaseHosts(ctx,
120+
&ec2.ReleaseHostsInput{
121+
HostIds: []string{*hostId},
122+
})
123+
if err != nil {
124+
return err
125+
}
126+
if len(output.Unsuccessful) == 1 {
127+
return fmt.Errorf("unsuccessful releases: %v", output.Unsuccessful)
128+
}
129+
logging.Debugf("dedicated host: %s has been destroyed successfully", *hostId)
130+
return nil
131+
}

0 commit comments

Comments
 (0)