Code review comment for lp:~dimitern/goamz/update-aws-api-version-to-latest

Revision history for this message
Dimiter Naydenov (dimitern) wrote :

I've done a careful analysis of the following 3 AWS API versions: 2011-12-15 (used for all non-VPC calls), 2013-10-15 (used for VPC calls), 2014-10-01 (current latest version), using the published AWS WSDL schemas to determine how upgrading the version will impact juju-core's usage of goamz.

Fortunately, there are not many changes and very few, easily fixable changes affect juju-core:

VPC calls with no changes in 2014-10-01 vs 2013-10-15:

AssignPrivateIpAddresses
AttachNetworkInterface
CreateNetworkInterface
CreateSecurityGroup
CreateSubnet
CreateVpc
DeleteNetworkInterface
DeleteSubnet
DeleteVpc
DescribeAccountAttributes
DescribeNetworkInterfaces
DescribeSubnets
DescribeVpcs
DetachNetworkInterface
UnassignPrivateIpAddresses

non-VPC calls with no changes in 2014-10-01 vs 2011-12-15:

AuthorizeSecurityGroupIngress
CreateSnapshot
CreateTags
DeleteSnapshot
DescribeAvailabilityZones
DescribeSecurityGroups
DescribeSnapshots
RebootInstances
RevokeSecurityGroupIngress
StartInstances
StopInstances
TerminateInstances

non-VPC calls with changes between 2011-12-15 and 2014-10-01:

DescribeInstances
    request changes:
        maxResults, nextToken (added - not supported or used by juju; pagination support)
    response changes:
        instancesSet>item>productCodes>item>type (added - not supported or used by juju-core)
        instancesSet>item>iamInstanceProfile>* (added whole subtree - not supported or used by juju-core)
        instancesSet>item>ebsOptimized (added - not supported but needed for storage work in juju-core)
        instancesSet>item>sriovNetSupport (added - not supported or used by juju-core)
        instancesSet>item>networkInterfaceSet>item>macAddress (added - already supported since VPC calls landed)
        instancesSet>item>networkInterfaceSet>item>association>* (added whole subtree - not used by juju-core; related to elastic IPs)
        instancesSet>item>networkInterfaceSet>item>privateIpAddressesSet>* (added whole subtree - already supported since VPC calls landed; >item>association>* not supported, but not used as well)
        nextToken (added - not supported or used by juju; for pagination of results)
RunInstances
    request changes:
        blockDeviceMapping>item>ebs>volumeType (added - already supported since storage changes landed)
        blockDeviceMapping>item>ebs>iops (added - already supported since storage changes)
        networkInterfaceSet>item>* - same changes as in DescribeInstances, except:
        networkInterfaceSet>item>associatePublicIpAddress (added - not supported but needed by juju)
        iamInstanceProfile>* (added whole subtree - not supported or used by juju)
        ebsOptimized (added - not supported but possibly needed for juju storage work)
    response changes: the same as for DescribeInstances, except for nextToken

DescribeImages
    request - no changes
    response changes:
        sriovNetSupport (added - not supported or used by juju)
        productCodes, blockDeviceMapping (added - same changes as in RunInstances)

So overall upgrading AWS API version to 2014-10-01 won't require changes in juju-core, and only a few changes to add what's missing in the request/response structs, as well as the Instance and NetworkInterface types.

I'm about to propose this branch retargeted to goamz on github.

« Back to merge proposal