3 years agoUpdate ls keys master
Christophe Varoqui [Thu, 25 Aug 2016 14:14:17 +0000 (16:14 +0200)]
Update ls keys

* ls /nodes now display the node_id key
* ls /services now display the svc_id key
* ls /tags now display the tag_id key

3 years agoTry not to display unicode characters in the GET output
Christophe Varoqui [Wed, 18 May 2016 06:33:11 +0000 (08:33 +0200)]
Try not to display unicode characters in the GET output

loads and redumps the json data with ensure_ascii=False

3 years agoAllow users to set -p to "?", and prompt without echo in this case
Christophe Varoqui [Thu, 17 Mar 2016 18:46:46 +0000 (19:46 +0100)]
Allow users to set -p to "?", and prompt without echo in this case

3 years agoSupport posting arbitrary json data from file
Christophe Varoqui [Mon, 14 Mar 2016 17:13:49 +0000 (18:13 +0100)]
Support posting arbitrary json data from file


$ cat /tmp/data.json

$ opensvc-cli post --data @/tmp/data.json /users/self/table_filters
"info": [],
"data": [
"user_id": 1,
"bookmark": "current",
"col_name": "nodename",
"col_tableid": "nodes",
"col_filter": "cl%",
"id": 46803
"error": []

3 years agoFix mispelled headers variable in the put command code path
Christophe Varoqui [Wed, 2 Mar 2016 10:32:38 +0000 (11:32 +0100)]
Fix mispelled headers variable in the put command code path

4 years agoSupport --data @/tmp/foo.json
Christophe Varoqui [Tue, 2 Feb 2016 20:38:24 +0000 (21:38 +0100)]
Support --data @/tmp/foo.json

In this case, the content-type is set to application/json

4 years agoBe less restrictive when validating the api uri
Christophe Varoqui [Sun, 17 Jan 2016 09:56:43 +0000 (10:56 +0100)]
Be less restrictive when validating the api uri

So that we can support app name other than "init"

4 years agoSupport list-type handler parameters
Christophe Varoqui [Mon, 16 Nov 2015 09:38:37 +0000 (10:38 +0100)]
Support list-type handler parameters

Like the --filters GET parameter

4 years agoAllow DELETE requests to send data
Christophe Varoqui [Thu, 5 Nov 2015 10:07:45 +0000 (11:07 +0100)]
Allow DELETE requests to send data

The rest api can serve DELETE handler that use data to filter the
delete operation.

4 years agoFixes
Christophe Varoqui [Tue, 3 Nov 2015 10:12:16 +0000 (11:12 +0100)]

1/ api cache format change still required an adaptation

2/ fix spurious output on ls command auto-completion

4 years agoSupport non-interactive command passing
Christophe Varoqui [Fri, 16 Oct 2015 15:15:05 +0000 (17:15 +0200)]
Support non-interactive command passing


collector:/ # get /nodes --props nodename,os_name --meta 0 --query "nodename contains de6"
    "data": [
            "os_name": "Linux",
            "nodename": "de6maie"

4 years agoFix path auto-completion
Christophe Varoqui [Fri, 16 Oct 2015 14:36:47 +0000 (16:36 +0200)]
Fix path auto-completion

The api cache format change broke the path auto-completion. Fix

Also introduce a CliError exception used to display short error
messages passed through the exception on known error. Unknown
errors are displayed as full stack to ease debugging.

4 years agoAdapt to the new api cache format provided by the collector
Christophe Varoqui [Thu, 15 Oct 2015 10:35:20 +0000 (12:35 +0200)]
Adapt to the new api cache format provided by the collector

And fix --refresh-api, which was not set as a boolean option

4 years agoImplement a local api cache to speed up cli loading
Christophe Varoqui [Wed, 14 Oct 2015 15:40:40 +0000 (17:40 +0200)]
Implement a local api cache to speed up cli loading

So that we can envision chaining cli commands from the shell

4 years agoAdd the sysreport cli command
Christophe Varoqui [Tue, 13 Oct 2015 12:52:05 +0000 (14:52 +0200)]
Add the sysreport cli command


collector:/ # sysreport --log --node clementine --path *md*
cid: 60dc5df0c0d504cc448768936da833f131485393
change detection date: 2015-10-10 03:10:53


cid: 2ade314edebec985b1196ffbfe2e595869142647
change detection date: 2015-10-08 03:20:19


cid: 92c843685ccc24b72585781262aa646feeb51a3d
change detection date: 2015-10-07 01:31:05



collector:/ # sysreport --log --node clementine --cid 92c843685ccc24b72585781262aa646feeb51a3d --path *coll*
path: /opt/opensvc/etc/collector.env
visible: by everyone

@@ -11,7 +11,6 @@ ipname =
 netmask =
 gateway =
 container_rid = container#0
-tags = docker

 type = docker

4 years agoDon't enter the cli when the api cache load has failed
Christophe Varoqui [Mon, 12 Oct 2015 08:43:11 +0000 (10:43 +0200)]
Don't enter the cli when the api cache load has failed

4 years agoDisplay api request content if we fail to load it with the json loader
Christophe Varoqui [Mon, 12 Oct 2015 08:39:55 +0000 (10:39 +0200)]
Display api request content if we fail to load it with the json loader

4 years agoCLI enhancements
Christophe Varoqui [Sun, 11 Oct 2015 16:01:51 +0000 (18:01 +0200)]
CLI enhancements

- auto discover the parameters supported by a given url handler
- support newlines in optparser option help messages
- support restructured text in optparser option help messages
- gracefully exit when failing to load the api cache

4 years agoAllow post commands to set a query
Christophe Varoqui [Mon, 24 Aug 2015 06:33:27 +0000 (08:33 +0200)]
Allow post commands to set a query

This is used by the REST API handler to switch from a create to
a update behaviour.

Also don't stack on old requests modules not having packages
property when disabling the ssl warnings.

4 years agoDisplay current variable value in value editor if set
Christophe Varoqui [Sun, 9 Aug 2015 13:32:12 +0000 (15:32 +0200)]
Display current variable value in value editor if set


$ variable --set --ruleset testpmn --variable testvar1 --value-edit

    "uid": "0",
    "fmt": "bar",
    "gid": "0",
    "mode": "644",
    "path": "/tmp/foo",
    "ref": ""

4 years agoAdd a compliance variable value editor
Christophe Varoqui [Sun, 9 Aug 2015 13:19:58 +0000 (15:19 +0200)]
Add a compliance variable value editor

$ variable --set --ruleset testpmn --variable testvar1 --value-edit

opens a editor containing the form data structure template:

    "uid": "<string or integer. Either a user ID or a user name>",
    "fmt": "<text. A reference content for the file. The text can embed substitution variables specified with %%ENV:VAR%%.>",
    "gid": "<string or integer. Either a group ID or a group name>",
    "mode": "<integer. In octal form. Example: 644>",
    "path": "<string. File path to install the reference content to. A path ending with '/' is treated as a directory and as such, its content need not be specified.>",
    "ref": "<string. Examples: http://server/path/to/reference_file https://server/path/to/reference_file ftp://server/path/to/reference_file ftp://login:pass@server/path/to/reference_file>"

4 years agoAdd the filter command
Christophe Varoqui [Wed, 5 Aug 2015 14:25:06 +0000 (16:25 +0200)]
Add the filter command

Handle design actions on a filter

  -h, --help            show this help message and exit
  --list                List filters
  --show                Show a filter design
  --create              Create a filter
  --delete              Delete a filter
  --set                 Set filter properties
  --attach              Attach a filter to the filterset pointed by
  --detach              Detach a filter from the filterset pointed by
  --filter=FILTER       The name or id of the filter to manage
                        The name or id of the filterset to attach to or detach
  --value=VALUE         with --set or --create, set the filter value parameter
  --operator=OPERATOR   with --set or --create, set the filter operator
                        parameter. Accepted operators: =, <, >, <=, >=, LIKE,
  --field=FIELD         with --set or --create, set the filter field parameter
  --table=TABLE         with --set or --create, set the filter table parameter
  --order=ORDER         with --attach, set the filter attachment order
                        parameter. Integer.
                        with --attach, set the filter attachment logical
                        operator parameter. Accepted operators: AND, OR, AND
                        NOT, OR NOT

4 years agoAdd the filterset command
Christophe Varoqui [Tue, 4 Aug 2015 13:28:47 +0000 (15:28 +0200)]
Add the filterset command

Usage: opensvc-cli [options]

Handle design actions on a filterset

  -h, --help            show this help message and exit
  --list                List filtersets
  --show                Show a filterset design, with nesting
  --create              Create a filterset
  --delete              Delete a filterset
  --set                 Set filterset properties
  --attach              Attach a filterset to the filterset pointed by
  --detach              Detach a filterset from the filterset pointed by
  --rename              Rename a filterset
                        The name or id of the filterset to manage
                        The name or id of the filterset to attach to or detach
  --to=TO               with --rename, set the new filterset name
  --stats               with --set, set the filterset stats parameter to true
  --not-stats           with --set, set the filterset stats parameter to false

4 years agoAdd --clone to ruleset and moduleset commands
Christophe Varoqui [Sat, 1 Aug 2015 18:25:45 +0000 (20:25 +0200)]
Add --clone to ruleset and moduleset commands

4 years agoAdd copy/move params to variable command
Christophe Varoqui [Sat, 1 Aug 2015 17:50:16 +0000 (19:50 +0200)]
Add copy/move params to variable command

variable --dest-ruleset testwha --move --ruleset dsp.sys.bastion --variable testvar6

4 years agoAdd --list actions to compliance commands
Christophe Varoqui [Sat, 1 Aug 2015 14:47:57 +0000 (16:47 +0200)]
Add --list actions to compliance commands

4 years agoImplement autocompletion for candidates_path containing refs
Christophe Varoqui [Sat, 1 Aug 2015 12:57:17 +0000 (14:57 +0200)]
Implement autocompletion for candidates_path containing refs

For example /compliance/modulesets/<moduleset>/modules now produce
candidate modules for the moduleset pointed by the --moduleset
option, like in "module --moduleset testwha --module <tab>"

4 years agoFix display of candidates containing whitespaces
Christophe Varoqui [Sat, 1 Aug 2015 10:47:06 +0000 (12:47 +0200)]
Fix display of candidates containing whitespaces

4 years agodon't request objects for paths not matching any handler
Christophe Varoqui [Sat, 1 Aug 2015 09:26:41 +0000 (11:26 +0200)]
don't request objects for paths not matching any handler

cd /compliance/rul<tab>

... now fetchs candidates without requesting the collector.

4 years agoAdd "history" command and support "cd -"
Christophe Varoqui [Sat, 1 Aug 2015 09:03:45 +0000 (11:03 +0200)]
Add "history" command and support "cd -"

4 years agoAdd filterset-ruleset attach/detach commands
Christophe Varoqui [Fri, 31 Jul 2015 21:00:06 +0000 (23:00 +0200)]
Add filterset-ruleset attach/detach commands

ruleset --ruleset testwha --attach --filterset "serveurs hpux"
ruleset --ruleset testwha --detach --filterset "serveurs hpux"

4 years agoAdd responsible/publication groups attach/detach to ruleset/moduleset commands
Christophe Varoqui [Fri, 31 Jul 2015 17:35:52 +0000 (19:35 +0200)]
Add responsible/publication groups attach/detach to ruleset/moduleset commands


moduleset --attach --responsible-group 16 --moduleset test
moduleset --detach --responsible-group 16 --moduleset test

4 years agoAdd "variable" and "module" commands
Christophe Varoqui [Fri, 31 Jul 2015 14:55:15 +0000 (16:55 +0200)]
Add "variable" and "module" commands

Also add --rename support to "ruleset" and "moduleset" commands.

4 years agoRefactor commandset and various enhancements
Christophe Varoqui [Fri, 31 Jul 2015 09:53:21 +0000 (11:53 +0200)]
Refactor commandset and various enhancements

- factorize the match() Cmd class function
- factorize the ls_data() Cmd class function
- fix completion of the next option after a "--foo bar" completion
- add a Cmd flag to tell if the command need api path completion
- add the "ruleset" and "moduleset" commands
- remove the "create moduleset", "create ruleset", "delete
moduleset" and "delete ruleset" commands
- add attach, detach, show and set capabilities to the ruleset and
moduleset commands

4 years agoFix wrong ruleset shown by the show command
Christophe Varoqui [Thu, 30 Jul 2015 16:33:26 +0000 (18:33 +0200)]
Fix wrong ruleset shown by the show command

Picking the first ruleset is not garantied to pick the one requested.
Lookup by name or by id instead.

Do the same for modulesets, just in case, and for symmetry.

4 years agoAdd create/delete ruleset commands
Christophe Varoqui [Thu, 30 Jul 2015 15:03:44 +0000 (17:03 +0200)]
Add create/delete ruleset commands

And fix a stack when the show command is executed for an objet
not present.

4 years agoEnhancements
Christophe Varoqui [Thu, 30 Jul 2015 14:25:25 +0000 (16:25 +0200)]

Make "ls /tags" display the tags name along with their id.

Make completion candidates aware of their context, so that
"delete moduleset --name <tab>" will only show moduleset names

Add the "help" command and a description of each command. Plug
the description in the Cmd OptionParser too, so that "<cmd>
--help" will print the description too.

Add "create modeleset" and "delete moduleset" commands

Better Crt-C handling: just reset the input buffer instead of
exiting the cli

Fix completion candidates for the first word.

4 years agoAdd the show command
Christophe Varoqui [Thu, 30 Jul 2015 10:24:47 +0000 (12:24 +0200)]
Add the show command

This command shows rulesets and modulesets design, with nesting.


collector:/compliance/modulesets # show ex.adm.ilmt
moduleset: ex.adm.ilmt
     publication group: user_1
     responsible group: user_1
     module: ex.adm.ilmt
     ruleset: ex.adm.ilmt
         public: False
         type: explicit
         publication group: user_1
         responsible group: user_1
         ruleset: ex.adm.ilmt.hpux
             public: False
             type: contextual
             publication group: user_1
             responsible group: user_1
             variable: package ilmt_pkg
             variable: raw ilmt_depot
             variable: process ilmt_process
             variable: file ilmt_file_1
             variable: file ilmt_file_2
             variable: file ilmt_file_3
             variable: rc ilmt_rc
         ruleset: ex.adm.ilmt.linux
             public: False
             type: contextual
             publication group: user_1
             responsible group: user_1
             ruleset: ex.adm.ilmt.linux.vm
                 public: False
                 type: contextual
                 publication group: user_1
                 responsible group: user_1
                 variable: file ilmt_file_1
                 variable: file ilmt_file_2
                 variable: rc ilmt_rc
                 variable: process ilmt_process
                 variable: package ilmt_pkg

4 years agoInitialize the opensvc-cli project
Christophe Varoqui [Wed, 29 Jul 2015 21:42:30 +0000 (23:42 +0200)]
Initialize the opensvc-cli project