1622 Commits

Author SHA1 Message Date
79d0a2eafc Handle raw sorting properly with new list format 2019-05-21 14:44:45 -04:00
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
73443ecbaf Update vm.py to allow API use 2019-05-20 22:15:28 -04:00
9e806d30f9 Only stop log parser if it's actually running 2019-05-11 12:09:42 -04:00
3cf573baf6 Update domainstate after unflush is complete 2019-05-11 00:55:15 -04:00
18a122c772 Remove redundant try block 2019-05-11 00:47:50 -04:00
516ea1b57c Handle unflushes like flushes squentially
Makes an unflush a controlled event like flushing, rather than a
free-for-all. This does slow down unflushing somewhat (disallowing
parallelism from multiple hosts to the current host), but allows
the locking to actually be effective.
2019-05-11 00:30:47 -04:00
91ea96b772 Actually send wait for unflush 2019-05-11 00:16:38 -04:00
62a71af46e Implement locking for unflush as well
References #32
2019-05-11 00:13:03 -04:00
9d8c886811 Correct typo in flush_lock write 2019-05-11 00:08:07 -04:00
e1c53c40a6 Merge branch 'api' 2019-05-10 23:58:34 -04:00
c19902d952 Implement flush locking for nodes
Implements a locking mechanism to prevent clobbering of node
flushes. When a flush begins, a global cluster lock is placed
which is freed once the flush completes. While the lock is in place,
other flush events queue waiting for the lock to free before
proceeding.

Modifies the CLI output flow when the `--wait` option is specified.
First, if a lock exists when running the command, the message is
tweaked to indicate this, and the client will wait first for the
lock to free, and then for the flush as normal. Second, the wait
depends on the active lock rather than the domain_status for
consistency purposes.

Closes #32
2019-05-10 23:52:24 -04:00
045ad131af Update node.py to allow API use
Addresses #33
2019-05-10 23:27:34 -04:00
2151566b74 Send total memory via ZK so its accurate 2019-05-10 23:26:59 -04:00
7416d440d5 Use zkhandler when writing initial node config 2019-05-10 23:26:59 -04:00
ae1650759b Add new endpoints 2019-05-10 23:26:59 -04:00
41d3e79187 Add pause between stop/start on restart 2019-05-10 23:26:59 -04:00
b6ecd36588 Implement domain log watching
Implements the ability for a client to watch almost-live domain
console logs from the hypervisors. It does this using a deque-based
"tail -f" mechanism (with a configurable buffer per-VM) that watches
the domain console logfile in the (configurable) directory every
half-second. It then stores the current buffer in Zookeeper when
changed, where a client can then request it, either as a static piece
of text in the `less` pager, or via a similar "tail -f" functionality
implemented using fixed line splitting and comparison to provide a
generally-seamless output.

Enabling this feature requires each guest VM to implement a Libvirt
serial log and write its (text) console to it, for example using the
default logging directory:

```
<serial type='pty'>
    <log file='/var/log/libvirt/vmname.log' append='off'/>
<serial>
```

The append mode can be either on or off; on grows files unbounded,
off causes the log (and hence the PVC log data) to be truncated on
initial VM startup from offline. The administrator must choose how
they best want to handle this until Libvirt implements their own
clog-type logging format.
2019-05-10 23:26:59 -04:00
5ad2dda6d4 Only print file name 2019-05-10 23:26:59 -04:00
9809b798cc Correct bug in non-editor modify 2019-05-10 23:26:59 -04:00
ba4a44f5e7 Allow the zk_conn to be none properly 2019-05-10 23:26:59 -04:00
989c5f6bed Don't depend start on mariadb 2019-05-10 23:26:59 -04:00
e41b3053f7 Update methods to POST where relevant 2019-04-12 12:27:49 -04:00
d20ea8b79d Add pause between stop/start on restart 2019-04-12 11:18:53 -04:00
31f252ad9b Implement domain log watching
Implements the ability for a client to watch almost-live domain
console logs from the hypervisors. It does this using a deque-based
"tail -f" mechanism (with a configurable buffer per-VM) that watches
the domain console logfile in the (configurable) directory every
half-second. It then stores the current buffer in Zookeeper when
changed, where a client can then request it, either as a static piece
of text in the `less` pager, or via a similar "tail -f" functionality
implemented using fixed line splitting and comparison to provide a
generally-seamless output.

Enabling this feature requires each guest VM to implement a Libvirt
serial log and write its (text) console to it, for example using the
default logging directory:

```
<serial type='pty'>
    <log file='/var/log/libvirt/vmname.log' append='off'/>
<serial>
```

The append mode can be either on or off; on grows files unbounded,
off causes the log (and hence the PVC log data) to be truncated on
initial VM startup from offline. The administrator must choose how
they best want to handle this until Libvirt implements their own
clog-type logging format.
2019-04-12 11:15:32 -04:00
cbad19adfe Only print file name 2019-04-10 16:29:26 -04:00
30002f95d7 Correct bug in non-editor modify 2019-04-10 16:18:18 -04:00
c8c5d6f884 Allow the zk_conn to be none properly 2019-04-09 16:25:45 -04:00
2a5106fa92 Don't depend start on mariadb 2019-04-09 08:18:11 -04:00
1126382ac9 Initial API including fixes to common functons
Some functions were doing `click.echo` inside themselves; don't
do that as it's not API compatible, just return everything.
2019-03-21 11:19:28 -04:00
2e4c0c8eb9 Correct header file name 2019-03-20 12:06:15 -04:00
55ce75aa9f Remove junk file 2019-03-20 12:05:35 -04:00
d5ea38732a Disable RP filtering only on VNI and Upstream devs 2019-03-20 12:01:26 -04:00
9f0d7c5bf8 Support VM list filtering by state 2019-03-20 11:31:54 -04:00
eec14ff177 Don't set unmigrated VMs to start 2019-03-20 10:19:01 -04:00
0dbd1c41a9 Create floating VNI address on brcluster 2019-03-18 20:17:26 -04:00
24a9612377 Remove obsolete about 2019-03-17 22:37:57 -04:00
013f75111a Rearrange sysctl for rp_filtering off on bridge 2019-03-17 20:05:58 -04:00
4050c452d6 Update dnsmasq script to use YAML config 2019-03-17 13:59:05 -04:00
deb4247e25 Only remove gateways when managed 2019-03-17 13:19:44 -04:00
3ec09686d2 Don't load provisioner 2019-03-17 12:56:52 -04:00
3924586eb5 Update zookeeper inside keepalive start
If nodes reconnect to ZK, this way they update immediately too.
2019-03-17 12:52:23 -04:00
3df8365851 Only manage DHCP on managed networks 2019-03-17 12:36:39 -04:00
c52a1845e3 Don't create gateways or rules unless managed 2019-03-17 12:33:54 -04:00
aee130f65f Handle the starting of all daemons better 2019-03-17 01:45:17 -04:00
f38ab856c2 Move config of local networks before ZK init
Otherwise, ZK will fail to start properly
2019-03-17 00:53:11 -04:00
33070ba4c5 Correct another typo 2019-03-17 00:40:23 -04:00
7a1a29c3fd Correct typo in gateways 2019-03-17 00:39:08 -04:00
3aa8223504 Add support for upstream default gateway 2019-03-17 00:36:19 -04:00
12bc3acf85 Use vmbr name for Bridge interfaces 2019-03-17 00:19:01 -04:00