Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
705ec802a3 | |||
47d7b23763 | |||
0bae729a18 | |||
b968110e9f | |||
4898ae5082 | |||
249e1568a1 | |||
0b90f37518 | |||
33205273dc | |||
1e083d7652 | |||
65d2b7869c | |||
66aee73f1d |
13
CHANGELOG.md
13
CHANGELOG.md
@ -1,5 +1,18 @@
|
||||
## PVC Changelog
|
||||
|
||||
###### [v0.9.67](https://github.com/parallelvirtualcluster/pvc/releases/tag/v0.9.67)
|
||||
|
||||
* [CLI] Fixes several more bugs in the refactored CLI
|
||||
|
||||
###### [v0.9.66](https://github.com/parallelvirtualcluster/pvc/releases/tag/v0.9.66)
|
||||
|
||||
* [CLI] Fixes a missing YAML import in CLI
|
||||
|
||||
###### [v0.9.65](https://github.com/parallelvirtualcluster/pvc/releases/tag/v0.9.65)
|
||||
|
||||
* [CLI] Fixes a bug in the node list filtering command
|
||||
* [CLI] Fixes a bug/default when no connection is specified
|
||||
|
||||
###### [v0.9.64](https://github.com/parallelvirtualcluster/pvc/releases/tag/v0.9.64)
|
||||
|
||||
**Breaking Change [CLI]**: The CLI client root commands have been reorganized. The following commands have changed:
|
||||
|
@ -27,7 +27,7 @@ from ssl import SSLContext, TLSVersion
|
||||
from distutils.util import strtobool as dustrtobool
|
||||
|
||||
# Daemon version
|
||||
version = "0.9.64"
|
||||
version = "0.9.67"
|
||||
|
||||
# API version
|
||||
API_VERSION = 1.0
|
||||
|
@ -19,6 +19,8 @@
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
from colorama import Fore
|
||||
from difflib import unified_diff
|
||||
from functools import wraps
|
||||
from json import dump as jdump
|
||||
from json import dumps as jdumps
|
||||
@ -26,7 +28,9 @@ from json import loads as jloads
|
||||
from os import environ, makedirs, path
|
||||
from pkg_resources import get_distribution
|
||||
from lxml.etree import fromstring, tostring
|
||||
from re import sub
|
||||
from re import sub, match
|
||||
from yaml import load as yload
|
||||
from yaml import SafeLoader as SafeYAMLLoader
|
||||
|
||||
from pvc.cli.helpers import *
|
||||
from pvc.cli.waiters import *
|
||||
@ -850,14 +854,14 @@ def cli_node_info(
|
||||
help="Limit list to nodes in the specified daemon state.",
|
||||
)
|
||||
@click.option(
|
||||
"-ds",
|
||||
"-cs",
|
||||
"--coordinator-state",
|
||||
"coordinator_state_filter",
|
||||
default=None,
|
||||
help="Limit list to nodes in the specified coordinator state.",
|
||||
)
|
||||
@click.option(
|
||||
"-ds",
|
||||
"-vs",
|
||||
"--domain-state",
|
||||
"domain_state_filter",
|
||||
default=None,
|
||||
@ -1194,7 +1198,7 @@ def cli_vm_modify(
|
||||
text=current_vm_cfgfile, require_save=True, extension=".xml"
|
||||
)
|
||||
if new_vm_cfgfile is None:
|
||||
echo("Aborting with no modifications.")
|
||||
echo(CLI_CONFIG, "Aborting with no modifications.")
|
||||
exit(0)
|
||||
else:
|
||||
new_vm_cfgfile = new_vm_cfgfile.strip()
|
||||
@ -1206,16 +1210,14 @@ def cli_vm_modify(
|
||||
cfgfile.close()
|
||||
|
||||
echo(
|
||||
CLI_CONFIG,
|
||||
'Replacing configuration of VM "{}" with file "{}".'.format(
|
||||
dom_name, cfgfile.name
|
||||
)
|
||||
),
|
||||
)
|
||||
|
||||
# Show a diff and confirm
|
||||
echo("Pending modifications:")
|
||||
echo("")
|
||||
diff = list(
|
||||
difflib.unified_diff(
|
||||
unified_diff(
|
||||
current_vm_cfgfile.split("\n"),
|
||||
new_vm_cfgfile.split("\n"),
|
||||
fromfile="current",
|
||||
@ -1226,16 +1228,23 @@ def cli_vm_modify(
|
||||
lineterm="",
|
||||
)
|
||||
)
|
||||
if len(diff) < 1:
|
||||
echo(CLI_CONFIG, "Aborting with no modifications.")
|
||||
exit(0)
|
||||
|
||||
# Show a diff and confirm
|
||||
echo(CLI_CONFIG, "Pending modifications:")
|
||||
echo(CLI_CONFIG, "")
|
||||
for line in diff:
|
||||
if re.match(r"^\+", line) is not None:
|
||||
echo(colorama.Fore.GREEN + line + colorama.Fore.RESET)
|
||||
elif re.match(r"^\-", line) is not None:
|
||||
echo(colorama.Fore.RED + line + colorama.Fore.RESET)
|
||||
elif re.match(r"^\^", line) is not None:
|
||||
echo(colorama.Fore.BLUE + line + colorama.Fore.RESET)
|
||||
if match(r"^\+", line) is not None:
|
||||
echo(CLI_CONFIG, Fore.GREEN + line + Fore.RESET)
|
||||
elif match(r"^\-", line) is not None:
|
||||
echo(CLI_CONFIG, Fore.RED + line + Fore.RESET)
|
||||
elif match(r"^\^", line) is not None:
|
||||
echo(CLI_CONFIG, Fore.BLUE + line + Fore.RESET)
|
||||
else:
|
||||
echo(line)
|
||||
echo("")
|
||||
echo(CLI_CONFIG, line)
|
||||
echo(CLI_CONFIG, "")
|
||||
|
||||
# Verify our XML is sensible
|
||||
try:
|
||||
@ -3592,7 +3601,7 @@ def cli_storage_volume_upload(pool, name, image_format, image_file):
|
||||
"""
|
||||
|
||||
if not os.path.exists(image_file):
|
||||
echo("ERROR: File '{}' does not exist!".format(image_file))
|
||||
echo(CLI_CONFIG, "ERROR: File '{}' does not exist!".format(image_file))
|
||||
exit(1)
|
||||
|
||||
retcode, retmsg = pvc.lib.storage.ceph_volume_upload(
|
||||
@ -4430,7 +4439,8 @@ def cli_provisioner_template_storage_disk_add(
|
||||
|
||||
if source_volume and (size or filesystem or mountpoint):
|
||||
echo(
|
||||
'The "--source-volume" option is not compatible with the "--size", "--filesystem", or "--mountpoint" options.'
|
||||
CLI_CONFIG,
|
||||
'The "--source-volume" option is not compatible with the "--size", "--filesystem", or "--mountpoint" options.',
|
||||
)
|
||||
exit(1)
|
||||
|
||||
@ -4510,9 +4520,9 @@ def cli_provisioner_userdata_add(name, filename):
|
||||
userdata = filename.read()
|
||||
filename.close()
|
||||
try:
|
||||
yaml.load(userdata, Loader=yaml.SafeLoader)
|
||||
yload(userdata, Loader=SafeYAMLLoader)
|
||||
except Exception as e:
|
||||
echo("Error: Userdata document is malformed")
|
||||
echo(CLI_CONFIG, "Error: Userdata document is malformed")
|
||||
cleanup(False, e)
|
||||
|
||||
params = dict()
|
||||
@ -4549,7 +4559,7 @@ def cli_provisioner_userdata_modify(name, filename, editor):
|
||||
# Grab the current config
|
||||
retcode, retdata = pvc.lib.provisioner.userdata_info(CLI_CONFIG, name)
|
||||
if not retcode:
|
||||
echo(retdata)
|
||||
echo(CLI_CONFIG, retdata)
|
||||
exit(1)
|
||||
current_userdata = retdata["userdata"].strip()
|
||||
|
||||
@ -4557,16 +4567,14 @@ def cli_provisioner_userdata_modify(name, filename, editor):
|
||||
text=current_userdata, require_save=True, extension=".yaml"
|
||||
)
|
||||
if new_userdata is None:
|
||||
echo("Aborting with no modifications.")
|
||||
echo(CLI_CONFIG, "Aborting with no modifications.")
|
||||
exit(0)
|
||||
else:
|
||||
new_userdata = new_userdata.strip()
|
||||
|
||||
# Show a diff and confirm
|
||||
echo("Pending modifications:")
|
||||
echo("")
|
||||
diff = list(
|
||||
difflib.unified_diff(
|
||||
unified_diff(
|
||||
current_userdata.split("\n"),
|
||||
new_userdata.split("\n"),
|
||||
fromfile="current",
|
||||
@ -4577,16 +4585,22 @@ def cli_provisioner_userdata_modify(name, filename, editor):
|
||||
lineterm="",
|
||||
)
|
||||
)
|
||||
if len(diff) < 1:
|
||||
echo(CLI_CONFIG, "Aborting with no modifications.")
|
||||
exit(0)
|
||||
|
||||
echo(CLI_CONFIG, "Pending modifications:")
|
||||
echo(CLI_CONFIG, "")
|
||||
for line in diff:
|
||||
if re.match(r"^\+", line) is not None:
|
||||
echo(colorama.Fore.GREEN + line + colorama.Fore.RESET)
|
||||
elif re.match(r"^\-", line) is not None:
|
||||
echo(colorama.Fore.RED + line + colorama.Fore.RESET)
|
||||
elif re.match(r"^\^", line) is not None:
|
||||
echo(colorama.Fore.BLUE + line + colorama.Fore.RESET)
|
||||
if match(r"^\+", line) is not None:
|
||||
echo(CLI_CONFIG, Fore.GREEN + line + Fore.RESET)
|
||||
elif match(r"^\-", line) is not None:
|
||||
echo(CLI_CONFIG, Fore.RED + line + Fore.RESET)
|
||||
elif match(r"^\^", line) is not None:
|
||||
echo(CLI_CONFIG, Fore.BLUE + line + Fore.RESET)
|
||||
else:
|
||||
echo(line)
|
||||
echo("")
|
||||
echo(CLI_CONFIG, line)
|
||||
echo(CLI_CONFIG, "")
|
||||
|
||||
click.confirm("Write modifications to cluster?", abort=True)
|
||||
|
||||
@ -4599,9 +4613,9 @@ def cli_provisioner_userdata_modify(name, filename, editor):
|
||||
filename.close()
|
||||
|
||||
try:
|
||||
yaml.load(userdata, Loader=yaml.SafeLoader)
|
||||
yload(userdata, Loader=SafeYAMLLoader)
|
||||
except Exception as e:
|
||||
echo("Error: Userdata document is malformed")
|
||||
echo(CLI_CONFIG, "Error: Userdata document is malformed")
|
||||
cleanup(False, e)
|
||||
|
||||
params = dict()
|
||||
@ -4739,22 +4753,20 @@ def cli_provisioner_script_modify(name, filename, editor):
|
||||
# Grab the current config
|
||||
retcode, retdata = pvc.lib.provisioner.script_info(CLI_CONFIG, name)
|
||||
if not retcode:
|
||||
echo(retdata)
|
||||
echo(CLI_CONFIG, retdata)
|
||||
exit(1)
|
||||
current_script = retdata["script"].strip()
|
||||
|
||||
new_script = click.edit(text=current_script, require_save=True, extension=".py")
|
||||
if new_script is None:
|
||||
echo("Aborting with no modifications.")
|
||||
echo(CLI_CONFIG, "Aborting with no modifications.")
|
||||
exit(0)
|
||||
else:
|
||||
new_script = new_script.strip()
|
||||
|
||||
# Show a diff and confirm
|
||||
echo("Pending modifications:")
|
||||
echo("")
|
||||
diff = list(
|
||||
difflib.unified_diff(
|
||||
unified_diff(
|
||||
current_script.split("\n"),
|
||||
new_script.split("\n"),
|
||||
fromfile="current",
|
||||
@ -4765,16 +4777,22 @@ def cli_provisioner_script_modify(name, filename, editor):
|
||||
lineterm="",
|
||||
)
|
||||
)
|
||||
if len(diff) < 1:
|
||||
echo(CLI_CONFIG, "Aborting with no modifications.")
|
||||
exit(0)
|
||||
|
||||
echo(CLI_CONFIG, "Pending modifications:")
|
||||
echo(CLI_CONFIG, "")
|
||||
for line in diff:
|
||||
if re.match(r"^\+", line) is not None:
|
||||
echo(colorama.Fore.GREEN + line + colorama.Fore.RESET)
|
||||
elif re.match(r"^\-", line) is not None:
|
||||
echo(colorama.Fore.RED + line + colorama.Fore.RESET)
|
||||
elif re.match(r"^\^", line) is not None:
|
||||
echo(colorama.Fore.BLUE + line + colorama.Fore.RESET)
|
||||
if match(r"^\+", line) is not None:
|
||||
echo(CLI_CONFIG, Fore.GREEN + line + Fore.RESET)
|
||||
elif match(r"^\-", line) is not None:
|
||||
echo(CLI_CONFIG, Fore.RED + line + Fore.RESET)
|
||||
elif match(r"^\^", line) is not None:
|
||||
echo(CLI_CONFIG, Fore.BLUE + line + Fore.RESET)
|
||||
else:
|
||||
echo(line)
|
||||
echo("")
|
||||
echo(CLI_CONFIG, line)
|
||||
echo(CLI_CONFIG, "")
|
||||
|
||||
click.confirm("Write modifications to cluster?", abort=True)
|
||||
|
||||
@ -4895,7 +4913,7 @@ def cli_provisioner_ova_upload(name, filename, pool):
|
||||
"""
|
||||
|
||||
if not os.path.exists(filename):
|
||||
echo("ERROR: File '{}' does not exist!".format(filename))
|
||||
echo(CLI_CONFIG, "ERROR: File '{}' does not exist!".format(filename))
|
||||
exit(1)
|
||||
|
||||
params = dict()
|
||||
@ -5600,11 +5618,8 @@ def cli(
|
||||
global CLI_CONFIG
|
||||
store_data = get_store(store_path)
|
||||
|
||||
# If no connection is specified, use the first connection in the store
|
||||
if _connection is None:
|
||||
CLI_CONFIG = get_config(store_data, list(store_data.keys())[0])
|
||||
# If the connection isn't in the store, mark it bad but pass the value
|
||||
elif _connection not in store_data.keys():
|
||||
if _connection is not None and _connection not in store_data.keys():
|
||||
CLI_CONFIG = {"badcfg": True, "connection": _connection}
|
||||
else:
|
||||
CLI_CONFIG = get_config(store_data, _connection)
|
||||
|
@ -2,7 +2,7 @@ from setuptools import setup
|
||||
|
||||
setup(
|
||||
name="pvc",
|
||||
version="0.9.64",
|
||||
version="0.9.67",
|
||||
packages=["pvc.cli", "pvc.lib"],
|
||||
install_requires=[
|
||||
"Click",
|
||||
|
19
debian/changelog
vendored
19
debian/changelog
vendored
@ -1,3 +1,22 @@
|
||||
pvc (0.9.67-0) unstable; urgency=high
|
||||
|
||||
* [CLI] Fixes several more bugs in the refactored CLI
|
||||
|
||||
-- Joshua M. Boniface <joshua@boniface.me> Sun, 27 Aug 2023 14:47:20 -0400
|
||||
|
||||
pvc (0.9.66-0) unstable; urgency=high
|
||||
|
||||
* [CLI] Fixes a missing YAML import in CLI
|
||||
|
||||
-- Joshua M. Boniface <joshua@boniface.me> Sun, 27 Aug 2023 11:36:05 -0400
|
||||
|
||||
pvc (0.9.65-0) unstable; urgency=high
|
||||
|
||||
* [CLI] Fixes a bug in the node list filtering command
|
||||
* [CLI] Fixes a bug/default when no connection is specified
|
||||
|
||||
-- Joshua M. Boniface <joshua@boniface.me> Wed, 23 Aug 2023 01:56:57 -0400
|
||||
|
||||
pvc (0.9.64-0) unstable; urgency=high
|
||||
|
||||
**Breaking Change [CLI]**: The CLI client root commands have been reorganized. The following commands have changed:
|
||||
|
@ -49,7 +49,7 @@ import re
|
||||
import json
|
||||
|
||||
# Daemon version
|
||||
version = "0.9.64"
|
||||
version = "0.9.67"
|
||||
|
||||
|
||||
##########################################################
|
||||
|
Reference in New Issue
Block a user