diff --git a/api-daemon/pvc-provisioner-worker.service b/api-daemon/pvc-provisioner-worker.service deleted file mode 100644 index ec00fc63..00000000 --- a/api-daemon/pvc-provisioner-worker.service +++ /dev/null @@ -1,16 +0,0 @@ -# Parallel Virtual Cluster Provisioner client worker unit file - -[Unit] -Description = Parallel Virtual Cluster Provisioner worker -After = network-online.target - -[Service] -Type = simple -WorkingDirectory = /usr/share/pvc -Environment = PYTHONUNBUFFERED=true -Environment = PVC_CONFIG_FILE=/etc/pvc/pvc-api.yaml -ExecStart = /usr/bin/celery worker -A pvc-api.celery --concurrency 1 --loglevel INFO -Restart = on-failure - -[Install] -WantedBy = multi-user.target diff --git a/api-daemon/pvcapid-worker.service b/api-daemon/pvcapid-worker.service new file mode 100644 index 00000000..e6c452e3 --- /dev/null +++ b/api-daemon/pvcapid-worker.service @@ -0,0 +1,16 @@ +# Parallel Virtual Cluster Provisioner API provisioner worker unit file + +[Unit] +Description = Parallel Virtual Cluster API provisioner worker +After = network-online.target + +[Service] +Type = simple +WorkingDirectory = /usr/share/pvc +Environment = PYTHONUNBUFFERED=true +Environment = PVC_CONFIG_FILE=/etc/pvc/pvcapid.yaml +ExecStart = /usr/bin/celery worker -A pvcapid.celery --concurrency 1 --loglevel INFO +Restart = on-failure + +[Install] +WantedBy = multi-user.target diff --git a/api-daemon/pvc-api.py b/api-daemon/pvcapid.py similarity index 99% rename from api-daemon/pvc-api.py rename to api-daemon/pvcapid.py index 923dba66..045489c6 100755 --- a/api-daemon/pvc-api.py +++ b/api-daemon/pvcapid.py @@ -37,8 +37,8 @@ from flask_restful import Resource, Api, reqparse, abort from celery import Celery from celery.task.control import inspect -import api_lib.pvcapi_helper as api_helper -import api_lib.pvcapi_provisioner as api_provisioner +import pvcapid.helper as api_helper +import pvcapid.provisioner as api_provisioner API_VERSION = 1.0 @@ -46,7 +46,7 @@ API_VERSION = 1.0 try: pvc_config_file = os.environ['PVC_CONFIG_FILE'] except: - print('Error: The "PVC_CONFIG_FILE" environment variable must be set before starting pvc-api.') + print('Error: The "PVC_CONFIG_FILE" environment variable must be set before starting pvcapid.') exit(1) print('Starting PVC API daemon') diff --git a/api-daemon/pvc-api.sample.yaml b/api-daemon/pvcapid.sample.yaml similarity index 94% rename from api-daemon/pvc-api.sample.yaml rename to api-daemon/pvcapid.sample.yaml index 8a34fcb1..e1f2df89 100644 --- a/api-daemon/pvc-api.sample.yaml +++ b/api-daemon/pvcapid.sample.yaml @@ -1,11 +1,11 @@ --- -# pvc-api client configuration file example +# pvcapid configuration file example # -# This configuration file specifies details for the PVC API client running on +# This configuration file specifies details for the PVC API daemon running on # this machine. Default values are not supported; the values in this sample # configuration are considered defaults and can be used as-is. # -# Copy this example to /etc/pvc/pvc-api.conf and edit to your needs +# Copy this example to /etc/pvc/pvcapid.conf and edit to your needs pvc: # debug: Enable/disable API debug mode diff --git a/api-daemon/pvc-api.service b/api-daemon/pvcapid.service similarity index 77% rename from api-daemon/pvc-api.service rename to api-daemon/pvcapid.service index 64ef0971..34a6a80e 100644 --- a/api-daemon/pvc-api.service +++ b/api-daemon/pvcapid.service @@ -8,8 +8,8 @@ After = network-online.target Type = simple WorkingDirectory = /usr/share/pvc Environment = PYTHONUNBUFFERED=true -Environment = PVC_CONFIG_FILE=/etc/pvc/pvc-api.yaml -ExecStart = /usr/share/pvc/pvc-api.py +Environment = PVC_CONFIG_FILE=/etc/pvc/pvcapid.yaml +ExecStart = /usr/share/pvc/pvcapid.py Restart = on-failure [Install] diff --git a/node-daemon/pvcd/__init__.py b/api-daemon/pvcapid/__init__.py similarity index 100% rename from node-daemon/pvcd/__init__.py rename to api-daemon/pvcapid/__init__.py diff --git a/api-daemon/api_lib/pvcapi_helper.py b/api-daemon/pvcapid/helper.py similarity index 99% rename from api-daemon/api_lib/pvcapi_helper.py rename to api-daemon/pvcapid/helper.py index 95478c2d..11ae14e4 100755 --- a/api-daemon/api_lib/pvcapi_helper.py +++ b/api-daemon/pvcapid/helper.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# pvcapi_helper.py - PVC HTTP API functions +# helper.py - PVC HTTP API helper functions # Part of the Parallel Virtual Cluster (PVC) system # # Copyright (C) 2018-2020 Joshua M. Boniface diff --git a/api-daemon/api_lib/libvirt_schema.py b/api-daemon/pvcapid/libvirt_schema.py similarity index 100% rename from api-daemon/api_lib/libvirt_schema.py rename to api-daemon/pvcapid/libvirt_schema.py diff --git a/api-daemon/api_lib/pvcapi_provisioner.py b/api-daemon/pvcapid/provisioner.py similarity index 99% rename from api-daemon/api_lib/pvcapi_provisioner.py rename to api-daemon/pvcapid/provisioner.py index 94edd7ce..6d239d8c 100755 --- a/api-daemon/api_lib/pvcapi_provisioner.py +++ b/api-daemon/pvcapid/provisioner.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# pvcapi_provisioner.py - PVC Provisioner functions +# provisioner.py - PVC API Provisioner functions # Part of the Parallel Virtual Cluster (PVC) system # # Copyright (C) 2018-2020 Joshua M. Boniface @@ -36,7 +36,7 @@ import daemon_lib.vm as pvc_vm import daemon_lib.network as pvc_network import daemon_lib.ceph as pvc_ceph -import api_lib.libvirt_schema as libvirt_schema +import pvcapid.libvirt_schema as libvirt_schema # # Exceptions (used by Celery tasks) diff --git a/build-and-deploy.sh b/build-and-deploy.sh index e627600a..8ad6a0db 100755 --- a/build-and-deploy.sh +++ b/build-and-deploy.sh @@ -29,7 +29,8 @@ for HOST in ${HOSTS[@]}; do ssh $HOST mkdir /tmp/pvc scp ../*.deb $HOST:/tmp/pvc/ ssh $HOST $SUDO dpkg -i /tmp/pvc/*.deb - ssh $HOST $SUDO systemctl restart pvcd + ssh $HOST $SUDO systemctl restart pvcnoded + ssh $HOST $SUDO systemctl restart pvcapid ssh $HOST rm -rf /tmp/pvc echo "****" echo "Waiting 10s for host ${HOST} to stabilize" diff --git a/client-cli/pvc.py b/client-cli/pvc.py index b03e772e..2cdd55f8 100755 --- a/client-cli/pvc.py +++ b/client-cli/pvc.py @@ -48,7 +48,7 @@ myhostname = socket.gethostname().split('.')[0] zk_host = '' default_store_data = { - 'cfgfile': '/etc/pvc/pvc-api.yaml' # pvc/api/listen_address, pvc/api/listen_port + 'cfgfile': '/etc/pvc/pvcapid.yaml' # pvc/api/listen_address, pvc/api/listen_port } # @@ -335,7 +335,7 @@ def cli_node(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -484,7 +484,7 @@ def cli_vm(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -965,7 +965,7 @@ def cli_network(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -1201,7 +1201,7 @@ def net_dhcp(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -1290,7 +1290,7 @@ def net_acl(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -1419,7 +1419,7 @@ def cli_storage(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -1460,7 +1460,7 @@ def ceph_osd(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -1618,7 +1618,7 @@ def ceph_pool(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -1702,7 +1702,7 @@ def ceph_volume(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -1848,7 +1848,7 @@ def ceph_volume_snapshot(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -1966,7 +1966,7 @@ def cli_provisioner(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -1979,7 +1979,7 @@ def provisioner_template(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) @@ -2009,7 +2009,7 @@ def provisioner_template_system(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -2134,7 +2134,7 @@ def provisioner_template_network(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -2237,7 +2237,7 @@ def provisioner_template_network_vni(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -2300,7 +2300,7 @@ def provisioner_template_storage(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -2371,7 +2371,7 @@ def provisioner_template_storage_disk(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -2489,7 +2489,7 @@ def provisioner_userdata(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -2647,7 +2647,7 @@ def provisioner_script(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -2806,7 +2806,7 @@ def provisioner_profile(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -3086,7 +3086,7 @@ def cli_maintenance(): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) ############################################################################### @@ -3127,7 +3127,7 @@ def status_cluster(oformat): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) retcode, retdata = pvc_cluster.get_info(config) @@ -3150,7 +3150,7 @@ def init_cluster(confirm_flag): """ # Abort commands under this group if config is bad if config.get('badcfg', None): - click.echo('No cluster specified and no local pvc-api.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') + click.echo('No cluster specified and no local pvcapid.yaml configuration found. Use "pvc cluster" to add a cluster API to connect to.') exit(1) if not confirm_flag: @@ -3186,7 +3186,7 @@ def cli(_cluster, _debug): "PVC_CLUSTER": Set the cluster to access instead of using --cluster/-c If no PVC_CLUSTER/--cluster is specified, attempts first to load the "local" cluster, checking - for an API configuration in "/etc/pvc/pvc-api.yaml". If this is also not found, abort. + for an API configuration in "/etc/pvc/pvcapid.yaml". If this is also not found, abort. """ global config diff --git a/debian/pvc-daemon-api.install b/debian/pvc-daemon-api.install index 3a48d839..52e55633 100644 --- a/debian/pvc-daemon-api.install +++ b/debian/pvc-daemon-api.install @@ -1,6 +1,6 @@ -api-daemon/pvc-api.py usr/share/pvc -api-daemon/pvc-api.sample.yaml etc/pvc -api-daemon/api_lib usr/share/pvc -api-daemon/pvc-api.service lib/systemd/system -api-daemon/pvc-provisioner-worker.service lib/systemd/system +api-daemon/pvcapid.py usr/share/pvc +api-daemon/pvcapid.sample.yaml etc/pvc +api-daemon/pvcapid usr/share/pvc +api-daemon/pvcapid.service lib/systemd/system +api-daemon/pvcapid-worker.service lib/systemd/system api-daemon/provisioner usr/share/pvc diff --git a/debian/pvc-daemon-api.postinst b/debian/pvc-daemon-api.postinst index 53cc72b2..423fdb6a 100644 --- a/debian/pvc-daemon-api.postinst +++ b/debian/pvc-daemon-api.postinst @@ -1,20 +1,20 @@ #!/bin/sh # Install client binary to /usr/bin via symlink -ln -s /usr/share/pvc/api.py /usr/bin/pvc-api +ln -s /usr/share/pvc/api.py /usr/bin/pvcapid # Reload systemd's view of the units systemctl daemon-reload # Restart the main daemon (or warn on first install) -if systemctl is-active --quiet pvc-api.service; then - systemctl restart pvc-api.service +if systemctl is-active --quiet pvcapid.service; then + systemctl restart pvcapid.service else - echo "NOTE: The PVC client API daemon (pvc-api.service) has not been started; create a config file at /etc/pvc/pvc-api.yaml then start it." + echo "NOTE: The PVC client API daemon (pvcapid.service) has not been started; create a config file at /etc/pvc/pvcapid.yaml then start it." fi # Restart the worker daemon (or warn on first install) -if systemctl is-active --quiet pvc-provisioner-worker.service; then - systemctl restart pvc-provisioner-worker.service +if systemctl is-active --quiet pvcapid-worker.service; then + systemctl restart pvcapid-worker.service else - echo "NOTE: The PVC provisioner worker daemon (pvc-provisioner-worker.service) has not been started; create a config file at /etc/pvc/pvc-api.yaml then start it." + echo "NOTE: The PVC provisioner worker daemon (pvcapid-worker.service) has not been started; create a config file at /etc/pvc/pvcapid.yaml then start it." fi diff --git a/debian/pvc-daemon-api.prerm b/debian/pvc-daemon-api.prerm index 92a8b6ec..ea1571a8 100644 --- a/debian/pvc-daemon-api.prerm +++ b/debian/pvc-daemon-api.prerm @@ -1,4 +1,4 @@ #!/bin/sh # Remove client binary symlink -rm -f /usr/bin/pvc-api +rm -f /usr/bin/pvcapid diff --git a/debian/pvc-daemon-node.install b/debian/pvc-daemon-node.install index 6895f6a5..67e09851 100644 --- a/debian/pvc-daemon-node.install +++ b/debian/pvc-daemon-node.install @@ -1,6 +1,6 @@ -node-daemon/pvcd.py usr/share/pvc -node-daemon/pvcd.sample.yaml etc/pvc -node-daemon/pvcd usr/share/pvc -node-daemon/pvcd.target lib/systemd/system -node-daemon/pvcd.service lib/systemd/system +node-daemon/pvcnoded.py usr/share/pvc +node-daemon/pvcnoded.sample.yaml etc/pvc +node-daemon/pvcnoded usr/share/pvc +node-daemon/pvcnoded.target lib/systemd/system +node-daemon/pvcnoded.service lib/systemd/system node-daemon/pvc-flush.service lib/systemd/system diff --git a/debian/pvc-daemon-node.postinst b/debian/pvc-daemon-node.postinst index 7f1886a9..12a9237c 100644 --- a/debian/pvc-daemon-node.postinst +++ b/debian/pvc-daemon-node.postinst @@ -4,8 +4,8 @@ systemctl daemon-reload # Enable the service and target -systemctl enable /lib/systemd/system/pvcd.service -systemctl enable /lib/systemd/system/pvcd.target +systemctl enable /lib/systemd/system/pvcnoded.service +systemctl enable /lib/systemd/system/pvc.target # Inform administrator of the autoflush daemon if it is not enabled if ! systemctl is-active --quiet pvc-flush.service; then @@ -13,8 +13,8 @@ if ! systemctl is-active --quiet pvc-flush.service; then fi # Inform administrator of the service restart/startup not occurring automatically -if systemctl is-active --quiet pvcd.service; then - echo "NOTE: The PVC node daemon (pvcd.service) has not been restarted; this is up to the administrator." +if systemctl is-active --quiet pvcnoded.service; then + echo "NOTE: The PVC node daemon (pvcnoded.service) has not been restarted; this is up to the administrator." else - echo "NOTE: The PVC node daemon (pvcd.service) has not been started; create a config file at /etc/pvc/pvcd.yaml then start it." + echo "NOTE: The PVC node daemon (pvcnoded.service) has not been started; create a config file at /etc/pvc/pvcnoded.yaml then start it." fi diff --git a/debian/pvc-daemon-node.prerm b/debian/pvc-daemon-node.prerm index d060b0ad..2f848fb4 100644 --- a/debian/pvc-daemon-node.prerm +++ b/debian/pvc-daemon-node.prerm @@ -1,5 +1,5 @@ #!/bin/sh # Disable the services -systemctl disable pvcd.service -systemctl disable pvcd.target +systemctl disable pvcnoded.service +systemctl disable pvc.target diff --git a/docs/about.md b/docs/about.md index a499e322..ed34620e 100644 --- a/docs/about.md +++ b/docs/about.md @@ -50,7 +50,7 @@ The API client uses a dedicated, independent set of functions to perform the act ### CLI client -The CLI client interface is a Click application, which provides a convenient CLI interface to the API client. It supports connecting to multiple clusters, over both HTTP and HTTPS and with authentication, including a special "local" cluster if the client determines that an `/etc/pvc/pvc-api.yaml` configuration exists on the host. +The CLI client interface is a Click application, which provides a convenient CLI interface to the API client. It supports connecting to multiple clusters, over both HTTP and HTTPS and with authentication, including a special "local" cluster if the client determines that an `/etc/pvc/pvcapid.yaml` configuration exists on the host. The CLI client is self-documenting using the `-h`/`--help` arguments, though a short manual can be found at the [CLI manual page](/manuals/cli). diff --git a/docs/architecture/daemon.md b/docs/architecture/daemon.md index 2d0f29a4..7c8b7378 100644 --- a/docs/architecture/daemon.md +++ b/docs/architecture/daemon.md @@ -14,15 +14,15 @@ During startup, the system scans the Zookeeper database and sets up the required ## Startup sequence -The daemon startup sequence is documented below. The main daemon entry-point is `Daemon.py` inside the `pvcd` folder, which is called from the `pvcd.py` stub file. +The daemon startup sequence is documented below. The main daemon entry-point is `Daemon.py` inside the `pvcnoded` folder, which is called from the `pvcnoded.py` stub file. -0. The configuration is read from `/etc/pvc/pvcd.yaml` and the configuration object set up. +0. The configuration is read from `/etc/pvc/pvcnoded.yaml` and the configuration object set up. 0. Any required filesystem directories, mostly dynamic directories, are created. 0. The logger is set up. If file logging is enabled, this is the state when the first log messages are written. -0. Host networking is configured based on the `pvcd.yaml` configuration file. In a normal cluster, this is the point where the node will become reachable on the network as all networking is handled by the PVC node daemon. +0. Host networking is configured based on the `pvcnoded.yaml` configuration file. In a normal cluster, this is the point where the node will become reachable on the network as all networking is handled by the PVC node daemon. 0. Sysctl tweaks are applied to the host system, to enable routing/forwarding between nodes via the host. diff --git a/docs/manuals/api.md b/docs/manuals/api.md index d95cb315..1b71ebd1 100644 --- a/docs/manuals/api.md +++ b/docs/manuals/api.md @@ -8,7 +8,7 @@ The [`pvc-ansible`](https://github.com/parallelvirtualcluster/pvc-ansible) frame ### SSL -The API accepts SSL certificate and key files via the `pvc-api.yaml` configuration to enable SSL support for the API, which protects the data and query values from snooping or tampering. SSL is strongly recommended if using the API outside of a trusted local area network. +The API accepts SSL certificate and key files via the `pvcapid.yaml` configuration to enable SSL support for the API, which protects the data and query values from snooping or tampering. SSL is strongly recommended if using the API outside of a trusted local area network. ### API authentication @@ -148,7 +148,7 @@ curl -X GET http://localhost:7370/api/v1/provisioner/status/ ## API Daemon Configuration -The API is configured using a YAML configuration file which is passed in to the API process by the environment variable `PVC_CONFIG_FILE`. When running with the default package and SystemD unit, this file is located at `/etc/pvc/pvc-api.yaml`. +The API is configured using a YAML configuration file which is passed in to the API process by the environment variable `PVC_CONFIG_FILE`. When running with the default package and SystemD unit, this file is located at `/etc/pvc/pvcapid.yaml`. ### Conventions @@ -156,7 +156,7 @@ The API is configured using a YAML configuration file which is passed in to the * Settings may `depends` on other settings. This indicates that, if one setting is enabled, the other setting is very likely `required` by that setting. -### `pvc-api.yaml` +### `pvcapid.yaml` Example configuration: diff --git a/docs/manuals/cli.md b/docs/manuals/cli.md index dfe43905..04ffda24 100644 --- a/docs/manuals/cli.md +++ b/docs/manuals/cli.md @@ -4,7 +4,7 @@ The PVC CLI client is built with Click, a Python framework for creating self-doc Use the `-h` option at any level of the `pvc` CLI command to receive help about the available commands and options. -Before using the CLI on a non-PVC node system, at least one cluster must be added using the `pvc cluster` subcommands. Running the CLI on hosts which also run the PVC API (via its configuration at `/etc/pvc/pvc-api.yaml`) uses the special `local` cluster, reading information from the API configuration, by default. +Before using the CLI on a non-PVC node system, at least one cluster must be added using the `pvc cluster` subcommands. Running the CLI on hosts which also run the PVC API (via its configuration at `/etc/pvc/pvcapid.yaml`) uses the special `local` cluster, reading information from the API configuration, by default. ## Configuration diff --git a/docs/manuals/daemon.md b/docs/manuals/daemon.md index 54f154f9..079e5eea 100644 --- a/docs/manuals/daemon.md +++ b/docs/manuals/daemon.md @@ -4,7 +4,7 @@ The PVC node daemon ins build with Python 3 and is run directly on nodes. For de ## Configuration -The Daemon is configured using a YAML configuration file which is passed in to the API process by the environment variable `PVCD_CONFIG_FILE`. When running with the default package and SystemD unit, this file is located at `/etc/pvc/pvcd.yaml`. +The Daemon is configured using a YAML configuration file which is passed in to the API process by the environment variable `PVCD_CONFIG_FILE`. When running with the default package and SystemD unit, this file is located at `/etc/pvc/pvcnoded.yaml`. For most deployments, the management of the configuration file is handled entirely by the [PVC Ansible framework](/manuals/ansible) and should not be modified directly. Many options from the Ansible framework map directly into the configuration options in this file. @@ -14,7 +14,7 @@ For most deployments, the management of the configuration file is handled entire * Settings may `depends` on other settings. This indicates that, if one setting is enabled, the other setting is very likely `required` by that setting. -### `pvcd.yaml` +### `pvcnoded.yaml` Example configuration: diff --git a/gen-api-doc.py b/gen-api-doc.py index 2bc1b1fb..022fc627 100755 --- a/gen-api-doc.py +++ b/gen-api-doc.py @@ -8,11 +8,11 @@ import os import sys import json -os.environ['PVC_CONFIG_FILE'] = "./api-daemon/pvc-api.sample.yaml" +os.environ['PVC_CONFIG_FILE'] = "./api-daemon/pvcapid.sample.yaml" sys.path.append('api-daemon') -pvc_api = __import__('pvc-api') +pvc_api = __import__('pvcapid') swagger_file = "docs/manuals/swagger.json" diff --git a/node-daemon/pvc-flush.service b/node-daemon/pvc-flush.service index e9d76668..88d02093 100644 --- a/node-daemon/pvc-flush.service +++ b/node-daemon/pvc-flush.service @@ -2,8 +2,8 @@ [Unit] Description = Parallel Virtual Cluster autoflush daemon -After = pvcd.service -PartOf = pvcd.target +After = pvcnoded.service +PartOf = pvc.target [Service] Type = oneshot @@ -15,4 +15,4 @@ ExecStop = /usr/bin/pvc -c local node flush --wait ExecStopPost = /bin/sleep 30 [Install] -WantedBy = pvcd.target +WantedBy = pvc.target diff --git a/node-daemon/pvcd.py b/node-daemon/pvcnoded.py similarity index 93% rename from node-daemon/pvcd.py rename to node-daemon/pvcnoded.py index 4633b2cd..5123469c 100755 --- a/node-daemon/pvcd.py +++ b/node-daemon/pvcnoded.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# pvcd.py - Node daemon startup stub +# pvcnoded.py - Node daemon startup stub # Part of the Parallel Virtual Cluster (PVC) system # # Copyright (C) 2018-2020 Joshua M. Boniface @@ -20,4 +20,4 @@ # ############################################################################### -import pvcd.Daemon +import pvcnoded.Daemon diff --git a/node-daemon/pvcd.sample.yaml b/node-daemon/pvcnoded.sample.yaml similarity index 98% rename from node-daemon/pvcd.sample.yaml rename to node-daemon/pvcnoded.sample.yaml index 6b269dc1..62ec2d75 100644 --- a/node-daemon/pvcd.sample.yaml +++ b/node-daemon/pvcnoded.sample.yaml @@ -1,5 +1,5 @@ --- -# pvcd cluster configuration file example +# pvcnoded configuration file example # # This configuration file specifies details for this node in PVC. Multiple node # blocks can be added but only the one matching the current system nodename will @@ -7,7 +7,7 @@ # this sample configuration are considered defaults and, with adjustment of the # nodename section and coordinators list, can be used as-is on a Debian system. # -# Copy this example to /etc/pvc/pvcd.conf and edit to your needs +# Copy this example to /etc/pvc/pvcnoded.conf and edit to your needs pvc: # node: The (short) hostname of the node, set during provisioning diff --git a/node-daemon/pvcd.service b/node-daemon/pvcnoded.service similarity index 54% rename from node-daemon/pvcd.service rename to node-daemon/pvcnoded.service index 601d833f..87e4905f 100644 --- a/node-daemon/pvcd.service +++ b/node-daemon/pvcnoded.service @@ -2,16 +2,16 @@ [Unit] Description = Parallel Virtual Cluster node daemon -After = network-online.target libvirtd.service zookeeper.service -PartOf = pvcd.target +After = network-online.target zookeeper.service +PartOf = pvc.target [Service] Type = simple WorkingDirectory = /usr/share/pvc Environment = PYTHONUNBUFFERED=true -Environment = PVCD_CONFIG_FILE=/etc/pvc/pvcd.yaml -ExecStart = /usr/share/pvc/pvcd.py +Environment = PVCD_CONFIG_FILE=/etc/pvc/pvcnoded.yaml +ExecStart = /usr/share/pvc/pvcnoded.py Restart = on-failure [Install] -WantedBy = pvcd.target +WantedBy = pvc.target diff --git a/node-daemon/pvcd.target b/node-daemon/pvcnoded.target similarity index 100% rename from node-daemon/pvcd.target rename to node-daemon/pvcnoded.target diff --git a/node-daemon/pvcd/CephInstance.py b/node-daemon/pvcnoded/CephInstance.py similarity index 99% rename from node-daemon/pvcd/CephInstance.py rename to node-daemon/pvcnoded/CephInstance.py index 3013fef6..d373fd3c 100644 --- a/node-daemon/pvcd/CephInstance.py +++ b/node-daemon/pvcnoded/CephInstance.py @@ -25,9 +25,9 @@ import ast import json import psutil -import pvcd.log as log -import pvcd.zkhandler as zkhandler -import pvcd.common as common +import pvcnoded.log as log +import pvcnoded.zkhandler as zkhandler +import pvcnoded.common as common class CephOSDInstance(object): def __init__(self, zk_conn, this_node, osd_id): diff --git a/node-daemon/pvcd/DNSAggregatorInstance.py b/node-daemon/pvcnoded/DNSAggregatorInstance.py similarity index 99% rename from node-daemon/pvcd/DNSAggregatorInstance.py rename to node-daemon/pvcnoded/DNSAggregatorInstance.py index f0e85776..9433eaae 100644 --- a/node-daemon/pvcd/DNSAggregatorInstance.py +++ b/node-daemon/pvcnoded/DNSAggregatorInstance.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# DNSAggregatorInstance.py - Class implementing a DNS aggregator and run by pvcd +# DNSAggregatorInstance.py - Class implementing a DNS aggregator and run by pvcnoded # Part of the Parallel Virtual Cluster (PVC) system # # Copyright (C) 2018-2020 Joshua M. Boniface @@ -28,9 +28,9 @@ import dns.zone import dns.query import psycopg2 -import pvcd.log as log -import pvcd.zkhandler as zkhandler -import pvcd.common as common +import pvcnoded.log as log +import pvcnoded.zkhandler as zkhandler +import pvcnoded.common as common class DNSAggregatorInstance(object): # Initialization function diff --git a/node-daemon/pvcd/Daemon.py b/node-daemon/pvcnoded/Daemon.py similarity index 98% rename from node-daemon/pvcd/Daemon.py rename to node-daemon/pvcnoded/Daemon.py index 27549405..88531659 100644 --- a/node-daemon/pvcd/Daemon.py +++ b/node-daemon/pvcnoded/Daemon.py @@ -44,17 +44,17 @@ import apscheduler.schedulers.background from distutils.util import strtobool -import pvcd.log as log -import pvcd.zkhandler as zkhandler -import pvcd.fencing as fencing -import pvcd.common as common +import pvcnoded.log as log +import pvcnoded.zkhandler as zkhandler +import pvcnoded.fencing as fencing +import pvcnoded.common as common -import pvcd.VMInstance as VMInstance -import pvcd.NodeInstance as NodeInstance -import pvcd.VXNetworkInstance as VXNetworkInstance -import pvcd.DNSAggregatorInstance as DNSAggregatorInstance -import pvcd.CephInstance as CephInstance -import pvcd.MetadataAPIInstance as MetadataAPIInstance +import pvcnoded.VMInstance as VMInstance +import pvcnoded.NodeInstance as NodeInstance +import pvcnoded.VXNetworkInstance as VXNetworkInstance +import pvcnoded.DNSAggregatorInstance as DNSAggregatorInstance +import pvcnoded.CephInstance as CephInstance +import pvcnoded.MetadataAPIInstance as MetadataAPIInstance ############################################################################### # PVCD - node daemon startup program @@ -99,9 +99,9 @@ def stopKeepaliveTimer(): # Get the config file variable from the environment try: - pvcd_config_file = os.environ['PVCD_CONFIG_FILE'] + pvcnoded_config_file = os.environ['PVCD_CONFIG_FILE'] except: - print('ERROR: The "PVCD_CONFIG_FILE" environment variable must be set before starting pvcd.') + print('ERROR: The "PVCD_CONFIG_FILE" environment variable must be set before starting pvcnoded.') exit(1) # Set local hostname and domain variables @@ -126,10 +126,10 @@ staticdata.append(subprocess.run(['uname', '-o'], stdout=subprocess.PIPE).stdout staticdata.append(subprocess.run(['uname', '-m'], stdout=subprocess.PIPE).stdout.decode('ascii').strip()) # Read and parse the config file -def readConfig(pvcd_config_file, myhostname): - print('Loading configuration from file "{}"'.format(pvcd_config_file)) +def readConfig(pvcnoded_config_file, myhostname): + print('Loading configuration from file "{}"'.format(pvcnoded_config_file)) - with open(pvcd_config_file, 'r') as cfgfile: + with open(pvcnoded_config_file, 'r') as cfgfile: try: o_config = yaml.load(cfgfile) except Exception as e: @@ -272,7 +272,7 @@ def readConfig(pvcd_config_file, myhostname): return config # Get the config object from readConfig() -config = readConfig(pvcd_config_file, myhostname) +config = readConfig(pvcnoded_config_file, myhostname) debug = config['debug'] if debug: print('DEBUG MODE ENABLED') @@ -335,7 +335,7 @@ logger.out(' CPUs: {}'.format(staticdata[0])) logger.out(' Arch: {}'.format(staticdata[3])) logger.out(' OS: {}'.format(staticdata[2])) logger.out(' Kernel: {}'.format(staticdata[1])) -logger.out('Starting pvcd on host {}'.format(myfqdn), state='s') +logger.out('Starting pvcnoded on host {}'.format(myfqdn), state='s') # Define some colours for future messages if applicable if config['log_colours']: @@ -421,7 +421,7 @@ if enable_networking: common.run_os_command('ip route add default via {} dev {}'.format(upstream_gateway, 'brupstream')) ############################################################################### -# PHASE 2b - Prepare sysctl for pvcd +# PHASE 2b - Prepare sysctl for pvcnoded ############################################################################### if enable_networking: @@ -553,7 +553,7 @@ def cleanup(): # Set shutdown state in Zookeeper zkhandler.writedata(zk_conn, { '/nodes/{}/daemonstate'.format(myhostname): 'shutdown' }) - logger.out('Terminating pvcd and cleaning up', state='s') + logger.out('Terminating pvcnoded and cleaning up', state='s') # Stop keepalive thread try: diff --git a/node-daemon/pvcd/MetadataAPIInstance.py b/node-daemon/pvcnoded/MetadataAPIInstance.py similarity index 100% rename from node-daemon/pvcd/MetadataAPIInstance.py rename to node-daemon/pvcnoded/MetadataAPIInstance.py diff --git a/node-daemon/pvcd/NodeInstance.py b/node-daemon/pvcnoded/NodeInstance.py similarity index 98% rename from node-daemon/pvcd/NodeInstance.py rename to node-daemon/pvcnoded/NodeInstance.py index 5c179f9c..9c673f6b 100644 --- a/node-daemon/pvcd/NodeInstance.py +++ b/node-daemon/pvcnoded/NodeInstance.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# NodeInstance.py - Class implementing a PVC node in pvcd +# NodeInstance.py - Class implementing a PVC node in pvcnoded # Part of the Parallel Virtual Cluster (PVC) system # # Copyright (C) 2018-2020 Joshua M. Boniface @@ -28,9 +28,9 @@ import time import libvirt import threading -import pvcd.log as log -import pvcd.zkhandler as zkhandler -import pvcd.common as common +import pvcnoded.log as log +import pvcnoded.zkhandler as zkhandler +import pvcnoded.common as common class NodeInstance(object): # Initialization function @@ -471,9 +471,9 @@ class NodeInstance(object): # 6. Start client API (and provisioner worker) if self.config['enable_api']: self.logger.out('Starting PVC API client service', state='i') - common.run_os_command("systemctl start pvc-api.service") + common.run_os_command("systemctl start pvcapid.service") self.logger.out('Starting PVC Provisioner Worker service', state='i') - common.run_os_command("systemctl start pvc-provisioner-worker.service") + common.run_os_command("systemctl start pvcapid-worker.service") # 7. Start metadata API; just continue if we fail self.metadata_api.start() # 8. Start DHCP servers @@ -525,7 +525,7 @@ class NodeInstance(object): # 3. Stop client API if self.config['enable_api']: self.logger.out('Stopping PVC API client service', state='i') - common.run_os_command("systemctl stop pvc-api.service") + common.run_os_command("systemctl stop pvcapid.service") # 4. Stop metadata API self.metadata_api.stop() time.sleep(0.1) # Time for new writer to acquire the lock diff --git a/node-daemon/pvcd/VMConsoleWatcherInstance.py b/node-daemon/pvcnoded/VMConsoleWatcherInstance.py similarity index 98% rename from node-daemon/pvcd/VMConsoleWatcherInstance.py rename to node-daemon/pvcnoded/VMConsoleWatcherInstance.py index f9cd07a0..9d1150b2 100644 --- a/node-daemon/pvcd/VMConsoleWatcherInstance.py +++ b/node-daemon/pvcnoded/VMConsoleWatcherInstance.py @@ -32,8 +32,8 @@ from collections import deque import fcntl import signal -import pvcd.log as log -import pvcd.zkhandler as zkhandler +import pvcnoded.log as log +import pvcnoded.zkhandler as zkhandler class VMConsoleWatcherInstance(object): # Initialization function diff --git a/node-daemon/pvcd/VMInstance.py b/node-daemon/pvcnoded/VMInstance.py similarity index 99% rename from node-daemon/pvcd/VMInstance.py rename to node-daemon/pvcnoded/VMInstance.py index 9c2d0258..56f2c97a 100644 --- a/node-daemon/pvcd/VMInstance.py +++ b/node-daemon/pvcnoded/VMInstance.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# VMInstance.py - Class implementing a PVC virtual machine in pvcd +# VMInstance.py - Class implementing a PVC virtual machine in pvcnoded # Part of the Parallel Virtual Cluster (PVC) system # # Copyright (C) 2018-2020 Joshua M. Boniface @@ -30,11 +30,11 @@ import libvirt import kazoo.client import json -import pvcd.log as log -import pvcd.zkhandler as zkhandler -import pvcd.common as common +import pvcnoded.log as log +import pvcnoded.zkhandler as zkhandler +import pvcnoded.common as common -import pvcd.VMConsoleWatcherInstance as VMConsoleWatcherInstance +import pvcnoded.VMConsoleWatcherInstance as VMConsoleWatcherInstance def flush_locks(zk_conn, logger, dom_uuid): logger.out('Flushing RBD locks for VM "{}"'.format(dom_uuid), state='i') diff --git a/node-daemon/pvcd/VXNetworkInstance.py b/node-daemon/pvcnoded/VXNetworkInstance.py similarity index 99% rename from node-daemon/pvcd/VXNetworkInstance.py rename to node-daemon/pvcnoded/VXNetworkInstance.py index fff04d66..a666ca3b 100644 --- a/node-daemon/pvcd/VXNetworkInstance.py +++ b/node-daemon/pvcnoded/VXNetworkInstance.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# VXNetworkInstance.py - Class implementing a PVC VM network and run by pvcd +# VXNetworkInstance.py - Class implementing a PVC VM network and run by pvcnoded # Part of the Parallel Virtual Cluster (PVC) system # # Copyright (C) 2018-2020 Joshua M. Boniface @@ -25,9 +25,9 @@ import sys import time from textwrap import dedent -import pvcd.log as log -import pvcd.zkhandler as zkhandler -import pvcd.common as common +import pvcnoded.log as log +import pvcnoded.zkhandler as zkhandler +import pvcnoded.common as common class VXNetworkInstance(object): # Initialization function @@ -637,10 +637,10 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out ) # Recreate the environment we need for dnsmasq - pvcd_config_file = os.environ['PVCD_CONFIG_FILE'] + pvcnoded_config_file = os.environ['PVCD_CONFIG_FILE'] dhcp_environment = { 'DNSMASQ_BRIDGE_INTERFACE': self.bridge_nic, - 'PVCD_CONFIG_FILE': pvcd_config_file + 'PVCD_CONFIG_FILE': pvcnoded_config_file } # Define the dnsmasq config fragments @@ -658,7 +658,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out '--log-dhcp', '--keep-in-foreground', '--leasefile-ro', - '--dhcp-script={}/pvcd/dnsmasq-zookeeper-leases.py'.format(os.getcwd()), + '--dhcp-script={}/pvcnoded/dnsmasq-zookeeper-leases.py'.format(os.getcwd()), '--dhcp-hostsdir={}'.format(self.dnsmasq_hostsdir), '--bind-interfaces', ] diff --git a/node-daemon/pvcnoded/__init__.py b/node-daemon/pvcnoded/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/node-daemon/pvcd/common.py b/node-daemon/pvcnoded/common.py similarity index 99% rename from node-daemon/pvcd/common.py rename to node-daemon/pvcnoded/common.py index b5621257..8fccf951 100644 --- a/node-daemon/pvcd/common.py +++ b/node-daemon/pvcnoded/common.py @@ -27,8 +27,8 @@ import os import time import shlex -import pvcd.log as log -import pvcd.zkhandler as zkhandler +import pvcnoded.log as log +import pvcnoded.zkhandler as zkhandler class OSDaemon(object): def __init__(self, command_string, environment, logfile): diff --git a/node-daemon/pvcd/dnsmasq-zookeeper-leases.py b/node-daemon/pvcnoded/dnsmasq-zookeeper-leases.py similarity index 96% rename from node-daemon/pvcd/dnsmasq-zookeeper-leases.py rename to node-daemon/pvcnoded/dnsmasq-zookeeper-leases.py index e2555e71..eb1f2777 100755 --- a/node-daemon/pvcd/dnsmasq-zookeeper-leases.py +++ b/node-daemon/pvcnoded/dnsmasq-zookeeper-leases.py @@ -61,12 +61,12 @@ def get_client_id(): def connect_zookeeper(): # We expect the environ to contain the config file try: - pvcd_config_file = os.environ['PVCD_CONFIG_FILE'] + pvcnoded_config_file = os.environ['PVCD_CONFIG_FILE'] except: # Default place - pvcd_config_file = '/etc/pvc/pvcd.yaml' + pvcnoded_config_file = '/etc/pvc/pvcnoded.yaml' - with open(pvcd_config_file, 'r') as cfgfile: + with open(pvcnoded_config_file, 'r') as cfgfile: try: o_config = yaml.load(cfgfile) except Exception as e: diff --git a/node-daemon/pvcd/fencing.py b/node-daemon/pvcnoded/fencing.py similarity index 98% rename from node-daemon/pvcd/fencing.py rename to node-daemon/pvcnoded/fencing.py index b980b1dd..e5624f26 100644 --- a/node-daemon/pvcd/fencing.py +++ b/node-daemon/pvcnoded/fencing.py @@ -23,9 +23,9 @@ import time import threading -import pvcd.zkhandler as zkhandler -import pvcd.common as common -import pvcd.VMInstance as VMInstance +import pvcnoded.zkhandler as zkhandler +import pvcnoded.common as common +import pvcnoded.VMInstance as VMInstance # # Fence thread entry function diff --git a/node-daemon/pvcd/fixrbdlocks b/node-daemon/pvcnoded/fixrbdlocks similarity index 100% rename from node-daemon/pvcd/fixrbdlocks rename to node-daemon/pvcnoded/fixrbdlocks diff --git a/node-daemon/pvcd/log.py b/node-daemon/pvcnoded/log.py similarity index 100% rename from node-daemon/pvcd/log.py rename to node-daemon/pvcnoded/log.py diff --git a/node-daemon/pvcd/zkhandler.py b/node-daemon/pvcnoded/zkhandler.py similarity index 99% rename from node-daemon/pvcd/zkhandler.py rename to node-daemon/pvcnoded/zkhandler.py index 4b976e9c..94c6e293 100644 --- a/node-daemon/pvcd/zkhandler.py +++ b/node-daemon/pvcnoded/zkhandler.py @@ -23,8 +23,6 @@ import kazoo.client import uuid -#import pvcd.log as log - # Child list function def listchildren(zk_conn, key): children = zk_conn.get_children(key)