Gridka puppet2node_config
The snippet can be accessed without any authentication.
Authored by
Julian Keck
Edited
migrate.py 1.29 KiB
import yaml
from gridka_node_config.netdb import get_config, set_config
from gridka_node_config.util import build_api_session
from ipaddress import IPv4Address, IPv6Address
if __name__ == '__main__':
with open('common.yaml') as f:
config = yaml.safe_load(f)['bird::config']
api_session = build_api_session()
for rack, config in config.items():
if rack == 'WN racks on old Hardware':
continue
print(rack, config)
if type(config['ip remote']) is not list:
config['ip remote'] = [config['ip remote']]
if type(config['ip6 remote']) is not list:
config['ip6 remote'] = [config['ip6 remote']]
set_config(
api_session=api_session,
bcd=f'gridka-{rack}-p-1',
local_as=config['as local'],
remote_as=config['as remote'],
ipv4_remote=[IPv4Address(ip) for ip in config['ip remote']],
ipv6_remote=[IPv6Address(ip) for ip in config['ip6 remote']],
)
applied = get_config(api_session=api_session, bcd_list=[f'gridka-{rack}-p-1'])
if len(applied.keys()) > 0:
print(applied)
else:
print('!!!!!!!!!!!!!!!!!!!!')
print(f'No config applied ({rack})!!!')
print('!!!!!!!!!!!!!!!!!!!!')
Please register or sign in to comment