Commit Graph

142 Commits

Author SHA1 Message Date
Joshua Boniface e1c7705c3e Add missing return value 2020-01-04 11:48:13 -05:00
Joshua Boniface 139672d8c9 Fix bug in function argument order 2020-01-04 11:43:35 -05:00
Joshua Boniface 19ea01e17e Don't strip down single-element lists
This is causing problems, so don't do it.
2020-01-04 11:14:55 -05:00
Joshua Boniface e4a83bb063 Use different MAC prefixes for MAC templates 2020-01-04 10:42:04 -05:00
Joshua Boniface a6b6c54422 Use consistent messages and formatting 2020-01-03 13:59:32 -05:00
Joshua Boniface c9b8355ff0 Fix bad handling of Nonetype 2020-01-03 12:07:32 -05:00
Joshua Boniface 816dbac912 Remove explicit flask.jsonify 2020-01-03 12:00:06 -05:00
Joshua Boniface 7ed6308e80 Correct handling of template arguments 2020-01-03 11:55:41 -05:00
Joshua Boniface 9b8dec8991 Add missing reqargs argument 2020-01-03 11:50:13 -05:00
Joshua Boniface 5d92a4aa62 Ensure zk_conn handling is consistent 2020-01-02 12:13:11 -05:00
Joshua Boniface e550d4589d Move userdata from templates
This arrangement was driving me somewhat mad; make userdata just like
script in that it is not a "template".
2019-12-30 15:01:28 -05:00
Joshua Boniface a661fec105 Handle boolean config values properly 2019-12-30 09:34:45 -05:00
Joshua Boniface 6de65378ca Fix bad metadata documentation 2019-12-29 20:58:02 -05:00
Joshua Boniface 3b08e887f8 Add cluster status to API 2019-12-29 20:52:05 -05:00
Joshua Boniface e29405c1ed Add missing argument to net_modify 2019-12-27 12:18:01 -05:00
Joshua Boniface e82b851643 Don't bother splitting name_servers 2019-12-27 12:15:57 -05:00
Joshua Boniface bc22c008dd Split the name_servers in the right place 2019-12-27 12:14:34 -05:00
Joshua Boniface 33e5dcd5e8 Add missing reqargs to network put 2019-12-27 12:12:07 -05:00
Joshua Boniface 1d4e4d178c Correct bad comma 2019-12-26 18:58:46 -05:00
Joshua Boniface 5e226af4a1 Pass VM argument into function 2019-12-26 18:56:34 -05:00
Joshua Boniface 89f598e429 Fix another instance of selector name 2019-12-26 18:55:01 -05:00
Joshua Boniface f178436025 Fix selector name in POST 2019-12-26 18:53:35 -05:00
Joshua Boniface c9fb9600a4 Fix two small bugs and regen docs 2019-12-26 18:45:11 -05:00
Joshua Boniface e8d8fb161b Add wait functionality to API domain-state 2019-12-25 20:24:12 -05:00
Joshua Boniface b1c19a21ba Move int cast to helper try block 2019-12-25 19:31:51 -05:00
Joshua Boniface 1f77b382ef Support providing console log lines from API 2019-12-25 19:13:53 -05:00
Joshua Boniface b92c1876d6 Make sure we return True from init function 2019-12-25 12:18:26 -05:00
Joshua Boniface 9b81a02805 Disable doc endpoint to avoid flask_swagger dep 2019-12-24 11:19:06 -05:00
Joshua Boniface f48d1e6d40 Add documentation for API_Doc endpoint 2019-12-24 08:59:17 -05:00
Joshua Boniface 914b3d84e1 Fix URL hosts 2019-12-23 21:17:30 -05:00
Joshua Boniface 142e1f186d Fix in-app host URL 2019-12-23 21:15:26 -05:00
Joshua Boniface 398fb2dfe9 Set URL and information in local swagger.json 2019-12-23 21:09:58 -05:00
Joshua Boniface 57127d2fa8 Move gen-doc helper script 2019-12-23 20:51:44 -05:00
Joshua Boniface a6683d5b17 Rebuild API using Flask-RESTful and Swagger docs 2019-12-23 20:43:20 -05:00
Joshua Boniface 7901ffb5e3 Handle the list of node_limits even better 2019-12-19 13:22:38 -05:00
Joshua Boniface 796fa4692f Pass remaining required args to vm_define 2019-12-19 11:53:24 -05:00
Joshua Boniface 78089afb4e Remove spurious argument to vm_define 2019-12-19 11:43:59 -05:00
Joshua Boniface a2b30158f8 Move schema file 2019-12-14 16:47:32 -05:00
Joshua Boniface 0727a7f6ed Move all provisioner API functionality into main 2019-12-14 14:12:55 -05:00
Joshua Boniface 1fb560e996 Add DNS nameservers to networks 2019-12-08 23:55:45 -05:00
Joshua Boniface 45ef7f2a30 Use better layout in entrypoint 2019-10-13 12:15:54 -04:00
Joshua Boniface ad5f232c03 Update header names 2019-10-13 12:11:23 -04:00
Joshua Boniface 03447d3374 Update copyright string year to include 2019 2019-10-13 12:09:51 -04:00
Joshua Boniface a9e9198970 Rename API library file 2019-10-13 12:07:57 -04:00
Joshua Boniface e5393082b6 Use build-in selector and respect limits in client
Use the new built-in selector option, as well as respecting node limits,
when performing migrate or move actions on a VM via the clients.
2019-10-12 01:45:44 -04:00
Joshua Boniface 5995353597 Implement VM metadata and use it
Implements the storing of three VM metadata attributes:
1. Node limits - allows specifying a list of hosts on which the VM must
run. This limit influences the migration behaviour of VMs.
2. Per-VM node selectors - allows each VM to have its migration
autoselection method specified, to automatically allow different methods
per VM based on the administrator's preferences.
3. VM autorestart - allows a VM to be automatically restarted from a
stopped state, presumably due to a failure to find a target node (either
due to limits or otherwise) during a flush/fence recovery, on the next
node unflush/ready state of its home hypervisor. Useful mostly in
conjunction with limits to ensure that VMs which were shut down due to
there being no valid migration targets are started back up when their
node becomes ready again.

Includes the full client interaction with these metadata options,
including printing, as well as defining a new function to modify this
metadata. For the CLI it is set/modified either on `vm define` or via the
`vm meta` command. For the API it is set/modified either on a POST to
the `/vm` endpoint (during VM definition) or on POST to the `/vm/<vm>`
endpoint. For the API this replaces the previous reserved word for VM
creation from scratch as this will no longer be implemented in-daemon
(see #22).

Closes #52
2019-10-12 01:17:39 -04:00
Joshua Boniface aaf9f5e43b Add clone volume to API 2019-10-10 14:37:35 -04:00
Joshua Boniface 3b7c1adf71 Implement configurable replcfg (client-side)
Implements administrator-selectable replication configurations for new
pools in PVC clusters, overriding the default of copies=3,mincopies=2.
2019-08-23 14:12:15 -04:00
Joshua Boniface ea2426fa73 Implement additional functions
1. VM state
2. VM node
3. Lock flush
2019-08-07 14:46:20 -04:00
Joshua Boniface a3c96764e0 Implement getting Node states via API 2019-07-28 23:31:59 -04:00
Joshua Boniface 47c72d9b68 Move token authentication to X-Api-Token header
Implements #46
2019-07-28 23:12:53 -04:00
Joshua Boniface 2dbf276e51 Implement snapshot renaming
[3/2] Implements #44
2019-07-28 23:00:35 -04:00
Joshua Boniface 4937c01075 Remove junk whitespace 2019-07-26 15:13:21 -04:00
Joshua Boniface d5f263bdd6 Implement Ceph volume resize and rename in clients
[1/2] Implements #44
2019-07-26 15:13:21 -04:00
Joshua Boniface 6b41f6556c Handle returning empty lists better (404) 2019-07-26 13:15:54 -04:00
Joshua Boniface b7960cd221 Use only one element in OSD state 2019-07-26 11:57:14 -04:00
Joshua Boniface 17b463afd4 Replace retcodes with 400; implement OSD status 2019-07-26 11:23:19 -04:00
Joshua Boniface 4cf3ade10a RESTify the remaining components 2019-07-26 11:00:11 -04:00
Joshua Boniface d43ced176f RESTify the network endpoints; remove some cruft 2019-07-26 09:41:46 -04:00
Joshua Boniface 375bbf4b82 Fix quoting bugs in API 2019-07-25 16:50:17 -04:00
Joshua Boniface 1d944f5627 Fully remove dump endpoing; data is now in output 2019-07-25 16:46:03 -04:00
Joshua Boniface f4d63b9088 Remove vm_dump API function 2019-07-25 15:45:31 -04:00
Joshua Boniface dff1c68f6e RESTify the VM functions and enable debug mode 2019-07-25 15:42:17 -04:00
Joshua Boniface 9ccf3390ab Add storage prefix to Ceph commands
Add the "storage" prefix to all Ceph-based commands in both the CLI and
the API. This partially abstracts the storage subsystem from the Ceph
tool specifically, should future storage subsystems be added or changed.
The name "ceph" is still used due to the non-abstracted components of
the Ceph management, e.g. referencing Ceph-specific concepts like OSDs
or pools.
2019-07-10 15:14:17 -04:00
Joshua Boniface b0bdf72310 Fix bad variable name 2019-07-08 22:24:18 -04:00
Joshua Boniface 7889bd88e3 Use equality instead of in 2019-07-08 22:22:43 -04:00
Joshua Boniface 31b4dd9aed Show radosdf output in clients 2019-07-08 10:59:49 -04:00
Joshua Boniface 771c193343 Add even nicer startup message 2019-07-07 15:46:38 -04:00
Joshua Boniface c9bad6edf9 Log messages during startup 2019-07-07 15:44:47 -04:00
Joshua Boniface c3e86be6a3 Disable debugging of API 2019-07-07 02:26:46 -04:00
Joshua Boniface 425392f2e6 Better handle auth enabling 2019-07-07 00:16:50 -04:00
Joshua Boniface 4724f79877 Change order in sample yaml 2019-07-07 00:10:01 -04:00
Joshua Boniface 9215931ceb Support token authentication with login/logout 2019-07-07 00:08:02 -04:00
Joshua Boniface 8aedd78879 Support SSL for the API 2019-07-06 23:28:29 -04:00
Joshua Boniface 837b47c366 Use coordinators list like node daemon 2019-07-06 02:35:37 -04:00
Joshua Boniface e6012965f1 Add YAML header to sample config files 2019-07-06 02:24:35 -04:00
Joshua Boniface 9d4acc91a5 Correct typo 2019-07-06 02:12:24 -04:00
Joshua Boniface 582a9f4f75 Make defaults nicer 2019-07-06 02:11:42 -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 f5644e53bf Add unit file for API client daemon 2019-07-05 22:25:07 -04:00
Joshua Boniface 2ce08b6369 Implement API for Ceph functions 2019-07-05 22:14:58 -04:00
Joshua Boniface 4e94331d1a Implement API for network functions 2019-07-05 21:39:04 -04:00
Joshua Boniface b7480b3bbc Implement all VM API functions 2019-07-05 18:24:14 -04:00
Joshua Boniface 061b4eb61e Refactor API into separate files
Make it easier to separate the model (i.e. API endpoints) from the
controller (i.e. the actual functions which talk to ZK). Helps to keep
the main API file smaller and more regular.
2019-07-05 14:11:01 -04:00
Joshua Boniface e31e1264e5 RESTify the API removing specific list endpoints 2019-07-05 13:20:06 -04:00
Joshua Boniface c7269a092e Use request.values instead of request.args 2019-07-05 13:05:33 -04:00
Joshua Boniface 193567f965 Further work on API client
Add list and info endpoints for all areas; add dummy endpoints for all
remaining endpoints.
2019-07-05 01:19:39 -04:00
Joshua Boniface 8d5549c68f Implement better arg handling and lists 2019-07-04 12:56:41 -04:00
Joshua Boniface ae1650759b Add new endpoints 2019-05-10 23:26:59 -04:00
Joshua Boniface e41b3053f7 Update methods to POST where relevant 2019-04-12 12:27:49 -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