| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add new parameters to the config file ogcli.json with the
following default values:
'local_live': '/var/www/html/ogrelive'
'server_live': 'https://opengnsys.soleta.eu/ogrelive'
Add command to install the files of a live system. Example:
ogcli install live --name ogrelive-6.1.0-26
Perform an update if live files are already present.
Add command to delete the files of a live system. Example:
ogcli delete live --name ogrelive-6.1.0-26
Update ogcli list live to show the lives in the server when
invoked with the --remote flag. Example:
ogcli list live --remote
|
|
|
|
|
| |
Move the configuration into its own file so it is easier to access
from multiple files.
|
|
|
|
|
|
|
|
|
|
| |
propagate a returncode in each operation and make it the
returncode of the program.
Prevent sys.exit calls in post(), get() and delete() request
handlers to enable cleanup code and error handling. Keep a basic
error log inside the request functions if the connection can't
be established or if the response contains an error code.
|
|
|
|
|
| |
Use the word "scope" to keep the format coherent with the other
commands.
|
|
|
|
|
|
| |
server IP is now inferred from what it is reachable, remove this command.
this revisits a721957cc469 ('cli: add server commands')
|
|
|
|
|
|
|
|
| |
Add repo update.
Example command:
update repo --id 20 --address 192.168.1.189 192.168.1.191 --name test --center 1
Use addr instead of ip to pass a list of addresses.
|
|
|
|
|
|
|
|
|
|
| |
Implement a --client-ip filter to ease the task of finding the
hierarchy associated to a client or list of clients.
Usage:
/ogcli list scopes --client-ip 10.141.10.23
/ogcli list scopes --client-ip 10.141.10.23 --client-ip 10.141.10.22
|
|
|
|
|
|
| |
The POST handling logic didn't check for empty responses before
printing its contents resulting in a line of whitespace being
written in the output of the program.
|
|
|
|
|
| |
The argument was called 'send_obj' probably due to copypaste.
The rename aims to provide a better name for the command.
|
|
|
|
|
|
| |
By using the word 'request' the command becomes more semantic and
represents the 'best effort' nature of the communication with
ogserver.
|
|
|
|
|
|
| |
example to boot OS from 10.141.10.22 disk 1 partition 2
send session --client-ip 10.141.10.22 --disk 1 --part 2
|
|
|
|
|
| |
Expand of the update command to be able to modify the values of
previous folder, room and center configurations.
|
|
|
|
|
|
|
|
|
|
|
|
| |
add command to add folders
add folder --name test --room-id 123
to delete
delete folder --id 456
you can fetch the id with 'list scopes'
|
|
|
|
| |
use opengnsys@soleta.eu email instead of info@soleta.eu
|
|
|
|
|
|
| |
Add new command to display the available live images:
# ogcli list live
|
|
|
|
| |
list servers already provides the same.
|
|
|
|
|
|
| |
Allow to delete a repository with:
$ ogcli delete repo --id 10
|
|
|
|
|
|
| |
Delete a client with command:
$ ogcli delete client --ip 1.2.3.4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new client with command:
$ ogcli add client --repo-id <repo id>
--netmask <netmask>
--room-id <room id>
--hostname <hostname>
--mac <mac address>
--ip <ip address>
--boot-mode <boot mode>
For example: To add a new client with hostname "javipc", netmask
255.255.255.0, mac address a2:54:00:2e:05:7a, ip address 192.168.56.101,
assign it to repo id 1, room id 1 and set its boot mode to oglive
use:
$ ogcli add client --hostname javipc --netmask 255.255.255.0 --mac
a2:54:00:2e:05:7a --ip 192.168.56.101 --repo-id 1 --room-id 1
--boot-mode oglive
Notes:
- ogserver API REST json payload does not allow to specify a server
(table 'entorno') for the client. It will automatically assign
client to server with id 1
- ogserver API REST json payload specifies mac address without ':'.
- payload must contain 'netiface', ogcli specifies 'eth0' is specified
which is the default value in netiface column in db (table 'ordenadores')
- netdriver column uses "generic" as default, this field is not used
anymore, but it is set to "generic" by now.
- ogserver should validate that boot mode set is correct.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
add functionality to add and remove a room
to add a new room use the command: ogcli add room --name <name>
--netmask <netmask> --center <center> --gateway <gateway> [--location
<location>] [--ntp <ntp>] [--dns <dns>] [--group <group>]
for instance, to create a room with name 'dummyroom', netmask
'255.255.255.0' and gateway 10.141.10.1 that is inside the center with
id 1, use:
$ ogcli add room --name dummyroom --netmask 255.255.255.0 --gateway
10.141.10.1 --center 1
Optionally, it is possible to provide additional information such as
location (--location <location>), ntp server (--ntp <ntp>), dns server
(--dns <dns>), and a group to contain the room (--group <group>).
to delete a room use: ogcli delete room --id <id>
for instance, to delete room with id 4 use:
$ ogcli delete room --id 4
|
|
|
|
|
|
|
|
| |
ogCLI displays a message like "Cannot connect to ogServer: [...]" when
ogServer replies with something different from 2XX.
Fix these strings because ogServer is actually connected and replying to
an ogCLI request.
|
|
|
|
|
|
|
|
|
| |
command to delete center
ogcli delete center --id <center id>
To delete the center with id 6
$ ogcli delete center --id 6
|
|
|
|
|
|
|
|
|
| |
command to add center, specifying name and optionally a description
ogcli add center --name <name> [--comment <name>]
For example, to add a center with name "foocenter" and comment "foocenter description" type
$ ogcli add center --name foocenter --comment "foocenter description"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
User can add a new repository to the database using "ogcli add repo":
$ ogcli add repo --name ogcli --address 10.10.10.10
{
"center": 1,
"id": 13,
"ip": "10.10.10.10",
"name": "ogcli"
}
The --center optional parameter is used to set the center column of
"repositorios" table in the database to the specified value. If this
parameter is missing ogServer API will default to center with id 1 (the
default center). This is to not break the repository in the legacy
webconsole users.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A user can list repos using "ogcli list repos":
$ ogcli list repos
{
"repositories": [
{
"id": 1,
"ip": "10.141.10.1",
"name": "Repositorio (Default)"
},
{
"id": 3,
"ip": "127.0.0.1",
"name": "dummy"
},
{
"id": 4,
"ip": "192.168.21.21",
"name": "helloworld"
}
]
}
The repository of a client or group of clients in a room is configured
using "ogcli set repo --id <id> [--client-ip <ip address>, --room-id
<room id>]:
$ ogcli set repo --id 4 --room-id 1
|
|
|
|
|
|
|
| |
Some subcommands need following arguments (e.g.: ogcli list ...), check
if following arguments are present. If no required following argument is
detected then print an error message, show help and exit with status
code 1.
|
|
|
|
|
|
| |
For the delete subcommand: s/remove/delete
For the add subcommand: s/remove/add
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add OgServer class inside cli/objects/server.py
This OgServer class implements add, list, set and delete commands
related to the server API (/server and /client/server) exposed by the
ogServer. These server endpoints correspond with the "entornos" table and
"identorno" foreign key in the "ordenadores" tables.
To list all rows from the "entornos" table. i.e: Listing all stored
addresses for the ogServer:
ogcli list servers
{
"servers": [
{
"address": "192.168.2.240",
"id": 1
},
{
"address": "1.1.1.1",
"id": 2
}
]
}
To store a new ip address for the ogServer, ogCLI will reply with the
new id:
ogcli add server --address "10.141.10.1"
{"id", "2"}
To set a client's associated ogServer address using the server id:
ogcli set server --id 2 --client-ip 10.141.10.100
To set the associated server of a whole room use --room-id parameter:
ogcli set server --id 2 --room-id 1
To remove any existing address (which is not currently set as the
ogServer addres for any client) using the server id:
ogcli delete server --id 2
To determine a client's associated server just list the client's
information (this requires an updated ogServer):
ogcli list client --client-ip 10.141.10.100
{
"boot": "oglive",
"center": 1,
...
"server_id": 1
}
|
|
|
|
|
|
|
| |
Add delete function to OgRest class. Enable ogCLI to send HTTP
requests using DELETE as request verb.
Encapsulates requests python module .delete() method.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Image creation example:
ogcli create image
--disk
--part 1
--name 18oct2
--desc 18oct2
--repo-id 1
--client-ip 192.168.56.11
Image update example:
ogcli update image
--disk 1
--part 1
--id 20
--client-ip 192.168.56.11
|
|
|
|
|
|
|
|
|
| |
Takes usual client options
(--client-ip, --room-id, --center-id)
Example:
> ogcli send reboot --client-ip 192.168.56.11
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use autopep8 for coding format, and only for whitespace changes. This
change drops use of tabs in favor of spaces.
Doesn't use autopep8 --aggresive option.
Format command:
$ autopep8 --inline --recursive .
When using git-blame, use --ignore-rev in order to ignore this
reformatting commit.
|
|
|
|
|
|
| |
Send refresh to a given client.
$ ogcli send refresh --client-ip 192.168.56.11
|
|
|
|
| |
Update license header in files.
|
|
|
|
|
|
|
|
| |
"ogcli set modes ..." should be "ogcli set mode ..." because clients
only have one mode assigned at a time.
To not break the backwards compatibility, this commits adds "set mode"
but maintains "set modes".
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Enables sending format and partition commands to the ogServer.
Syntax: ogcli setup disk {options}
Options are:
--type [{dos,gpt}] Disk partition scheme
--num [NUM] Disk number (defaults to 1)
--format [FORMAT] Indicates which partitions to reformat if they
are already present. Use --part alone to mean all
partitions.
--part PART [PART ...]
Partition definition (syntax:
"num,part_scheme,fs,size")
size is specified as a positive digit followed by a size unit
like [MGT]
512M, 50G, 1T, etc.
ogcli accepts {LINUX,WINDOWS,EFI,CACHE} as part types and {EXT4,
NTFS, FAT32, CACHE} as filesystem types inside the partition
definition string
1,LINUX,EXT4,50G => partition 1, of type linux with ext4 fs of
50 GB size
If you wanted to add a partition cache (OpenGnsys usually
mandates this partition to be number 4) you can omit partitions
up to that number and ogcli will fill with EMPTY partitions.
So if you define the following parts:
--part 1,...
--part 4,...
ogcli will fill parts 2 and 3 with EMPTY part type and fs.
Client selection argument follow previous used options
--center-id CENTER_ID
--room-id ROOM_ID
--client-ip CLIENT_IP
|
|
|
|
|
|
|
|
|
|
| |
Enables sending poweroff commands to clients.
Only arguments required are the usual client selection like:
--client-ip
--room-id
--center-id
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Enables creation of images using /image/create from ogServer API.
Summary of the options:
--disk
Disk number
--part
Partition number
--name
Image name which will be used for the .img file.
--desc
Description of the image. This option enables ogServer to store
an entry in the database regarding this image.
--repo
Optional. Holds the ip address of the repo which will store the
created image. Defaults to ogserver address specified inside
ogcli.json
--client-ip
Client ip for which we want to create a partition image
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Enables consuming /client/setup API from ogServer in order to fetch
partition and disk setup information from a given client.
Example, if pc11 is a client with 1 disk, 4 part (1:linux,2-3:empty,4:cache):
ogcli list disk --client-ip 192.168.56.11
{
"partitions": [
{
"disk": 1,
"partition": 0,
"code": 1,
"size": 52428800,
"used_size": 0,
"filesystem": 0,
"os": 0,
"image": 0,
"software": 0
},
{
"disk": 1,
"partition": 1,
"code": 131,
"size": 40000000,
"used_size": 4,
"filesystem": 6,
"os": 8,
"image": 0,
"software": 0
},
{
"disk": 1,
"partition": 2,
"code": 0,
"size": 0,
"used_size": 0,
"filesystem": 1,
"os": 0,
"image": 0,
"software": 0
},
{
"disk": 1,
"partition": 3,
"code": 0,
"size": 0,
"used_size": 0,
"filesystem": 1,
"os": 0,
"image": 0,
"software": 0
},
{
"disk": 1,
"partition": 4,
"code": 202,
"size": 10000000,
"used_size": 1,
"filesystem": 2,
"os": 0,
"image": 0,
"software": 0
}
]
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds cli capability to send image restore commands to the ogServer.
It has the following options:
--id
To specify image id
--disk
Target disk
--part
Target partition
--type
To specify type of restore to send. UNICAST-DIRECT or
UNICAST-CACHE are supported as of this patch.
--repo
Optional argument to specify image repo to fetch the image. This
applies for UNICAST-DIRECT cases. (not restoring from a cache
partition). If not specified it will default to rest.URL ip
(ie. ogServer ip)
--client-ip, --room-id and --center-id
Target client args
|
|
|
|
|
| |
ogServer exposes a list of known partition images at /images, use it to
implement 'list images' command.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
program name of subsequent parsers after the first one need their
"prog=" parameter specified so they do not show sys.argv[0] only.
With this patch, for example:
ogcli list --help
Shows:
usage: ogcli list [-h] {clients,scopes,modes,hardware,client}
...
Instead of:
usage: ogcli [-h] {clients,scopes,modes,hardware,client}
...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Builds a json payload to consume the ogServer API to send
WoL packets.
Adds 'send' as a command:
ogcli send
Adds a wol object for to the 'send' command, so that sending a wol can
be specified as:
ogcli send wol
* WoL packet type is specified with --type option.
* Specifying targets follows same parameters as 'set modes' with:
--client-ip
--room-id
--center-id
|
|
|
|
|
|
|
|
| |
This requests GET /client/properties by calling something like:
ogcli list client --id=6
It is important to notice that 'id' must be a "computer" type
scope id.
|
|
|
|
|
|
|
| |
This requests GET /hardware by calling something like:
ogcli list hardware --scope-id=6
It is important to notice that 'scope-id' must be a "computer" type scope id.
|
|
|
|
|
|
|
| |
Instead of using query strings we use a json body for GET HTTP requests. This is
allowed under RFCs 7230-7237.
https://stackoverflow.com/questions/978061/http-get-with-request-body
|
|
|
|
|
| |
This requests POST /modes and changes a scope mode by calling something like:
ogcli set modes --scope-id=1 --scope-type=computer --mode=pxe
|
|
|
|
| |
This is a wrapper that provides HTTP POST requests.
|
| |
|
|
This prefix is redundant on almost every file, so the prefix is removed from
filenames and imports.
|