github.com/renier/terraform@v0.7.8-0.20161024133817-eb8a9ef5471a/builtin/providers/scaleway/helpers.go (about) 1 package scaleway 2 3 import ( 4 "log" 5 "time" 6 7 "github.com/scaleway/scaleway-cli/pkg/api" 8 ) 9 10 // Bool returns a pointer to of the bool value passed in. 11 func Bool(val bool) *bool { 12 return &val 13 } 14 15 // String returns a pointer to of the string value passed in. 16 func String(val string) *string { 17 return &val 18 } 19 20 // NOTE copied from github.com/scaleway/scaleway-cli/pkg/api/helpers.go 21 // the helpers.go file pulls in quite a lot dependencies, and they're just convenience wrappers anyway 22 23 func deleteServerSafe(s *api.ScalewayAPI, serverID string) error { 24 server, err := s.GetServer(serverID) 25 if err != nil { 26 return err 27 } 28 29 if server.State != "stopped" { 30 if err := s.PostServerAction(serverID, "poweroff"); err != nil { 31 return err 32 } 33 if err := waitForServerState(s, serverID, "stopped"); err != nil { 34 return err 35 } 36 } 37 38 if err := s.DeleteServer(serverID); err != nil { 39 return err 40 } 41 if rootVolume, ok := server.Volumes["0"]; ok { 42 if err := s.DeleteVolume(rootVolume.Identifier); err != nil { 43 return err 44 } 45 } 46 47 return nil 48 } 49 50 func waitForServerState(s *api.ScalewayAPI, serverID string, targetState string) error { 51 var server *api.ScalewayServer 52 var err error 53 54 var currentState string 55 56 for { 57 server, err = s.GetServer(serverID) 58 if err != nil { 59 return err 60 } 61 if currentState != server.State { 62 log.Printf("[DEBUG] Server changed state to %q\n", server.State) 63 currentState = server.State 64 } 65 if server.State == targetState { 66 break 67 } 68 time.Sleep(1 * time.Second) 69 } 70 71 return nil 72 }