48 Commits

Author SHA1 Message Date
5526e13da9 Move all host provisioner steps to a try block
Make the provisioner a bit more robust. This way, even if a provisioning
step fails, cleanup is still performed this preventing the system from
being left in an undefined state requiring manual correction.

Addresses #91
2020-08-06 12:27:10 -04:00
bafdcf9f8c Use new_size to match new_name 2020-08-05 10:25:37 -04:00
9f86f12f1a Only parse script_run_args if not None 2020-07-16 02:36:26 -04:00
be405caa11 Remove spurious print statement 2020-07-08 13:28:47 -04:00
a1ba9d2eeb Allow specifying arbitrary script_args on CLI
Allow the specifying of arbitrary provisioner script install() args on
the provisioner create CLI, either overriding or adding additional
per-VM arguments to those found in the profile. Reference example is
setting a "vm_fqdn" on a per-run basis.

Closes #100
2020-07-08 13:18:12 -04:00
37a58d35e8 Implement limiting of node output
Closes #98
2020-06-25 11:51:53 -04:00
4cdf1f7247 Add statistics values to the API 2020-06-07 02:15:33 -04:00
654a3cb7fa Improve debug output and use ceph df util data 2020-06-06 22:52:49 -04:00
ce60836c34 Allow enforcement of live migration
Provides a CLI and API argument to force live migration, which triggers
a new VM state "migrate-live". The node daemon VMInstance during migrate
will read this flag from the state and, if enforced, will not trigger a
shutdown migration.

Closes #95
2020-06-06 12:00:44 -04:00
73eb4fb457 Fix typo of macaddress in dhcp add 2020-05-09 00:15:25 -04:00
b91923735c Move some messages around 2020-05-05 16:19:18 -04:00
34c4690d49 Don't convert bytes into KB in OVA import
Doing so can create an image that is 1 sector (512 bytes) too large,
which will then break qemu-img because it's stupid (or, VMDK is stupid,
I haven't decided which is).. Current Ceph rbd commands seem to accept
--size in bytes so this is fine.
2020-05-05 16:14:18 -04:00
3e351bb84a Add additional error checking for profile creation 2020-05-05 15:28:39 -04:00
4a52ff56b9 Catch failures in getPoolInformation
Fixes #90
2020-03-15 16:58:13 -04:00
ca5327b908 Make strtobool even more robust
If strtobool fails, return False always.
2020-03-09 09:30:16 -04:00
d36d8e0637 Use custom strtobool to handle weird edge cases 2020-03-06 09:40:13 -05:00
fd80eb9e22 Ensure profile creation works with empty lists
If we get a 404 code back from the upper function, we should create an
empty list rather than trying to loop through the dictionary.
2020-02-24 09:30:58 -05:00
6ac82d6ce9 Ensure single-element templates are lists
Ensures any list-assuming statements later on hold true even when there
is only a single template entry.
2020-02-21 10:50:28 -05:00
b438b9b4c2 Import gevent for production listener 2020-02-21 09:39:07 -05:00
56a9e48163 Normalize all return messages
Ensure all API return messages are formated the same: no "error", a
final period except when displaying Exception text, and a regular spaced
out format.
2020-02-20 22:42:19 -05:00
31a117e21c Fix call to config dictionary from pvc_api 2020-02-20 15:11:20 -05:00
8678dedfea Revert "Implement wait for node coordinator transition"
This reverts commit 0aefafa7f777157776084db846240dd027b81fe3.

This does not work since the API goes away during the transition.

References #72
2020-02-19 10:50:21 -05:00
0aefafa7f7 Implement wait for node coordinator transition
References #72
2020-02-19 10:50:04 -05:00
99f579e41a Add wait support to API commands
References #72
2020-02-19 09:51:42 -05:00
097f0d9be4 Fix bug with script load from database 2020-02-18 20:39:36 -05:00
ca68321be3 Allow modification of system templates
Closes #82
2020-02-18 16:18:27 -05:00
b322841edf Complete integration of OVA provisioner
Finishes a basic form of OVA provisioning within the existing create_vm
function. Future plans should include separating out the functions and
cleaning them up a bit more, but this is sufficient for basic operation.

Closes #71
2020-02-18 14:42:45 -05:00
24c86f2c42 Remove obsolete print statement 2020-02-17 23:25:27 -05:00
db558ec91f Complete implementation of OVA handling
Add functions for uploading, listing, and removing OVA images to the API
and CLI interfaces. Includes improved parsing of the OVF and creation of
a system_template and profile for each OVA.

Also modifies some behaviour around profiles, making most components
option at creation to support both profile types (and incomplete
profiles generally).

Implementation part 2/3 - remaining: OVA VM creation

References #71
2020-02-17 23:22:50 -05:00
59ca296c58 Add basic OVA profile support 2020-02-17 12:00:51 -05:00
d975f90f29 Add database fields for OVA storage 2020-02-17 11:27:35 -05:00
8125aea4f3 Clean up some database columns 2020-02-16 19:19:04 -05:00
f3de900bdb Import all database models 2020-02-16 19:15:21 -05:00
560cb609ba Add database management with SQLAlchemy
Add management of the pvcprov database with SQLAlchemy, to allow
seamless management of the database. Add automatic tasks to the postinst
of the API to execute these migrations.
2020-02-15 22:51:27 -05:00
bd8536d9d1 Add OVA upload to API (initial)
Initial, very barebones OVA parsing and image creation.

References #71
2020-02-15 02:10:14 -05:00
b29c69378d Just describe the body in words 2020-02-09 21:08:27 -05:00
ad60f4b1f1 Try again with just query 2020-02-09 21:06:33 -05:00
68638d7760 Use in: body for body contents 2020-02-09 21:05:15 -05:00
602c2f9d4a Use request instead of requestBody 2020-02-09 21:02:13 -05:00
c979fed10a Use proper requestBody description of file 2020-02-09 20:59:03 -05:00
1231ba19b7 Ensure image_format is mandatory
References #68
2020-02-09 20:45:43 -05:00
e419855911 Support converting types during upload
Allow the user to specify other, non-raw files and upload them,
performing a conversion with qemu-img convert and a temporary block
device as a shim (since qemu-img can't use FIFOs).

Also ensures that the target volume exists before proceeding.

Addresses #68
2020-02-09 20:29:12 -05:00
49e5ce1176 Support uploading disk images to volumes in API
Addresses #68
2020-02-09 13:45:04 -05:00
eeb8879f73 Move run_os_command to common functions
References #80
2020-02-08 23:33:15 -05:00
26c2c2c295 Further split API so only Flask can be loaded 2020-02-08 20:36:53 -05:00
4f25c55efc Fix startup of API daemon
References #79
2020-02-08 20:27:45 -05:00
3532dcc11f Update startup of API and Swagger generator
References #79
2020-02-08 19:52:15 -05:00
ce985234c3 Use consistent naming of components
Rename "pvcd" to "pvcnoded", and "pvc-api" to "pvcapid" so names for the
daemons are fully consistent. Update the names of the configuration
files as well to match this new formatting.

References #79
2020-02-08 19:34:07 -05:00