<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted0">
Hi,<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted0">
<br>
I prepared the following description of enhancements I intend towards the libvirt virtual deployment method.  Please let me know I should follow a particular procedure.  Otherwise I intend to create a story in storyboard.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted0">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof ContentPasted0">
Mitch.<br>
===<br>
Starlingx Libvirt deployment method host utilization enhancements
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">References:</div>
<div class="ContentPasted0">"Install StarlingX Kubernetes in a virtual environment" - https://docs.starlingx.io/deploy_install_guides/release/index-install-r7-8966076f0e81.html#index-install-r7-8966076f0e81</div>
<div class="ContentPasted0">Libvirt deployment method in starlingx/tools - https://opendev.org/starlingx/tools/src/branch/master/deployment/libvirt</div>
<div class="ContentPasted0">Libvirt deployment method moved this week to starlingx/virtual-deployment - https://opendev.org/starlingx/virtual-deployment/src/branch/master/libvirt</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">Motivation is to:</div>
<div class="ContentPasted0"> A) maintain attributes for more than one virtual lab</div>
<div class="ContentPasted0"> B) improve the usage and selection of the host's resources for disk, memory and cpu</div>
<div class="ContentPasted0"> C) isolate cluster networks where more than one virtual lab may be running</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">Philosophy of continuity: </div>
<div class="ContentPasted0">Introduce changes and developments in continuity with established examples and approaches.</div>
<div class="ContentPasted0"> - Maintain the existing examples for default setting and the 'mad' override.</div>
<div class="ContentPasted0"> - Establish regression test based on the default setting and 'mad' override to ensure that a user of the deployment method can continue to do the same thing they used to do.</div>
<div class="ContentPasted0"> - Maintain and extend the use of overridable variable definitions for the attributes of a lab.</div>
<div class="ContentPasted0"> - Maintain and extend the use of command line parameters for configuration selection, such as "-c 'simplex'".</div>
<div class="ContentPasted0"> - Maintain and extend the existing workflow: "exporting variables, setup_network.sh, setup_configation.sh, destroy_configuration.sh, destroy_network.sh".</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">A) Maintain configurations for more than one virtual cluster:</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">Motivation: allow a lab's attributes to be recalled from a configuration file and operate upon that lab specifically.</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">Establish a precedent for a configuration file used to override the default attributes.  Refer to the README.rst "Overview" section which lists environment variables CONTROLLER, WORKER, BRIDGE_INTERFACE, EXTERNAL_NETWORK, EXTERNAL_IP.</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">Provide a default configuration file that will reset the variables to defaults as they currently exist within the deployment/libvirt scripts, including:</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">    BRIDGE_INTERFACE=${BRIDGE_INTERFACE:-stxbr}</div>
<div class="ContentPasted0">    EXTERNAL_NETWORK=${EXTERNAL_NETWORK:-10.10.10.0/24}</div>
<div class="ContentPasted0">    EXTERNAL_IP=${EXTERNAL_IP:-10.10.10.1/24}</div>
<div class="ContentPasted0">    CONFIGURATION=${CONFIGURATION:-simplex}</div>
<div class="ContentPasted0">    CONTROLLER=${CONTROLLER:-controller}</div>
<div class="ContentPasted0">    WORKER=${WORKER:-worker}</div>
<div class="ContentPasted0">    STORAGE=${STORAGE:-storage}</div>
<div class="ContentPasted0">    WORKER_NODES_NUMBER=${WORKER_NODES_NUMBER:-1}</div>
<div class="ContentPasted0">    STORAGE_NODES_NUMBER=${STORAGE_NODES_NUMBER:-1}</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">Provide an example configuration file that sets a lab's attributes deviating from the default.  Especially, the default and the example should co-exist.  Consider honouring the "mad" example in README.rst.</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">If necessary provide an option to select values, or a script to set variables, from that configuration file.</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">B) Improve usage and selection of host's resources:</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">Motivation: allow lab specific attributes for the host's resources and provide tools to inspect those resources within the contexts of the virtual labs and/or overall</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">Note: Ensure that all changes are providing defaults that are equivalent to the existing implementation.</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">Values to add to the lab's attributes:</div>
<div class="ContentPasted0">  Add DOMAIN_DIRECTORY to the set of overridable variables</div>
<div class="ContentPasted0">  Add an override variable for the DISK file location for each node in a virtual lab. (currently hardcoded /var/lib/libvirt/images in functions.sh)</div>
<div class="ContentPasted0">  Add an override variable for the MEMORY setting for each node (currently XML hardcoded <memory>)</div>
<div class="ContentPasted0">  Add an override variable for the CPU setting of each node (currently XML hardcoded <vcpu>)</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">Add scripting to assist with supervising the host's resources, such as:</div>
<div class="ContentPasted0">    - listing the lab's nodes and networks;</div>
<div class="ContentPasted0">    - inspecting the lab's network configurations;</div>
<div class="ContentPasted0">    - inspecting the host's and lab's disk usage per configured disk;</div>
<div class="ContentPasted0">    - listing a lab's nodes' cpu and memory allocations</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">C) Isolate cluster networks where more than one cluster may be running:</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">Motivation: on a host that has a capacity to run virtual clusters, ensure that there is no networking crosstalk between the running clusters.</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">Provide scripting to add/remove iptables restrictions for a lab's networks. Initially assume no inter-cluster communication, and only the OAM network will route to external networks.  Include:</div>
<div class="ContentPasted0">    - ipv4 and/or ipv6</div>
<div class="ContentPasted0">    - a lab specific iptables CHAIN</div>
<div><br class="ContentPasted0">
</div>
<div class="ContentPasted0">Probably: omit running this script automatically, since it changes the deployment behaviour.  Consider adding an optional parameter to setup_network.sh.</div>
<br>
</div>
</body>
</html>