diff --git a/pkg/cmd/ssh_aws.go b/pkg/cmd/ssh_aws.go index a855bc64e..e7bf88c7d 100644 --- a/pkg/cmd/ssh_aws.go +++ b/pkg/cmd/ssh_aws.go @@ -124,7 +124,7 @@ func (a *AwsInstanceAttribute) fetchAwsAttributes(targetReader TargetReader, nod if a.FlagProviderID != "" { arguments = fmt.Sprintf("ec2 describe-instances --filters Name=instance-id,Values=" + a.FlagProviderID + " --query Reservations[*].Instances[*].{VpcId:VpcId}") } else { - arguments = fmt.Sprintf("ec2 describe-instances --filters Name=network-interface.private-dns-name,Values=" + nodeName + " --query Reservations[*].Instances[*].{VpcId:VpcId}") + arguments = fmt.Sprintf("ec2 describe-subnets --filters Name=subnet-id,Values=" + a.SubnetID + " --query Subnets[*].{VpcId:VpcId}") } a.VpcID = strings.Trim(operate("aws", arguments), "\n") @@ -135,10 +135,16 @@ func (a *AwsInstanceAttribute) fetchAwsAttributes(targetReader TargetReader, nod if a.FlagProviderID != "" { arguments = fmt.Sprintf("ec2 describe-instances --filters Name=instance-id,Values=" + a.FlagProviderID + " --query Reservations[*].Instances[*].{ImageId:ImageId}") + a.ImageID = strings.Trim(operate("aws", arguments), "\n") } else { arguments = fmt.Sprintf("ec2 describe-instances --filters Name=network-interface.private-dns-name,Values=" + nodeName + " --query Reservations[*].Instances[*].{ImageId:ImageId}") + imageIDList := strings.Split(strings.TrimSuffix(strings.Trim(operate("aws", arguments), "\n"), "\n"), "\n") + if len(imageIDList) < 1 { + fmt.Println("there's no Image in this instance") + os.Exit(1) + } + a.ImageID = imageIDList[0] } - a.ImageID = strings.Trim(operate("aws", arguments), "\n") a.KeyName = a.ShootName + "-ssh-publickey" a.UserData = getBastionUserData(a.SSHPublicKey) diff --git a/pkg/cmd/utils.go b/pkg/cmd/utils.go index 1a94b1d3d..25d6c9b0c 100644 --- a/pkg/cmd/utils.go +++ b/pkg/cmd/utils.go @@ -353,10 +353,10 @@ func PrintoutObject(objectToPrint interface{}, writer io.Writer, outputFormat st return nil } -//CheckIPPortReachable check whether IP with port is reachable within 1 min +//CheckIPPortReachable check whether IP with port is reachable within certain period of time func CheckIPPortReachable(ip string, port string) error { attemptCount := 0 - for attemptCount < 6 { + for attemptCount < 12 { timeout := time.Second * 10 conn, _ := net.DialTimeout("tcp", net.JoinHostPort(ip, port), timeout) if conn != nil { @@ -364,6 +364,8 @@ func CheckIPPortReachable(ip string, port string) error { fmt.Printf("IP %s port %s is reachable\n", ip, port) return nil } + fmt.Println("waiting for 10 seconds to retry") + time.Sleep(time.Second * 10) attemptCount++ } return fmt.Errorf("IP %s port %s is not reachable", ip, port)