github.phpd.cn/hashicorp/packer@v1.3.2/builder/ncloud/step_get_rootpassword.go (about) 1 package ncloud 2 3 import ( 4 "context" 5 "fmt" 6 7 ncloud "github.com/NaverCloudPlatform/ncloud-sdk-go/sdk" 8 "github.com/hashicorp/packer/helper/multistep" 9 "github.com/hashicorp/packer/packer" 10 ) 11 12 type StepGetRootPassword struct { 13 Conn *ncloud.Conn 14 GetRootPassword func(serverInstanceNo string, privateKey string) (string, error) 15 Say func(message string) 16 Error func(e error) 17 } 18 19 func NewStepGetRootPassword(conn *ncloud.Conn, ui packer.Ui) *StepGetRootPassword { 20 var step = &StepGetRootPassword{ 21 Conn: conn, 22 Say: func(message string) { ui.Say(message) }, 23 Error: func(e error) { ui.Error(e.Error()) }, 24 } 25 26 step.GetRootPassword = step.getRootPassword 27 28 return step 29 } 30 31 func (s *StepGetRootPassword) getRootPassword(serverInstanceNo string, privateKey string) (string, error) { 32 reqParams := new(ncloud.RequestGetRootPassword) 33 reqParams.ServerInstanceNo = serverInstanceNo 34 reqParams.PrivateKey = privateKey 35 36 rootPassword, err := s.Conn.GetRootPassword(reqParams) 37 if err != nil { 38 return "", err 39 } 40 41 s.Say(fmt.Sprintf("Root password is %s", rootPassword.RootPassword)) 42 43 return rootPassword.RootPassword, nil 44 } 45 46 func (s *StepGetRootPassword) Run(_ context.Context, state multistep.StateBag) multistep.StepAction { 47 s.Say("Get Root Password") 48 49 serverInstanceNo := state.Get("InstanceNo").(string) 50 loginKey := state.Get("LoginKey").(*LoginKey) 51 52 rootPassword, err := s.GetRootPassword(serverInstanceNo, loginKey.PrivateKey) 53 54 state.Put("Password", rootPassword) 55 56 return processStepResult(err, s.Error, state) 57 } 58 59 func (*StepGetRootPassword) Cleanup(multistep.StateBag) { 60 }