automation: don't create resources when deleting things
Otherwise running these commands can result in resources being
created. In the case of `purge-ec2-resources`, we will create
resources only to delete them immediately afterwards!
With this change, `purge-ec2-resources` now no-ops if no
resources exist.
# no-check-commit because foo_bar function name
Differential Revision: https://phab.mercurial-scm.org/D6285
--- a/contrib/automation/hgautomation/__init__.py Fri Apr 19 05:15:43 2019 -0700
+++ b/contrib/automation/hgautomation/__init__.py Fri Apr 19 05:20:33 2019 -0700
@@ -53,7 +53,7 @@
return password
- def aws_connection(self, region: str):
+ def aws_connection(self, region: str, ensure_ec2_state: bool=True):
"""Obtain an AWSConnection instance bound to a specific region."""
- return AWSConnection(self, region)
+ return AWSConnection(self, region, ensure_ec2_state=ensure_ec2_state)
--- a/contrib/automation/hgautomation/aws.py Fri Apr 19 05:15:43 2019 -0700
+++ b/contrib/automation/hgautomation/aws.py Fri Apr 19 05:20:33 2019 -0700
@@ -180,7 +180,7 @@
class AWSConnection:
"""Manages the state of a connection with AWS."""
- def __init__(self, automation, region: str):
+ def __init__(self, automation, region: str, ensure_ec2_state: bool=True):
self.automation = automation
self.local_state_path = automation.state_path
@@ -191,11 +191,12 @@
self.ec2resource = self.session.resource('ec2')
self.iamclient = self.session.client('iam')
self.iamresource = self.session.resource('iam')
-
- ensure_key_pairs(automation.state_path, self.ec2resource)
+ self.security_groups = {}
- self.security_groups = ensure_security_groups(self.ec2resource)
- ensure_iam_state(self.iamresource)
+ if ensure_ec2_state:
+ ensure_key_pairs(automation.state_path, self.ec2resource)
+ self.security_groups = ensure_security_groups(self.ec2resource)
+ ensure_iam_state(self.iamresource)
def key_pair_path_private(self, name):
"""Path to a key pair private key file."""
--- a/contrib/automation/hgautomation/cli.py Fri Apr 19 05:15:43 2019 -0700
+++ b/contrib/automation/hgautomation/cli.py Fri Apr 19 05:20:33 2019 -0700
@@ -95,12 +95,12 @@
def terminate_ec2_instances(hga: HGAutomation, aws_region):
- c = hga.aws_connection(aws_region)
+ c = hga.aws_connection(aws_region, ensure_ec2_state=False)
aws.terminate_ec2_instances(c.ec2resource)
def purge_ec2_resources(hga: HGAutomation, aws_region):
- c = hga.aws_connection(aws_region)
+ c = hga.aws_connection(aws_region, ensure_ec2_state=False)
aws.remove_resources(c)