From a7d1a704428ea44d01e3713122621e6f140fac6c Mon Sep 17 00:00:00 2001 From: Nathan LeClaire Date: Tue, 3 Mar 2015 14:47:06 -0800 Subject: [PATCH 1/2] Fix IP address not being set correctly due to race Signed-off-by: Nathan LeClaire --- drivers/amazonec2/amazonec2.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/amazonec2/amazonec2.go b/drivers/amazonec2/amazonec2.go index 2913cf13ad..c720855d20 100644 --- a/drivers/amazonec2/amazonec2.go +++ b/drivers/amazonec2/amazonec2.go @@ -316,8 +316,8 @@ func (d *Driver) Create() error { return err } if ip != "" { - - d.IPAddress = instance.IpAddress + d.IPAddress = ip + log.Debugf("Got the IP Address, it's %q", d.IPAddress) break } time.Sleep(5 * time.Second) @@ -565,10 +565,6 @@ func (d *Driver) waitForInstance() error { time.Sleep(1 * time.Second) } - if err := d.updateDriver(); err != nil { - return err - } - return nil } From 8d0bf21c6d6c59b830cd2c34476547476a9af395 Mon Sep 17 00:00:00 2001 From: Nathan LeClaire Date: Tue, 3 Mar 2015 14:48:04 -0800 Subject: [PATCH 2/2] Fix panic when instance doesn't exist remotely Signed-off-by: Nathan LeClaire --- drivers/amazonec2/amazonec2.go | 2 ++ drivers/amazonec2/amz/ec2.go | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/amazonec2/amazonec2.go b/drivers/amazonec2/amazonec2.go index c720855d20..27a2600c54 100644 --- a/drivers/amazonec2/amazonec2.go +++ b/drivers/amazonec2/amazonec2.go @@ -402,6 +402,8 @@ func (d *Driver) GetState() (state.State, error) { return state.Stopping, nil case "stopped": return state.Stopped, nil + default: + return state.Error, nil } return state.None, nil } diff --git a/drivers/amazonec2/amz/ec2.go b/drivers/amazonec2/amz/ec2.go index 30d9cff287..6a8b40470c 100644 --- a/drivers/amazonec2/amz/ec2.go +++ b/drivers/amazonec2/amz/ec2.go @@ -501,9 +501,11 @@ func (e *EC2) GetInstance(instanceId string) (EC2Instance, error) { return ec2Instance, fmt.Errorf("Error unmarshalling AWS response XML: %s", err) } - reservationSet := unmarshalledResponse.ReservationSet[0] - instance := reservationSet.InstancesSet[0] - return instance, nil + if len(unmarshalledResponse.ReservationSet) > 0 { + reservationSet := unmarshalledResponse.ReservationSet[0] + ec2Instance = reservationSet.InstancesSet[0] + } + return ec2Instance, nil } func (e *EC2) StartInstance(instanceId string) error {