Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
afdf254297 | |||
42e776fac1 | |||
dae67a1b7b | |||
b86f8c1e09 | |||
13e309b450 |
19
README.md
19
README.md
@ -40,8 +40,27 @@ The core node and API daemons, as well as the CLI API client, are written in Pyt
|
||||
To get started with PVC, please see the [About](https://parallelvirtualcluster.readthedocs.io/en/latest/about/) page for general information about the project, and the [Getting Started](https://parallelvirtualcluster.readthedocs.io/en/latest/getting-started/) page for details on configuring your first cluster.
|
||||
|
||||
|
||||
## Screenshots
|
||||
|
||||
While PVC's API and internals aren't very screenshot-worthy, here is some example output of the CLI tool.
|
||||
|
||||
<p><img alt="Node listing" src="docs/images/pvc-nodes.png"/><br/><i>Listing the nodes in a cluster</i></p>
|
||||
|
||||
<p><img alt="Network listing" src="docs/images/pvc-networks.png"/><br/><i>Listing the networks in a cluster, showing 3 bridged and 1 IPv4-only managed networks</i></p>
|
||||
|
||||
<p><img alt="VM listing and migration" src="docs/images/pvc-migration.png"/><br/><i>Listing a limited set of VMs and migrating one with status updates</i></p>
|
||||
|
||||
<p><img alt="Node logs" src="docs/images/pvc-nodelog.png"/><br/><i>Viewing the logs of a node (keepalives and VM [un]migration)</i></p>
|
||||
|
||||
|
||||
## Changelog
|
||||
|
||||
#### v0.9.32
|
||||
|
||||
* [CLI Client] Fixes some incorrect colours in network lists
|
||||
* [Documentation] Adds documentation screenshots of CLI client
|
||||
* [Node Daemon] Fixes a bug if VM stats gathering fails
|
||||
|
||||
#### v0.9.31
|
||||
|
||||
* [Packages] Cleans up obsolete Suggests lines
|
||||
|
@ -25,7 +25,7 @@ import yaml
|
||||
from distutils.util import strtobool as dustrtobool
|
||||
|
||||
# Daemon version
|
||||
version = '0.9.31'
|
||||
version = '0.9.32'
|
||||
|
||||
# API version
|
||||
API_VERSION = 1.0
|
||||
|
@ -491,14 +491,10 @@ def net_sriov_vf_info(config, node, vf):
|
||||
# Output display functions
|
||||
#
|
||||
def getColour(value):
|
||||
if value in ['True', "start"]:
|
||||
return ansiprint.green()
|
||||
elif value in ["restart", "shutdown"]:
|
||||
return ansiprint.yellow()
|
||||
elif value in ["stop", "fail"]:
|
||||
return ansiprint.red()
|
||||
else:
|
||||
if value in ["False", "None"]:
|
||||
return ansiprint.blue()
|
||||
else:
|
||||
return ansiprint.green()
|
||||
|
||||
|
||||
def getOutputColours(network_information):
|
||||
|
@ -2,7 +2,7 @@ from setuptools import setup
|
||||
|
||||
setup(
|
||||
name='pvc',
|
||||
version='0.9.31',
|
||||
version='0.9.32',
|
||||
packages=['pvc', 'pvc.cli_lib'],
|
||||
install_requires=[
|
||||
'Click',
|
||||
|
8
debian/changelog
vendored
8
debian/changelog
vendored
@ -1,3 +1,11 @@
|
||||
pvc (0.9.32-0) unstable; urgency=high
|
||||
|
||||
* [CLI Client] Fixes some incorrect colours in network lists
|
||||
* [Documentation] Adds documentation screenshots of CLI client
|
||||
* [Node Daemon] Fixes a bug if VM stats gathering fails
|
||||
|
||||
-- Joshua M. Boniface <joshua@boniface.me> Thu, 19 Aug 2021 12:37:58 -0400
|
||||
|
||||
pvc (0.9.31-0) unstable; urgency=high
|
||||
|
||||
* [Packages] Cleans up obsolete Suggests lines
|
||||
|
BIN
docs/images/pvc-migration.png
Normal file
BIN
docs/images/pvc-migration.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 88 KiB |
BIN
docs/images/pvc-networks.png
Normal file
BIN
docs/images/pvc-networks.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 41 KiB |
BIN
docs/images/pvc-nodelog.png
Normal file
BIN
docs/images/pvc-nodelog.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 300 KiB |
BIN
docs/images/pvc-nodes.png
Normal file
BIN
docs/images/pvc-nodes.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
@ -40,8 +40,27 @@ The core node and API daemons, as well as the CLI API client, are written in Pyt
|
||||
To get started with PVC, please see the [About](https://parallelvirtualcluster.readthedocs.io/en/latest/about/) page for general information about the project, and the [Getting Started](https://parallelvirtualcluster.readthedocs.io/en/latest/getting-started/) page for details on configuring your first cluster.
|
||||
|
||||
|
||||
## Screenshots
|
||||
|
||||
While PVC's API and internals aren't very screenshot-worthy, here is some example output of the CLI tool.
|
||||
|
||||
<p><img alt="Node listing" src="images/pvc-nodes.png"/><br/><i>Listing the nodes in a cluster</i></p>
|
||||
|
||||
<p><img alt="Network listing" src="images/pvc-networks.png"/><br/><i>Listing the networks in a cluster, showing 3 bridged and 1 IPv4-only managed networks</i></p>
|
||||
|
||||
<p><img alt="VM listing and migration" src="images/pvc-migration.png"/><br/><i>Listing a limited set of VMs and migrating one with status updates</i></p>
|
||||
|
||||
<p><img alt="Node logs" src="images/pvc-nodelog.png"/><br/><i>Viewing the logs of a node (keepalives and VM [un]migration)</i></p>
|
||||
|
||||
|
||||
## Changelog
|
||||
|
||||
#### v0.9.32
|
||||
|
||||
* [CLI Client] Fixes some incorrect colours in network lists
|
||||
* [Documentation] Adds documentation screenshots of CLI client
|
||||
* [Node Daemon] Fixes a bug if VM stats gathering fails
|
||||
|
||||
#### v0.9.31
|
||||
|
||||
* [Packages] Cleans up obsolete Suggests lines
|
||||
|
@ -56,7 +56,7 @@ import pvcnoded.CephInstance as CephInstance
|
||||
import pvcnoded.MetadataAPIInstance as MetadataAPIInstance
|
||||
|
||||
# Version string for startup output
|
||||
version = '0.9.31'
|
||||
version = '0.9.32'
|
||||
|
||||
###############################################################################
|
||||
# PVCD - node daemon startup program
|
||||
@ -1675,11 +1675,7 @@ def collect_vm_stats(queue):
|
||||
domain_memory_stats = domain.memoryStats()
|
||||
domain_cpu_stats = domain.getCPUStats(True)[0]
|
||||
except Exception as e:
|
||||
if debug:
|
||||
try:
|
||||
logger.out("Failed getting VM information for {}: {}".format(domain.name(), e), state='d', prefix='vm-thread')
|
||||
except Exception:
|
||||
pass
|
||||
logger.out("Failed getting VM information for {}: {}".format(domain.name(), e), state='w', prefix='vm-thread')
|
||||
continue
|
||||
|
||||
# Ensure VM is present in the domain_list
|
||||
@ -1689,6 +1685,7 @@ def collect_vm_stats(queue):
|
||||
if debug:
|
||||
logger.out("Getting disk statistics for VM {}".format(domain_name), state='d', prefix='vm-thread')
|
||||
domain_disk_stats = []
|
||||
try:
|
||||
for disk in tree.findall('devices/disk'):
|
||||
disk_name = disk.find('source').get('name')
|
||||
if not disk_name:
|
||||
@ -1702,10 +1699,14 @@ def collect_vm_stats(queue):
|
||||
"wr_bytes": disk_stats[3],
|
||||
"err": disk_stats[4]
|
||||
})
|
||||
except Exception as e:
|
||||
logger.out("Failed to get disk stats for VM {}: {}".format(domain_name, e), state='w', prefix='vm-thread')
|
||||
continue
|
||||
|
||||
if debug:
|
||||
logger.out("Getting network statistics for VM {}".format(domain_name), state='d', prefix='vm-thread')
|
||||
domain_network_stats = []
|
||||
try:
|
||||
for interface in tree.findall('devices/interface'):
|
||||
interface_type = interface.get('type')
|
||||
if interface_type not in ['bridge']:
|
||||
@ -1725,6 +1726,9 @@ def collect_vm_stats(queue):
|
||||
"wr_errors": interface_stats[6],
|
||||
"wr_drops": interface_stats[7]
|
||||
})
|
||||
except Exception as e:
|
||||
logger.out("Failed to get network stats for VM {}: {}".format(domain_name, e), state='w', prefix='vm-thread')
|
||||
continue
|
||||
|
||||
# Create the final dictionary
|
||||
domain_stats = {
|
||||
|
Reference in New Issue
Block a user