Commit Graph

231 Commits

Author SHA1 Message Date
Joshua Boniface d28b1ba133 Support removing VMs (and disks) from PVC clients
Adds full support for removing a VM entirely, including its RBD disks,
via the PVC client(s). Avoids needing an undefine + manual removal.
2019-06-27 11:19:48 -04:00
Joshua Boniface b52cf01ecc Make conditionals more Pythonic 2019-06-25 12:36:37 -04:00
Joshua Boniface 93be983b39 Properly verify node inputs 2019-06-25 12:36:37 -04:00
Joshua Boniface d8dca50af4 Ensure domain is always set 2019-06-24 12:59:32 -04:00
Joshua Boniface 4922e973c7 Functionize duplicate code and fix net length bug 2019-06-24 10:10:07 -04:00
Joshua Boniface 1316b9ed59 Fix refactoring bugs 2019-06-24 09:56:06 -04:00
Joshua Boniface e097e9e8af Fix up status call 2019-06-21 16:40:12 -04:00
Joshua Boniface 60e6df4416 Increase wait on OSD add/remove a bit more 2019-06-21 16:01:08 -04:00
Joshua Boniface 9cec0c5b43 Remove extra bolding in lists 2019-06-21 15:57:50 -04:00
Joshua Boniface 808e53fe29 Increase wait on OSD add/remove 2019-06-21 15:56:37 -04:00
Joshua Boniface c63b5a8056 Handle a no-valid-nodes situation 2019-06-21 11:37:35 -04:00
Joshua Boniface f3e9082376 Simplify fromhuman byte formatting 2019-06-21 10:18:35 -04:00
Joshua Boniface 867ad1fc1b Support human-readable biconversion and in volumes 2019-06-21 09:23:52 -04:00
Joshua Boniface 3d3fa1b99f Add write-lock-wait to all other Ceph commands 2019-06-21 09:05:00 -04:00
Joshua Boniface 3dd56c55c0 Fix a few more bugs 2019-06-19 15:32:32 -04:00
Joshua Boniface 97a3dafa3b Fix bug in regex match for snapshots 2019-06-19 15:24:04 -04:00
Joshua Boniface 51256b4f0f Fix bad bolding in lists 2019-06-19 15:16:22 -04:00
Joshua Boniface 5d4ecafb03 Support listing of snapshots 2019-06-19 15:15:17 -04:00
Joshua Boniface 80de40252b Add shutdown colour to output 2019-06-19 14:28:04 -04:00
Joshua Boniface 39a45a1e0f Fix bug with daemon_state 2019-06-19 14:19:00 -04:00
Joshua Boniface bc38af774e Check that node is in run state before primary
Fixes #37
2019-06-19 12:49:34 -04:00
Joshua Boniface 5e211837ad Fix bug in output 2019-06-19 11:24:25 -04:00
Joshua Boniface e6a458f38c Support listing volumes 2019-06-19 11:22:49 -04:00
Joshua Boniface 98365b0fcf Correct bugs around snapshots 2019-06-19 09:41:33 -04:00
Joshua Boniface a4ab3075ab Correct some bugs around new code 2019-06-19 00:23:25 -04:00
Joshua Boniface 01959cb9e3 Implementation of RBD volumes and snapshots
Adds the ability to manage RBD volumes (add/remove) and RBD
snapshots (add/remove). (Working) list functions to come.
2019-06-19 00:12:44 -04:00
Joshua Boniface b50b2a827b Add forced delays after pool add/remove
Prevents returning immediately to give the cluster some breathing
room before the admin can do other commands. Keep the write lock
as well to prevent other clients from attempting this as well.
2019-06-18 21:56:24 -04:00
Joshua Boniface ee73676114 Fix bug with pool removal 2019-06-18 21:51:11 -04:00
Joshua Boniface 3ba3c339a7 Show vCPU count on CLI output
Showing the static, total number of CPUs was pointless. Instead,
show the number of allocated vCPUs. To preserve space, no longer
show the host CPU count in the list.
2019-06-02 22:30:26 -04:00
Joshua Boniface b9774bdf03 Increase wait sleeps in node flush/unflush 2019-05-26 23:21:01 -04:00
Joshua Boniface 6fd4710f7f Remove bad replacement 2019-05-21 19:51:23 -04:00
Joshua Boniface 79d0a2eafc Handle raw sorting properly with new list format 2019-05-21 14:44:45 -04:00
Joshua Boniface 73443ecbaf Update vm.py to allow API use 2019-05-20 22:15:28 -04:00
Joshua Boniface 91ea96b772 Actually send wait for unflush 2019-05-11 00:16:38 -04:00
Joshua Boniface 62a71af46e Implement locking for unflush as well
References #32
2019-05-11 00:13:03 -04:00
Joshua Boniface 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
Joshua Boniface 045ad131af Update node.py to allow API use
Addresses #33
2019-05-10 23:27:34 -04:00
Joshua Boniface 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
Joshua Boniface 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
Joshua Boniface 9f0d7c5bf8 Support VM list filtering by state 2019-03-20 11:31:54 -04:00
Joshua Boniface eec14ff177 Don't set unmigrated VMs to start 2019-03-20 10:19:01 -04:00
Joshua Boniface 15c832650d Don't block stopping on non-start state 2019-03-16 23:32:13 -04:00
Joshua Boniface 946442ae38 Add support for bridge-only VNIs 2019-03-15 13:54:11 -04:00
Joshua Boniface 318a2353ea Fix missing format key on delete 2019-03-15 01:13:03 -04:00
Joshua Boniface 36ac20e5a7 Increase state length width 2019-03-13 20:28:33 -04:00
Joshua Boniface df394c5c39 Handle regex in a more consistent way 2019-03-12 23:52:59 -04:00
Joshua Boniface 1180a4c88e Remove debug 2019-03-12 21:46:30 -04:00
Joshua Boniface abbc361520 Sort the names properly 2019-03-12 21:46:09 -04:00
Joshua Boniface d6b554e88e Move the output to a better place; 2019-03-12 21:40:52 -04:00
Joshua Boniface eb087a26e7 Deleted the wrong line 2019-03-12 21:39:17 -04:00
Joshua Boniface 2e187ae032 But sort it right 2019-03-12 21:38:22 -04:00
Joshua Boniface 717e518deb List names instead of UUIDs 2019-03-12 21:35:33 -04:00
Joshua Boniface c4a97f04a7 Support raw VM listing 2019-03-12 21:30:01 -04:00
Joshua Boniface 081d855a03 Allow dumping of VMs 2019-03-12 21:09:54 -04:00
Joshua Boniface a6806ad5e0 Change router state name to coordinator 2018-11-18 20:00:40 -05:00
Joshua Boniface f0030ee5ed Handle network printing with cluster net 2018-11-18 17:57:58 -05:00
Joshua Boniface b1d0b6e62f Fix up the remaining DHCPv6 setup 2018-11-18 00:55:34 -05:00
Joshua Boniface 4c1e1b4622 Make everything work with dual-stack 2018-11-14 00:26:52 -05:00
Joshua Boniface 6fe06c31bb Support more IPv6 stuff including list and info updates 2018-11-13 01:45:18 -05:00
Joshua Boniface 720469d389 Standardize the layout of lists (dynamic fields) 2018-11-02 00:42:44 -04:00
Joshua Boniface 2c2208ab07 Tweak some output formatting in lists 2018-11-01 23:24:38 -04:00
Joshua Boniface a2f4102cb5 Add crush weight and reweight output 2018-11-01 23:17:38 -04:00
Joshua Boniface 9fcce4b09a Support setting a CRUSH weight on new OSDs 2018-11-01 23:03:27 -04:00
Joshua Boniface 2ea8a14ba4 Support OSD out/in and commands 2018-11-01 22:08:11 -04:00
Joshua Boniface 41bedbae3c Verify the pool exists before removing it 2018-11-01 19:55:13 -04:00
Joshua Boniface 99fcb21e3b Support adding and removing Ceph pools 2018-10-31 23:38:17 -04:00
Joshua Boniface 922a3a9ee1 Actually remove the command data 2018-10-30 22:44:41 -04:00
Joshua Boniface 3e4a6086d5 Finish up Ceph OSD removal, add locking to commands 2018-10-30 22:41:44 -04:00
Joshua Boniface 9a271bda0a Add OSD list function 2018-10-30 09:17:32 -04:00
Joshua Boniface bfbe9188ce Finish setup of Ceph OSD addition and basic management 2018-10-29 17:51:25 -04:00
Joshua Boniface 7f18c99172 Add OSD add and OSD remove commands 2018-10-28 22:15:25 -04:00
Joshua Boniface 3025772e6d Fix bug in vni lists 2018-10-28 18:13:28 -04:00
Joshua Boniface 103ae95fb9 Add Ceph commands and status handling 2018-10-27 18:11:58 -04:00
Joshua Boniface b65472aa83 Add remote SSH-based command handling 2018-10-27 17:51:03 -04:00
Joshua Boniface 9f87321f10 Remove ending newline 2018-10-27 16:33:50 -04:00
Joshua Boniface a5be42908d Handle verifyNode properly 2018-10-27 16:19:07 -04:00
Joshua Boniface 4b924e54d9 Fix children list typo 2018-10-27 16:03:01 -04:00
Joshua Boniface 2b115160a2 Use zkhandler for everything; add delete operation 2018-10-27 15:51:52 -04:00
Joshua Boniface 29d44444e5 Add function to get primary node 2018-10-27 15:24:42 -04:00
Joshua Boniface d69cb72439 Modify alloc memory check to just look at alloc 2018-10-22 00:43:58 -04:00
Joshua Boniface 59219c4e97 Increase domain state length 2018-10-21 22:10:13 -04:00
Joshua Boniface 2de65e514f Add missing common call 2018-10-21 22:10:05 -04:00
Joshua Boniface d464bf74da Increase width of daemon_state line 2018-10-21 15:19:24 -04:00
Joshua Boniface 05af23064f Fix name of "ansiiprint" since it's "ANSI" 2018-10-20 15:28:25 -04:00
Joshua Boniface a3f7419124 Handle colouring of network lists when a network is invalid 2018-10-20 15:27:07 -04:00
Joshua Boniface 187a572c13 Make a whole bunch of things work 2018-10-17 20:05:22 -04:00
Joshua Boniface c726865b89 Support writing ACLs 2018-10-17 00:23:27 -04:00
Joshua Boniface d9d57c015f Remove implicit conversion of nontypes to '' and convert data to string 2018-10-16 23:17:09 -04:00
Joshua Boniface 49d5b60f15 Remove superfluous Hypervisor mention 2018-10-14 02:47:30 -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 d1ef073a8e Correct deletion of reservations 2018-10-03 23:53:33 -04:00
Joshua Boniface 717d1a9045 Fix up handling of reservations in the client 2018-10-03 23:16:31 -04:00
Joshua Boniface a6f7986b87 Update network modify with new add flags 2018-10-03 20:24:54 -04:00
Joshua Boniface 503680d5b2 Add better handling of listing leases and handling static reservations 2018-10-03 19:23:46 -04:00
Joshua Boniface 15ded04680 Make that wording more consistent 2018-10-02 00:14:08 -04:00
Joshua Boniface 3302088f34 Add nicer client handling of DHCP leases 2018-10-02 00:02:23 -04:00
Joshua Boniface 1483db3c2d Allow secondary routers again and handle them better
This reverts commit 07a6ef0fba.
2018-09-30 18:16:27 -04:00
Joshua Boniface 07a6ef0fba Remove ability for client to set router secondary (must always set
primary)
2018-09-30 16:35:57 -04:00
Joshua Boniface 4d350ced7e Some major tweaks to make DHCP reservations work with the server 2018-09-30 12:43:56 -04:00
Joshua Boniface 3775edf415 Fold reservations into leases DB 2018-09-30 11:22:25 -04:00
Joshua Boniface ec868b50f4 Another slight client tweak 2018-09-29 02:59:00 -04:00
Joshua Boniface 46446f11fc Slight output tweak 2018-09-29 02:56:36 -04:00
Joshua Boniface 15f26f9fa3 Support adding the DHCP range with the client 2018-09-29 02:54:48 -04:00
Joshua Boniface 560fa57176 Make use of router primary write key in client too 2018-09-29 02:00:07 -04:00
Joshua Boniface 63d48a3821 Support domain names in networks 2018-09-28 20:50:55 -04:00
Joshua Boniface 5d35adb4fc Support DHCP reservations in networks on client side 2018-09-28 20:32:15 -04:00
Joshua Boniface c66a83e6c5 Fix bug obtaining VM list 2018-09-28 20:31:45 -04:00
Joshua Boniface b6eeb5c264 Fix up some bugs in kv handling 2018-09-28 19:34:35 -04:00
Joshua Boniface 2fda346f9b Improved rewrite of zkhandler.writedata to allow for creation 2018-09-28 16:14:31 -04:00
Joshua Boniface 2d5078cbd6 Add a bit of colour to network output 2018-09-25 13:58:52 -04:00
Joshua Boniface 1c9c63db92 Fix some problems with modify command after split 2018-09-25 02:32:08 -04:00
Joshua Boniface 9107e16c33 Add getDomainName to vm functions 2018-09-25 02:26:37 -04:00
Joshua Boniface 7daed1b0d8 Improve limit handling 2018-09-25 02:20:32 -04:00
Joshua Boniface 615169cd69 Properly support limit 2018-09-25 01:52:05 -04:00
Joshua Boniface e5f81b26bf Remove spurious ZKConnection call 2018-09-25 01:47:18 -04:00
Joshua Boniface 2813fda06c Fix up call 2018-09-25 01:32:52 -04:00
Joshua Boniface 98d9c4d70b Revert "Remove gratuitous long_output"
This reverts commit 97cd90ce88.
2018-09-25 01:32:03 -04:00
Joshua Boniface 97cd90ce88 Remove gratuitous long_output 2018-09-25 01:23:57 -04:00
Joshua Boniface 54541c991c Remove routers config from networks as not needed 2018-09-25 01:19:56 -04:00
Joshua Boniface bc3cdd67c9 Fix output in router.py 2018-09-24 15:22:46 -04:00
Joshua Boniface 744e9cab4d Support handling routers 2018-09-24 15:10:12 -04:00
Joshua Boniface efc8cf3cef Fix up some small bugs 2018-09-24 14:50:54 -04:00
Joshua Boniface 93b25ddd5b Finish up network interface 2018-09-23 15:26:20 -04:00
Joshua Boniface 85d6e02ed2 Fix some bugs 2018-09-23 01:05:54 -04:00
Joshua Boniface 6dfb9d8539 Import verifyNode properly 2018-09-23 00:58:58 -04:00
Joshua Boniface 6aa1693de2 Missing module from function call 2018-09-21 23:46:07 -04:00
Joshua Boniface 8f59995af4 Simplify VM delete with recursive operation 2018-09-21 01:52:51 -04:00
Joshua Boniface fc0465d112 Correct several bugs from refactor 2018-09-20 11:20:23 -04:00
Joshua Boniface 461183a371 Fix changed variable name 2018-09-20 03:46:05 -04:00
Joshua Boniface 513de96626 Major refactor to separate out and standardize libraries 2018-09-20 03:43:34 -04:00
Joshua Boniface c9258edcad Refactor CLI client to split out actual functions for reuse 2018-09-20 03:25:58 -04:00