func deleteServerSafe(s *api.ScalewayAPI, serverID string) error { server, err := s.GetServer(serverID) if err != nil { return err } if server.State != "stopped" { if err := s.PostServerAction(serverID, "poweroff"); err != nil { return err } if err := waitForServerState(s, serverID, "stopped"); err != nil { return err } } if err := s.DeleteServer(serverID); err != nil { return err } if rootVolume, ok := server.Volumes["0"]; ok { if err := s.DeleteVolume(rootVolume.Identifier); err != nil { return err } } return nil }
// deleteStoppedServer needs to cleanup attached root volumes. this is not done // automatically by Scaleway func deleteStoppedServer(scaleway *api.ScalewayAPI, server *api.ScalewayServer) error { if err := scaleway.DeleteServer(server.Identifier); err != nil { return err } if rootVolume, ok := server.Volumes["0"]; ok { if err := scaleway.DeleteVolume(rootVolume.Identifier); err != nil { return err } } return nil }