From fe8887920fce3f78e8152bc4c1ff6943282c09c7 Mon Sep 17 00:00:00 2001 From: Benoit Dubertret Date: Fri, 26 Oct 2012 12:47:32 +0200 Subject: [PATCH] Add a --filter option for list_instances --- bin/list_instances | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/bin/list_instances b/bin/list_instances index 4da5596249..a8de4ada19 100755 --- a/bin/list_instances +++ b/bin/list_instances @@ -35,8 +35,10 @@ def main(): parser.add_option("-r", "--region", help="Region (default us-east-1)", dest="region", default="us-east-1") parser.add_option("-H", "--headers", help="Set headers (use 'T:tagname' for including tags)", default=None, action="store", dest="headers", metavar="ID,Zone,Groups,Hostname,State,T:Name") parser.add_option("-t", "--tab", help="Tab delimited, skip header - useful in shell scripts", action="store_true", default=False) + parser.add_option("-f", "--filter", help="Filter option sent to DescribeInstances API call, format is key1=value1,key2=value2,...", default=None) (options, args) = parser.parse_args() + # Connect the region for r in regions(): if r.name == options.region: @@ -62,13 +64,19 @@ def main(): format_string += "%%-%ds" % HEADERS[h]['length'] + # Parse filters (if any) + if options.filter: + filters = dict([entry.split('=') for entry in options.filter.split(',')]) + else: + filters = {} + # List and print if not options.tab: print format_string % headers print "-" * len(format_string % headers) - for r in ec2.get_all_instances(): + for r in ec2.get_all_instances(filters=filters): groups = [g.name for g in r.groups] for i in r.instances: i.groups = ','.join(groups)