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  }