From 8216125b02dc2a2e4efae19b3de94e329e0cb006 Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Sat, 6 Jul 2019 02:42:56 -0400 Subject: [PATCH] Enable autostart of API client on Primary Adds a config flag that turns on the API client following the Primary coordinator. The retcode of the start/stop commands is ignore so this can fail gracefully if e.g. the client isn't installed. --- node-daemon/pvcd.sample.yaml | 2 ++ node-daemon/pvcd/Daemon.py | 1 + node-daemon/pvcd/NodeInstance.py | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/node-daemon/pvcd.sample.yaml b/node-daemon/pvcd.sample.yaml index 6bba7d2f..c143b090 100644 --- a/node-daemon/pvcd.sample.yaml +++ b/node-daemon/pvcd.sample.yaml @@ -21,6 +21,8 @@ pvc: enable_networking: True # enable_storage: Enable or disable Ceph storage management functionality enable_storage: True + # enable_api: Enable or disable the API client, if installed, when node is Primary + enable_api: True # cluster: Cluster-level configuration cluster: # coordinators: The list of cluster coordinator hostnames diff --git a/node-daemon/pvcd/Daemon.py b/node-daemon/pvcd/Daemon.py index f2b23dfc..6793e9aa 100644 --- a/node-daemon/pvcd/Daemon.py +++ b/node-daemon/pvcd/Daemon.py @@ -139,6 +139,7 @@ def readConfig(pvcd_config_file, myhostname): 'enable_hypervisor': o_config['pvc']['functions']['enable_hypervisor'], 'enable_networking': o_config['pvc']['functions']['enable_networking'], 'enable_storage': o_config['pvc']['functions']['enable_storage'], + 'enable_api': o_config['pvc']['functions']['enable_api'], 'dynamic_directory': o_config['pvc']['system']['configuration']['directories']['dynamic_directory'], 'log_directory': o_config['pvc']['system']['configuration']['directories']['log_directory'], 'console_log_directory': o_config['pvc']['system']['configuration']['directories']['console_log_directory'], diff --git a/node-daemon/pvcd/NodeInstance.py b/node-daemon/pvcd/NodeInstance.py index 8d71e0f2..4b64bc45 100644 --- a/node-daemon/pvcd/NodeInstance.py +++ b/node-daemon/pvcd/NodeInstance.py @@ -254,6 +254,8 @@ class NodeInstance(object): self.logger.out('Setting router {} to secondary state'.format(self.name), state='i') self.logger.out('Network list: {}'.format(', '.join(self.network_list))) time.sleep(2) + if self.config['enable_api']: + common.run_os_command("systemctl stop pvc-api.service") for network in self.d_network: self.d_network[network].stopDHCPServer() self.d_network[network].removeGateways() @@ -269,6 +271,8 @@ class NodeInstance(object): for network in self.d_network: self.d_network[network].createGateways() self.d_network[network].startDHCPServer() + if self.config['enable_api']: + common.run_os_command("systemctl start pvc-api.service") time.sleep(1) # Force Patroni to switch to the local instance self.logger.out('Setting Patroni leader to this node', state='i')