Commit Graph

74 Commits (b242ee9f6e1f84d7cbc6114cac1bc5300fa3afcc)

Author SHA1 Message Date
Alejandro Sirgo Rica b242ee9f6e change 'ogcli send' command into 'ogcli request'
By using the word 'request' the command becomes more semantic and
represents the 'best effort' nature of the communication with
ogserver.
2024-03-04 09:58:41 +01:00
Alejandro Sirgo Rica 9f78cc5ace add 'send session' to request the boot from a client's partition
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
2024-02-29 12:33:59 +01:00
Alejandro Sirgo Rica 48f596436c remove duplicated parse_args in repo.py and server.py
Remove the line 'parsed_args = parser.parse_args(args)' parsing the
command line arguments a second time when it is not needed.
2024-02-29 11:26:10 +01:00
Alejandro Sirgo Rica 9be4de87b7 ogcli: add update command for folder, room and center
Expand of the update command to be able to modify the values of
previous folder, room and center configurations.
2024-02-13 12:13:00 +01:00
Alejandro Sirgo Rica 569b0107c1 ogcli: validate integer type in every --id argument
missing validation of --id, user needs to supply an integer
2024-02-05 13:29:57 +01:00
Alejandro Sirgo Rica 4881610656 folder: add commands to create and delete folders
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'
2024-02-05 12:58:52 +01:00
Javier Hernandez 642b0a49d4 room: use room_id field in json
instead of group, which is not used by the ogserver anymore.
2024-01-11 17:41:17 +01:00
OpenGnSys Support Team c1aae6e35e src: update copyright statement
use opengnsys@soleta.eu email instead of info@soleta.eu
2024-01-02 14:00:53 +01:00
OpenGnSys Support Team 020592d6fc live: add command to list available live images
Add new command to display the available live images:

 # ogcli list live
2024-01-02 13:52:36 +01:00
OpenGnSys Support Team 76b4492fe6 cli: remove 'list server'
list servers already provides the same.
2024-01-02 13:38:36 +01:00
Javier Hernandez 717a1021d3 images: Remove option to specify repo
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
2023-12-21 16:58:50 +01:00
OpenGnSys Support Team cf4af2a057 images: use new POST image/update
use POST image/update when updating an image.
2023-12-19 12:49:03 +01:00
OpenGnSys Support Team 27f632e3ed repository: fix incorrect help
# ogcli delete repo -h
 [...]
     --id [ID]   room id in scopes

this is not the room id, it should be the repo id.
2023-12-01 10:38:40 +01:00
OpenGnSys Support Team 6b4a7a64ee repository: delete command
Allow to delete a repository with:

 $ ogcli delete repo --id 10
2023-11-30 22:22:45 +01:00
OpenGnSys Support Team 4286c45877 client: remove --netmask
This set from the room --netmask, this is obsolete, remove it.
2023-11-30 22:22:45 +01:00
OpenGnSys Support Team da8f8e8009 client: support for deleting clients
Delete a client with command:

 $ ogcli delete client --ip 1.2.3.4
2023-11-30 22:03:51 +01:00
Javier Hernandez 4bf4f91f54 client: support for adding clients
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.
2023-10-27 11:57:25 +02:00
Jose M. Guisado 37c4065f06 cli: objects: use --desc and --folder
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.
2023-10-19 13:36:00 +02:00
Javier Hernandez 1c2e5c4c96 cli: add room
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
2023-10-19 12:26:31 +02:00
Jose M. Guisado 7c30d56910 cli: fix messages when receiving an error response
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.
2023-10-18 10:41:26 +02:00
Javier Hernandez 181075e505 center: add delete command
command to delete center
ogcli delete center --id <center id>

To delete the center with id 6

$ ogcli delete center --id 6
2023-10-18 09:29:38 +02:00
Javier Hernandez 8be21d4ac5 cli: add center.py
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"
2023-10-18 09:29:38 +02:00
Jose M. Guisado e7c2ad0ee1 images: change --repo help message 2023-10-12 09:48:15 +02:00
Jose M. Guisado a4bf35ef28 repo: add add_repo function
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.
2023-10-11 17:50:47 +02:00
Jose M. Guisado 4e89fe44d0 cli: add repo.py object
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
2023-10-11 17:29:49 +02:00
Jose M. Guisado 68a9d6fe8f disks: remove --format parameter in setup disk
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.
2023-10-09 12:45:07 +02:00
Jose M. Guisado d259629445 cli: better error handling for subcommand args
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.
2023-10-06 11:30:43 +02:00
Jose M. Guisado 35b4b1422a cli: fix help message typos in some subcommands
For the delete subcommand: s/remove/delete

For the add subcommand: s/remove/add
2023-10-06 10:56:25 +02:00
Jose M. Guisado b1fc9cabb4 objects: add missing prog parameter in subcommands
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").
2023-10-05 11:21:19 +02:00
Jose M. Guisado a721957cc4 cli: add server commands
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
	}
2023-08-24 09:14:49 +02:00
Jose M. Guisado 563e30893d cli: add delete http method
Add delete function to OgRest class. Enable ogCLI to send HTTP
requests using DELETE as request verb.

Encapsulates requests python module .delete() method.
2023-08-24 09:14:36 +02:00
Jose M. Guisado 82e8880841 update image: add optional --backup parameter
Add support for backup image file when running the image update command.

For this optional parameter to be useful, the target ogServer
and ogClient must also support the 'backup' parameter. See commits:

ogServer 74b6e3ec7275164e2ecbf6f98b24357b2a9bb174
ogClient 035995fc8c55740693575ca5f7b408bfc46c1f7d
2023-07-20 12:05:45 +02:00
Jose M. Guisado dff298d421 create image: split into create and update
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
2022-10-20 12:25:10 +02:00
Jose M. Guisado 0c1a747a31 create image: add repository_id param for new images
Adds 'repository_id' parameter when creating a *new* image (ie: using
--desc).

Removes unused --repo parameter.

See ogServer commit: 52a38d3e574fb25b47d230bc87754583eb17b4a6
("Use the repository id on image creation")
2022-06-28 17:08:15 +02:00
Jose M. Guisado 8932e4c07e create image: --client-ip option is required
--client-ip option is required when parsing a 'create image' command,
it is the only client selection option for 'create image'
command.
2022-05-31 09:15:54 +02:00
Jose M. Guisado 2f824d8429 send: add send reboot
Takes usual client options
(--client-ip, --room-id, --center-id)

Example:

> ogcli send reboot --client-ip 192.168.56.11
2022-05-25 10:56:14 +02:00
Jose M. Guisado 7d11dc47e1 list modes: use print_json
Follows commit b765ee50d3
(utils: add print_json)
2022-05-20 10:28:40 +02:00
Jose M. Guisado d90ab82cec format: use autopep8
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.
2022-05-20 10:22:42 +02:00
Jose M. Guisado f88bcf78ac set mode: fix --help
'set mode' --help does not show the correct program name:

    ogcli [-h] [--center-id CENTER_ID] [--room-id ROOM_ID]
    ^^^^^      [--client-ip CLIENT_IP] --mode MODE

Adds full program name (ogcli set mode) in missing prog option
when creating the argparse object.
2022-05-20 08:58:16 +02:00
Jose M. Guisado 397663fd37 send: add send refresh
Send refresh to a given client.

$ ogcli send refresh --client-ip 192.168.56.11
2022-05-20 08:52:23 +02:00
Jose M. Guisado e7b302c8b8 setup disk: fix padding
ogServer expects a 4-partition setup. When specifying less than that,
the partition setup needs to be padded with EMPTY partitions.

Fixes a bug in which this padding is not valid.
2022-05-17 11:40:07 +02:00
Jose M. Guisado b765ee50d3 utils: add print_json
Adds a pretty printing function for JSON data.

Replaces print for print_json in corresponding cli objects.

Follows commit 828d6c0ce7
("list scopes: pretty print scope tree")
2022-05-17 11:24:49 +02:00
Jose M. Guisado d8efd3321c create image: fix --repo default ip value
rest.URL is the ip and port of the ogServer like: 192.168.56.10:8888,
specified in ogcli.json.

As long as the host and port is specified in rest.URL, split by the ':'
character and extract the ip.

Fixes OpenGnsys clients failing to execute the command due to invalid
repository IP being fed to the underlying bash scripts.
2022-05-16 15:18:02 +02:00
Jose M. Guisado 828d6c0ce7 list scopes: pretty print scope tree
Use json module to pretty print the scope tree. JSON keys are ordered
and two-space indentation is used.
2022-05-16 15:17:58 +02:00
Jose M. Guisado eb5091d374 restore image: add tiptorrent transfer method
Makes --type optional, defaults to tiptorrent when option
is missing.
2022-05-16 15:17:58 +02:00
Jose M. Guisado fca68171b6 create image: make --desc option optional
--desc option is used only when creating a new image.

A new image is any image that is not defined in the
OpenGnsys DB.

See commit d2f20d0be06617f421eecca111449d94672695eb
(#942 Create DB image when calling POST /image/create)
2022-05-10 16:19:17 +02:00
OpenGnSys Support Team 5f922571e2 ogCLI is AGPLv3+
Update license header in files.
2021-05-14 00:26:33 +02:00
Javier Sánchez Parra a2f1056c40 Add alias "set mode"
"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".
2021-05-12 17:23:06 +02:00
Jose M. Guisado 01ed5a3039 Add "setup disk" command
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
2021-04-07 12:58:54 +02:00
Jose M. Guisado 19e7d98aec Add 'send poweroff' command
Enables sending poweroff commands to clients.

Only arguments required are the usual client selection like:

	--client-ip
	--room-id
	--center-id
2021-04-06 13:16:46 +02:00