Introduction

introduce 'elasticity'

Purpose

Document History

References

\[1\] [http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html]

\[2\] [http://support.rightscale.com/09-Clouds/AWS/02-Amazon_EC2/Designing_Failover_Architectures_on_EC2/00-Best_Practices_for_using_Elastic_IPs_(EIP)_and_Availability_Zones]

\[3\]

Scope & Assumptions

Semantic differences from AWS EIP

Functional requirements & non-requirements

Detailed Design

User API

Current set of associateIpAddress, disassociateIpAddress API's used to acquire and release a public IP is restricted to zone level public IP. Also, associateIpAddress actually combines acquiring and associating the IP with a network. Once associated with a network, there is only disassociate operation available on public IP, so public IP association can not be changed from one network to another. Due to semantic differences its not best way to extend the existing set of API's dealing with public IP management to be extended to manage EIP pool of IP's. With this premise following set of API's shall be introduced.

allocateElasticIPAddress

acquires an EIP IP from the pool of elastic IP's provisioned at region level

Request parameters:

API Response: ElasticIpAddressReponse

releaseElasticIpAddress

release EIP acquired previously

Request parameters:

API response: will return 'SuccessResponse' on success. api call shall throw exception if the EIP still associated with a VM

associateElasticIpAddress

Associate acquired elastic IP with VM instance in a zone. 

Request parameters:

API Response: ElasticIpAddressReponse

disassociateElasticIpAddress

Request parameters:

API response: will return 'SuccessResponse' on success

listElasticIpAddress

Request parameters:

API Response: list of ElasticIpAddressReponse objects

Admin API

Following administrator API shall be introduced to add/delete/list IP addresses in to/from EIP pool

createElasticIpRange

Request parameters:

API Response: list of ElasticIpAddressReponse objects

deleteElasticIpRange

Request parameters:

API response: will return 'SuccessResponse' on success

listElasticIpRange

Request parameters:

 API Response: list of ElasticIpAddressReponse objects

Api Response

'ElasticIpAddressReponse' shall be introduced as API response object with following details

zone id, vm id, nic id, guest IP shall be not null only if 'associated' is true.  account name and domain id shall be not null only if state is allocated or releasing

Service Layer changes

A new service 'ElasticIPService' shall be introduced with following interface definition

Schema changes

Auditing

Action Events

When user transfers from EIP from zone to another zone admin needs to be aware of the transfer so that required out-of-band actions (for e.g enabling EIP to be advertised from the new zone etc.) can be taken. A new 'Action Event' shall be generated on every association and re-association of EIP with a VM in same zone or different zone with details of source and destination zone details.

Usage events

Upgrade

Risk/Open Issues