本文整理汇总了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))
}
示例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))
}
示例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
}
示例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))
}
示例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))
}
示例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)
}
示例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
}
示例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))
}
示例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
}
示例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))
}
示例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)
}
示例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))
}