You have unsaved changes
Python
import micropip
import asyncio

async def instal_yaml():
    await micropip.install("pyyaml")

# Check if there's an existing event loop and run the async function accordingly
try:
    asyncio.get_event_loop().run_until_complete(instal_yaml())
except RuntimeError:
    asyncio.run(instal_yaml())
Python
def convert_yaml_to_commands(config):
    """Convert YAML config to list of commands"""
    commands = []
    for line in config.split('\n'):
        line = line.strip()
        commands.append(line.lstrip())
    return commands
Python
import yaml
file = """
R1:
  netmiko:
    host: clab-ospf_foundations__ospf_broadcast-r1
    device_type: cisco_ios
    username: admin
    password: autonetops
    port: 22
  config:
    interface Ethernet0/1
      ip address 100.100.100.1 255.255.255.0
      !
    interface Tunnel1234
      ip address 10.1.1.1 255.255.255.0
      no ip redirects
      ip nhrp map 10.1.1.2 100.100.100.2
      ip nhrp map 10.1.1.3 100.100.100.3
      ip nhrp map 10.1.1.4 100.100.100.4
      ip nhrp network-id 111
      ip ospf network broadcast
      ip ospf priority 100
      tunnel source Ethernet0/1
      tunnel mode gre multipoint
      !
    interface Loopback0
      ip address 1.1.1.1 255.255.255.255
      ip ospf network point-to-point
      !
    router ospf 1
      network 1.1.1.1 0.0.0.0 area 0
      network 10.1.1.0 0.0.0.255 area 0
"""
data = yaml.safe_load(file)
commands = convert_yaml_to_commands(data["R1"]["config"])
print(data)
print(commands)
{'R1': {'netmiko': {'host': 'clab-ospf_foundations__ospf_broadcast-r1', 'device_type': 'cisco_ios', 'username': 'admin', 'password': 'autonetops', 'port': 22}, 'config': 'interface Ethernet0/1 ip address 100.100.100.1 255.255.255.0 interface Tunnel1234 ip address 10.1.1.1 255.255.255.0 no ip redirects ip nhrp map 10.1.1.2 100.100.100.2 ip nhrp map 10.1.1.3 100.100.100.3 ip nhrp map 10.1.1.4 100.100.100.4 ip nhrp network-id 111 ip ospf network broadcast ip ospf priority 100 tunnel source Ethernet0/1 tunnel mode gre multipoint interface Loopback0 ip address 1.1.1.1 255.255.255.255 ip ospf network point-to-point router ospf 1 network 1.1.1.1 0.0.0.0 area 0 network 10.1.1.0 0.0.0.255 area 0'}}
['interface Ethernet0/1 ip address 100.100.100.1 255.255.255.0 interface Tunnel1234 ip address 10.1.1.1 255.255.255.0 no ip redirects ip nhrp map 10.1.1.2 100.100.100.2 ip nhrp map 10.1.1.3 100.100.100.3 ip nhrp map 10.1.1.4 100.100.100.4 ip nhrp network-id 111 ip ospf network broadcast ip ospf priority 100 tunnel source Ethernet0/1 tunnel mode gre multipoint interface Loopback0 ip address 1.1.1.1 255.255.255.255 ip ospf network point-to-point router ospf 1 network 1.1.1.1 0.0.0.0 area 0 network 10.1.1.0 0.0.0.255 area 0']
Python
file = """
R1:
  netmiko:
    host: clab-ospf_foundations__ospf_broadcast-r1
    device_type: cisco_ios
    username: admin
    password: autonetops
    port: 22
  config: |
    interface Ethernet0/1
      ip address 100.100.100.1 255.255.255.0
      !
    interface Tunnel1234
      ip address 10.1.1.1 255.255.255.0
      no ip redirects
      ip nhrp map 10.1.1.2 100.100.100.2
      ip nhrp map 10.1.1.3 100.100.100.3
      ip nhrp map 10.1.1.4 100.100.100.4
      ip nhrp network-id 111
      ip ospf network broadcast
      ip ospf priority 100
      tunnel source Ethernet0/1
      tunnel mode gre multipoint
      !
    interface Loopback0
      ip address 1.1.1.1 255.255.255.255
      ip ospf network point-to-point
      !
    router ospf 1
      network 1.1.1.1 0.0.0.0 area 0
      network 10.1.1.0 0.0.0.255 area 0
"""
data = yaml.safe_load(file)
commands = convert_yaml_to_commands(data["R1"]["config"])
print(data)
print(commands)
{'R1': {'netmiko': {'host': 'clab-ospf_foundations__ospf_broadcast-r1', 'device_type': 'cisco_ios', 'username': 'admin', 'password': 'autonetops', 'port': 22}, 'config': 'interface Ethernet0/1\n  ip address 100.100.100.1 255.255.255.0\ninterface Tunnel1234\n  ip address 10.1.1.1 255.255.255.0\n  no ip redirects\n  ip nhrp map 10.1.1.2 100.100.100.2\n  ip nhrp map 10.1.1.3 100.100.100.3\n  ip nhrp map 10.1.1.4 100.100.100.4\n  ip nhrp network-id 111\n  ip ospf network broadcast\n  ip ospf priority 100\n  tunnel source Ethernet0/1\n  tunnel mode gre multipoint\ninterface Loopback0\n  ip address 1.1.1.1 255.255.255.255\n  ip ospf network point-to-point\nrouter ospf 1\n  network 1.1.1.1 0.0.0.0 area 0\n  network 10.1.1.0 0.0.0.255 area 0\n'}}
['interface Ethernet0/1', 'ip address 100.100.100.1 255.255.255.0', 'interface Tunnel1234', 'ip address 10.1.1.1 255.255.255.0', 'no ip redirects', 'ip nhrp map 10.1.1.2 100.100.100.2', 'ip nhrp map 10.1.1.3 100.100.100.3', 'ip nhrp map 10.1.1.4 100.100.100.4', 'ip nhrp network-id 111', 'ip ospf network broadcast', 'ip ospf priority 100', 'tunnel source Ethernet0/1', 'tunnel mode gre multipoint', 'interface Loopback0', 'ip address 1.1.1.1 255.255.255.255', 'ip ospf network point-to-point', 'router ospf 1', 'network 1.1.1.1 0.0.0.0 area 0', 'network 10.1.1.0 0.0.0.255 area 0', '']