module AwsClient class RdsWrapper < AwsClient::Wrapper def instance_by_database_name(database_name, is_master = true) selector = is_master ? :last : :first ## hacky - we need a much better way of targetting rds instances. return all_instances.select{|db_instance| db_instance.db_name == database_name }.send(selector) end def instance_data_by_vpc_id(vpc_id) return all_instances.select{|instance| instance.db_subnet_group.vpc_id = vpc_id } end def instance_endpoint(instance) return "UNDEFINED" if instance.nil? return instance.endpoint.address end def instance_endpoint_for_named_database(database_name, is_master = true) instance = instance_by_database_name(database_name, is_master) return instance_endpoint(instance) end def all_instances @all_instances ||= get_all_instances.collect{|raw_instance| raw_instance.db_instances.flatten }.flatten end def get_all_instances all_instances = [] pages = client.describe_db_instances all_instances << pages.data while pages.next_page? pages = pages.next_page @all_instances << pages.data end return all_instances end end end