summaryrefslogtreecommitdiffstats
path: root/cli/objects
Commit message (Collapse)AuthorAgeFilesLines
* disk: improve disk setup command validationv0.3.3-6Alejandro Sirgo Rica2024-06-031-7/+30
| | | | | | | | | | | | 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.
* disk: use proper partition sizesAlejandro Sirgo Rica2024-06-031-1/+1
| | | | | Use base 2 size units for the partition configuration units. Using base 10 units causes incoherency with the web.
* cli: add list scopes --client-ipAlejandro Sirgo Rica2024-06-031-2/+49
| | | | | | | | | | 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
* improve missing clients error reporting in multiple commandsAlejandro Sirgo Rica2024-03-048-8/+8
| | | | | All the commands that need target clients now have a more descriptive error message when the clients of the command are missing.
* change 'ogcli send' command into 'ogcli request'Alejandro Sirgo Rica2024-03-045-10/+10
| | | | | | 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-0/+69
| | | | | | 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
* remove duplicated parse_args in repo.py and server.pyAlejandro Sirgo Rica2024-02-292-2/+0
| | | | | Remove the line 'parsed_args = parser.parse_args(args)' parsing the command line arguments a second time when it is not needed.
* ogcli: add update command for folder, room and centerAlejandro Sirgo Rica2024-02-133-2/+89
| | | | | Expand of the update command to be able to modify the values of previous folder, room and center configurations.
* ogcli: validate integer type in every --id argumentAlejandro Sirgo Rica2024-02-054-0/+6
| | | | missing validation of --id, user needs to supply an integer
* folder: add commands to create and delete foldersAlejandro Sirgo Rica2024-02-051-0/+54
| | | | | | | | | | | | 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'
* room: use room_id field in jsonJavier Hernandez2024-01-111-1/+1
| | | | instead of group, which is not used by the ogserver anymore.
* src: update copyright statementOpenGnSys Support Team2024-01-0213-11/+25
| | | | use opengnsys@soleta.eu email instead of info@soleta.eu
* live: add command to list available live imagesOpenGnSys Support Team2024-01-021-0/+17
| | | | | | Add new command to display the available live images: # ogcli list live
* images: Remove option to specify repoJavier Hernandez2023-12-211-13/+4
| | | | | | | | | | | 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
* images: use new POST image/updatev0.3.3-4OpenGnSys Support Team2023-12-191-1/+1
| | | | use POST image/update when updating an image.
* repository: fix incorrect helpOpenGnSys Support Team2023-12-011-1/+1
| | | | | | | | # ogcli delete repo -h [...] --id [ID] room id in scopes this is not the room id, it should be the repo id.
* repository: delete commandv0.3.3-3OpenGnSys Support Team2023-11-301-0/+11
| | | | | | Allow to delete a repository with: $ ogcli delete repo --id 10
* client: remove --netmaskOpenGnSys Support Team2023-11-301-8/+1
| | | | This set from the room --netmask, this is obsolete, remove it.
* client: support for deleting clientsOpenGnSys Support Team2023-11-301-0/+14
| | | | | | Delete a client with command: $ ogcli delete client --ip 1.2.3.4
* client: support for adding clientsv0.3.3Javier Hernandez2023-10-271-2/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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: objects: use --desc and --folderJose M. Guisado2023-10-192-9/+11
| | | | | | | | | | | | | | | | 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.
* cli: add roomJavier Hernandez2023-10-191-0/+88
| | | | | | | | | | | | | | | | | | | | | | | | | 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
* center: add delete commandJavier Hernandez2023-10-181-0/+10
| | | | | | | | | 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-0/+20
| | | | | | | | | 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"
* images: change --repo help messageJose M. Guisado2023-10-121-1/+1
|
* repo: add add_repo functionJose M. Guisado2023-10-111-0/+25
| | | | | | | | | | | | | | | | | | 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-0/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* disks: remove --format parameter in setup diskv0.3.2Jose M. Guisado2023-10-091-12/+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.
* objects: add missing prog parameter in subcommandsJose M. Guisado2023-10-057-14/+14
| | | | | | | | | | | | | 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").
* cli: add server commandsv0.3.1Jose M. Guisado2023-08-241-0/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 }
* update image: add optional --backup parameterv0.3Jose M. Guisado2023-07-201-5/+11
| | | | | | | | | | 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
* create image: split into create and updatev0.2Jose M. Guisado2022-10-201-3/+71
| | | | | | | | | | | | | | | | | | | | 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
* create image: add repository_id param for new imagesJose M. Guisado2022-06-281-4/+5
| | | | | | | | | | 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")
* create image: --client-ip option is requiredJose M. Guisado2022-05-311-1/+1
| | | | | | --client-ip option is required when parsing a 'create image' command, it is the only client selection option for 'create image' command.
* send: add send rebootJose M. Guisado2022-05-251-0/+57
| | | | | | | | | Takes usual client options (--client-ip, --room-id, --center-id) Example: > ogcli send reboot --client-ip 192.168.56.11
* list modes: use print_jsonJose M. Guisado2022-05-201-1/+1
| | | | | Follows commit b765ee50d31b1b629b7572c231d2cf2840a4146f (utils: add print_json)
* format: use autopep8Jose M. Guisado2022-05-207-456/+471
| | | | | | | | | | | | | | 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.
* set mode: fix --helpJose M. Guisado2022-05-201-1/+1
| | | | | | | | | | '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.
* send: add send refreshJose M. Guisado2022-05-201-0/+13
| | | | | | Send refresh to a given client. $ ogcli send refresh --client-ip 192.168.56.11
* setup disk: fix paddingv0.1Jose M. Guisado2022-05-171-1/+2
| | | | | | | 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.
* utils: add print_jsonJose M. Guisado2022-05-174-8/+13
| | | | | | | | | Adds a pretty printing function for JSON data. Replaces print for print_json in corresponding cli objects. Follows commit 828d6c0ce7d4a6b4bcd95e97155460fd59856bdd ("list scopes: pretty print scope tree")
* create image: fix --repo default ip valueJose M. Guisado2022-05-161-1/+1
| | | | | | | | | | | 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.
* list scopes: pretty print scope treeJose M. Guisado2022-05-161-1/+4
| | | | | Use json module to pretty print the scope tree. JSON keys are ordered and two-space indentation is used.
* restore image: add tiptorrent transfer methodJose M. Guisado2022-05-161-3/+4
| | | | | Makes --type optional, defaults to tiptorrent when option is missing.
* create image: make --desc option optionalJose M. Guisado2022-05-101-3/+6
| | | | | | | | | | --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)
* ogCLI is AGPLv3+OpenGnSys Support Team2021-05-147-28/+21
| | | | Update license header in files.
* Add "setup disk" commandJose M. Guisado2021-04-071-0/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-0/+56
| | | | | | | | | | 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/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 } ] }