def update_nodes(): """ Entry point for the CloudWatch scheduled task to discover and cache services. """ try: never_regions_key = "never-cache-regions" never_regions = msam_settings.get_setting(never_regions_key) if never_regions is None: never_regions = [] settings_key = "cache-next-region" # make a region name list region_name_list = [] for region in regions(): region_name = region["RegionName"] # exclude regions listed in never-cache setting if region_name not in never_regions: region_name_list.append(region_name) else: print("{} in {} setting".format(region_name, never_regions_key)) # sort it region_name_list.sort() # get the next region to process next_region = msam_settings.get_setting(settings_key) # start at the beginning if no previous setting if next_region is None: next_region = region_name_list[0] # otherwise it's saved for us region_name = next_region # store the region for the next schedule try: # process global after the end of the region list if region_name_list.index(next_region) + 1 >= len( region_name_list): next_region = "global" else: next_region = region_name_list[ region_name_list.index(next_region) + 1] except (IndexError, ValueError): # start over if we don't recognize the region, ex. global next_region = region_name_list[0] # store it msam_settings.put_setting(settings_key, next_region) # update the region print("updating region {}".format(region_name)) if region_name == "global": content.put_ddb_items(node_cache.s3_bucket_ddb_items()) content.put_ddb_items( node_cache.cloudfront_distribution_ddb_items()) else: node_cache.update_regional_ddb_items(region_name) except ClientError as error: print(error) return True
def update_nodes(): """ Entry point for the CloudWatch scheduled task to discover and cache services. """ try: never_regions_key = "never-cache-regions" never_regions = msam_settings.get_setting(never_regions_key) if never_regions is None: never_regions = [] settings_key = "cache-next-region" # make a region name list region_name_list = [] for region in regions(): region_name = region["RegionName"] # exclude regions listed in never-cache setting if region_name not in never_regions: region_name_list.append(region_name) else: print("{} in {} setting".format(region_name, never_regions_key)) # sort it region_name_list.sort() # get the next region to process next_region = msam_settings.get_setting(settings_key) # start at the beginning if no previous setting if next_region is None: next_region = region_name_list[0] # otherwise it's saved for us region_name = next_region # store the region for the next schedule try: # process global after the end of the region list if region_name_list.index(next_region) + 1 >= len(region_name_list): next_region = "global" else: next_region = region_name_list[region_name_list.index(next_region) + 1] except (IndexError, ValueError): # start over if we don't recognize the region, ex. global next_region = region_name_list[0] # store it msam_settings.put_setting(settings_key, next_region) # update the region print("updating region {}".format(region_name)) if region_name == "global": content.put_ddb_items(node_cache.s3_bucket_ddb_items()) content.put_ddb_items(node_cache.cloudfront_distribution_ddb_items()) else: node_cache.update_regional_ddb_items(region_name) except ClientError as error: print(error) return True
def test_regions(self, patched_env, patched_resource, patched_client): """ Test the regions function """ from chalicelib import cache cache.regions()
def regions(): """ API entry point to retrieve all regions based on EC2. """ return cache.regions()