in reference-artifacts/Custom-Scripts/Update-Scripts/v1.3.8_to_v1.5.0/update.py [0:0]
def load_to_ddb(accel_prefix, region, config):
vpc_table_name = '%scidr-vpc-assign' % accel_prefix
subnet_table_name = '%scidr-subnet-assign' % accel_prefix
dynamodb = boto3.resource('dynamodb', region)
vpc_table = dynamodb.Table(vpc_table_name)
subnet_table = dynamodb.Table(subnet_table_name)
i = 1
j = 1
account_configs = copy.deepcopy(config['mandatory-account-configs'])
account_configs.update(config.get('workload-account-configs', {}))
for config_section in load_db_sections.keys():
for key_name, section_config in config[config_section].items():
if not section_config.get('vpc'):
continue
for vpc_config in section_config['vpc']:
account_keys = []
if vpc_config.get('cidr-src') == 'dynamic':
continue
vpc_region = region if vpc_config['region'] == '${HOME_REGION}' else vpc_config['region']
if vpc_config['deploy'] != 'local' and config_section == 'organizational-units':
account_ou_key = "account/%s" % vpc_config['deploy']
else:
account_ou_key = "%s/%s" % (config_sections[config_section], key_name)
if vpc_config['deploy'] == 'local' and config_section == 'organizational-units':
account_keys = [key for key, value in account_configs.items() if value['ou'] == key_name]
if vpc_config['name'] == '${CONFIG::OU_NAME}':
vpc_name = key_name
else:
vpc_name = vpc_config['name']
print("Adding CIDR for VPC %s in table %s" %
(vpc_name, vpc_table_name))
cidrs = [cidr for cidr in vpc_config['cidr']] if type(vpc_config['cidr']) == list else [
{"value": vpc_config['cidr'], "pool": "main"}]
if vpc_config['deploy'] == 'local' and config_section == 'organizational-units':
for cidr_index, cidr_object in enumerate(cidrs):
vpc_table.put_item(
Item={
"account-ou-key": 'organizational-unit/%s' % key_name,
"cidr": cidr_object['value'],
"id": "%s" % i,
"pool": cidr_object['pool'],
"region": vpc_region,
"requester": "Manual",
"status": "assigned",
"vpc-name": vpc_name,
"vpc-assigned-id": cidr_index,
}
)
i = i + 1
for account_key in account_keys:
for cidr_index, cidr_object in enumerate(cidrs):
vpc_table.put_item(
Item={
"account-ou-key": 'account/%s' % account_key,
"cidr": cidr_object['value'],
"id": "%s" % i,
"pool": cidr_object['pool'],
"region": vpc_region,
"requester": "Manual",
"status": "assigned",
"vpc-name": vpc_name,
"vpc-assigned-id": cidr_index,
}
)
i = i + 1
else:
for cidr_index, cidr_object in enumerate(cidrs):
vpc_table.put_item(
Item={
"account-ou-key": account_ou_key,
"cidr": cidr_object['value'],
"id": "%s" % i,
"pool": cidr_object['pool'],
"region": vpc_region,
"requester": "Manual",
"status": "assigned",
"vpc-name": vpc_name,
"vpc-assigned-id": cidr_index,
}
)
i = i + 1
if vpc_config.get('cidr2'):
# Not handling new config for cidr2 since we don't have that in new config
print("Adding CIDR2 for VPC %s in table %s" %
(vpc_config['name'], vpc_table_name))
if type(vpc_config['cidr2']) == list:
for cidr_index, cidr in enumerate(vpc_config['cidr2']):
if vpc_config['deploy'] == 'local' and config_section == 'organizational-units':
vpc_table.put_item(
Item={
"account-ou-key": 'organizational-unit/%s' % key_name,
"cidr": cidr,
"id": "%s" % i,
"pool": pools['sub'],
"region": vpc_region,
"requester": "Manual",
"status": "assigned",
"vpc-name": vpc_config['name'],
"vpc-assigned-id": cidr_index + 1,
}
)
i = i + 1
for account_key in account_keys:
vpc_table.put_item(
Item={
"account-ou-key": "account/%s" % account_key,
"cidr": cidr,
"id": "%s" % i,
"pool": pools['sub'],
"region": vpc_region,
"requester": "Manual",
"status": "assigned",
"vpc-name": vpc_config['name'],
"vpc-assigned-id": cidr_index + 1,
}
)
i = i + 1
else:
vpc_table.put_item(
Item={
"account-ou-key": account_ou_key,
"cidr": cidr,
"id": "%s" % i,
"pool": pools['sub'],
"region": vpc_region,
"requester": "Manual",
"status": "assigned",
"vpc-name": vpc_config['name'],
"vpc-assigned-id": cidr_index + 1,
}
)
i = i + 1
else:
if vpc_config['deploy'] == 'local' and config_section == 'organizational-units':
vpc_table.put_item(
Item={
"account-ou-key": 'organizational-unit/%s' % key_name,
"cidr": vpc_config['cidr2'],
"id": "%s" % i,
"pool": pools['sub'],
"region": vpc_region,
"requester": "Manual",
"status": "assigned",
"vpc-name": vpc_config['name'],
"vpc-assigned-id": 1,
}
)
i = i + 1
for account_key in account_keys:
vpc_table.put_item(
Item={
"account-ou-key": "account/%s" % account_key,
"cidr": vpc_config['cidr2'],
"id": "%s" % i,
"pool": pools['sub'],
"region": vpc_region,
"requester": "Manual",
"status": "assigned",
"vpc-name": vpc_config['name'],
"vpc-assigned-id": 1,
}
)
i = i + 1
else:
vpc_table.put_item(
Item={
"account-ou-key": account_ou_key,
"cidr": vpc_config['cidr2'],
"id": "%s" % i,
"pool": pools['sub'],
"region": vpc_region,
"requester": "Manual",
"status": "assigned",
"vpc-name": vpc_config['name'],
"vpc-assigned-id": 1,
}
)
i = i + 1
for subnet_config in vpc_config['subnets']:
subnet_name = subnet_config['name']
for subnet_definition in subnet_config['definitions']:
print("Adding CIDR for Subnet %s-%s in table %s" %
(subnet_config['name'], subnet_definition['az'], subnet_table_name))
if subnet_definition.get('cidr') and type(subnet_definition['cidr']) == dict:
cidr_obj = subnet_definition['cidr']
elif subnet_definition.get('cidr'):
cidr_obj = {
'value': subnet_definition['cidr'],
'pool': 'main'
}
elif subnet_definition.get('cidr2'):
cidr_obj = {
'value': subnet_definition['cidr2'],
'pool': pools['sub']
}
else:
cidr_obj = {
'cidr': subnet_definition.get('cidr', subnet_definition.get('cidr2')),
'pool': 'main' if subnet_definition.get('cidr') else pools['sub']
}
if vpc_config['deploy'] == 'local' and config_section == 'organizational-units':
subnet_table.put_item(
Item={
"account-ou-key": 'organizational-unit/%s' % key_name,
"az": subnet_definition["az"],
"cidr": cidr_obj['value'],
"id": "%s" % j,
"region": vpc_region,
"requester": "Manual",
"status": "assigned",
"sub-pool": cidr_obj['pool'],
"subnet-name": subnet_name,
"vpc-name": vpc_name
}
)
j = j + 1
for account_key in account_keys:
subnet_table.put_item(
Item={
"account-ou-key": "account/%s" % account_key,
"az": subnet_definition["az"],
"cidr": cidr_obj['value'],
"id": "%s" % j,
"region": vpc_region,
"requester": "Manual",
"status": "assigned",
"sub-pool": cidr_obj['pool'],
"subnet-name": subnet_name,
"vpc-name": vpc_name
}
)
j = j + 1
else:
subnet_table.put_item(
Item={
"account-ou-key": account_ou_key,
"az": subnet_definition["az"],
"cidr": cidr_obj['value'],
"id": "%s" % j,
"region": vpc_region,
"requester": "Manual",
"status": "assigned",
"sub-pool": cidr_obj["pool"],
"subnet-name": subnet_name,
"vpc-name": vpc_name
}
)
j = j + 1