Skip to content
Snippets Groups Projects

Gridka puppet2node_config

  • Clone with SSH
  • Clone with HTTPS
  • Embed
  • Share
    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('!!!!!!!!!!!!!!!!!!!!')
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment