summaryrefslogtreecommitdiffstats
path: root/cli/cli.py
Commit message (Collapse)AuthorAgeFilesLines
* cli: ensure the program returns 0 on success and 1 on errorAlejandro Sirgo Rica8 days1-69/+91
| | | | | | | | | | 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.
* Revert "cli: rename ogcli list scopes to ogcli list scope"OpenGnSys Support Team8 days1-2/+2
| | | | This reverts commit 8f5b709212aa1ea28e85a0367747976cf81e0f3a.
* cli: rename ogcli list scopes to ogcli list scopeAlejandro Sirgo Rica2024-09-121-2/+2
| | | | | Use the word "scope" to keep the format coherent with the other commands.
* server: remove 'set server' commandOpenGnSys Support Team2024-09-021-3/+1
| | | | | | server IP is now inferred from what it is reachable, remove this command. this revisits a721957cc469 ('cli: add server commands')
* repo: sync repo with new APIAlejandro Sirgo Rica2024-09-021-1/+3
| | | | | | | | 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.
* cli: add list scopes --client-ipAlejandro Sirgo Rica2024-06-031-1/+1
| | | | | | | | | | 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 whitespace printed after every command executionAlejandro Sirgo Rica2024-03-041-1/+3
| | | | | | 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.
* rename argument of 'restore' command to 'restore_obj'Alejandro Sirgo Rica2024-03-041-2/+2
| | | | | The argument was called 'send_obj' probably due to copypaste. The rename aims to provide a better name for the command.
* change 'ogcli send' command into 'ogcli request'Alejandro Sirgo Rica2024-03-041-14/+14
| | | | | | By using the word 'request' the command becomes more semantic and represents the 'best effort' nature of the communication with ogserver.
* add 'send session' to request the boot from a client's partitionAlejandro Sirgo Rica2024-02-291-1/+4
| | | | | | 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
* ogcli: add update command for folder, room and centerAlejandro Sirgo Rica2024-02-131-2/+8
| | | | | Expand of the update command to be able to modify the values of previous folder, room and center configurations.
* folder: add commands to create and delete foldersAlejandro Sirgo Rica2024-02-051-2/+7
| | | | | | | | | | | | 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'
* src: update copyright statementOpenGnSys Support Team2024-01-021-1/+1
| | | | use opengnsys@soleta.eu email instead of info@soleta.eu
* live: add command to list available live imagesOpenGnSys Support Team2024-01-021-1/+4
| | | | | | Add new command to display the available live images: # ogcli list live
* cli: remove 'list server'OpenGnSys Support Team2024-01-021-3/+2
| | | | list servers already provides the same.
* repository: delete commandv0.3.3-3OpenGnSys Support Team2023-11-301-1/+3
| | | | | | Allow to delete a repository with: $ ogcli delete repo --id 10
* client: support for deleting clientsOpenGnSys Support Team2023-11-301-1/+3
| | | | | | Delete a client with command: $ ogcli delete client --ip 1.2.3.4
* client: support for adding clientsv0.3.3Javier Hernandez2023-10-271-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* cli: add roomJavier Hernandez2023-10-191-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | 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
* cli: fix messages when receiving an error responseJose M. Guisado2023-10-181-5/+5
| | | | | | | | 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.
* center: add delete commandJavier Hernandez2023-10-181-1/+3
| | | | | | | | | command to delete center ogcli delete center --id <center id> To delete the center with id 6 $ ogcli delete center --id 6
* cli: add center.pyJavier Hernandez2023-10-181-1/+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"
* repo: add add_repo functionJose M. Guisado2023-10-111-1/+3
| | | | | | | | | | | | | | | | | | 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.
* cli: add repo.py objectJose M. Guisado2023-10-111-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* cli: better error handling for subcommand argsJose M. Guisado2023-10-061-9/+54
| | | | | | | 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.
* cli: fix help message typos in some subcommandsJose M. Guisado2023-10-061-2/+2
| | | | | | For the delete subcommand: s/remove/delete For the add subcommand: s/remove/add
* cli: add server commandsv0.3.1Jose M. Guisado2023-08-241-3/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 }
* cli: add delete http methodJose M. Guisado2023-08-241-0/+13
| | | | | | | Add delete function to OgRest class. Enable ogCLI to send HTTP requests using DELETE as request verb. Encapsulates requests python module .delete() method.
* create image: split into create and updatev0.2Jose M. Guisado2022-10-201-0/+9
| | | | | | | | | | | | | | | | | | | | 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
* send: add send rebootJose M. Guisado2022-05-251-1/+4
| | | | | | | | | Takes usual client options (--client-ip, --room-id, --center-id) Example: > ogcli send reboot --client-ip 192.168.56.11
* format: use autopep8Jose M. Guisado2022-05-201-101/+103
| | | | | | | | | | | | | | 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: add send refreshJose M. Guisado2022-05-201-1/+3
| | | | | | Send refresh to a given client. $ ogcli send refresh --client-ip 192.168.56.11
* ogCLI is AGPLv3+OpenGnSys Support Team2021-05-141-4/+3
| | | | Update license header in files.
* Add alias "set mode"Javier Sánchez Parra2021-05-121-2/+2
| | | | | | | | "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".
* Add "setup disk" commandJose M. Guisado2021-04-071-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Add 'send poweroff' commandJose M. Guisado2021-04-061-1/+4
| | | | | | | | | | Enables sending poweroff commands to clients. Only arguments required are the usual client selection like: --client-ip --room-id --center-id
* Add 'create image'Jose M. Guisado2021-04-061-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Add 'list disks'Jose M. Guisado2021-04-061-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 } ] }
* Add 'restore image' commandJose M. Guisado2021-03-301-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Add list imagesJose M. Guisado2021-03-301-1/+4
| | | | | ogServer exposes a list of known partition images at /images, use it to implement 'list images' command.
* Fix help messagesJose M. Guisado2021-03-291-2/+2
| | | | | | | | | | | | | | | | | | | 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} ...
* Add WoL sending capabilityJose M. Guisado2021-03-291-0/+10
| | | | | | | | | | | | | | | | | | | | 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
* Add ogcli list client commandRoberto Hueso Gómez2020-07-141-1/+4
| | | | | | | | 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.
* Add ogcli list hardware commandRoberto Hueso Gómez2020-07-081-5/+7
| | | | | | | 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.
* Add payload option on GET requestsRoberto Hueso Gómez2020-07-081-2/+3
| | | | | | | 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
* Add ogcli set mode commandRoberto Hueso Gómez2020-07-061-0/+9
| | | | | This requests POST /modes and changes a scope mode by calling something like: ogcli set modes --scope-id=1 --scope-type=computer --mode=pxe
* Add post() to OgRESTRoberto Hueso Gómez2020-07-031-0/+13
| | | | This is a wrapper that provides HTTP POST requests.
* add license header to source code filesOpenGnSys Support Team2020-07-011-0/+8
|
* Rename files to remove 'og' prefixRoberto Hueso Gómez2020-06-301-0/+39
This prefix is redundant on almost every file, so the prefix is removed from filenames and imports.