Commit Graph

202 Commits

Author SHA1 Message Date
Joshua Boniface b6474198a4 Implement cluster maintenance mode
Implements a "maintenance mode" for PVC clusters. For now, the only
thing this mode does is disable node fencing while the state is true.
This allows the administrator to tell PVC that network connectivity,
etc. might be interrupted and to avoid fencing nodes.

Closes #70
2020-01-09 10:53:27 -05:00
Joshua Boniface 0671a81aa2 Add missing install line for cli_lib 2019-12-29 21:02:05 -05:00
Joshua Boniface f4ef08df49 Add lxml dependency for pretty parsing of VM XML 2019-12-29 16:33:50 -05:00
Joshua Boniface f5436ed8a9 Change dependencies for CLI client 2019-12-29 16:33:50 -05:00
Joshua Boniface e4c96ee43d Add flask-restful dependency 2019-12-24 10:48:15 -05:00
Joshua Boniface eecc07b731 Depend daemons on systemd
Numerous parts of PVC call systemctl commands or otherwise require a
functioning systemd-based system. Make the dependencies explicitly
reflect this.
2019-12-19 19:04:25 -05:00
Joshua Boniface 669a8fbacd Clean up pycache files before (re)installing 2019-12-18 18:39:03 -05:00
Joshua Boniface 355e16e23a Add missing dependencies 2019-12-18 11:56:22 -05:00
Joshua Boniface 2b5c134970 Add missing distutils dep 2019-12-15 13:53:22 -05:00
Joshua Boniface 292c2d9a44 Install newly moved schema file 2019-12-14 16:52:09 -05:00
Joshua Boniface b3e21a5bf8 Integrate metadata API into node daemon 2019-12-14 16:41:01 -05:00
Joshua Boniface 0727a7f6ed Move all provisioner API functionality into main 2019-12-14 14:12:55 -05:00
Joshua Boniface 22ae087836 Add examples to deb install 2019-12-12 22:52:12 -05:00
Joshua Boniface 1377c15948 Fix text in postinst 2019-12-09 13:33:47 -05:00
Joshua Boniface 57e8fba602 Add provisioner to Debian packages 2019-12-09 10:40:27 -05:00
Joshua Boniface 267a3d16e5 Bump version to 0.5 2019-08-08 20:56:27 -04:00
Joshua Boniface 804f72d905 Remove obsolete init attempt 2019-07-06 19:03:55 -04:00
Joshua Boniface c638bdeaee Add configuration file, authentication, pywsgi 2019-07-06 02:04:26 -04:00
Joshua Boniface e4576c016f Move API client filename 2019-07-05 23:26:41 -04:00
Joshua Boniface a480048d36 Add flask dependency to API client 2019-07-05 23:24:27 -04:00
Joshua Boniface 0a96e26bc6 Clean up Debian control and add API package 2019-07-05 22:22:28 -04:00
Joshua Boniface 703e34e8ea Remove disable of pvc-flush
Since it isn't re-enabled and this makes life difficult, don't
disable the pvc-flush service if it was enabled.
2019-05-23 23:47:57 -04:00
Joshua Boniface 0421f5cac8 Make the informational messages stand out 2019-05-23 22:49:00 -04:00
Joshua Boniface 7c6132f7dd Add node autoflush service and target
Add a systemd service to manage node flush/unflush, useful during
system startup and shutdown to avoid requiring administrator
intervention for this to occur. This is optional and the service is
not enabled by default, and the postinst script informs the
administrator of this.

Also adds a systemd target to collect the two service units together
and provide an easy way to flush+shutdown or startup+unflush the
entire PVC system.

Closes #28
2019-05-23 22:42:51 -04:00
Joshua Boniface d59280d829 Update dependencies for Postgres 2019-05-22 21:57:06 -04:00
Joshua Boniface 595cf1782c Switch DNS aggregator to PostgreSQL
MariaDB+Galera was terribly unstable, with the cluster failing to
start or dying randomly, and generally seemed incredibly unsuitable
for an HA solution. This commit switches the DNS aggregator SQL
backend to PostgreSQL, implemented via Patroni HA.

It also manages the Patroni state, forcing the primary instance to
follow the PVC coordinator, such that the active DNS Aggregator
instance is always able to communicate read+write with the local
system.

This required some logic changes to how the DNS Aggregator worked,
specifically ensuring that database changes aren't attempted while
the instance isn't actively running - to be honest this was a bug
anyways that had just never been noticed.

Closes #34
2019-05-21 01:07:41 -04:00
Joshua Boniface 2459c3e475 Add dependency for vlan support 2019-03-15 21:15:17 -04:00
Joshua Boniface fb3cf827a2 Add further client deps 2019-03-12 23:10:52 -04:00
Joshua Boniface 5be1cdc40a Support YAML in the client and update configfile 2019-03-12 22:55:29 -04:00
Joshua Boniface ebd28ecef0 Add YAML to server dependencies 2019-03-12 22:54:42 -04:00
Joshua Boniface d90fb07240 Move to YAML config and allow split functions
1. Move to a YAML-based configuration format instead of the original
   INI-based configuration to facilitate better organization and
   readability.
2. Modify the daemon to be able to operate in several modes based
   on configuration flags. Either networking or storage functions
   can be disabled using the configuration, allowing the PVC system
   to be used only for hypervisor management if required.
2019-03-11 01:47:40 -04:00
Joshua Boniface ce7151a962 Delete pvc-daemon-common.install
No longer needed
2018-11-20 23:38:29 -05:00
Joshua Boniface 1f58d61cb0 Rewrite DNSAggregatorInstance to handle DNS well
Trying to directly AXFR from dnsmasq is a mess, since their zone is
barely compliant with spec, it doesn't support notifies, and it is
generally really messy.

This implements an advanced "AXFR parser" system, which looks at the
results of an AXFR from the local dnsmasq instances per-network, and
updates the real replicated MariaDB pdns backend cluster with the
changed data. This allows a sensible, transferable zone with its own
SOA that is dynamically reconfigured as hosts come and go from the
dnsmasq zone.
2018-11-18 16:45:52 -05:00
Joshua Boniface 8dca8c1cd2 Add paramiko to dependencies 2018-10-27 15:54:05 -04:00
Joshua Boniface 605889f59f Add some additional dependencies 2018-10-14 18:36:02 -04:00
Joshua Boniface f198f62563 Massive rejigger into single daemon
Completely restructure the daemon code to move the 4 discrete daemons
into a single daemon that can be run on every hypervisor. Introduce the
idea of a static list of "coordinator" nodes which are configured at
install time to run Zookeeper and FRR in router mode, and which are
allowed to take on client network management duties (gateway, DHCP, DNS,
etc.) while also allowing them to run VMs (i.e. no dedicated "router"
nodes required).
2018-10-14 02:40:54 -04:00
Joshua Boniface 0f9637cb69 Make the IP failover work including threaded background os commands 2018-09-24 04:08:35 -04:00
Joshua Boniface 3c2baf3872 Correct prerm/postinst scripts 2018-09-23 15:33:34 -04:00
Joshua Boniface 4ba2eea4ed Add router daemon 2018-09-23 15:26:41 -04:00
Joshua Boniface a111eff9cd Update suggested client packages 2018-09-23 01:17:55 -04:00
Joshua Boniface 513de96626 Major refactor to separate out and standardize libraries 2018-09-20 03:43:34 -04:00
Joshua Boniface c3d37701e7 Add network daemon to manage VXLAN VNIs on hypervisors 2018-09-14 12:07:41 -04:00
Joshua Boniface b6c7153401 Bump version and split common libraries into separate package 2018-09-12 12:11:59 -04:00
Joshua Boniface f29ba2f458 Rename the virtualization daemon to `pvcvd`. 2018-09-12 11:59:23 -04:00
Joshua Boniface a629d4898a Rename deb package to reflect daemon splits 2018-09-10 14:24:15 -04:00
Joshua Boniface 32e3da1acc Move virt daemon location 2018-09-10 14:21:27 -04:00
Joshua Boniface 7625abb23b Move cli client into subfolder 2018-09-10 01:15:03 -04:00
Joshua Boniface e377fcdd7f Move daemon components into subfolder 2018-09-10 01:13:31 -04:00
Joshua Boniface 37906fdd25 Remove submodule; all of pvc client is in one file 2018-08-11 14:07:00 -04:00
Joshua Boniface a810347aaf Bump to version 0.2 2018-07-18 02:18:33 -04:00
Joshua Boniface b710273625 Additional dependencies 2018-06-17 15:36:48 -04:00
Joshua Boniface 6ade378cc9 Debianize the packaging 2018-06-17 14:55:13 -04:00