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
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.
Overload the add repo and delete repo commands to have
different functionality based on the flags.
Add a repo:
ogcli add repo --name test2 --address 192.168.9.140
Add addresses to repo with id 27:
ogcli add repo --address 192.168.9.141 192.168.9.142 --id 27
Delete address from repo with id 27:
ogcli delete repo --address 192.168.9.141 --id 27
Delete repo:
ogcli delete repo --id 27
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.
Older versions of Python can't handle interleaved quote types.
Use single quotes as external string delimiter and double quotes
in every part of the strings when quotation is needed.
Checks:
--type is gpt or dos.
--num must have numeric argument.
--part defines 4 coma-separated values.
--part number must be an integer.
--part number is not repeated between partitions.
--part partition type is a known type.
--part filesystem type is a known type.
--part size has a valid format.
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
Remove option to specify a repository when creating an image.
Remove option to specify a repository when updating an image.
These features is are not yet supported in ogserver.
With this commit, the image that is created/updated is assigned to the
same repo the client is assigned
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.
Try to reduce the usage of different parameter names due to the
OpenGnsys database using different column names for similar purposes.
Any database field regarding a description of some sort will use the
parameter --desc, even if the DB uses another column name (for example,
comment column in center table).
Use --folder parameter when requiring a folder id. The database uses
"grupo" as table name but present this to the user as folder, so use
--folder instead of --group.
Also, add 'location' field in the payload of "add room" command, it was
missing the addition of 'location' field in the JSON payload.
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
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
Every partition will be formatted since disk setup command was rewritten
into Python code in ogClient. This makes "ogcli setup disk" --format
parameter unusable.
As the time of this commit, for backward compatibility (with the legacy
web console interface) ogServer expects the "format" field inside the
partition json objects conforming the "partition_setup" array. For this
reason, ogCLI still adds the "format" field into the partition objects
present in the partition_setup array, but using a default value which
will have no effect whatsoever.
The specific subcommand name is missing in some of the subcommands help
message. For example:
$ ogcli list hardware
usage: ogcli [-h] --client-ip CLIENT_IP
ogcli: error: the following arguments are required: --client-ip
Fix this by adding the missing prog= parameter so argparse use this
instead of argv[0]. If no prog parameter is specified then argv[0] is
printed (i.e: "ogcli").