Issue #269 - set Trusted
Advisor limit name overrides for some RDS limits that were recently added to TA, but
with different names than what awslimitchecker uses.

Fix bug Issue #270 - do
not count propagated routes towards the VPC “Entries per route table” limit,
per clarification in VPC service limits documentation (“This is the limit
for the number of non-propagated entries per route table.”)

PR #276 /
Issue #275 - Add new
--skip-service CLI option and AwsLimitChecker.remove_services to allow
skipping of one or more specific services during runs. (Thanks to tamsky for this contribution.)

This release includes a breaking API change. Please see the first bullet point
below. Note that once 1.0.0 is released (which should be relatively soon), such
API changes will only come with a major version increment.

This release requires new IAM permissions: redshift:DescribeClusterSnapshots and redshift:DescribeClusterSubnetGroups.

This release removes Python 3.2 support. This was deprecated in 0.7.0. As of this release,
awslimitchecker may still work on Python 3.2, but it is no longer tested and any support tickets
or bug reports specific to 3.2 will be closed.

This release deprecates support for Python 3.2. It will be removed in the
next release.

This release introduces support for automatically refreshing Trusted Advisor
checks on accounts that support this. If you use this new feature,
awslimitchecker will require a new permission, trustedadvisor:RefreshCheck.
See Getting Started - Trusted Advisor for further information.

#231 - add support
for new f1, r4 and t2.(xlarge|2xlarge) instance types, introduced in November
2016.

#230 - replace the
built-in versioncheck.py with versionfinder. Remove all of the many versioncheck tests.

#233 - refactor
tests to replace yield-based tests with parametrize, as yield-based tests are
deprecated and will be removed in pytest 4.

#235 - Deprecate
Python 3.2 support. There don’t appear to have been any downloads on py32
in the last 6 months, and the effort to support it is too high.

A bunch of Sphinx work to use README.rst in the generated documentation.

#241 / PR #242 -
Fix default ElastiCache/Nodes limit from 50 to 100, as that’s now
what the docs say.

#220 / PR #243 /
PR #245 - Fix for ExpiredTokenException Errors.
awslimitchecker.connectable.credentials has been removed.
In previous releases, awslimitchecker had been using a Connectable.credentials class attribute
to store AWS API credentials and share them between Connectable subclass instances. The side-effect
of this was that AWS credentials were set at the start of the Python process and never changed. For users
taking advantage of the Python API and either using short-lived STS credentials or using long-running
or threaded implementations, the same credentials persisted for the life of the process, and would often
result in ExpiredTokenExceptions. The fix was to move
_boto_conn_kwargs
and _get_sts_token
from connectable to the top-level
AwsLimitChecker
class itself, get the value of the _boto_conn_kwargs property in the constructor, and pass that value in to all
Connectable subclasses. This means that each instance of AwsLimitChecker has its own unique connection-related kwargs
and credentials, and constructing a new instance will work intuitively - either use the newly-specified credentials,
or regenerate STS credentials if configured to use them. I have to extend my deepest gratitude to the folks who
identified and fixed this issue, specifically cstewart87 for the initial
bug report and description, aebie for the tireless and relentlessly thorough
investigation and brainstorming and for coordinating work for a fix, and willusher
for the final implementation and dealing (wonderfully) with the dizzying complexity of many of the unit tests
(and even matching the existing style).

This release has a breaking change. The VPCNATgateways has been renamed
to NATGatewaysperAZ and its get_current_usage() method will now return
a list with multiple items. See the changelog entry for #214 below.

#215 - support
“Regional Benefit” Reserved Instances that have no specific AZ set on them. Per
AWS, these are exempt from On-Demand Running Instances limits like all other
RIs.

#214 - The VPC “NAT gateways”
limit incorrectly calculated usage for the entire region, while the limit is
actually per-AZ. It also had strange capitalization that confused users. The name
has been changed to “NAT Gateways per AZ” and the usage is now correctly calculated
per-AZ instead of region-wide.

#221 /
PR #222 - Fix bug
in handling of STS Credentials where they are cached permanently in
connectable.Connectable.credentials, and new AwsLimitChecker instances
in the same Python process reuse the first set of STS credentials. This is
fixed by storing the Account ID as part of
connectable.ConnectableCredentials and getting new STS creds if the cached
account ID does not match the current account_id on the Connectable
object.

PR #216 - add new
“Firehose” service with support for “Delivery streams per region” limit.

#51 / PR #201 - Add experimental support for Spot Instance and Spot Fleet limits (only the ones explicitly documented by AWS). This is currently experimental, as the documentation is not terribly clear or detailed, and the author doesn’t have access to any accounts that make use of spot instances. This will be kept experimental until multiple users validate it. For more information, see the EC2 limit documentation.

PR #204 contributed by hltbra to add support for VPC NAT Gateways limit.

This release includes a change to awslimitchecker‘s Python API. awslimitchecker.limit.AwsLimit.get_limit can now return either an int or None, as TrustedAdvisor now lists some service limits as being explicitly “unlimited”.

#195 - Handle TrustedAdvisor explicitly reporting some limits as “unlimited”. This introduces the concept of unlimited limits, where the effective limit is None.

switch RDS from calculating usage to using the DescribeAccountAttributes usage information, for all limits other than those which are per-resource and need resource IDs (Max auths per security group, Read replicas per master, Subnets per Subnet Group)

#157 fix for TrustedAdvisor polling multiple times - have TA set an instance variable flag when it updates services after a poll, and skip further polls and updates if the flag is set. Also add an integration test to confirm this.

#50 Add support for IAM service with a subset of its limits (Groups, Instance Profiles, Policies, Policy Versions In Use, Roles, Server Certificates, Users), using both limits and usage information from the GetAccountSummary API action. This requires an additional IAM permission, iam:GetAccountSummary.

#155 Bug fix for uncaught KeyError on accounts with Trusted Advisor (business-level support and above). This was caused by an undocumented change released by AWS between Thu, 10 Mar 2016 07:00:00 GMT and Fri, 11 Mar 2016 07:00:00 GMT, where five new IAM-related checks were introduced that lack the region data field (which the TrustedAdvisorResourceDetail API docs still list as a required field).

#134 Minor update to project description in docs and setup.py; use only _VERSION (not git) when building in RTD; include short description in docs HTML title; set meta description on docs index.rst.

#128 Update Development and Getting Help documentation; add GitHub CONTRIBUTING.md file with link back to docs, as well as Issue and PR templates.

#131 Refactor TrustedAdvisor interaction with limits for special naming cases (limits where the TrustedAdvisor service or limit name doesn’t match that of the awslimitchecker limit); enable newly-available TrustedAdvisor data for some EC2 on-demand instance usage.

#95major refactor to convert AWS client library from boto to boto3. This also includes significant changes to the internal connection logic and some of the internal (private) API. Pagination has been moved to boto3 wherever possible, and handling of API request throttling has been removed from awslimitchecker, as boto3 handles this itself. This also introduces full, official support for python3.

Please note that version 0.3.0 of awslimitchecker moved from using boto as its AWS API client to using boto3. This change is mostly transparent, but there is a minor change in how AWS credentials are handled. In boto, if the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables were set, and the region was not set explicitly via awslimitchecker, the AWS region would either be taken from the AWS_DEFAULT_REGION environment variable or would default to us-east-1, regardless of whether a configuration file (~/.aws/credentials or ~/.aws/config) was present. With boto3, it appears that the default region from the configuration file will be used if present, regardless of whether the credentials come from that file or from environment variables.

Fix #40 add support for pagination of API responses (to get all results) and handle pagination for all current services

Fix #88 add support for API-derived limits. This is a change to the public API for awslimitchecker.limit.AwsLimit and the CLI output.

Fix #72 add support for some new limits returned by Trusted Advisor. This renames the following limits:
* EC2/EC2-VPCElasticIPs to EC2/VPCElasticIPaddresses(EIPs)
* RDS/ReadReplicasperMaster to RDS/Readreplicaspermaster
* RDS/ParameterGroups to RDS/DBparametergroups