Skip to main content

build

topology-deployer

Python tool to deploy topologies on Ubuntu from the defined json config files.

Table of Contents

  1. Prerequisites
  2. User Guide
    1. Create Topology
    2. Delete Topology
    3. Verbosity
  3. JSON Topology Config
    1. JSON Network Config
    2. JSON Virtual Machine Config

Prerequisites

Run ./scripts/install

User Guide

Installation

Install from Python Package Index

sudo pip3 install topology-deployer

To install from source

sudo pip3 install .

Options

Parse topology config

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        JSON Config file that defines the topology
  -o {create,delete,CREATE,DELETE}, --operation {create,delete,CREATE,DELETE}
                        Operation to create or delete topology from the JSON Config
  -i {ubuntu,rocky}, --image {ubuntu,rocky}
                        Choose the base OS image for the VMS
  -l {DEBUG,INFO,WARNING,ERROR,CRITICAL}, --log {DEBUG,INFO,WARNING,ERROR,CRITICAL}
                        Set the log level
  --dry-run             Instead of executing, print the commands
  --skip-network        Skip creating networks. Cannot be used with --skip-vm
  --skip-vm             Skip creating vms. Cannot be used with --skip-network

Creating Topologies

A JSON cofig is taken as input. Check here for guide to define config

sudo topology-deployer -c config.json -o create -i ubuntu -l INFO

To skip creating networks. It can be used woth delete too. (This is BETA feature. Not fully tested)

sudo topology-deployer -c config.json -o create -i ubuntu -l INFO --skip-network

To skip creating virtual machines. It can be used woth delete too. (This is BETA feature. Not fully tested)

sudo topology-deployer -c config.json -o create -i ubuntu -l INFO --skip-vm

Deleting Topologies

Same JSON cofig used to create topology is taken as input.

sudo topology-deployer -c config.json -o delete -l INFO

Verbosity

To print verbose output for created networks

sudo topology-deployer --print-nw -c config.json -o create

To print verbose output for created virtual machines

sudo topology-deployer --print-vm -c config.json -o create

JSON Config

The json config to define topologies comprises of 2 sections.

  1. Networks
  2. Virtual Machines
{
    "version" : 2,
    "networks" : [],
    "vms" : []
}

JSON Network Config

The JSON network object comprises of array of networks. A network object skeleton is shown below

{
    "networks" : [
        {
            "name" : "<name>",
            "type" : "<nat | management | isolated>",
            "subnet4" : "<ipv4 subnet>",
            "subnet6" : "<ipv6 subnet>"
        }
    ],
}

Add NAT network in JSON network object

For nat network, name and subnet4 are mandatory fields. subnet6 is optional in case you need v6 network in your topology. To have multiple NAT networks, you can add multiple objects in the networks.nat json object.

{
    "networks" : [
        {
            "name" : "<name>",
            "type" : "nat",
            "subnet4" : "<ipv4 subnet>",
            "subnet6" : "<ipv6 subnet>"
        }
    ]
}

Add Management network in JSON network object

For management network, name and subnet4 are mandatory fields. Currently we do not support v6 management network. To have multiple NAT networks, you can add multiple objects in the networks.management json object.

{
    "networks" : [
        {
            "name" : "<name>",
            "type" : "management",
            "subnet4" : "<ipv4 subnet>"
        }
    ]
}

Add Isolated network in JSON network object

For isolated network, name is mandatory fields. To have multiple NAT networks, you can add multiple objects in the networks.isolated json object.

{
    "networks" : [
        {
            "name" : "<name>",
            "type" : "management"
        }
    ]
}

JSON Virtual Machine Config

The vms object is array of multiple vm objects. For the vm object on the JSON config, name, flavor, vnc_port and networks are mandatory fields. You can optionally use ram, vcpus and disk to override the defaults for the flavor. A vms object skeleton is shown below

{
    "vms" : [{
        "name" : "",
        "flavor" : "",
        "vnc_port" : "",
        "networks" : {
            "<nw_name1>" : {
                "v4" : ""
            },
            "<nw_name2>" : {
                "v4" : "",
                "v6" : ""
            }
        }
    }]
}

To define networks for the vm, you have to use the network name as key and provide v4 address. You can also add a v6 address if the network type is NAT.

If you want to customize the resources for your VM you can use the vcpus, ram and disk keys. Example

{
    "vms" : [{
        "name" : "",
        "flavor" : "",
        "vcpus" : 10,
        "ram" : 8192,
        "disk" : "128G",
        "vnc_port" : "",
        "networks" : {
            "<nw_name1>" : {
                "v4" : ""
            },
            "<nw_name2>" : {
                "v4" : "",
                "v6" : ""
            }
        }
    }]
}

Sample Topology Configurations

  1. 2PE-CE
  2. 2PE-2PSWITCH-2CE

Metadata

Release files for topology-deployer 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for topology-deployer 0.2.2
File Size Uploaded
topology_deployer-0.2.2.tar.gz 16.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for topology-deployer 0.2.2
File Interpreter ABI Platform
topology_deployer-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 35.5 kB

Release files / topology_deployer-0.2.2.tar.gz

Download URL topology_deployer-0.2.2.tar.gz
Size 16.9 kB
Tags Source
SHA-256 checksum
How to use checksums
b59db6d506e49fd734b7518f784d63cec84f21788e26dc9459070dfa5b046592
BLAKE2b-256 checksum
How to use checksums
9a53351f06b0b7f3c55b64381886931a57651ed16cf25d1ce436fe7769f43440
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20

Release files / topology_deployer-0.2.2-py3-none-any.whl

Download URL topology_deployer-0.2.2-py3-none-any.whl
Size 18.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
48ccaac6504c741b79217daef127ceb612837a34530fc1097f48d088ebd8e580
BLAKE2b-256 checksum
How to use checksums
a88217d7550bbca47c7089d458658c5fb465a06a7d448b8bb767252f57c49328
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page