func NewFakeAWSServices() *FakeAWSServices { s := &FakeAWSServices{} s.availabilityZone = "us-east-1a" s.ec2 = &FakeEC2{aws: s} s.elb = &FakeELB{aws: s} s.asg = &FakeASG{aws: s} s.metadata = &FakeMetadata{aws: s} s.networkInterfacesMacs = []string{"aa:bb:cc:dd:ee:00", "aa:bb:cc:dd:ee:01"} s.networkInterfacesVpcIDs = []string{"vpc-mac0", "vpc-mac1"} s.instanceId = "i-self" s.privateDnsName = "ip-172-20-0-100.ec2.internal" var selfInstance ec2.Instance selfInstance.InstanceId = &s.instanceId selfInstance.PrivateDnsName = &s.privateDnsName s.instances = []*ec2.Instance{&selfInstance} var tag ec2.Tag tag.Key = aws.String(TagNameKubernetesCluster) tag.Value = aws.String(TestClusterId) selfInstance.Tags = []*ec2.Tag{&tag} return s }
func NewFakeAWSServices() *FakeAWSServices { s := &FakeAWSServices{} s.region = "us-east-1" s.ec2 = &FakeEC2{aws: s} s.elb = &FakeELB{aws: s} s.asg = &FakeASG{aws: s} s.metadata = &FakeMetadata{aws: s} s.networkInterfacesMacs = []string{"aa:bb:cc:dd:ee:00", "aa:bb:cc:dd:ee:01"} s.networkInterfacesVpcIDs = []string{"vpc-mac0", "vpc-mac1"} selfInstance := &ec2.Instance{} selfInstance.InstanceId = aws.String("i-self") selfInstance.Placement = &ec2.Placement{ AvailabilityZone: aws.String("us-east-1a"), } selfInstance.PrivateDnsName = aws.String("ip-172-20-0-100.ec2.internal") selfInstance.PrivateIpAddress = aws.String("192.168.0.1") selfInstance.PublicIpAddress = aws.String("1.2.3.4") s.selfInstance = selfInstance s.instances = []*ec2.Instance{selfInstance} var tag ec2.Tag tag.Key = aws.String(TagNameKubernetesCluster) tag.Value = aws.String(TestClusterId) selfInstance.Tags = []*ec2.Tag{&tag} return s }
func TestFindInstancesByNodeName(t *testing.T) { awsServices := NewFakeAWSServices() nodeNameOne := "my-dns.internal" nodeNameTwo := "my-dns-two.internal" var tag ec2.Tag tag.Key = aws.String(TagNameKubernetesCluster) tag.Value = aws.String(TestClusterId) tags := []*ec2.Tag{&tag} var runningInstance ec2.Instance runningInstance.InstanceId = aws.String("i-running") runningInstance.PrivateDnsName = aws.String(nodeNameOne) runningInstance.State = &ec2.InstanceState{Code: aws.Int64(16), Name: aws.String("running")} runningInstance.Tags = tags var secondInstance ec2.Instance secondInstance.InstanceId = aws.String("i-running") secondInstance.PrivateDnsName = aws.String(nodeNameTwo) secondInstance.State = &ec2.InstanceState{Code: aws.Int64(48), Name: aws.String("running")} secondInstance.Tags = tags var terminatedInstance ec2.Instance terminatedInstance.InstanceId = aws.String("i-terminated") terminatedInstance.PrivateDnsName = aws.String(nodeNameOne) terminatedInstance.State = &ec2.InstanceState{Code: aws.Int64(48), Name: aws.String("terminated")} terminatedInstance.Tags = tags instances := []*ec2.Instance{&secondInstance, &runningInstance, &terminatedInstance} awsServices.instances = append(awsServices.instances, instances...) c, err := newAWSCloud(strings.NewReader("[global]"), awsServices) if err != nil { t.Errorf("Error building aws cloud: %v", err) return } nodeNames := []string{nodeNameOne} returnedInstances, errr := c.getInstancesByNodeNames(nodeNames) if errr != nil { t.Errorf("Failed to find instance: %v", err) return } if len(returnedInstances) != 1 { t.Errorf("Expected a single isntance but found: %v", returnedInstances) } if *returnedInstances[0].PrivateDnsName != nodeNameOne { t.Errorf("Expected node name %v but got %v", nodeNameOne, returnedInstances[0].PrivateDnsName) } }
func NewFakeAWSServices() *FakeAWSServices { s := &FakeAWSServices{} s.availabilityZone = "us-east-1a" s.ec2 = &FakeEC2{aws: s} s.elb = &FakeELB{aws: s} s.metadata = &FakeMetadata{aws: s} s.instanceId = "i-self" var selfInstance ec2.Instance selfInstance.InstanceID = &s.instanceId s.instances = []*ec2.Instance{&selfInstance} var tag ec2.Tag tag.Key = aws.String(TagNameKubernetesCluster) tag.Value = aws.String(TestClusterId) selfInstance.Tags = []*ec2.Tag{&tag} return s }
func TestFindInstanceByNodeNameExcludesTerminatedInstances(t *testing.T) { awsServices := NewFakeAWSServices() nodeName := "my-dns.internal" var tag ec2.Tag tag.Key = aws.String(TagNameKubernetesCluster) tag.Value = aws.String(TestClusterId) tags := []*ec2.Tag{&tag} var runningInstance ec2.Instance runningInstance.InstanceId = aws.String("i-running") runningInstance.PrivateDnsName = aws.String(nodeName) runningInstance.State = &ec2.InstanceState{Code: aws.Int64(16), Name: aws.String("running")} runningInstance.Tags = tags var terminatedInstance ec2.Instance terminatedInstance.InstanceId = aws.String("i-terminated") terminatedInstance.PrivateDnsName = aws.String(nodeName) terminatedInstance.State = &ec2.InstanceState{Code: aws.Int64(48), Name: aws.String("terminated")} terminatedInstance.Tags = tags instances := []*ec2.Instance{&terminatedInstance, &runningInstance} awsServices.instances = append(awsServices.instances, instances...) c, err := newAWSCloud(strings.NewReader("[global]"), awsServices) if err != nil { t.Errorf("Error building aws cloud: %v", err) return } instance, err := c.findInstanceByNodeName(nodeName) if err != nil { t.Errorf("Failed to find instance: %v", err) return } if *instance.InstanceId != "i-running" { t.Errorf("Expected running instance but got %v", *instance.InstanceId) } }