1
0
mirror of https://github.com/gryf/boxpy.git synced 2026-02-01 21:45:46 +01:00

6 Commits
1.2 ... 1.3.1

Author SHA1 Message Date
0093e32b74 Fix for rebuild command and calling vmdestroy function. 2021-11-04 09:26:38 +01:00
353d848072 Pass more than one machine to destroy command.
From now on, there is a possibility to pass more than one machine to be
destroyed.
2021-11-04 08:41:13 +01:00
4581ab0ed0 Specify from which Python version boxpy is supported. 2021-10-19 19:33:15 +02:00
deba0aa621 Narrow down proposed VMs to running only for ssh command. 2021-10-19 19:32:30 +02:00
6528813d6a Update examples for multinode setup 2021-10-19 19:31:18 +02:00
9699e61b35 Exit, if image checksum is wrong. 2021-10-03 19:08:15 +02:00
4 changed files with 110 additions and 48 deletions

View File

@@ -16,13 +16,13 @@ weird named options for ``vboxmanage`` ;P)
Requirements
------------
- Python 3.x
- Python >=3.7
- `pyyaml`_
- `requests`_
- Virtualbox (obviously)
- ``mkisofs`` or ``genisoimage`` command for generating iso image
- ``mkisofs`` or ``genisoimage`` command for generating ISO image
- ``wget`` command for fetching images
- ``sha256sum`` command for checksum check
- ``qemu-img`` from *qemu-utils* package command for converting between images

36
box.py
View File

@@ -18,7 +18,7 @@ import requests
import yaml
__version__ = "1.2"
__version__ = "1.3"
CACHE_DIR = os.environ.get('XDG_CACHE_HOME', os.path.expanduser('~/.cache'))
CLOUD_IMAGE = "ci.iso"
@@ -173,11 +173,16 @@ _boxpy() {
fi
;;
destroy|info)
info)
if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms
fi
;;
destroy)
_vms_comp vms
_get_excluded_items "${COMPREPLY[@]}"
COMPREPLY=( $(compgen -W "$result" -- ${cur}) )
;;
list)
items=(--long --running --run-by-boxpy)
_get_excluded_items "${items[@]}"
@@ -185,7 +190,7 @@ _boxpy() {
;;
ssh)
if [[ ${prev} == ${cmd} ]]; then
_vms_comp vms
_vms_comp runningvms
fi
;;
esac
@@ -1150,6 +1155,9 @@ def vmcreate(args, conf=None):
image = get_image_object(vbox, conf.version, image=conf.distro)
path_to_disk = image.convert_to_vdi(conf.name + '.vdi', conf.disk_size)
if not path_to_disk:
return 21
iso = IsoImage(conf)
path_to_iso = iso.get_generated_image()
if not path_to_iso:
@@ -1219,13 +1227,21 @@ def vmcreate(args, conf=None):
def vmdestroy(args):
vbox = VBoxManage(args.name)
if not vbox.get_vm_info():
LOG.fatal(f'Cannot remove VM "{args.name}" - it doesn\'t exists.')
return 18
if isinstance(args.name, list):
vm_names = args.name
else:
LOG.header('Removing VM: %s', args.name)
return VBoxManage(args.name).destroy()
vm_names = [args.name]
for name in vm_names:
vbox = VBoxManage(name)
if not vbox.get_vm_info():
LOG.fatal(f'Cannot remove VM "{name}" - it doesn\'t exists.')
return 18
LOG.header('Removing VM: %s', name)
res = VBoxManage(name).destroy()
if res:
return res
return 0
def vmlist(args):
@@ -1428,7 +1444,7 @@ def main():
f"Default {DISTROS['ubuntu']['default_version']}")
destroy = subparsers.add_parser('destroy', help='destroy VM')
destroy.add_argument('name', help='name or UUID of the VM')
destroy.add_argument('name', nargs='+', help='name or UUID of the VM')
destroy.set_defaults(func=vmdestroy)
list_vms = subparsers.add_parser('list', help='list VMs')

View File

@@ -35,8 +35,6 @@ write_files:
[[local|localrc]]
disable_all_services
disable_service tls-proxy
# Cinder
disable_service c-api
disable_service c-bak
@@ -80,15 +78,20 @@ write_files:
enable_service n-cond
enable_service n-cpu
enable_service n-sch
# Neutron
enable_service neutron
enable_service neutron-tag-ports-during-bulk-creation
# Octavia
enable_service o-api
enable_service o-cw
enable_service o-da
enable_service o-hk
enable_service o-hm
enable_service octavia
# OVN
# Neutron ovn services
enable_service ovn-controller
enable_service ovn-northd
enable_service ovs-vswitchd
@@ -99,60 +102,83 @@ write_files:
enable_service placement-client
# Neutron services
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service q-ovn-metadata-agent
enable_service q-qos
enable_service q-svc
enable_service q-trunk
enable_service rabbit
# Swift
disable_service s-account
disable_service s-container
disable_service s-object
disable_service s-proxy
# Tempest
enable_service tempest
enable_service tls-proxy
# TLS
disable_service tls-proxy
# Vars
ADMIN_PASSWORD="secretadmin"
DATABASE_PASSWORD="secretdatabase"
ETCD_USE_RAMDISK="True"
KURYR_ENABLED_HANDLERS="vif,endpoints,service,namespace,pod_label,policy,kuryrnetworkpolicy,kuryrnetwork,kuryrport,kuryrloadbalancer"
KURYR_EP_DRIVER_OCTAVIA_PROVIDER="amphora"
KURYR_K8S_API_PORT="6443"
KURYR_K8S_CLOUD_PROVIDER="False"
KURYR_K8S_CONTAINERIZED_DEPLOYMENT="True"
KURYR_ENFORCE_SG_RULES="False"
KURYR_EP_DRIVER_OCTAVIA_PROVIDER="ovn"
KURYR_K8S_MULTI_WORKER_TESTS="True"
KURYR_K8S_OCTAVIA_MEMBER_MODE="L2"
KURYR_LB_ALGORITHM="SOURCE_IP_PORT"
KURYR_NEUTRON_DEFAULT_ROUTER="router1"
KURYR_SG_DRIVER="policy"
KURYR_SUBNET_DRIVER="namespace"
LOGFILE="/opt/stack/logs/devstacklog.txt"
LOG_COLOR="False"
ML2_L3_PLUGIN="router"
ML2_L3_PLUGIN="ovn-router,trunk,qos"
OCTAVIA_AMP_IMAGE_FILE="/tmp/test-only-amphora-x64-haproxy-ubuntu-bionic.qcow2"
OCTAVIA_AMP_IMAGE_NAME="test-only-amphora-x64-haproxy-ubuntu-bionic"
OCTAVIA_AMP_IMAGE_SIZE="3"
Q_AGENT="openvswitch"
Q_ML2_TENANT_NETWORK_TYPE="vxlan"
Q_ML2_PLUGIN_MECHANISM_DRIVERS="openvswitch,linuxbridge"
OVN_BRANCH="v20.06.2"
OVN_BUILD_FROM_SOURCE="True"
OVN_DBS_LOG_LEVEL="dbg"
OVN_L3_CREATE_PUBLIC_NETWORK="True"
VAR_RUN_PATH="/usr/local/var/run"
RABBIT_PASSWORD="secretrabbit"
RECLONE="no"
SERVICE_PASSWORD="secretservice"
SERVICE_TOKEN="password"
TEMPEST_PLUGINS="/opt/stack/kuryr-tempest-plugin"
USE_PYTHON3="True"
LIBS_FROM_GIT=cinder,devstack,devstack-gate,devstack-plugin-container,glance,keystone,kuryr-kubernetes,kuryr-tempest-plugin,neutron,nova,octavia,placement,python-octaviaclient,requirements,swift,tempest
LIBS_FROM_GIT=cinder,devstack,devstack-gate,devstack-plugin-container,glance,keystone,kuryr-kubernetes,kuryr-tempest-plugin,neutron,nova,octavia,octavia-tempest-plugin,ovn-octavia-provider,placement,python-octaviaclient,requirements,swift,tempest
TEMPEST_PLUGINS="/opt/stack/kuryr-tempest-plugin /opt/stack/octavia-tempest-plugin"
# enabled plugins
enable_plugin devstack-plugin-container https://opendev.org/openstack/devstack-plugin-container
enable_plugin kuryr-kubernetes https://github.com/gryf/kuryr-kubernetes
enable_plugin kuryr-kubernetes https://opendev.org/openstack/kuryr-kubernetes
enable_plugin kuryr-tempest-plugin https://opendev.org/openstack/kuryr-tempest-plugin
enable_plugin neutron https://opendev.org/openstack/neutron
enable_plugin octavia https://opendev.org/openstack/octavia
enable_plugin octavia-tempest-plugin https://opendev.org/openstack/octavia-tempest-plugin
enable_plugin ovn-octavia-provider https://opendev.org/openstack/ovn-octavia-provider
[[post-config|$OCTAVIA_CONF]]
[api_settings]
enabled_provider_drivers = amphora:'Octavia Amphora driver',ovn:'Octavia OVN driver'
runcmd:
- [apt, purge, '-y', python3-pyasn1-modules]
- [apt, purge, '-y', python3-simplejson]
- [su, -, ubuntu, -c, "git clone https://github.com/gryf/vmstrap"]
- [su, -, ubuntu, -c, "vmstrap/bootstrap.sh"]
- [rm, -fr, /home/ubuntu/vmstrap]
- [su, -, ubuntu, -c, "echo 'export HOST_IP=192.168.10.10' >> .bashrc"]
- [su, -, ubuntu, -c, "cp /tmp/local.conf /home/ubuntu/devstack/"]
- [systemctl, restart, systemd-networkd]
boxpy_data:
key: vm
cpus: 4

View File

@@ -34,8 +34,6 @@ write_files:
content: |
[[local|localrc]]
disable_all_services
disable_service tls-proxy
# Cinder
disable_service c-bak
@@ -55,46 +53,66 @@ write_files:
enable_service kuryr-daemon
disable_service kuryr-kubernetes
# Nova
enable_service n-cpu
# OVN
# Neutron
enable_service neutron
enable_service ovn-controller
disable_service ovn-northd
enable_service ovn-octavia-provider
enable_service ovs-vswitchd
enable_service ovsdb-server
# Placement API
enable_service placement-client
# Neutron services
# Neutron services cd
enable_service q-ovn-metadata-agent
disable_service q-svc
# tempest
disable_service tempest
# tls
disable_service tls-proxy
# Vars
ADMIN_PASSWORD="secretadmin"
DATABASE_HOST="192.168.10.10"
DATABASE_PASSWORD="secretdatabase"
ENABLE_CHASSIS_AS_GW="False"
GLANCE_HOSTPORT="192.168.10.10:9292"
ML2_L3_PLUGIN="router"
# turn on ovn-provider
KURYR_ENFORCE_SG_RULES="False"
KURYR_EP_DRIVER_OCTAVIA_PROVIDER="ovn"
KURYR_K8S_OCTAVIA_MEMBER_MODE="L2"
KURYR_LB_ALGORITHM="SOURCE_IP_PORT"
KURYR_NEUTRON_DEFAULT_ROUTER="router1"
VAR_RUN_PATH="/usr/local/var/run"
KURYR_ENABLED_HANDLERS="vif,endpoints,service,namespace,pod_label,policy,kuryrnetworkpolicy,kuryrnetwork,kuryrport,kuryrloadbalancer"
KURYR_FORCE_IMAGE_BUILD="True"
KURYR_EP_DRIVER_OCTAVIA_PROVIDER="amphora"
KURYR_K8S_API_PORT="6443"
KURYR_K8S_CLOUD_PROVIDER="False"
KURYR_K8S_CONTAINERIZED_DEPLOYMENT="True"
KURYR_SG_DRIVER="policy"
KURYR_SUBNET_DRIVER="namespace"
OVN_BRANCH="v20.06.2"
OVN_BUILD_FROM_SOURCE="True"
OVN_DBS_LOG_LEVEL="dbg"
OVN_L3_CREATE_PUBLIC_NETWORK="True"
LIBVIRT_TYPE="qemu"
LOGFILE="/opt/stack/logs/devstacklog.txt"
LOG_COLOR="False"
Q_AGENT="openvswitch"
Q_ML2_TENANT_NETWORK_TYPE="vxlan"
Q_ML2_PLUGIN_MECHANISM_DRIVERS="openvswitch,linuxbridge"
Q_HOST="192.168.10.10"
RABBIT_HOST="192.168.10.10"
RABBIT_PASSWORD="secretrabbit"
RECLONE="no"
SERVICE_HOST="192.168.10.10"
SERVICE_PASSWORD="secretservice"
SERVICE_TOKEN="password"
TEMPEST_PLUGINS="/opt/stack/kuryr-tempest-plugin"
USE_PYTHON3="True"
LIBS_FROM_GIT=cinder,devstack,devstack-gate,devstack-plugin-container,glance,keystone,kuryr-kubernetes,kuryr-tempest-plugin,neutron,nova,octavia,placement,python-octaviaclient,requirements,swift,tempest
@@ -102,11 +120,14 @@ write_files:
enable_plugin devstack-plugin-container https://opendev.org/openstack/devstack-plugin-container
enable_plugin kuryr-kubernetes https://opendev.org/openstack/kuryr
runcmd:
- [apt, purge, '-y', python3-pyasn1-modules]
- [apt, purge, '-y', python3-simplejson]
- [su, -, ubuntu, -c, "git clone https://github.com/gryf/vmstrap"]
- [su, -, ubuntu, -c, "vmstrap/bootstrap.sh"]
- [rm, -fr, /home/ubuntu/vmstrap]
- [su, -, ubuntu, -c, "echo 'export HOST_IP=192.168.10.11' >> .bashrc"]
- [su, -, ubuntu, -c, "cp /tmp/local.conf /home/ubuntu/devstack/"]
- [systemctl, restart, systemd-networkd]
boxpy_data:
key: vm
cpus: 4
@@ -114,4 +135,3 @@ boxpy_data:
disk_size: 50GB
advanced:
nic2: intnet
port: 2223