當前位置: 首頁>>代碼示例>>Golang>>正文


Golang awsup.AWSAPITarget類代碼示例

本文整理匯總了Golang中k8s/io/kops/upup/pkg/fi/cloudup/awsup.AWSAPITarget的典型用法代碼示例。如果您正苦於以下問題:Golang AWSAPITarget類的具體用法?Golang AWSAPITarget怎麽用?Golang AWSAPITarget使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了AWSAPITarget類的12個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: RenderAWS

func (_ *DHCPOptions) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *DHCPOptions) error {
    if a == nil {
        glog.V(2).Infof("Creating DHCPOptions with Name:%q", *e.Name)

        request := &ec2.CreateDhcpOptionsInput{}
        if e.DomainNameServers != nil {
            o := &ec2.NewDhcpConfiguration{
                Key:    aws.String("domain-name-servers"),
                Values: []*string{e.DomainNameServers},
            }
            request.DhcpConfigurations = append(request.DhcpConfigurations, o)
        }
        if e.DomainName != nil {
            o := &ec2.NewDhcpConfiguration{
                Key:    aws.String("domain-name"),
                Values: []*string{e.DomainName},
            }
            request.DhcpConfigurations = append(request.DhcpConfigurations, o)
        }

        response, err := t.Cloud.EC2.CreateDhcpOptions(request)
        if err != nil {
            return fmt.Errorf("error creating DHCPOptions: %v", err)
        }

        e.ID = response.DhcpOptions.DhcpOptionsId
    }

    return t.AddAWSTags(*e.ID, t.Cloud.BuildTags(e.Name))
}
開發者ID:crohling,項目名稱:kops,代碼行數:30,代碼來源:dhcp_options.go

示例2: RenderAWS

func (_ *VPC) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *VPC) error {
    shared := fi.BoolValue(e.Shared)
    if shared {
        // Verify the VPC was found and matches our required settings
        if a == nil {
            return fmt.Errorf("VPC with id %q not found", fi.StringValue(e.ID))
        }

        if changes != nil && changes.EnableDNSSupport != nil {
            return fmt.Errorf("VPC with id %q was set to be shared, but did not have EnableDNSSupport=true", fi.StringValue(e.ID))
        }

        if changes != nil && changes.EnableDNSHostnames != nil {
            return fmt.Errorf("VPC with id %q was set to be shared, but did not have EnableDNSHostnames=true", fi.StringValue(e.ID))
        }

        return nil
    }

    if a == nil {
        glog.V(2).Infof("Creating VPC with CIDR: %q", *e.CIDR)

        request := &ec2.CreateVpcInput{
            CidrBlock: e.CIDR,
        }

        response, err := t.Cloud.EC2.CreateVpc(request)
        if err != nil {
            return fmt.Errorf("error creating VPC: %v", err)
        }

        e.ID = response.Vpc.VpcId
    }

    if changes.EnableDNSSupport != nil {
        request := &ec2.ModifyVpcAttributeInput{
            VpcId:            e.ID,
            EnableDnsSupport: &ec2.AttributeBooleanValue{Value: changes.EnableDNSSupport},
        }

        _, err := t.Cloud.EC2.ModifyVpcAttribute(request)
        if err != nil {
            return fmt.Errorf("error modifying VPC attribute: %v", err)
        }
    }

    if changes.EnableDNSHostnames != nil {
        request := &ec2.ModifyVpcAttributeInput{
            VpcId:              e.ID,
            EnableDnsHostnames: &ec2.AttributeBooleanValue{Value: changes.EnableDNSHostnames},
        }

        _, err := t.Cloud.EC2.ModifyVpcAttribute(request)
        if err != nil {
            return fmt.Errorf("error modifying VPC attribute: %v", err)
        }
    }

    return t.AddAWSTags(*e.ID, t.Cloud.BuildTags(e.Name))
}
開發者ID:crohling,項目名稱:kops,代碼行數:60,代碼來源:vpc.go

示例3: RenderAWS

func (_ *InstanceElasticIPAttachment) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *InstanceElasticIPAttachment) error {
    if changes.Instance != nil {
        err := t.WaitForInstanceRunning(*e.Instance.ID)
        if err != nil {
            return err
        }

        request := &ec2.AssociateAddressInput{}
        request.InstanceId = e.Instance.ID
        request.AllocationId = a.ElasticIP.ID

        _, err = t.Cloud.EC2.AssociateAddress(request)
        if err != nil {
            return fmt.Errorf("error creating InstanceElasticIPAttachment: %v", err)
        }
    }

    return nil // no tags
}
開發者ID:crohling,項目名稱:kops,代碼行數:19,代碼來源:instance_elasticip_attachment.go

示例4: RenderAWS

func (_ *SecurityGroup) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *SecurityGroup) error {
    if a == nil {
        glog.V(2).Infof("Creating SecurityGroup with Name:%q VPC:%q", *e.Name, *e.VPC.ID)

        request := &ec2.CreateSecurityGroupInput{
            VpcId:       e.VPC.ID,
            GroupName:   e.Name,
            Description: e.Description,
        }

        response, err := t.Cloud.EC2.CreateSecurityGroup(request)
        if err != nil {
            return fmt.Errorf("error creating SecurityGroup: %v", err)
        }

        e.ID = response.GroupId
    }

    return t.AddAWSTags(*e.ID, t.Cloud.BuildTags(e.Name))
}
開發者ID:crohling,項目名稱:kops,代碼行數:20,代碼來源:securitygroup.go

示例5: RenderAWS

func (_ *Subnet) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *Subnet) error {
    if a == nil {
        glog.V(2).Infof("Creating Subnet with CIDR: %q", *e.CIDR)

        request := &ec2.CreateSubnetInput{
            CidrBlock:        e.CIDR,
            AvailabilityZone: e.AvailabilityZone,
            VpcId:            e.VPC.ID,
        }

        response, err := t.Cloud.EC2.CreateSubnet(request)
        if err != nil {
            return fmt.Errorf("error creating subnet: %v", err)
        }

        e.ID = response.Subnet.SubnetId
    }

    return t.AddAWSTags(*e.ID, t.Cloud.BuildTags(e.Name))
}
開發者ID:crohling,項目名稱:kops,代碼行數:20,代碼來源:subnet.go

示例6: RenderAWS

func (_ *EBSVolume) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *EBSVolume) error {
    if a == nil {
        glog.V(2).Infof("Creating PersistentVolume with Name:%q", *e.Name)

        request := &ec2.CreateVolumeInput{
            Size:             e.SizeGB,
            AvailabilityZone: e.AvailabilityZone,
            VolumeType:       e.VolumeType,
        }

        response, err := t.Cloud.EC2.CreateVolume(request)
        if err != nil {
            return fmt.Errorf("error creating PersistentVolume: %v", err)
        }

        e.ID = response.VolumeId
    }

    return t.AddAWSTags(*e.ID, e.Tags)
}
開發者ID:crohling,項目名稱:kops,代碼行數:20,代碼來源:ebsvolume.go

示例7: RenderAWS

func (_ *InstanceVolumeAttachment) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *InstanceVolumeAttachment) error {
    if a == nil {
        err := t.WaitForInstanceRunning(*e.Instance.ID)
        if err != nil {
            return err
        }

        request := &ec2.AttachVolumeInput{
            InstanceId: e.Instance.ID,
            VolumeId:   e.Volume.ID,
            Device:     e.Device,
        }

        _, err = t.Cloud.EC2.AttachVolume(request)
        if err != nil {
            return fmt.Errorf("error creating InstanceVolumeAttachment: %v", err)
        }
    }

    return nil // no tags
}
開發者ID:crohling,項目名稱:kops,代碼行數:21,代碼來源:instance_volume_attachment.go

示例8: RenderAWS

func (_ *InternetGateway) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *InternetGateway) error {
    shared := fi.BoolValue(e.Shared)
    if shared {
        // Verify the InternetGateway was found and matches our required settings
        if a == nil {
            return fmt.Errorf("InternetGateway for shared VPC was not found")
        }

        return nil
    }

    if a == nil {
        glog.V(2).Infof("Creating InternetGateway")

        request := &ec2.CreateInternetGatewayInput{}

        response, err := t.Cloud.EC2.CreateInternetGateway(request)
        if err != nil {
            return fmt.Errorf("error creating InternetGateway: %v", err)
        }

        e.ID = response.InternetGateway.InternetGatewayId
    }

    if a == nil || (changes != nil && changes.VPC != nil) {
        glog.V(2).Infof("Creating InternetGatewayAttachment")

        attachRequest := &ec2.AttachInternetGatewayInput{
            VpcId:             e.VPC.ID,
            InternetGatewayId: e.ID,
        }

        _, err := t.Cloud.EC2.AttachInternetGateway(attachRequest)
        if err != nil {
            return fmt.Errorf("error attaching InternetGateway to VPC: %v", err)
        }
    }

    return t.AddAWSTags(*e.ID, t.Cloud.BuildTags(e.Name))
}
開發者ID:crohling,項目名稱:kops,代碼行數:40,代碼來源:internetgateway.go

示例9: RenderAWS

func (_ *ElasticIP) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *ElasticIP) error {
    var publicIP *string

    tagOnResourceID, err := e.findTagOnResourceID(t.Cloud)
    if err != nil {
        return err
    }

    if a == nil {
        if tagOnResourceID == nil || e.TagUsingKey == nil {
            return fmt.Errorf("cannot create ElasticIP without TagOnResource being set (would leak)")
        }
        glog.V(2).Infof("Creating ElasticIP for VPC")

        request := &ec2.AllocateAddressInput{}
        request.Domain = aws.String(ec2.DomainTypeVpc)

        response, err := t.Cloud.EC2.AllocateAddress(request)
        if err != nil {
            return fmt.Errorf("error creating ElasticIP: %v", err)
        }

        e.ID = response.AllocationId
        e.PublicIP = response.PublicIp
        publicIP = response.PublicIp
    } else {
        publicIP = a.PublicIP
    }

    if publicIP != nil && e.TagUsingKey != nil && tagOnResourceID != nil {
        tags := map[string]string{
            *e.TagUsingKey: *publicIP,
        }
        err := t.AddAWSTags(*tagOnResourceID, tags)
        if err != nil {
            return fmt.Errorf("error adding tags to resource for ElasticIP: %v", err)
        }
    }
    return nil
}
開發者ID:crohling,項目名稱:kops,代碼行數:40,代碼來源:elastic_ip.go

示例10: RenderAWS

func (_ *RouteTable) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *RouteTable) error {
    if a == nil {
        vpcID := e.VPC.ID
        if vpcID == nil {
            return fi.RequiredField("VPC.ID")
        }

        glog.V(2).Infof("Creating RouteTable with VPC: %q", *vpcID)

        request := &ec2.CreateRouteTableInput{
            VpcId: vpcID,
        }

        response, err := t.Cloud.EC2.CreateRouteTable(request)
        if err != nil {
            return fmt.Errorf("error creating RouteTable: %v", err)
        }

        rt := response.RouteTable
        e.ID = rt.RouteTableId
    }

    return t.AddAWSTags(*e.ID, t.Cloud.BuildTags(e.Name))
}
開發者ID:crohling,項目名稱:kops,代碼行數:24,代碼來源:routetable.go

示例11: RenderAWS

func (_ *Instance) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *Instance) error {
    if a == nil {
        if e.ImageID == nil {
            return fi.RequiredField("ImageID")
        }
        image, err := t.Cloud.ResolveImage(*e.ImageID)
        if err != nil {
            return err
        }

        glog.V(2).Infof("Creating Instance with Name:%q", *e.Name)
        request := &ec2.RunInstancesInput{
            ImageId:      image.ImageId,
            InstanceType: e.InstanceType,
            MinCount:     aws.Int64(1),
            MaxCount:     aws.Int64(1),
        }

        if e.SSHKey != nil {
            request.KeyName = e.SSHKey.Name
        }

        securityGroupIDs := []*string{}
        for _, sg := range e.SecurityGroups {
            securityGroupIDs = append(securityGroupIDs, sg.ID)
        }
        request.NetworkInterfaces = []*ec2.InstanceNetworkInterfaceSpecification{
            {
                DeviceIndex:              aws.Int64(0),
                AssociatePublicIpAddress: e.AssociatePublicIP,
                SubnetId:                 e.Subnet.ID,
                PrivateIpAddress:         e.PrivateIPAddress,
                Groups:                   securityGroupIDs,
            },
        }

        if e.BlockDeviceMappings != nil {
            request.BlockDeviceMappings = []*ec2.BlockDeviceMapping{}
            for deviceName, bdm := range e.BlockDeviceMappings {
                request.BlockDeviceMappings = append(request.BlockDeviceMappings, bdm.ToEC2(deviceName))
            }
        }

        if e.UserData != nil {
            d, err := fi.ResourceAsBytes(e.UserData)
            if err != nil {
                return fmt.Errorf("error rendering Instance UserData: %v", err)
            }
            if len(d) > MaxUserDataSize {
                // TODO: Re-enable gzip?
                // But it exposes some bugs in the AWS console, so if we can avoid it, we should
                //d, err = fi.GzipBytes(d)
                //if err != nil {
                //	return fmt.Errorf("error while gzipping UserData: %v", err)
                //}
                return fmt.Errorf("Instance UserData was too large (%d bytes)", len(d))
            }
            request.UserData = aws.String(base64.StdEncoding.EncodeToString(d))
        }

        if e.IAMInstanceProfile != nil {
            request.IamInstanceProfile = &ec2.IamInstanceProfileSpecification{
                Name: e.IAMInstanceProfile.Name,
            }
        }

        response, err := t.Cloud.EC2.RunInstances(request)
        if err != nil {
            return fmt.Errorf("error creating Instance: %v", err)
        }

        e.ID = response.Instances[0].InstanceId
    }

    return t.AddAWSTags(*e.ID, e.Tags)
}
開發者ID:crohling,項目名稱:kops,代碼行數:76,代碼來源:instance.go

示例12: RenderAWS

func (_ *LoadBalancer) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *LoadBalancer) error {
    elbName := e.ID
    if elbName == nil {
        elbName = e.Name
    }

    if elbName == nil {
        return fi.RequiredField("ID")
    }

    if a == nil {
        request := &elb.CreateLoadBalancerInput{}
        request.LoadBalancerName = elbName

        for _, subnet := range e.Subnets {
            request.Subnets = append(request.Subnets, subnet.ID)
        }

        for _, sg := range e.SecurityGroups {
            request.SecurityGroups = append(request.SecurityGroups, sg.ID)
        }

        request.Listeners = []*elb.Listener{}

        for loadBalancerPort, listener := range e.Listeners {
            loadBalancerPortInt, err := strconv.ParseInt(loadBalancerPort, 10, 64)
            if err != nil {
                return fmt.Errorf("error parsing load balancer listener port: %q", loadBalancerPort)
            }
            awsListener := listener.mapToAWS(loadBalancerPortInt)
            request.Listeners = append(request.Listeners, awsListener)
        }

        glog.V(2).Infof("Creating ELB with Name:%q", *e.ID)

        response, err := t.Cloud.ELB.CreateLoadBalancer(request)
        if err != nil {
            return fmt.Errorf("error creating ELB: %v", err)
        }

        e.DNSName = response.DNSName
        e.ID = elbName

        lb, err := findELB(t.Cloud, *e.ID)
        if err != nil {
            return err
        }
        if lb == nil {
            // TODO: Retry?  Is this async
            return fmt.Errorf("Unable to find newly created ELB")
        }

        e.HostedZoneId = lb.CanonicalHostedZoneNameID
    } else {
        if changes.Subnets != nil {
            return fmt.Errorf("subnet changes on LoadBalancer not yet implemented")
        }

        if changes.Listeners != nil {
            request := &elb.CreateLoadBalancerListenersInput{}
            request.LoadBalancerName = elbName

            for loadBalancerPort, listener := range changes.Listeners {
                loadBalancerPortInt, err := strconv.ParseInt(loadBalancerPort, 10, 64)
                if err != nil {
                    return fmt.Errorf("error parsing load balancer listener port: %q", loadBalancerPort)
                }
                awsListener := listener.mapToAWS(loadBalancerPortInt)
                request.Listeners = append(request.Listeners, awsListener)
            }

            glog.V(2).Infof("Creating LoadBalancer listeners")

            _, err := t.Cloud.ELB.CreateLoadBalancerListeners(request)
            if err != nil {
                return fmt.Errorf("error creating LoadBalancerListeners: %v", err)
            }
        }
    }

    return t.AddELBTags(*e.ID, t.Cloud.BuildTags(e.Name))
}
開發者ID:crohling,項目名稱:kops,代碼行數:82,代碼來源:load_balancer.go


注:本文中的k8s/io/kops/upup/pkg/fi/cloudup/awsup.AWSAPITarget類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。