diff --git a/.gitignore b/.gitignore index 747a89a2..94e245fa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ *.pyc *.tmp *.swp -venv/ +# Ignore build artifacts +debian/pvc-*/ +debian/*.log +debian/*.substvars +debian/files diff --git a/.version b/.version new file mode 100644 index 00000000..bd758c92 --- /dev/null +++ b/.version @@ -0,0 +1 @@ +0.9.20 diff --git a/bump-version b/bump-version index 58066fdb..361d9c77 100755 --- a/bump-version +++ b/bump-version @@ -7,7 +7,7 @@ if [[ -z ${new_version} ]]; then exit 1 fi -current_version="$( grep '^version = ' node-daemon/pvcnoded/Daemon.py | awk -F "'" '{ print $2 }' )" +current_version="$( cat .version )" echo "${current_version} -> ${new_version}" changelog_file=$( mktemp ) @@ -18,6 +18,8 @@ changelog="$( cat ${changelog_file} | grep -v '^#' | sed 's/^*/ */' )" sed -i "s,version = '${current_version}',version = '${new_version}'," node-daemon/pvcnoded/Daemon.py sed -i "s,version = '${current_version}',version = '${new_version}'," api-daemon/pvcapid/Daemon.py +sed -i "s,version='${current_version}',version='${new_version}'," client-cli/setup.py +echo ${new_version} > .version readme_tmpdir=$( mktemp -d ) cp README.md ${readme_tmpdir}/ diff --git a/client-cli/pvc/__init__.py b/client-cli/pvc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/client-cli/pvc/cli_lib/__init__.py b/client-cli/pvc/cli_lib/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/client-cli/cli_lib/ansiprint.py b/client-cli/pvc/cli_lib/ansiprint.py similarity index 100% rename from client-cli/cli_lib/ansiprint.py rename to client-cli/pvc/cli_lib/ansiprint.py diff --git a/client-cli/cli_lib/ceph.py b/client-cli/pvc/cli_lib/ceph.py similarity index 99% rename from client-cli/cli_lib/ceph.py rename to client-cli/pvc/cli_lib/ceph.py index 6e266473..5d7a9ca9 100644 --- a/client-cli/cli_lib/ceph.py +++ b/client-cli/pvc/cli_lib/ceph.py @@ -24,8 +24,8 @@ import math from requests_toolbelt.multipart.encoder import MultipartEncoder, MultipartEncoderMonitor -import cli_lib.ansiprint as ansiprint -from cli_lib.common import UploadProgressBar, call_api +import pvc.cli_lib.ansiprint as ansiprint +from pvc.cli_lib.common import UploadProgressBar, call_api # # Supplemental functions diff --git a/client-cli/cli_lib/cluster.py b/client-cli/pvc/cli_lib/cluster.py similarity index 99% rename from client-cli/cli_lib/cluster.py rename to client-cli/pvc/cli_lib/cluster.py index 3dff78be..5f3c8aee 100644 --- a/client-cli/cli_lib/cluster.py +++ b/client-cli/pvc/cli_lib/cluster.py @@ -21,8 +21,8 @@ import json -import cli_lib.ansiprint as ansiprint -from cli_lib.common import call_api +import pvc.cli_lib.ansiprint as ansiprint +from pvc.cli_lib.common import call_api def initialize(config, overwrite=False): diff --git a/client-cli/cli_lib/common.py b/client-cli/pvc/cli_lib/common.py similarity index 100% rename from client-cli/cli_lib/common.py rename to client-cli/pvc/cli_lib/common.py diff --git a/client-cli/cli_lib/network.py b/client-cli/pvc/cli_lib/network.py similarity index 99% rename from client-cli/cli_lib/network.py rename to client-cli/pvc/cli_lib/network.py index 52fd704b..935fe54b 100644 --- a/client-cli/cli_lib/network.py +++ b/client-cli/pvc/cli_lib/network.py @@ -20,8 +20,8 @@ ############################################################################### import re -import cli_lib.ansiprint as ansiprint -from cli_lib.common import call_api +import pvc.cli_lib.ansiprint as ansiprint +from pvc.cli_lib.common import call_api def isValidMAC(macaddr): diff --git a/client-cli/cli_lib/node.py b/client-cli/pvc/cli_lib/node.py similarity index 99% rename from client-cli/cli_lib/node.py rename to client-cli/pvc/cli_lib/node.py index bf0b2d25..4010e240 100644 --- a/client-cli/cli_lib/node.py +++ b/client-cli/pvc/cli_lib/node.py @@ -19,8 +19,8 @@ # ############################################################################### -import cli_lib.ansiprint as ansiprint -from cli_lib.common import call_api +import pvc.cli_lib.ansiprint as ansiprint +from pvc.cli_lib.common import call_api # diff --git a/client-cli/cli_lib/provisioner.py b/client-cli/pvc/cli_lib/provisioner.py similarity index 99% rename from client-cli/cli_lib/provisioner.py rename to client-cli/pvc/cli_lib/provisioner.py index 48056bc3..ce26ef09 100644 --- a/client-cli/cli_lib/provisioner.py +++ b/client-cli/pvc/cli_lib/provisioner.py @@ -21,8 +21,8 @@ from requests_toolbelt.multipart.encoder import MultipartEncoder, MultipartEncoderMonitor -import cli_lib.ansiprint as ansiprint -from cli_lib.common import UploadProgressBar, call_api +import pvc.cli_lib.ansiprint as ansiprint +from pvc.cli_lib.common import UploadProgressBar, call_api # diff --git a/client-cli/cli_lib/vm.py b/client-cli/pvc/cli_lib/vm.py similarity index 99% rename from client-cli/cli_lib/vm.py rename to client-cli/pvc/cli_lib/vm.py index d06e4821..65722255 100644 --- a/client-cli/cli_lib/vm.py +++ b/client-cli/pvc/cli_lib/vm.py @@ -22,8 +22,8 @@ import time import re -import cli_lib.ansiprint as ansiprint -from cli_lib.common import call_api, format_bytes, format_metric +import pvc.cli_lib.ansiprint as ansiprint +from pvc.cli_lib.common import call_api, format_bytes, format_metric # @@ -512,7 +512,7 @@ def vm_networks_add(config, vm, network, macaddr, model, sriov, sriov_mode, rest from lxml.objectify import fromstring from lxml.etree import tostring from random import randint - import cli_lib.network as pvc_network + import pvc.cli_lib.network as pvc_network # Verify that the provided network is valid (not in SR-IOV mode) if not sriov: @@ -800,7 +800,7 @@ def vm_volumes_add(config, vm, volume, disk_id, bus, disk_type, restart): from lxml.objectify import fromstring from lxml.etree import tostring from copy import deepcopy - import cli_lib.ceph as pvc_ceph + import pvc.cli_lib.ceph as pvc_ceph if disk_type == 'rbd': # Verify that the provided volume is valid diff --git a/client-cli/cli_lib/zkhandler.py b/client-cli/pvc/cli_lib/zkhandler.py similarity index 100% rename from client-cli/cli_lib/zkhandler.py rename to client-cli/pvc/cli_lib/zkhandler.py diff --git a/client-cli/pvc.py b/client-cli/pvc/pvc.py similarity index 99% rename from client-cli/pvc.py rename to client-cli/pvc/pvc.py index cd573666..784bcca7 100755 --- a/client-cli/pvc.py +++ b/client-cli/pvc/pvc.py @@ -1,5 +1,3 @@ -#!/usr/bin/env python3 - # pvc.py - PVC client command-line interface # Part of the Parallel Virtual Cluster (PVC) system # @@ -34,13 +32,13 @@ from distutils.util import strtobool from functools import wraps -import cli_lib.ansiprint as ansiprint -import cli_lib.cluster as pvc_cluster -import cli_lib.node as pvc_node -import cli_lib.vm as pvc_vm -import cli_lib.network as pvc_network -import cli_lib.ceph as pvc_ceph -import cli_lib.provisioner as pvc_provisioner +import pvc.cli_lib.ansiprint as ansiprint +import pvc.cli_lib.cluster as pvc_cluster +import pvc.cli_lib.node as pvc_node +import pvc.cli_lib.vm as pvc_vm +import pvc.cli_lib.network as pvc_network +import pvc.cli_lib.ceph as pvc_ceph +import pvc.cli_lib.provisioner as pvc_provisioner myhostname = socket.gethostname().split('.')[0] zk_host = '' diff --git a/client-cli/setup.py b/client-cli/setup.py new file mode 100644 index 00000000..f981a31b --- /dev/null +++ b/client-cli/setup.py @@ -0,0 +1,20 @@ +from setuptools import setup + +setup( + name='pvc', + version='0.9.20', + packages=['pvc', 'pvc.cli_lib'], + install_requires=[ + 'Click', + 'PyYAML', + 'lxml', + 'colorama', + 'requests', + 'requests-toolbelt' + ], + entry_points={ + 'console_scripts': [ + 'pvc = pvc.pvc:cli', + ], + }, +) diff --git a/debian/pvc-client-cli.install b/debian/pvc-client-cli.install index 01a41a81..e69de29b 100644 --- a/debian/pvc-client-cli.install +++ b/debian/pvc-client-cli.install @@ -1,3 +0,0 @@ -client-cli/pvc.py usr/share/pvc -client-cli/cli_lib usr/share/pvc -client-cli/scripts usr/share/pvc diff --git a/debian/pvc-client-cli.postinst b/debian/pvc-client-cli.postinst index cda92dfc..87232d58 100644 --- a/debian/pvc-client-cli.postinst +++ b/debian/pvc-client-cli.postinst @@ -1,4 +1,6 @@ #!/bin/sh -# Install client binary to /usr/bin via symlink -ln -s /usr/share/pvc/pvc.py /usr/bin/pvc +# Generate the bash completion configuration +if [ -d /etc/bash_completion.d ]; then + _PVC_COMPLETE=source_bash pvc > /etc/bash_completion.d/pvc +fi diff --git a/debian/pvc-client-cli.prerm b/debian/pvc-client-cli.prerm index 7d7fcd37..159dfa56 100644 --- a/debian/pvc-client-cli.prerm +++ b/debian/pvc-client-cli.prerm @@ -1,4 +1,6 @@ #!/bin/sh -# Remove client binary symlink -rm -f /usr/bin/pvc +# Remove the bash completion +if [ -f /etc/bash_completion.d/pvc ]; then + rm -f /etc/bash_completion.d/pvc +fi diff --git a/debian/rules b/debian/rules index c155d70f..324582d7 100755 --- a/debian/rules +++ b/debian/rules @@ -1,13 +1,19 @@ #!/usr/bin/make -f # See debhelper(7) (uncomment to enable) # output every command that modifies files on the build system. -#export DH_VERBOSE = 1 +export DH_VERBOSE = 1 %: - dh $@ + dh $@ --with python3 + +override_dh_python3: + cd $(CURDIR)/client-cli; pybuild --system=distutils --dest-dir=../debian/pvc-client-cli/ + mkdir -p debian/pvc-client-cli/usr/lib/python3 + mv debian/pvc-client-cli/usr/lib/python3*/* debian/pvc-client-cli/usr/lib/python3/ + rm -r $(CURDIR)/client-cli/.pybuild $(CURDIR)/client-cli/pvc.egg-info override_dh_auto_clean: - find . -name "__pycache__" -exec rm -r {} \; || true + find . -name "__pycache__" -o -name ".pybuild" -exec rm -r {} \; || true # If you need to rebuild the Sphinx documentation # Add spinxdoc to the dh --with line diff --git a/lint b/lint index a606e9e7..a7638001 100755 --- a/lint +++ b/lint @@ -7,7 +7,7 @@ fi flake8 \ --ignore=E501 \ - --exclude=venv,api-daemon/migrations/versions,api-daemon/provisioner/examples + --exclude=debian,api-daemon/migrations/versions,api-daemon/provisioner/examples ret=$? if [[ $ret -eq 0 ]]; then echo "No linting issues found!"