Ken Moore
f30b6cf947
Finish up the overhaul of the Events subsystem and start adding in the Life Preserver event handling/systems.
2016-01-18 12:37:40 -05:00
Kris Moore
84cb7bb19d
Add new API call to run replication tasks manually
...
REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
"host" : "10.0.10.100",
"dataset" : "mypool",
"action" : "runreplication"
}
REST Response:
-------------------------------
{
"args": {
"runreplication": {
"dataset": "mypool",
"host": "10.0.10.100"
}
}
}
WebSocket Request:
-------------------------------
{
"id" : "fooid",
"name" : "lifepreserver",
"args" : {
"host" : "10.0.10.100",
"dataset" : "mypool",
"action" : "runreplication"
},
"namespace" : "sysadm"
}
WebSocket Response:
-------------------------------
{
"args": {
"runreplication": {
"dataset": "mypool",
"host": "10.0.10.100"
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
2016-01-15 12:11:01 -05:00
Kris Moore
f31d53587f
Add new API call to remove a replication task / target
...
REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
"dataset" : "tank",
"host" : "192.168.0.10",
"action" : "removereplication"
}
REST Response:
-------------------------------
{
"args": {
"removereplication": {
"dataset": "tank",
"host": "192.168.0.10"
}
}
}
WebSocket Request:
-------------------------------
{
"id" : "fooid",
"args" : {
"action" : "removereplication",
"dataset" : "tank",
"host" : "192.168.0.10"
},
"name" : "lifepreserver",
"namespace" : "sysadm"
}
WebSocket Response:
-------------------------------
{
"args": {
"removereplication": {
"dataset": "tank",
"host": "192.168.0.10"
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
2016-01-15 12:01:28 -05:00
Kris Moore
97e8af86cf
New API call for lifepreserver. This one lists the replication
...
targets on a system
While here, update api-test.sh to save response to /tmp/api-response, so we dont
need to always cut-n-paste
REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
"action" : "listreplication"
}
REST Response:
-------------------------------
{
"args": {
"listreplication": {
"tank1->192.168.0.9": {
"dataset": "tank1",
"frequency": "22",
"host": "192.168.0.9",
"port": "22",
"rdset": "tank/backups",
"user": "backups"
}
}
}
}
WebSocket Request:
-------------------------------
{
"namespace" : "sysadm",
"args" : {
"action" : "listreplication"
},
"id" : "fooid",
"name" : "lifepreserver"
}
WebSocket Response:
-------------------------------
{
"args": {
"listreplication": {
"tank1->192.168.0.9": {
"dataset": "tank1",
"frequency": "22",
"host": "192.168.0.9",
"port": "22",
"rdset": "tank/backups",
"user": "backups"
}
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
2016-01-15 10:40:03 -05:00
Kris Moore
48d7108529
Add a new API call to (re)init the replication on the remote
...
side via life-preserver
dataset = The local dataset/pool you are replicating
host = The target for replication, either IP or hostname
REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
"dataset" : "tank1",
"host" : "192.168.0.9",
"action" : "initreplication"
}
REST Response:
-------------------------------
{
"args": {
"initreplication": {
"dataset": "tank1",
"host": "192.168.0.9"
}
}
}
WebSocket Request:
-------------------------------
{
"id" : "fooid",
"args" : {
"host" : "192.168.0.9",
"dataset" : "tank1",
"action" : "initreplication"
},
"namespace" : "sysadm",
"name" : "lifepreserver"
}
WebSocket Response:
-------------------------------
{
"args": {
"initreplication": {
"dataset": "tank1",
"host": "192.168.0.9"
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
2016-01-14 15:17:25 -05:00
Ken Moore
ec7f25d804
Add a new API call: namespace=rpc, name=query
...
This will probe all the known subsystems and return which ones are currently available and what level of access the user has (read/write).
REST Request:
-------------------------------
PUT /rpc/query
{
"junk" : "junk"
}
REST Response:
-------------------------------
{
"args": {
"rpc/dispatcher": "read/write",
"rpc/syscache": "read",
"sysadm/lifepreserver": "read/write",
"sysadm/network": "read/write"
}
}
WebSocket Request:
-------------------------------
{
"id" : "fooid",
"name" : "query",
"namespace" : "rpc",
"args" : {
"junk" : "junk"
}
}
WebSocket Response:
-------------------------------
{
"args": {
"rpc/dispatcher": "read/write",
"rpc/syscache": "read",
"sysadm/lifepreserver": "read/write",
"sysadm/network": "read/write"
},
"id": "fooid",
"name": "response",
"namespace": "rpc"
}
2016-01-13 14:21:45 -05:00
Kris Moore
5bb6fb7d33
Add new API call for creating a replication task in Life-Preserver
...
host = <Remote hostname/ip>
port = <SSH port>
password = <Your SSH password>
dataset = <Local Dataset to replicate>
remotedataset = <Target location for remote dataset>
frequency = <time> XX/sync/hour/30min/10min/manual
XX= Time to perform replication (in 24 hour notation)
sync= Do replication with snaps (Not recommended for frequent snaps)
hour= Replicate hourly
30min= Replicate every 30 minutes
10min= Replicate every 10 minutes
manual= Only replicate when requested by user
REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
"action" : "addreplication",
"password" : "mypass",
"dataset" : "tank1",
"remotedataset" : "tank/backups",
"user" : "backupuser",
"frequency" : "22",
"port" : "22",
"host" : "192.168.0.10"
}
REST Response:
-------------------------------
{
"args": {
"addreplication": {
"frequency": "22",
"host": "192.168.0.10",
"ldataset": "tank1",
"port": "22",
"rdataset": "tank/backups",
"user": "backupuser"
}
}
}
WebSocket Request:
-------------------------------
{
"namespace" : "sysadm",
"name" : "lifepreserver",
"args" : {
"action" : "addreplication",
"user" : "backupuser",
"dataset" : "tank1",
"frequency" : "22",
"port" : "22",
"password" : "mypass",
"host" : "192.168.0.10",
"remotedataset" : "tank/backups"
},
"id" : "fooid"
}
WebSocket Response:
-------------------------------
{
"args": {
"addreplication": {
"frequency": "22",
"host": "192.168.0.10",
"ldataset": "tank1",
"port": "22",
"rdataset": "tank/backups",
"user": "backupuser"
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
2016-01-12 16:53:46 -05:00
Kris Moore
4158f4589c
Add new API call to save system-wide settings for life-preserver
...
duwarn = XX (Percentage, 1-99)
email = Email address to send notifications to
emailopts = ALL/WARN/ERROR (All mail, warnings + errors, or errors only)
recursive = true/false (Do recursive operations on all ZFS snap)
REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
"emailopts" : "ALL",
"duwarn" : "70",
"recursive" : "true",
"action" : "savesettings",
"email" : "kris@example.org "
}
REST Response:
-------------------------------
{
"args": {
"savesettings": {
"duwarn": "70",
"email": "kris@example.org ",
"emailopts": "ALL",
"recursive": "true"
}
}
}
WebSocket Request:
-------------------------------
{
"args" : {
"emailopts" : "ALL",
"action" : "savesettings",
"duwarn" : "70",
"recursive" : "true",
"email" : "kris@example.org "
},
"id" : "fooid",
"namespace" : "sysadm",
"name" : "lifepreserver"
}
WebSocket Response:
-------------------------------
{
"args": {
"savesettings": {
"duwarn": "70",
"email": "kris@example.org ",
"emailopts": "ALL",
"recursive": "true"
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
2016-01-12 14:39:10 -05:00
Kris Moore
399bfb3814
Add new API call to remove ZFS snapshots from a dataset / pool
...
REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
"dataset" : "tank1/usr/jails",
"snap" : "auto-2016-01-09-18-00-00",
"action" : "removesnap"
}
REST Response:
-------------------------------
{
"args": {
"removesnap": {
"dataset": "tank1/usr/jails",
"snap": "auto-2016-01-09-18-00-00"
}
}
}
WebSocket Request:
-------------------------------
{
"args" : {
"snap" : "auto-2016-01-09-18-00-00",
"action" : "removesnap",
"dataset" : "tank1/usr/jails"
},
"name" : "lifepreserver",
"namespace" : "sysadm",
"id" : "fooid"
}
WebSocket Response:
-------------------------------
{
"args": {
"removesnap": {
"dataset": "tank1/usr/jails",
"snap": "auto-2016-01-09-18-00-00"
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
2016-01-12 13:51:24 -05:00
Kris Moore
c506bcccb5
Add new API call for reverting a dataset back to a
...
specific snapshot
REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
"snap" : "auto-2016-01-09-18-00-00",
"dataset" : "tank1/usr/jails",
"action" : "revertsnap"
}
REST Response:
-------------------------------
{
"args": {
"revertsnap": {
"dataset": "tank1/usr/jails",
"snap": "auto-2016-01-09-18-00-00"
}
}
}
WebSocket Request:
-------------------------------
{
"args" : {
"dataset" : "tank1/usr/jails",
"action" : "revertsnap",
"snap" : "auto-2016-01-09-18-00-00"
},
"namespace" : "sysadm",
"name" : "lifepreserver",
"id" : "fooid"
}
WebSocket Response:
-------------------------------
{
"args": {
"revertsnap": {
"dataset": "tank1/usr/jails",
"snap": "auto-2016-01-09-18-00-00"
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
2016-01-12 13:36:42 -05:00
Kris Moore
cbf3ce8b8b
Add new API call to schedule a cron scrub
...
Frequency Options: none, daily@XX, weekly@YY@XX, monthly@ZZ@XX
XX = Hour to execute, YY = Day of week to execute, ZZ = Day of month
REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
"action" : "cronscrub",
"pool" : "tank",
"frequency" : "daily@22"
}
REST Response:
-------------------------------
{
"args": {
"cronscrub": {
"frequency": "daily@22",
"pool": "tank"
}
}
}
WebSocket Request:
-------------------------------
{
"args" : {
"action" : "cronscrub",
"pool" : "tank",
"frequency" : "daily@22"
},
"namespace" : "sysadm",
"name" : "lifepreserver",
"id" : "fooid"
}
WebSocket Response:
-------------------------------
{
"args": {
"cronscrub": {
"frequency": "daily@22",
"pool": "tank"
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
2016-01-12 12:12:19 -05:00
Kris Moore
4c562a85b2
Add a new API call to create snapshot schedules for LifePreserver
...
REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
"pool" : "mytank",
"keep" : "10",
"frequency" : "daily@11",
"action" : "cronsnap"
}
REST Response:
-------------------------------
{
"args": {
"cronsnap": {
"frequency": "daily@11",
"keep": "10",
"pool": "mytank"
}
}
}
WebSocket Request:
-------------------------------
{
"args" : {
"action" : "cronsnap",
"keep" : "10",
"frequency" : "daily@11",
"pool" : "mytank"
},
"namespace" : "sysadm",
"name" : "lifepreserver",
"id" : "fooid"
}
WebSocket Response:
-------------------------------
{
"args": {
"cronsnap": {
"frequency": "daily@11",
"keep": "10",
"pool": "mytank"
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
2016-01-08 15:52:09 -05:00
Kris Moore
9160af8912
Add a new API call for sysadm/lifepserver which returns the system-wide
...
settings of the utility
REST Request:
-------------------------------
PUT /sysadm/lifepreserver
{
"action" : "settings"
}
REST Response:
-------------------------------
{
"args": {
"settings": {
"diskwarn": "85%",
"email": "WARN",
"emailaddress": "krismoore134@gmail.com ",
"recursive": "ON"
}
}
}
WebSocket Request:
-------------------------------
{
"id" : "fooid",
"args" : {
"action" : "settings"
},
"namespace" : "sysadm",
"name" : "lifepreserver"
}
WebSocket Response:
-------------------------------
{
"args": {
"settings": {
"diskwarn": "85%",
"email": "WARN",
"emailaddress": "krismoore134@gmail.com ",
"recursive": "ON"
}
},
"id": "fooid",
"name": "response",
"namespace": "sysadm"
}
2016-01-08 14:47:55 -05:00
Kris Moore
1ceb256922
Add the new listsnap API call
2016-01-08 13:48:51 -05:00
Kris Moore
528c247607
Add LifePreserver API first list-cron call
2016-01-05 13:19:01 -05:00
Ken Moore
b1e451b385
Adjust the new sysadm/network function a bit - just add proper error code handling if nothing was performed.
2016-01-04 15:07:53 -05:00
Ken Moore
ace6c2ca4c
Add a new subsystem to sysadm-server: the sysadm-network device information system.
...
To Access:
namespace="sysadm"
name="network"
args={"action" : "list-devices"}
Output arguments structure:
"<device name>" : {
"ipv4" : <value>,
"ipv6" : <value>,
"netmask" : <value>,
"description" : <value>,
"MAC" : <value>,
"status" : <value>,
"is_active" : [true/false],
"is_dhcp" : [true/false],
"is_wireless" : [true/false]
}
2016-01-04 14:29:04 -05:00
Ken Moore
8d57413401
A few more updates to the input message parsing systems for the server: Ensure that both the namespace and the name of the input message are passed through to the backend parser/system (if authorized).
2016-01-04 13:30:49 -05:00
Ken Moore
508e025cea
Make sure the port numbers get changed a bit, and fix some complication issues in the new backend.
2015-12-29 12:54:01 -05:00
Ken Moore
9a161644d1
Merge branch 'master' of github.com:pcbsd/sysadm
2015-12-17 17:16:06 -05:00
Ken Moore
39f36d1d4f
Furthur cleanup the sysadm subsystem request forwarding mechanisms so it is easier to extend later. The return/error code for each subsystem is not used yet - will finish that within the websocket later, but the general backend systems are now setup.
2015-12-17 17:12:19 -05:00
Kris Moore
a0ae49496b
Fix some issues compiling sysadm locally without it installed to
...
/usr/local
2015-12-17 14:19:29 -05:00
Ken Moore
f5dab0048c
Add a copy of the syscache-webclient server into the sysadm/src/server.
...
Also setup the server to make it easier to extend for API/library support in the backend. All backend functionality can now be added to the new "WebBackend.cpp" file (and WebSocket.h file for headers).
2015-12-15 13:06:42 -05:00