diff --git a/go.mod b/go.mod index 982ed049c..f7b3ec7cf 100644 --- a/go.mod +++ b/go.mod @@ -4,11 +4,11 @@ go 1.17 require ( github.com/IBM/keyprotect-go-client v0.8.0 - github.com/aws/aws-sdk-go v1.44.62 + github.com/aws/aws-sdk-go v1.44.67 github.com/aws/aws-sdk-go-v2/service/sts v1.16.13 github.com/ceph/ceph-csi/api v0.0.0-00010101000000-000000000000 // TODO: API for managing subvolume metadata and snapshot metadata requires `ceph_ci_untested` build-tag - github.com/ceph/go-ceph v0.16.0 + github.com/ceph/go-ceph v0.17.0 github.com/container-storage-interface/spec v1.6.0 github.com/csi-addons/replication-lib-utils v0.2.0 github.com/csi-addons/spec v0.1.2-0.20220804080457-522edd16192e diff --git a/go.sum b/go.sum index ca18a12fc..b9d6d07d9 100644 --- a/go.sum +++ b/go.sum @@ -150,9 +150,8 @@ github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpi github.com/aws/aws-sdk-go v1.25.41/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.38.49/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.44.28/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.62 h1:N8qOPnBhl2ZCIFiqyB640Xt5CeX9D8CEVhG/Vj7jGJU= -github.com/aws/aws-sdk-go v1.44.62/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.67 h1:+nxfXbMe8QUB6svLsuLYsp+WhZBKM26w62Zidir739A= +github.com/aws/aws-sdk-go v1.44.67/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v1.16.11 h1:xM1ZPSvty3xVmdxiGr7ay/wlqv+MWhH0rMlyLdbC0YQ= github.com/aws/aws-sdk-go-v2 v1.16.11/go.mod h1:WTACcleLz6VZTp7fak4EO5b9Q4foxbn+8PIz3PmyKlo= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.18 h1:OmiwoVyLKEqqD5GvB683dbSqxiOfvx4U2lDZhG2Esc4= @@ -193,8 +192,8 @@ github.com/cenkalti/backoff/v3 v3.0.0 h1:ske+9nBpD9qZsTBoF41nW5L+AIuFBKMeze18XQ3 github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/centrify/cloud-golang-sdk v0.0.0-20190214225812-119110094d0f/go.mod h1:C0rtzmGXgN78pYR0tGJFhtHgkbAs0lIbHwkB81VxDQE= -github.com/ceph/go-ceph v0.16.0 h1:hEhVfEFsLoGJF+i3r7Wwh4QlMN+MnWqNxfic9v6GV04= -github.com/ceph/go-ceph v0.16.0/go.mod h1:SzhpLdyU+ixxJ68bbqoEa481P5N5d5lv5jVMxcRMLfU= +github.com/ceph/go-ceph v0.17.0 h1:2McqHPqvAU+qgROJ+A5/eK70Lt7WsKizkTasDEOZa/Q= +github.com/ceph/go-ceph v0.17.0/go.mod h1:WV8DzlYPtW3SQ/HiT3Dz6ia0+v8dPKWtYY/dWl6BqPg= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= @@ -1113,7 +1112,6 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go index 2647b7cf3..a8a0ab73b 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go @@ -10820,6 +10820,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, endpointKey{ Region: "ap-southeast-2", }: endpoint{}, @@ -15703,6 +15706,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -19900,6 +19906,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, @@ -19909,6 +19918,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -25085,9 +25097,21 @@ var awscnPartition = partition{ endpointKey{ Region: "cn-north-1", }: endpoint{}, + endpointKey{ + Region: "cn-north-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "firehose.cn-north-1.api.amazonwebservices.com.cn", + }, endpointKey{ Region: "cn-northwest-1", }: endpoint{}, + endpointKey{ + Region: "cn-northwest-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "firehose.cn-northwest-1.api.amazonwebservices.com.cn", + }, }, }, "fms": service{ diff --git a/vendor/github.com/aws/aws-sdk-go/aws/version.go b/vendor/github.com/aws/aws-sdk-go/aws/version.go index 2422f101a..d75329b0b 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/version.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/version.go @@ -5,4 +5,4 @@ package aws const SDKName = "aws-sdk-go" // SDKVersion is the version of this SDK -const SDKVersion = "1.44.62" +const SDKVersion = "1.44.67" diff --git a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go index d00d57980..5e33e38fa 100644 --- a/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go +++ b/vendor/github.com/aws/aws-sdk-go/service/ec2/api.go @@ -634,6 +634,11 @@ func (c *EC2) AllocateAddressRequest(input *AllocateAddressInput) (req *request. // telecommunication carrier, to a network interface which resides in a subnet // in a Wavelength Zone (for example an EC2 instance). // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -1157,6 +1162,11 @@ func (c *EC2) AssociateAddressRequest(input *AssociateAddressInput) (req *reques // the Elastic IP address is remapped to the same instance. For more information, // see the Elastic IP Addresses section of Amazon EC2 Pricing (http://aws.amazon.com/ec2/pricing/). // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -2200,6 +2210,12 @@ func (c *EC2) AttachClassicLinkVpcRequest(input *AttachClassicLinkVpcInput) (req // AttachClassicLinkVpc API operation for Amazon Elastic Compute Cloud. // +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Links an EC2-Classic instance to a ClassicLink-enabled VPC through one or // more of the VPC's security groups. You cannot link an EC2-Classic instance // to more than one VPC at a time. You can only link an instance that's in the @@ -2695,7 +2711,9 @@ func (c *EC2) AuthorizeSecurityGroupEgressRequest(input *AuthorizeSecurityGroupE // // An outbound rule permits instances to send traffic to the specified IPv4 // or IPv6 CIDR address ranges, or to the instances that are associated with -// the specified source security groups. +// the specified source security groups. When specifying an outbound rule for +// your security group in a VPC, the IpPermissions must include a destination +// for the traffic. // // You specify a protocol for each rule (for example, TCP). For the TCP and // UDP protocols, you must also specify the destination port or port range. @@ -2783,7 +2801,9 @@ func (c *EC2) AuthorizeSecurityGroupIngressRequest(input *AuthorizeSecurityGroup // // An inbound rule permits instances to receive traffic from the specified IPv4 // or IPv6 CIDR address range, or from the instances that are associated with -// the specified destination security groups. +// the specified destination security groups. When specifying an inbound rule +// for your security group in a VPC, the IpPermissions must include a source +// for the traffic. // // You specify a protocol for each rule (for example, TCP). For TCP and UDP, // you must also specify the destination port or port range. For ICMP/ICMPv6, @@ -2796,6 +2816,11 @@ func (c *EC2) AuthorizeSecurityGroupIngressRequest(input *AuthorizeSecurityGroup // For more information about VPC security group quotas, see Amazon VPC quotas // (https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html). // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -4586,6 +4611,11 @@ func (c *EC2) CreateDefaultVpcRequest(input *CreateDefaultVpcInput) (req *reques // VPC in a Region that supports EC2-Classic, see "I really want a default VPC // for my existing EC2 account. Is that possible?" in the Default VPCs FAQ (http://aws.amazon.com/vpc/faqs/#Default_VPCs). // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -7361,6 +7391,11 @@ func (c *EC2) CreateSecurityGroupRequest(input *CreateSecurityGroupInput) (req * // For more information about VPC security group limits, see Amazon VPC Limits // (https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html). // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -12618,6 +12653,11 @@ func (c *EC2) DeleteSecurityGroupRequest(input *DeleteSecurityGroupInput) (req * // or is referenced by another security group, the operation fails with InvalidGroup.InUse // in EC2-Classic or DependencyViolation in EC2-VPC. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -15497,6 +15537,11 @@ func (c *EC2) DescribeAccountAttributesRequest(input *DescribeAccountAttributesI // * vpc-max-elastic-ips: The maximum number of Elastic IP addresses that // you can allocate for use with EC2-VPC. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon EC2 User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -15575,6 +15620,11 @@ func (c *EC2) DescribeAddressesRequest(input *DescribeAddressesInput) (req *requ // a VPC. For more information, see Elastic IP Addresses (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) // in the Amazon Elastic Compute Cloud User Guide. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -16571,6 +16621,11 @@ func (c *EC2) DescribeClassicLinkInstancesRequest(input *DescribeClassicLinkInst // ClassicLink. You cannot use this request to return information about other // instances. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -21137,6 +21192,11 @@ func (c *EC2) DescribeInstancesRequest(input *DescribeInstancesInput) (req *requ // If you describe instances and specify only instance IDs that are in an unaffected // zone, the call works normally. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon EC2 User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -25177,6 +25237,11 @@ func (c *EC2) DescribeReservedInstancesRequest(input *DescribeReservedInstancesI // For more information about Reserved Instances, see Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts-on-demand-reserved-instances.html) // in the Amazon EC2 User Guide. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -25358,6 +25423,11 @@ func (c *EC2) DescribeReservedInstancesModificationsRequest(input *DescribeReser // For more information, see Modifying Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html) // in the Amazon EC2 User Guide. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -25501,6 +25571,11 @@ func (c *EC2) DescribeReservedInstancesOfferingsRequest(input *DescribeReservedI // For more information, see Reserved Instance Marketplace (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-market-general.html) // in the Amazon EC2 User Guide. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -25781,6 +25856,11 @@ func (c *EC2) DescribeScheduledInstanceAvailabilityRequest(input *DescribeSchedu // After you find a schedule that meets your needs, call PurchaseScheduledInstances // to purchase Scheduled Instances with that schedule. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -25913,6 +25993,11 @@ func (c *EC2) DescribeScheduledInstancesRequest(input *DescribeScheduledInstance // // Describes the specified Scheduled Instances or all your Scheduled Instances. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -26259,6 +26344,11 @@ func (c *EC2) DescribeSecurityGroupsRequest(input *DescribeSecurityGroupsInput) // VPC (https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html) // in the Amazon Virtual Private Cloud User Guide. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -30448,6 +30538,11 @@ func (c *EC2) DescribeVpcClassicLinkRequest(input *DescribeVpcClassicLinkInput) // // Describes the ClassicLink status of one or more VPCs. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -30526,6 +30621,12 @@ func (c *EC2) DescribeVpcClassicLinkDnsSupportRequest(input *DescribeVpcClassicL // DescribeVpcClassicLinkDnsSupport API operation for Amazon Elastic Compute Cloud. // +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Describes the ClassicLink DNS support status of one or more VPCs. If enabled, // the DNS hostname of a linked EC2-Classic instance resolves to its private // IP address when addressed from an instance in the VPC to which it's linked. @@ -31820,6 +31921,12 @@ func (c *EC2) DetachClassicLinkVpcRequest(input *DetachClassicLinkVpcInput) (req // DetachClassicLinkVpc API operation for Amazon Elastic Compute Cloud. // +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Unlinks (detaches) a linked EC2-Classic instance from a VPC. After the instance // has been unlinked, the VPC security groups are no longer associated with // it. An instance is automatically unlinked from a VPC when it's stopped. @@ -32839,6 +32946,11 @@ func (c *EC2) DisableVpcClassicLinkRequest(input *DisableVpcClassicLinkInput) (r // Disables ClassicLink for a VPC. You cannot disable ClassicLink for a VPC // that has EC2-Classic instances linked to it. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -32919,6 +33031,11 @@ func (c *EC2) DisableVpcClassicLinkDnsSupportRequest(input *DisableVpcClassicLin // // You must specify a VPC ID in the request. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -32999,6 +33116,11 @@ func (c *EC2) DisassociateAddressRequest(input *DisassociateAddressInput) (req * // a VPC. For more information, see Elastic IP Addresses (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html) // in the Amazon Elastic Compute Cloud User Guide. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // This is an idempotent operation. If you perform the operation more than once, // Amazon EC2 doesn't return an error. // @@ -34639,6 +34761,12 @@ func (c *EC2) EnableVpcClassicLinkRequest(input *EnableVpcClassicLinkInput) (req // EnableVpcClassicLink API operation for Amazon Elastic Compute Cloud. // +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Enables a VPC for ClassicLink. You can then link EC2-Classic instances to // your ClassicLink-enabled VPC to allow communication over private IP addresses. // You cannot enable your VPC for ClassicLink if any of your VPC route tables @@ -34719,6 +34847,12 @@ func (c *EC2) EnableVpcClassicLinkDnsSupportRequest(input *EnableVpcClassicLinkD // EnableVpcClassicLinkDnsSupport API operation for Amazon Elastic Compute Cloud. // +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Enables a VPC to support DNS hostname resolution for ClassicLink. If enabled, // the DNS hostname of a linked EC2-Classic instance resolves to its private // IP address when addressed from an instance in the VPC to which it's linked. @@ -42104,6 +42238,11 @@ func (c *EC2) ModifyReservedInstancesRequest(input *ModifyReservedInstancesInput // For more information, see Modifying Reserved Instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ri-modifying.html) // in the Amazon EC2 User Guide. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -43712,6 +43851,12 @@ func (c *EC2) ModifyVpcPeeringConnectionOptionsRequest(input *ModifyVpcPeeringCo // ModifyVpcPeeringConnectionOptions API operation for Amazon Elastic Compute Cloud. // +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Modifies the VPC peering connection options on one side of a VPC peering // connection. You can do the following: // @@ -44326,6 +44471,11 @@ func (c *EC2) MoveAddressToVpcRequest(input *MoveAddressToVpcInput) (req *reques // You cannot move an Elastic IP address that was originally allocated for use // in the EC2-VPC platform to the EC2-Classic platform. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -45810,6 +45960,11 @@ func (c *EC2) ReleaseAddressRequest(input *ReleaseAddressInput) (req *request.Re // disassociates it from any instance that it's associated with. To disassociate // an Elastic IP address without releasing it, use DisassociateAddress. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // [Nondefault VPC] You must use DisassociateAddress to disassociate the Elastic // IP address before you can release it. Otherwise, Amazon EC2 returns an error // (InvalidIPAddress.InUse). @@ -46728,6 +46883,11 @@ func (c *EC2) RequestSpotInstancesRequest(input *RequestSpotInstancesInput) (req // see Which is the best Spot request method to use? (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-best-practices.html#which-spot-request-method-to-use) // in the Amazon EC2 User Guide for Linux Instances. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon EC2 User Guide for Linux Instances. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -47349,6 +47509,11 @@ func (c *EC2) RestoreAddressToClassicRequest(input *RestoreAddressToClassicInput // was originally allocated for use in EC2-VPC. The Elastic IP address must // not be associated with an instance or network interface. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -47919,6 +48084,11 @@ func (c *EC2) RevokeSecurityGroupIngressRequest(input *RevokeSecurityGroupIngres // Rule changes are propagated to instances within the security group as quickly // as possible. However, a small delay might occur. // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -48044,6 +48214,11 @@ func (c *EC2) RunInstancesRequest(input *RunInstancesInput) (req *request.Reques // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_InstanceStraightToTerminated.html), // and Troubleshooting connecting to your instance (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html). // +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon EC2 User Guide. +// // Returns awserr.Error for service API and SDK errors. Use runtime type assertions // with awserr.Error's Code and Message methods to get detailed information about // the error. @@ -58562,6 +58737,12 @@ func (s *ClassicLinkDnsSupport) SetVpcId(v string) *ClassicLinkDnsSupport { return s } +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Describes a linked EC2-Classic instance. type ClassicLinkInstance struct { _ struct{} `type:"structure"` @@ -84103,8 +84284,8 @@ type DescribeImageAttributeOutput struct { KernelId *AttributeValue `locationName:"kernel" type:"structure"` // The date and time, in ISO 8601 date-time format (http://www.iso.org/iso/iso8601), - // when the AMI was last used to launch an EC2 instance. When the AMI is used, - // there is a 24-hour delay before that usage is reported. + // when the AMI was last used to launch an EC2 instance. When the AMI is used + // to launch an instance, there is a 24-hour delay before that usage is reported. // // lastLaunchedTime data is available starting April 2017. LastLaunchedTime *AttributeValue `locationName:"lastLaunchedTime" type:"structure"` @@ -104874,9 +105055,8 @@ type ExportImageInput struct { // role is named 'vmimport'. RoleName *string `type:"string"` - // Information about the destination Amazon S3 bucket. The bucket must exist - // and grant WRITE and READ_ACP permissions to the Amazon Web Services account - // vm-import-export@amazon.com. + // The Amazon S3 bucket for the destination image. The destination bucket must + // exist. // // S3ExportLocation is a required field S3ExportLocation *ExportTaskS3LocationRequest `type:"structure" required:"true"` @@ -105380,8 +105560,10 @@ type ExportToS3Task struct { DiskImageFormat *string `locationName:"diskImageFormat" type:"string" enum:"DiskImageFormat"` // The Amazon S3 bucket for the destination image. The destination bucket must - // exist and grant WRITE and READ_ACP permissions to the Amazon Web Services - // account vm-import-export@amazon.com. + // exist and have an access control list (ACL) attached that specifies the Region-specific + // canonical account ID for the Grantee. For more information about the ACL + // to your S3 bucket, see Prerequisites (https://docs.aws.amazon.com/vm-import/latest/userguide/vmexport.html#vmexport-prerequisites) + // in the VM Import/Export User Guide. S3Bucket *string `locationName:"s3Bucket" type:"string"` // The encryption key for your S3 bucket. @@ -105442,8 +105624,10 @@ type ExportToS3TaskSpecification struct { DiskImageFormat *string `locationName:"diskImageFormat" type:"string" enum:"DiskImageFormat"` // The Amazon S3 bucket for the destination image. The destination bucket must - // exist and grant WRITE and READ_ACP permissions to the Amazon Web Services - // account vm-import-export@amazon.com. + // exist and have an access control list (ACL) attached that specifies the Region-specific + // canonical account ID for the Grantee. For more information about the ACL + // to your S3 bucket, see Prerequisites (https://docs.aws.amazon.com/vm-import/latest/userguide/vmexport.html#vmexport-prerequisites) + // in the VM Import/Export User Guide. S3Bucket *string `locationName:"s3Bucket" type:"string"` // The image is written to a single object in the Amazon S3 bucket at the S3 @@ -116648,8 +116832,9 @@ func (s *InstanceCount) SetState(v string) *InstanceCount { type InstanceCreditSpecification struct { _ struct{} `type:"structure"` - // The credit option for CPU usage of the instance. Valid values are standard - // and unlimited. + // The credit option for CPU usage of the instance. + // + // Valid values: standard | unlimited CpuCredits *string `locationName:"cpuCredits" type:"string"` // The ID of the instance. @@ -116690,8 +116875,9 @@ func (s *InstanceCreditSpecification) SetInstanceId(v string) *InstanceCreditSpe type InstanceCreditSpecificationRequest struct { _ struct{} `type:"structure"` - // The credit option for CPU usage of the instance. Valid values are standard - // and unlimited. + // The credit option for CPU usage of the instance. + // + // Valid values: standard | unlimited // // T3 instances with host tenancy do not support the unlimited CPU credit option. CpuCredits *string `type:"string"` @@ -118033,8 +118219,8 @@ type InstanceNetworkInterfaceSpecification struct { // // You can only assign a carrier IP address to a network interface that is in // a subnet in a Wavelength Zone. For more information about carrier IP addresses, - // see Carrier IP addresses in the Amazon Web Services Wavelength Developer - // Guide. + // see Carrier IP address (https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#provider-owned-ip) + // in the Amazon Web Services Wavelength Developer Guide. AssociateCarrierIpAddress *bool `type:"boolean"` // Indicates whether to assign a public IPv4 address to an instance you launch @@ -122174,6 +122360,11 @@ func (s *LaunchPermissionModifications) SetRemove(v []*LaunchPermission) *Launch } // Describes the launch specification for an instance. +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon EC2 User Guide for Linux Instances. type LaunchSpecification struct { _ struct{} `type:"structure"` @@ -124653,9 +124844,15 @@ type LaunchTemplateSpecification struct { // both. LaunchTemplateName *string `type:"string"` - // The version number of the launch template. + // The launch template version number, $Latest, or $Default. // - // Default: The default version for the launch template. + // If the value is $Latest, Amazon EC2 uses the latest version of the launch + // template. + // + // If the value is $Default, Amazon EC2 uses the default version of the launch + // template. + // + // Default: The default version of the launch template. Version *string `type:"string"` } @@ -134587,6 +134784,11 @@ func (s *MoveByoipCidrToIpamOutput) SetByoipCidr(v *ByoipCidr) *MoveByoipCidrToI } // Describes the status of a moving Elastic IP address. +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. type MovingAddressStatus struct { _ struct{} `type:"structure"` @@ -137324,6 +137526,12 @@ func (s *PeeringAttachmentStatus) SetMessage(v string) *PeeringAttachmentStatus return s } +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Describes the VPC peering connection options. type PeeringConnectionOptions struct { _ struct{} `type:"structure"` @@ -137377,6 +137585,12 @@ func (s *PeeringConnectionOptions) SetAllowEgressFromLocalVpcToRemoteClassicLink return s } +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // The VPC peering connection options. type PeeringConnectionOptionsRequest struct { _ struct{} `type:"structure"` @@ -143169,9 +143383,9 @@ type RequestLaunchTemplateData struct { // request. SecurityGroupIds []*string `locationName:"SecurityGroupId" locationNameList:"SecurityGroupId" type:"list"` - // [EC2-Classic, default VPC] One or more security group names. For a nondefault - // VPC, you must use security group IDs instead. You cannot specify both a security - // group ID and security name in the same request. + // One or more security group names. For a nondefault VPC, you must use security + // group IDs instead. You cannot specify both a security group ID and security + // name in the same request. SecurityGroups []*string `locationName:"SecurityGroup" locationNameList:"SecurityGroup" type:"list"` // The tags to apply to the resources that are created during instance launch. @@ -143990,6 +144204,11 @@ func (s *RequestSpotLaunchSpecification) SetUserData(v string) *RequestSpotLaunc // Describes a launch request for one or more instances, and includes owner, // requester, and security group information that applies to all instances in // the launch request. +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon EC2 User Guide. type Reservation struct { _ struct{} `type:"structure"` @@ -144499,6 +144718,11 @@ func (s *ReservedInstances) SetUsagePrice(v float64) *ReservedInstances { } // Describes the configuration settings for the modified Reserved Instances. +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. type ReservedInstancesConfiguration struct { _ struct{} `type:"structure"` @@ -147633,7 +147857,7 @@ type RunInstancesInput struct { // For more information, see Burstable performance instances (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances.html) // in the Amazon EC2 User Guide. // - // Default: standard (T2 instances) or unlimited (T3/T3a instances) + // Default: standard (T2 instances) or unlimited (T3/T3a/T4g instances) // // For T3 instances with host tenancy, only standard is supported. CreditSpecification *CreditSpecificationRequest `type:"structure"` @@ -148490,6 +148714,11 @@ func (s *S3Storage) SetUploadPolicySignature(v string) *S3Storage { } // Describes a Scheduled Instance. +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. type ScheduledInstance struct { _ struct{} `type:"structure"` @@ -148648,6 +148877,11 @@ func (s *ScheduledInstance) SetTotalScheduledInstanceHours(v int64) *ScheduledIn } // Describes a schedule that is available for your Scheduled Instances. +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. type ScheduledInstanceAvailability struct { _ struct{} `type:"structure"` @@ -152074,6 +152308,11 @@ func (s *SpotDatafeedSubscription) SetState(v string) *SpotDatafeedSubscription // include On-Demand capacity in your fleet request or want to specify an EFA // network device, you can't use SpotFleetLaunchSpecification; you must use // LaunchTemplateConfig (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_LaunchTemplateConfig.html). +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon EC2 User Guide for Linux Instances. type SpotFleetLaunchSpecification struct { _ struct{} `type:"structure"` @@ -160762,6 +161001,11 @@ func (s *UserData) SetData(v string) *UserData { } // Describes a security group and Amazon Web Services account ID pair. +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. type UserIdGroupPair struct { _ struct{} `type:"structure"` @@ -162243,6 +162487,12 @@ func (s *VpcCidrBlockState) SetStatusMessage(v string) *VpcCidrBlockState { return s } +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Describes whether a VPC is enabled for ClassicLink. type VpcClassicLink struct { _ struct{} `type:"structure"` @@ -162742,6 +162992,12 @@ func (s *VpcPeeringConnection) SetVpcPeeringConnectionId(v string) *VpcPeeringCo return s } +// +// We are retiring EC2-Classic on August 15, 2022. We recommend that you migrate +// from EC2-Classic to a VPC. For more information, see Migrate from EC2-Classic +// to a VPC (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html) +// in the Amazon Elastic Compute Cloud User Guide. +// // Describes the VPC peering connection options. type VpcPeeringConnectionOptionsDescription struct { _ struct{} `type:"structure"` @@ -170569,6 +170825,15 @@ const ( // ResourceTypeVpcFlowLog is a ResourceType enum value ResourceTypeVpcFlowLog = "vpc-flow-log" + + // ResourceTypeCapacityReservationFleet is a ResourceType enum value + ResourceTypeCapacityReservationFleet = "capacity-reservation-fleet" + + // ResourceTypeTrafficMirrorFilterRule is a ResourceType enum value + ResourceTypeTrafficMirrorFilterRule = "traffic-mirror-filter-rule" + + // ResourceTypeVpcEndpointConnectionDeviceType is a ResourceType enum value + ResourceTypeVpcEndpointConnectionDeviceType = "vpc-endpoint-connection-device-type" ) // ResourceType_Values returns all elements of the ResourceType enum @@ -170644,6 +170909,9 @@ func ResourceType_Values() []string { ResourceTypeVpnConnection, ResourceTypeVpnGateway, ResourceTypeVpcFlowLog, + ResourceTypeCapacityReservationFleet, + ResourceTypeTrafficMirrorFilterRule, + ResourceTypeVpcEndpointConnectionDeviceType, } } diff --git a/vendor/github.com/ceph/go-ceph/cephfs/admin/metadata.go b/vendor/github.com/ceph/go-ceph/cephfs/admin/metadata.go index 238dd6cf6..7eabc71db 100644 --- a/vendor/github.com/ceph/go-ceph/cephfs/admin/metadata.go +++ b/vendor/github.com/ceph/go-ceph/cephfs/admin/metadata.go @@ -1,10 +1,8 @@ -//go:build !(nautilus || octopus) && ceph_preview && ceph_ci_untested -// +build !nautilus,!octopus,ceph_preview,ceph_ci_untested +//go:build !(nautilus || octopus) && ceph_preview && ceph_pre_quincy +// +build !nautilus,!octopus,ceph_preview,ceph_pre_quincy package admin -import "C" - // GetMetadata gets custom metadata on the subvolume in a volume belonging to // an optional subvolume group based on provided key name. // diff --git a/vendor/github.com/ceph/go-ceph/cephfs/admin/snapshot_metadata.go b/vendor/github.com/ceph/go-ceph/cephfs/admin/snapshot_metadata.go index 39adf83d9..6f1c60f9b 100644 --- a/vendor/github.com/ceph/go-ceph/cephfs/admin/snapshot_metadata.go +++ b/vendor/github.com/ceph/go-ceph/cephfs/admin/snapshot_metadata.go @@ -1,10 +1,8 @@ -//go:build !(nautilus || octopus) && ceph_preview && ceph_ci_untested -// +build !nautilus,!octopus,ceph_preview,ceph_ci_untested +//go:build !(nautilus || octopus) && ceph_preview && ceph_pre_quincy +// +build !nautilus,!octopus,ceph_preview,ceph_pre_quincy package admin -import "C" - // GetSnapshotMetadata gets custom metadata on the subvolume snapshot in a // volume belonging to an optional subvolume group based on provided key name. // diff --git a/vendor/github.com/ceph/go-ceph/rados/alloc_hint_flags.go b/vendor/github.com/ceph/go-ceph/rados/alloc_hint_flags.go new file mode 100644 index 000000000..dd468da20 --- /dev/null +++ b/vendor/github.com/ceph/go-ceph/rados/alloc_hint_flags.go @@ -0,0 +1,37 @@ +//go:build ceph_preview +// +build ceph_preview + +package rados + +// #cgo LDFLAGS: -lrados +// #include +// +import "C" + +// AllocHintFlags control the behavior of read and write operations. +type AllocHintFlags uint32 + +const ( + // AllocHintNoHint indicates no predefined behavior + AllocHintNoHint = AllocHintFlags(0) + // AllocHintSequentialWrite TODO + AllocHintSequentialWrite = AllocHintFlags(C.LIBRADOS_ALLOC_HINT_FLAG_SEQUENTIAL_WRITE) + // AllocHintRandomWrite TODO + AllocHintRandomWrite = AllocHintFlags(C.LIBRADOS_ALLOC_HINT_FLAG_RANDOM_WRITE) + // AllocHintSequentialRead TODO + AllocHintSequentialRead = AllocHintFlags(C.LIBRADOS_ALLOC_HINT_FLAG_SEQUENTIAL_READ) + // AllocHintRandomRead TODO + AllocHintRandomRead = AllocHintFlags(C.LIBRADOS_ALLOC_HINT_FLAG_RANDOM_READ) + // AllocHintAppendOnly TODO + AllocHintAppendOnly = AllocHintFlags(C.LIBRADOS_ALLOC_HINT_FLAG_APPEND_ONLY) + // AllocHintImmutable TODO + AllocHintImmutable = AllocHintFlags(C.LIBRADOS_ALLOC_HINT_FLAG_IMMUTABLE) + // AllocHintShortlived TODO + AllocHintShortlived = AllocHintFlags(C.LIBRADOS_ALLOC_HINT_FLAG_SHORTLIVED) + // AllocHintLonglived TODO + AllocHintLonglived = AllocHintFlags(C.LIBRADOS_ALLOC_HINT_FLAG_LONGLIVED) + // AllocHintCompressible TODO + AllocHintCompressible = AllocHintFlags(C.LIBRADOS_ALLOC_HINT_FLAG_COMPRESSIBLE) + // AllocHintIncompressible TODO + AllocHintIncompressible = AllocHintFlags(C.LIBRADOS_ALLOC_HINT_FLAG_INCOMPRESSIBLE) +) diff --git a/vendor/github.com/ceph/go-ceph/rados/conn.go b/vendor/github.com/ceph/go-ceph/rados/conn.go index 92701762c..b93cccd0f 100644 --- a/vendor/github.com/ceph/go-ceph/rados/conn.go +++ b/vendor/github.com/ceph/go-ceph/rados/conn.go @@ -100,7 +100,7 @@ func (c *Conn) ReadDefaultConfigFile() error { func (c *Conn) OpenIOContext(pool string) (*IOContext, error) { cPool := C.CString(pool) defer C.free(unsafe.Pointer(cPool)) - ioctx := &IOContext{} + ioctx := &IOContext{conn: c} ret := C.rados_ioctx_create(c.cluster, cPool, &ioctx.ioctx) if ret == 0 { return ioctx, nil diff --git a/vendor/github.com/ceph/go-ceph/rados/ioctx.go b/vendor/github.com/ceph/go-ceph/rados/ioctx.go index 807552623..c24fbcea5 100644 --- a/vendor/github.com/ceph/go-ceph/rados/ioctx.go +++ b/vendor/github.com/ceph/go-ceph/rados/ioctx.go @@ -99,6 +99,11 @@ type LockInfo struct { // IOContext represents a context for performing I/O within a pool. type IOContext struct { ioctx C.rados_ioctx_t + + // Hold a reference back to the connection that the ioctx depends on so + // that Go's GC doesn't trigger the Conn's finalizer before this + // IOContext is destroyed. + conn *Conn } // validate returns an error if the ioctx is not ready to be used diff --git a/vendor/github.com/ceph/go-ceph/rados/ioctx_pool_alignment.go b/vendor/github.com/ceph/go-ceph/rados/ioctx_pool_alignment.go new file mode 100644 index 000000000..7ea47df84 --- /dev/null +++ b/vendor/github.com/ceph/go-ceph/rados/ioctx_pool_alignment.go @@ -0,0 +1,27 @@ +//go:build ceph_preview +// +build ceph_preview + +package rados + +// #cgo LDFLAGS: -lrados +// #include +// #include +// +import "C" + +// Alignment returns the required stripe size in bytes for pools supporting/requiring it, or an error if unsuccessful. +// For an EC pool, a buffer size multiple of its stripe size is required to call Append. To know if the pool requires +// alignment or not, use RequiresAlignment. +// +// Implements: +// int rados_ioctx_pool_required_alignment2(rados_ioctx_t io, uint64_t *alignment) +func (ioctx *IOContext) Alignment() (uint64, error) { + var alignSizeBytes C.uint64_t + ret := C.rados_ioctx_pool_required_alignment2( + ioctx.ioctx, + &alignSizeBytes) + if ret != 0 { + return 0, getError(ret) + } + return uint64(alignSizeBytes), nil +} diff --git a/vendor/github.com/ceph/go-ceph/rados/ioctx_pool_requires_alignment.go b/vendor/github.com/ceph/go-ceph/rados/ioctx_pool_requires_alignment.go new file mode 100644 index 000000000..0ec5fed27 --- /dev/null +++ b/vendor/github.com/ceph/go-ceph/rados/ioctx_pool_requires_alignment.go @@ -0,0 +1,27 @@ +//go:build ceph_preview +// +build ceph_preview + +package rados + +// #cgo LDFLAGS: -lrados +// #include +// #include +// +import "C" + +// RequiresAlignment returns true if the pool supports/requires alignment or an error if not successful. +// For an EC pool, a buffer size multiple of its stripe size is required to call Append. See +// Alignment to know how to get the stripe size for pools requiring it. +// +// Implements: +// int rados_ioctx_pool_requires_alignment2(rados_ioctx_t io, int *req) +func (ioctx *IOContext) RequiresAlignment() (bool, error) { + var alignRequired C.int + ret := C.rados_ioctx_pool_requires_alignment2( + ioctx.ioctx, + &alignRequired) + if ret != 0 { + return false, getError(ret) + } + return (alignRequired != 0), nil +} diff --git a/vendor/github.com/ceph/go-ceph/rados/ioctx_set_alloc_hint.go b/vendor/github.com/ceph/go-ceph/rados/ioctx_set_alloc_hint.go new file mode 100644 index 000000000..dbb75188d --- /dev/null +++ b/vendor/github.com/ceph/go-ceph/rados/ioctx_set_alloc_hint.go @@ -0,0 +1,38 @@ +//go:build ceph_preview +// +build ceph_preview + +package rados + +// #cgo LDFLAGS: -lrados +// #include +// #include +// +import "C" + +import ( + "unsafe" +) + +// SetAllocationHint sets allocation hint for an object. This is an advisory +// operation, it will always succeed (as if it was submitted with a +// LIBRADOS_OP_FLAG_FAILOK flag set) and is not guaranteed to do anything on +// the backend. +// +// Implements: +// int rados_set_alloc_hint2(rados_ioctx_t io, +// const char *o, +// uint64_t expected_object_size, +// uint64_t expected_write_size, +// uint32_t flags); +func (ioctx *IOContext) SetAllocationHint(oid string, expectedObjectSize uint64, expectedWriteSize uint64, flags AllocHintFlags) error { + coid := C.CString(oid) + defer C.free(unsafe.Pointer(coid)) + + return getError(C.rados_set_alloc_hint2( + ioctx.ioctx, + coid, + (C.uint64_t)(expectedObjectSize), + (C.uint64_t)(expectedWriteSize), + (C.uint32_t)(flags), + )) +} diff --git a/vendor/github.com/ceph/go-ceph/rados/operation.go b/vendor/github.com/ceph/go-ceph/rados/operation.go index ca3ab386b..d9d644cbd 100644 --- a/vendor/github.com/ceph/go-ceph/rados/operation.go +++ b/vendor/github.com/ceph/go-ceph/rados/operation.go @@ -7,6 +7,8 @@ import ( "fmt" "strings" "unsafe" + + "github.com/ceph/go-ceph/internal/log" ) // The file operation.go exists to support both read op and write op types that @@ -116,6 +118,7 @@ func (o *operation) update(kind opKind, ret C.int) error { func opStepFinalizer(s opStep) { if s != nil { + log.Warnf("unreachable opStep object found. Cleaning up.") s.free() } } diff --git a/vendor/github.com/ceph/go-ceph/rados/rados.go b/vendor/github.com/ceph/go-ceph/rados/rados.go index c107a3bff..98d77ca8a 100644 --- a/vendor/github.com/ceph/go-ceph/rados/rados.go +++ b/vendor/github.com/ceph/go-ceph/rados/rados.go @@ -9,6 +9,8 @@ import "C" import ( "runtime" "unsafe" + + "github.com/ceph/go-ceph/internal/log" ) const ( @@ -120,6 +122,7 @@ func NewConnWithClusterAndUser(clusterName string, userName string) (*Conn, erro // called. func freeConn(conn *Conn) { if conn.cluster != nil { + log.Warnf("unreachable Conn object has not been shut down. Cleaning up.") C.rados_shutdown(conn.cluster) // prevent calling rados_shutdown() more than once conn.cluster = nil diff --git a/vendor/github.com/ceph/go-ceph/rados/rados_set_locator.go b/vendor/github.com/ceph/go-ceph/rados/rados_set_locator.go index 61d467502..771972dd0 100644 --- a/vendor/github.com/ceph/go-ceph/rados/rados_set_locator.go +++ b/vendor/github.com/ceph/go-ceph/rados/rados_set_locator.go @@ -1,6 +1,3 @@ -//go:build ceph_preview -// +build ceph_preview - package rados // #cgo LDFLAGS: -lrados diff --git a/vendor/github.com/ceph/go-ceph/rados/write_op_set_alloc_hint.go b/vendor/github.com/ceph/go-ceph/rados/write_op_set_alloc_hint.go new file mode 100644 index 000000000..c9cc65729 --- /dev/null +++ b/vendor/github.com/ceph/go-ceph/rados/write_op_set_alloc_hint.go @@ -0,0 +1,28 @@ +//go:build ceph_preview +// +build ceph_preview + +package rados + +// #cgo LDFLAGS: -lrados +// #include +// #include +// +import "C" + +// SetAllocationHint sets allocation hint for an object. This is an advisory +// operation, it will always succeed (as if it was submitted with a +// LIBRADOS_OP_FLAG_FAILOK flag set) and is not guaranteed to do anything on +// the backend. +// +// Implements: +// void rados_write_op_set_alloc_hint2(rados_write_op_t write_op, +// uint64_t expected_object_size, +// uint64_t expected_write_size, +// uint32_t flags); +func (w *WriteOp) SetAllocationHint(expectedObjectSize uint64, expectedWriteSize uint64, flags AllocHintFlags) { + C.rados_write_op_set_alloc_hint2( + w.op, + C.uint64_t(expectedObjectSize), + C.uint64_t(expectedWriteSize), + C.uint32_t(flags)) +} diff --git a/vendor/github.com/ceph/go-ceph/rbd/mirror.go b/vendor/github.com/ceph/go-ceph/rbd/mirror.go index 3cc4158cc..e755399d3 100644 --- a/vendor/github.com/ceph/go-ceph/rbd/mirror.go +++ b/vendor/github.com/ceph/go-ceph/rbd/mirror.go @@ -1,11 +1,6 @@ //go:build !nautilus // +build !nautilus -// Initially, we're only providing mirroring related functions for octopus as -// that version of ceph deprecated a number of the functions in nautilus. If -// you need mirroring on an earlier supported version of ceph please file an -// issue in our tracker. - package rbd // #cgo LDFLAGS: -lrbd diff --git a/vendor/github.com/ceph/go-ceph/rbd/mirror_nautilus.go b/vendor/github.com/ceph/go-ceph/rbd/mirror_nautilus.go new file mode 100644 index 000000000..28ce44f26 --- /dev/null +++ b/vendor/github.com/ceph/go-ceph/rbd/mirror_nautilus.go @@ -0,0 +1,408 @@ +//go:build nautilus +// +build nautilus + +package rbd + +// #cgo LDFLAGS: -lrbd +// #include +// #include +// #include +// #include +import "C" +import ( + "unsafe" + + "github.com/ceph/go-ceph/rados" +) + +// MirrorMode indicates the current mode of mirroring that is applied onto a +// pool. A pool that doesn't have an explicit mirroring mode applied to it is +// said to be disabled - that's the default. +type MirrorMode int + +const ( + // MirrorModeDisabled disables mirroring. + MirrorModeDisabled = MirrorMode(C.RBD_MIRROR_MODE_DISABLED) + // MirrorModeImage enables mirroring on a per-image basis. + MirrorModeImage = MirrorMode(C.RBD_MIRROR_MODE_IMAGE) + // MirrorModePool enables mirroring on all journaled images. + MirrorModePool = MirrorMode(C.RBD_MIRROR_MODE_POOL) +) + +// MirrorModeGet returns the mode of mirroring currently applied to a pool. +// +// Note: this can only be used if go-ceph is compiled with the `nautilus` build +// tag. +// +// Implements: +// int rbd_mirror_mode_get(rados_ioctx_t p, rbd_mirror_mode_t *mirror_mode) +func MirrorModeGet(ioctx *rados.IOContext) (MirrorMode, error) { + var rmm C.rbd_mirror_mode_t + + ret := C.rbd_mirror_mode_get(cephIoctx(ioctx), &rmm) + if ret != 0 { + return -1, getError(ret) + } + + return MirrorMode(rmm), nil +} + +// MirrorModeSet sets the mirror mode for a pool. +// +// Note: this can only be used if go-ceph is compiled with the `nautilus` build +// tag. +// +// Implements: +// rbd_mirror_mode_set(rados_ioctx_t p, rbd_mirror_mode_t mirror_mode) +func MirrorModeSet(ioctx *rados.IOContext, mode MirrorMode) error { + cMode := C.rbd_mirror_mode_t(mode) + + ret := C.rbd_mirror_mode_set(cephIoctx(ioctx), cMode) + + return getError(ret) +} + +// MirrorPeerAdd configures a peering relationship with another cluster. Note +// that it does not transfer over that cluster's config or keyrings, which must +// already be available to the rbd-mirror daemon(s). +// +// Note: this can only be used if go-ceph is compiled with the `nautilus` build +// tag. +// +// Implements: +// int rbd_mirror_peer_add(rados_ioctx_t p, char *uuid, +// size_t uuid_max_length, +// const char *cluster_name, +// const char *client_name) +func MirrorPeerAdd(ioctx *rados.IOContext, clusterName, clientName string) (string, error) { + // librbd uses 36-byte UUIDs with a trailing null. rbd_mirror_add_peer will + // return -E2BIG if we pass a UUID buffer smaller than 37 bytes. + const cUUIDMaxLen = C.size_t(37) + cUUID := make([]C.char, cUUIDMaxLen) + + cClusterName := C.CString(clusterName) + defer C.free(unsafe.Pointer(cClusterName)) + + cClientName := C.CString(clientName) + defer C.free(unsafe.Pointer(cClientName)) + + ret := C.rbd_mirror_peer_add(cephIoctx(ioctx), &cUUID[0], cUUIDMaxLen, + cClusterName, cClientName) + + return C.GoString(&cUUID[0]), getError(ret) +} + +// MirrorPeerRemove tears down a peering relationship. +// +// Note: this can only be used if go-ceph is compiled with the `nautilus` build +// tag. +// +// Implements: +// int rbd_mirror_peer_remove(rados_ioctx_t io_ctx, const char *uuid) +func MirrorPeerRemove(ioctx *rados.IOContext, uuid string) error { + cUUID := C.CString(uuid) + defer C.free(unsafe.Pointer(cUUID)) + + ret := C.rbd_mirror_peer_remove(cephIoctx(ioctx), cUUID) + + return getError(ret) +} + +// MirrorPeerInfo contains information about a configured mirroring peer. +type MirrorPeerInfo struct { + UUID string + ClusterName string + ClientName string +} + +// MirrorPeerList returns a list of configured mirroring peers. +// +// Note: this can only be used if go-ceph is compiled with the `nautilus` build +// tag. +// +// Implements: +// int rbd_mirror_peer_list(rados_ioctx_t io_ctx, +// rbd_mirror_peer_list_t *peers, +// int *max_peers); +func MirrorPeerList(ioctx *rados.IOContext) ([]*MirrorPeerInfo, error) { + var mpi []*MirrorPeerInfo + cMaxPeers := C.int(5) + + var cPeers []C.rbd_mirror_peer_t + for { + cPeers = make([]C.rbd_mirror_peer_t, cMaxPeers) + ret := C.rbd_mirror_peer_list(cephIoctx(ioctx), &cPeers[0], &cMaxPeers) + if ret == -C.ERANGE { + // There are too many peers to fit in the list, and the number of peers has been + // returned in cMaxPeers. Try again with the returned value. + continue + } + if ret != 0 { + return nil, getError(ret) + } + + // ret == 0 + break + } + defer C.rbd_mirror_peer_list_cleanup(&cPeers[0], cMaxPeers) + cPeers = cPeers[:cMaxPeers] + + for _, cPeer := range cPeers { + mpi = append(mpi, &MirrorPeerInfo{ + UUID: C.GoString(cPeer.uuid), + ClusterName: C.GoString(cPeer.cluster_name), + ClientName: C.GoString(cPeer.client_name), + }) + } + + return mpi, nil +} + +// MirrorImageState indicates whether mirroring is enabled or disabled on an +// image. +// +// A mirrored image might not immediately change its status to disabled if it has +// offsets left to sync with its peers - this is denoted by 'disabling' state. +// +// It is important to note that mirroring cannot be enabled on an image without +// first flipping on the 'journaling' image feature for it. +type MirrorImageState int + +const ( + // MirrorImageDisabling is the representation of + // RBD_MIRROR_IMAGE_DISABLING from librbd. + MirrorImageDisabling = MirrorImageState(C.RBD_MIRROR_IMAGE_DISABLING) + // MirrorImageEnabled is the representation of + // RBD_MIRROR_IMAGE_ENABLED from librbd. + MirrorImageEnabled = MirrorImageState(C.RBD_MIRROR_IMAGE_ENABLED) + // MirrorImageDisabled is the representation of + // RBD_MIRROR_IMAGE_DISABLED from librbd. + MirrorImageDisabled = MirrorImageState(C.RBD_MIRROR_IMAGE_DISABLED) +) + +// MirrorImageStatusState denotes the current replication status of a given +// image. +type MirrorImageStatusState int + +const ( + // MirrorImageStatusStateUnknown is equivalent to MIRROR_IMAGE_STATUS_STATE_UNKNOWN. + MirrorImageStatusStateUnknown = MirrorImageStatusState(C.MIRROR_IMAGE_STATUS_STATE_UNKNOWN) + // MirrorImageStatusStateError is equivalent to MIRROR_IMAGE_STATUS_STATE_ERROR. + MirrorImageStatusStateError = MirrorImageStatusState(C.MIRROR_IMAGE_STATUS_STATE_ERROR) + // MirrorImageStatusStateSyncing is equivalent to MIRROR_IMAGE_STATUS_STATE_SYNCING. + MirrorImageStatusStateSyncing = MirrorImageStatusState(C.MIRROR_IMAGE_STATUS_STATE_SYNCING) + // MirrorImageStatusStateStartingReplay is equivalent to MIRROR_IMAGE_STATUS_STATE_STARTING_REPLAY. + MirrorImageStatusStateStartingReplay = MirrorImageStatusState(C.MIRROR_IMAGE_STATUS_STATE_STARTING_REPLAY) + // MirrorImageStatusStateReplaying is equivalent to MIRROR_IMAGE_STATUS_STATE_REPLAYING. + MirrorImageStatusStateReplaying = MirrorImageStatusState(C.MIRROR_IMAGE_STATUS_STATE_REPLAYING) + // MirrorImageStatusStateStoppingReplay is equivalent to MIRROR_IMAGE_STATUS_STATE_STOPPING_REPLAY. + MirrorImageStatusStateStoppingReplay = MirrorImageStatusState(C.MIRROR_IMAGE_STATUS_STATE_STOPPING_REPLAY) + // MirrorImageStatusStateStopped is equivalent to MIRROR_IMAGE_STATUS_STATE_STOPPED. + MirrorImageStatusStateStopped = MirrorImageStatusState(C.MIRROR_IMAGE_STATUS_STATE_STOPPED) +) + +// MirrorImageInfo provides information about the mirroring progress of an image. +type MirrorImageInfo struct { + Name string + Description string + State MirrorImageState + StatusState MirrorImageStatusState + GlobalID string + IsPrimary bool + IsUp bool +} + +// MirrorGetImage returns the MirrorImageInfo for an image. +// +// Note: this can only be used if go-ceph is compiled with the `nautilus` build +// tag. +// +// Implements: +// rbd_mirror_image_get_info(rbd_image_t image, +// rbd_mirror_image_info_t *mirror_image_info, +// size_t info_size) +func (image *Image) MirrorGetImage() (*MirrorImageInfo, error) { + err := image.validate(imageIsOpen) + if err != nil { + return nil, err + } + + var status C.rbd_mirror_image_status_t + ret := C.rbd_mirror_image_get_status(image.image, &status, C.sizeof_rbd_mirror_image_status_t) + if ret != 0 { + return nil, getError(ret) + } + + return &MirrorImageInfo{ + Name: C.GoString(status.name), + Description: C.GoString(status.description), + State: MirrorImageState(status.info.state), + StatusState: MirrorImageStatusState(status.state), + GlobalID: C.GoString(status.info.global_id), + IsPrimary: bool(status.info.primary), + IsUp: bool(status.up), + }, nil +} + +// MirrorImageList returns a MirrorImageInfo for each mirrored image. +// +// Note: this can only be used if go-ceph is compiled with the `nautilus` build +// tag. +// +// Implements: +// int rbd_mirror_image_status_list(rados_ioctx_t io_ctx, +// const char *start_id, size_t max, +// char **image_ids, +// rbd_mirror_image_status_t *images, +// size_t *len) +func MirrorImageList(ioctx *rados.IOContext) ([]*MirrorImageInfo, error) { + imageInfos := make([]*MirrorImageInfo, 0) + const cMaxIter C.size_t = 100 + var startID string + + for { + // We need to wrap all the actions within the for loop in a function + // in order to ensure that we correctly reclaim all allocated memory + // from C at the end of every iteration. + ret, done := iterateImageList(ioctx, &imageInfos, &startID, cMaxIter) + if ret != 0 { + return imageInfos, getError(ret) + } + + if done { + break + } + } + return imageInfos, nil +} + +func iterateImageList(ioctx *rados.IOContext, imageInfos *[]*MirrorImageInfo, startID *string, cMaxIter C.size_t) (C.int, bool) { + cImageIDs := make([]*C.char, cMaxIter) + cImageStatus := make([]C.rbd_mirror_image_status_t, cMaxIter) + done := false + + var cLen C.size_t + ret := C.rbd_mirror_image_status_list(cephIoctx(ioctx), C.CString(*startID), + cMaxIter, &cImageIDs[0], &cImageStatus[0], &cLen) + if ret != 0 { + return ret, done + } + + // If the list length is 0 or less than the max size + // specified we know we are on the last page of the list, + // and we don't need to continue iterating. + if cLen < cMaxIter { + done = true + } + + if cLen == 0 { + return C.int(0), done + } + + defer func() { + C.rbd_mirror_image_status_list_cleanup(&cImageIDs[0], &cImageStatus[0], cLen) + }() + + for i := 0; i < int(cLen); i++ { + mi := &MirrorImageInfo{ + Name: C.GoString(cImageStatus[i].name), + Description: C.GoString(cImageStatus[i].description), + State: MirrorImageState(cImageStatus[i].info.state), + StatusState: MirrorImageStatusState(cImageStatus[i].state), + GlobalID: C.GoString(cImageStatus[i].info.global_id), + IsPrimary: bool(cImageStatus[i].info.primary), + IsUp: bool(cImageStatus[i].up), + } + + *imageInfos = append(*imageInfos, mi) + } + + *startID = C.GoString(cImageIDs[cLen-1]) + return C.int(0), done +} + +// MirrorEnable will enable mirroring for an image. +// +// Note: this can only be used if go-ceph is compiled with the `nautilus` build +// tag. +// +// Implements: +// int rbd_mirror_image_enable(rbd_image_t image) +func (image *Image) MirrorEnable() error { + err := image.validate(imageIsOpen) + if err != nil { + return err + } + + ret := C.rbd_mirror_image_enable(image.image) + return getError(ret) +} + +// MirrorDisable will disable mirroring for an image. +// +// Note: this can only be used if go-ceph is compiled with the `nautilus` build +// tag. +// +// Implements: +// int rbd_mirror_image_disable(rbd_image_t image, bool force) +func (image *Image) MirrorDisable(force bool) error { + err := image.validate(imageIsOpen) + if err != nil { + return err + } + + ret := C.rbd_mirror_image_disable(image.image, C.bool(force)) + return getError(ret) +} + +// MirrorPromote will promote an image to primary status. +// +// Note: this can only be used if go-ceph is compiled with the `nautilus` build +// tag. +// +// Implements: +// int rbd_mirror_image_promote(rbd_image_t image, bool force) +func (image *Image) MirrorPromote(force bool) error { + err := image.validate(imageIsOpen) + if err != nil { + return err + } + + ret := C.rbd_mirror_image_promote(image.image, C.bool(force)) + return getError(ret) +} + +// MirrorDemote will demote an image to secondary status. +// +// Note: this can only be used if go-ceph is compiled with the `nautilus` build +// tag. +// +// Implements: +// int rbd_mirror_image_demote(rbd_image_t image) +func (image *Image) MirrorDemote() error { + err := image.validate(imageIsOpen) + if err != nil { + return err + } + + ret := C.rbd_mirror_image_demote(image.image) + return getError(ret) +} + +// MirrorResync is used to manually resolve split-brain status by triggering +// resynchronization. +// +// Note: this can only be used if go-ceph is compiled with the `nautilus` build +// tag. +// +// Implements: +// int rbd_mirror_image_resync(rbd_image_t image) +func (image *Image) MirrorResync() error { + err := image.validate(imageIsOpen) + if err != nil { + return err + } + + ret := C.rbd_mirror_image_resync(image.image) + return getError(ret) +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 1f4bc1df9..b15a441c0 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -20,7 +20,7 @@ github.com/armon/go-metrics # github.com/armon/go-radix v1.0.0 ## explicit github.com/armon/go-radix -# github.com/aws/aws-sdk-go v1.44.62 +# github.com/aws/aws-sdk-go v1.44.67 ## explicit; go 1.11 github.com/aws/aws-sdk-go/aws github.com/aws/aws-sdk-go/aws/awserr @@ -125,8 +125,8 @@ github.com/cenkalti/backoff/v3 github.com/ceph/ceph-csi/api/deploy/kubernetes/nfs github.com/ceph/ceph-csi/api/deploy/kubernetes/rbd github.com/ceph/ceph-csi/api/deploy/ocp -# github.com/ceph/go-ceph v0.16.0 -## explicit; go 1.12 +# github.com/ceph/go-ceph v0.17.0 +## explicit; go 1.17 github.com/ceph/go-ceph/cephfs/admin github.com/ceph/go-ceph/common/admin/manager github.com/ceph/go-ceph/common/admin/nfs