Skip to content

Commit f2cd479

Browse files
author
Naoki Kanazawa
committed
delete時もprojectとzoneを渡すように変更した
1 parent 6ce52b9 commit f2cd479

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

pkg/command/vmms.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,12 @@ func NewVmmsInstanceDeleteCommand() *cobra.Command {
105105

106106
flags := cmd.Flags()
107107
flags.StringP("instance-name", "", "", "instance name")
108+
flags.StringP("project", "", "", "Project")
109+
flags.StringP("zone", "", "", "Zone")
108110

109111
cmd.MarkFlagRequired("instance-name")
112+
cmd.MarkFlagRequired("project")
113+
cmd.MarkFlagRequired("zone")
110114

111115
return cmd
112116
}
@@ -126,9 +130,17 @@ func vmmsInstanceDeleteCommandFunc(cmd *cobra.Command, args []string) error {
126130
if err != nil {
127131
return err
128132
}
133+
project, err := flags.GetString("project")
134+
if err != nil {
135+
return err
136+
}
137+
zone, err := flags.GetString("zone")
138+
if err != nil {
139+
return err
140+
}
129141

130142
cli := vmms.NewClient(endpoint, credential)
131-
if err := cli.DeleteInstance(instanceName); err != nil {
143+
if err := cli.DeleteInstance(instanceName, project, zone); err != nil {
132144
return err
133145
}
134146

pkg/vmms/vmms.go

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,17 +98,36 @@ func (c *client) CreateInstance(problemID, machineImageName, project, zone strin
9898
return &instance, nil
9999
}
100100

101+
type deleteInstanceRequestBody struct {
102+
Project string `json:"project" validate:"required" example:"networkcontest"`
103+
Zone string `json:"zone" validate:"required" zone:"asia-northeast1-b"`
104+
}
105+
101106
type deleteInstanceResponseBody struct {
102107
Response struct {
103108
IsDeleted bool `json:"is_deleted"`
104109
} `json:"response"`
105110
}
106111

107112
// DeleteInstance VMを削除する
108-
func (c *client) DeleteInstance(name string) error {
113+
func (c *client) DeleteInstance(name, project, zone string) error {
109114
u := fmt.Sprintf("%s/instance/%s", c.Endpoint, name)
110115

111-
req, err := http.NewRequest("DELETE", u, nil)
116+
reqBody := createInstanceRequestBody{
117+
Project: project,
118+
Zone: zone,
119+
}
120+
121+
if err := validate.Struct(reqBody); err != nil {
122+
return err
123+
}
124+
125+
reqBodyByte, err := json.Marshal(reqBody)
126+
if err != nil {
127+
return err
128+
}
129+
130+
req, err := http.NewRequest("DELETE", u, bytes.NewBuffer(reqBodyByte))
112131
if err != nil {
113132
return err
114133
}

0 commit comments

Comments
 (0)