github.phpd.cn/hashicorp/packer@v1.3.2/builder/ncloud/waiter_server_image_status.go (about) 1 package ncloud 2 3 import ( 4 "fmt" 5 "log" 6 "time" 7 8 ncloud "github.com/NaverCloudPlatform/ncloud-sdk-go/sdk" 9 ) 10 11 func waiterMemberServerImageStatus(conn *ncloud.Conn, memberServerImageNo string, status string, timeout time.Duration) error { 12 reqParams := new(ncloud.RequestServerImageList) 13 reqParams.MemberServerImageNoList = []string{memberServerImageNo} 14 15 c1 := make(chan error, 1) 16 17 go func() { 18 for { 19 memberServerImageList, err := conn.GetMemberServerImageList(reqParams) 20 if err != nil { 21 c1 <- err 22 return 23 } 24 25 code := memberServerImageList.MemberServerImageList[0].MemberServerImageStatus.Code 26 if code == status { 27 c1 <- nil 28 return 29 } 30 31 log.Printf("Status of member server image [%s] is %s\n", memberServerImageNo, code) 32 log.Println(memberServerImageList.MemberServerImageList[0]) 33 time.Sleep(time.Second * 5) 34 } 35 }() 36 37 select { 38 case res := <-c1: 39 return res 40 case <-time.After(timeout): 41 return fmt.Errorf("TIMEOUT : member server image status is not changed into status %s", status) 42 } 43 }