python-esiclient
extends the OpenStack CLI to provide simplified user workflows, encapsulating multiple OpenStack CLI commands into a single CLI command.
To install as a package:
pip install python-esiclient
To install from source:
- clone this repository
- install all requirements:
pip install -r requirements.txt
- install:
python setup.py install
These commands manage network connections to nodes.
List node/network attachments.
openstack esi node network list
[--node <node>]
[--network <network>]
--node <node>
: Filter by node (name or UUID)--network <network>
: Filter by network (name or UUID)
Attach network to a node.
openstack esi node network attach
(--network <network> | --port <port> | --trunk <trunk>)
[--mac-address <mac-address>]
<node>
--network <network>
: Network (name or UUID)--port <port>
: Neutron port (name or UUID)--trunk <trunk>
: Neutron trunk (name or UUID)--mac-address <mac-address>
: Node MAC address to attach the network to.node
: Node (name or UUID)
Detach network from a node.
openstack esi node network detach
[--port <port>]
<node>
--port <port>
: Port (name or UUID)node
: Node (name or UUID)
These commands manage trunk ports.
List trunk ports.
openstack esi trunk list
Create a trunk port.
openstack esi trunk create
[--native-network <native-network>]
[--tagged-networks <tagged-network>]
<name>
--native-network <native-network>
: Native network (name or UUID)--tagged-networks <tagged-network>
: Tagged network (name or UUID); can specify multiplename
: Name of the trunk port
Add a network to a trunk port.
openstack esi trunk add network
[--tagged-networks <tagged-network>]
<name>
--tagged-networks <tagged-network>
: Tagged network (name or UUID); can specify multiplename
: Name of the trunk port
Remove a network from a trunk port.
openstack esi trunk remove network
[--tagged-networks <tagged-network>]
<name>
--tagged-networks <tagged-network>
: Tagged network (name or UUID); can specify multiplename
: Name of the trunk port
Delete a trunk port.
openstack esi trunk delete
<name>
name
: Name of the trunk port
Boot a node with a volume
openstack esi node volume attach
(--network <network> | --port <port>)
[--mac-address <mac-address>]
<node> <volume>
--network <network>
: Network (name or UUID)--port <port>
: Neutron port (name or UUID)node
: Node (name or UUID)volume
: Volume (name or UUID)
These commands allow you to treat ESI as a switch.
List VLANs and associated switch ports on a switch.
openstack esi switch vlan list <switch>
switch
: Switch
List switch ports and associated VLANs on a switch.
openstack esi switch port list <switch>
switch
: Switch
Attach VLAN to a switchport on a switch.
openstack esi switch port enable access
<switch>
<switchport>
<vlan>
switch
: Switchswitchport
: Switchportvlan
: VLAN
Disable VLAN access to a switchport on a switch.
openstack esi switch port disable access
<switch>
<switchport>
switch
: Switchswitchport
: Switchport
Attach VLAN to a switchport as the native VLAN of a trunk on a switch.
openstack esi switch port enable trunk
<switch>
<switchport>
<vlan>
switch
: Switchswitchport
: Switchportvlan
: VLAN
Disable trunk on a switchport on a switch.
openstack esi switch port disable trunk
<switch>
<switchport>
switch
: Switchswitchport
: Switchport
Add VLAN to a trunk on a switchport.
openstack esi switch trunk add vlan
<switch>
<switchport>
<vlan>
switch
: Switchswitchport
: Switchportvlan
: VLAN
Remove VLAN from a trunk on a switchport.
openstack esi switch trunk remove vlan
<switch>
<switchport>
<vlan>
switch
: Switchswitchport
: Switchportvlan
: VLAN
These commands orchestrate and undeploy simple bare metal clusters.
Orchestrate a simple cluster.
openstack esi cluster orchestrate <config-file>
<config file>
: Configuration file; for example
{
"node_configs": [
{
"nodes": {
"node_uuids": ["node1"]
},
"network": {
"network_uuid": "private-network-1",
"tagged_network_uuids": ["private-network-2"],
"fip_network_uuid": "external"
},
"provisioning": {
"provisioning_type": "image",
"image_uuid": "image-name",
"ssh_key": "/path/to/ssh/key"
}
},
{
"nodes": {
"num_nodes": "2",
"resource_class": "baremetal"
},
"network": {
"network_uuid": "private-network-1"
},
"provisioning": {
"provisioning_type": "image_url",
"url": "http://url.for/image",
}
}
]
}
List clusters deployed through ESI, along with their associated resources.
openstack esi cluster list
Undeploy a cluster deployed through ESI.
openstack esi cluster undeploy <cluster-uuid>
<cluster uuid>
: Cluster UUID; can be found by runningopenstack esi cluster list
These commands orchestrate and undeploy OpenShift clusters.
Orchestrate an OpenShift cluster.
openstack esi openshift orchestrate <config-file>
<config file>
: Configuration file; for example
{
"cluster_name": "my-cluster",
"openshift_version": "4.13.12",
"high_availability_mode": "Full",
"base_dns_domain": "my.domain",
"api_vip": "192.168.1.250",
"ingress_vip": "192.168.1.249",
"ssh_public_key": "my-public-key",
"external_network_name": "external",
"private_network_name": "my-private-network",
"private_subnet_name": "my-private-subnet",
"nodes": ["node1", "node2", "node3"]
}
Undeploy an OpenShift cluster orchestrated through ESI.
openstack esi openshift undeploy <config-file>
<config file>
: Configuration file used to orchestrate OpenShift cluster