Bug 2179388

Summary: Location config command is not intuitive
Product: Red Hat Enterprise Linux 9 Reporter: Simon Foucek <sfoucek>
Component: pcsAssignee: Ondrej Mular <omular>
Status: VERIFIED --- QA Contact: cluster-qe <cluster-qe>
Severity: low Docs Contact:
Priority: low    
Version: 9.0CC: cluster-maint, idevat, mlisik, mmazoure, mpospisi, omular, tojeline
Target Milestone: rcKeywords: Triaged
Target Release: 9.3Flags: tojeline: needinfo? (sfoucek)
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: pcs-0.11.5-1.el9 Doc Type: No Doc Update
Doc Text:
This is a minor update in the man page, it doesn't need to be documented.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Simon Foucek 2023-03-17 15:35:36 UTC
Description of problem:
The hint for location config shows the possibility of using regex. At first glance this hint makes it look like it is possible to filter the resource using `regexp%str`. It is not clear that this only shows the location constraints for the regex (even if it is under the `resources` argument)

Version-Release number of selected component (if applicable):
[root@virt-031 ~]# pcs --version
0.10.14



Steps to Reproduce:
[root@virt-031 ~]# pcs constraint location config --help
...
    location [config | show [resources [<resource>...]] | [nodes [<node>...]]]
            [--all] [--full]
        List all the current location constraints that are not expired. If
        'resources' is specified, location constraints are displayed per
        resource (default). If 'nodes' is specified, location constraints are
        displayed per node. If specific nodes or resources are specified then
        we only show information about them. Resource may be either a resource
        id <resource_id> or %<resource_id> or resource%<resource_id>, or a
        resource name regular expression regexp%<resource_pattern>. If --full
        is specified show the internal constraint id's. If --all is
        specified show the expired constraints.

...



Actual results:

It is not clear from the hint and argument that they do not filter the resource location constraints using the regex, but only show the location constraints created for the regex.

Expected results:
The option to display Location constraints created for regex should be under another argument (`regexes`), or it should be clear from the tooltip how the option is used.

Comment 1 Ondrej Mular 2023-03-30 09:49:47 UTC
Documentation has been updated to make description of filtering more clear.

Upstream patch: https://github.com/ClusterLabs/pcs/commit/ff1d564830b3ab922249a796ecfc4a63925ec4c8

Comment 4 Michal Pospisil 2023-05-26 11:35:38 UTC
DevTestResults:

[root@r09-03-b ~]# pcs constraint location config --help
    location [config [resources [<resource reference>...]] | [nodes [<node>...]]]
            [--all] [--full] [--output-format text|cmd|json]
        List all the current location constraints that are not expired.  If
        'resources' is specified, location constraints are displayed per
        resource. If 'nodes' is specified, location constraints are displayed
        per node. If specific nodes, resources or resource name regular
        expressions are specified, only constraints containing those will be
        shown. Resource reference may be either a resource id <resource_id> or
        %<resource_id> or resource%<resource_id>, or a resource name regular
        expression regexp%<resource_pattern>. If --full is specified show the
        internal constraint id's. If --all is specified show the expired
        constraints.
        
        There are 3 formats of output available: 'cmd', 'json' and 'text',
        default is 'text'. Format 'text' is a human friendly output. Format
        'cmd' prints pcs commands which can be used to recreate the same
        configuration. Format 'json' is a machine oriented output of the
        configuration.

The help text is updated.