def test_total_priority(): count = 6 regions = ["a", "b", "c"] region_priorities = {"a": 20, "b": 30, "c": 0} # make sure that rounding leftover is added to b (highest priority) assert distribute_in_region(count, regions, region_priorities) == \ {"a": 2, "b": 4, "c": 0}
def aws_resume_instances(all_instances, moz_instance_type, start_count, regions, region_priorities, dryrun, slaveset): """Create up to `start_count` on-demand instances""" start_count_per_region = distribute_in_region(start_count, regions, region_priorities) started = 0 instance_config = load_instance_config(moz_instance_type) for region, count in start_count_per_region.iteritems(): # TODO: check region limits ami = get_ami(region=region, moz_instance_type=moz_instance_type) for _ in range(count): try: r = do_request_instance( region=region, moz_instance_type=moz_instance_type, price=None, availability_zone=None, ami=ami, instance_config=instance_config, instance_type=instance_config[region]["instance_type"], slaveset=slaveset, is_spot=False, dryrun=dryrun, all_instances=all_instances) if r: started += 1 except EC2ResponseError, e: # TODO: Handle e.code log.warn("On-demand failure: %s; giving up", e.code) log.warn("Cannot start", exc_info=True) break except Exception: log.warn("Cannot start", exc_info=True)
def aws_resume_instances(all_instances, moz_instance_type, start_count, regions, region_priorities, dryrun): """Create up to `start_count` on-demand instances""" start_count_per_region = distribute_in_region(start_count, regions, region_priorities) started = 0 instance_config = load_instance_config(moz_instance_type) for region, count in start_count_per_region.iteritems(): # TODO: check region limits ami = get_ami(region=region, moz_instance_type=moz_instance_type) for _ in range(count): try: r = do_request_instance( region=region, moz_instance_type=moz_instance_type, price=None, availability_zone=None, ami=ami, instance_config=instance_config, instance_type=instance_config[region]["instance_type"], is_spot=False, dryrun=dryrun, all_instances=all_instances) if r: started += 1 except EC2ResponseError, e: # TODO: Handle e.code log.warn("On-demand failure: %s; giving up", e.code) log.warn("Cannot start", exc_info=True) break except Exception: log.warn("Cannot start", exc_info=True)
def test_total(): count = 6 regions = ["a", "b", "c"] region_priorities = {"a": 20, "b": 30, "c": 0} assert sum( distribute_in_region(count, regions, region_priorities).values()) == count
def test_zero(): count = 50 regions = ["a", "b", "c"] region_priorities = {"a": 2, "b": 3, "c": 0} assert distribute_in_region(count, regions, region_priorities) == { "a": 20, "b": 30, "c": 0 }
def test_basic(): count = 50 regions = ["a", "b", "c"] region_priorities = {"a": 2, "b": 3, "c": 5} assert distribute_in_region(count, regions, region_priorities) == { "a": 10, "b": 15, "c": 25 }
def test_zero(): count = 50 regions = ["a", "b", "c"] region_priorities = {"a": 2, "b": 3, "c": 0} assert distribute_in_region( count, regions, region_priorities) == {"a": 20, "b": 30, "c": 0}
def test_basic(): count = 50 regions = ["a", "b", "c"] region_priorities = {"a": 2, "b": 3, "c": 5} assert distribute_in_region( count, regions, region_priorities) == {"a": 10, "b": 15, "c": 25}
def test_intersection(): count = 10 regions = ["a", "b", "c"] region_priorities = {"a": 20, "d": 30} assert distribute_in_region(count, regions, region_priorities) == {"a": 10}
def test_regions_not_in_region_priorities(): count = 10 regions = ["a", "b", "c"] region_priorities = {"a": 20, "b": 30} assert distribute_in_region(count, regions, region_priorities) == \ {"a": 4, "b": 6}
def test_total(): count = 6 regions = ["a", "b", "c"] region_priorities = {"a": 20, "b": 30, "c": 0} assert sum(distribute_in_region( count, regions, region_priorities).values()) == count