Bug 1684676
| Summary: | RFE: Add ability to tag resources to simplify display and information | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 8 | Reporter: | Chris Feist <cfeist> | ||||||||
| Component: | pcs | Assignee: | Miroslav Lisik <mlisik> | ||||||||
| Status: | CLOSED ERRATA | QA Contact: | cluster-qe <cluster-qe> | ||||||||
| Severity: | unspecified | Docs Contact: | Steven J. Levine <slevine> | ||||||||
| Priority: | high | ||||||||||
| Version: | 8.0 | CC: | cfeist, cluster-maint, idevat, kgaillot, mlisik, mmazoure, nhostako, omular, pasik, sbradley, slevine, tojeline | ||||||||
| Target Milestone: | rc | Keywords: | FutureFeature | ||||||||
| Target Release: | 8.0 | Flags: | pm-rhel:
mirror+
|
||||||||
| Hardware: | Unspecified | ||||||||||
| OS: | Unspecified | ||||||||||
| Whiteboard: | |||||||||||
| Fixed In Version: | pcs-0.10.6-1.el8 | Doc Type: | Enhancement | ||||||||
| Doc Text: |
.Support for tagging cluster resources
It is now possible to tag cluster resources in a Pacemaker cluster with the `pcs tag` command. This feature allows you to administer a specified set of resources with a single command. You can also use the `pcs tag` command to remove or modify a resource tag, and to display the tag configuration.
The `pcs resource enable`, `pcs resource disable`, `pcs resource manage`, and `pcs resource unmanage` commands accept tag IDs as arguments.
|
Story Points: | --- | ||||||||
| Clone Of: | Environment: | ||||||||||
| Last Closed: | 2020-11-04 02:28:16 UTC | 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: | |||||||||||
| Attachments: |
|
||||||||||
|
Description
Chris Feist
2019-03-01 20:24:13 UTC
*** Bug 1513550 has been marked as a duplicate of this bug. *** Pacemaker supports tagging resources already. It would be best to use that feature: 1) it provides means for storing tags in CIB, 2) pacemaker can process those tags when displaying cluster status by crm_mon which is what pcs uses in 'pcs resource status'. From the duplicate (now closed) RHEL 7 bz1513550: Ken Gaillot: Pacemaker supports tagging of XML elements: http://clusterlabs.org/pacemaker/doc/en-US/Pacemaker/2.0/html-single/Pacemaker_Explained/index.html#_tagging_configuration_elements This will be important for pcs primarily for nodes and resources, because tagging is expected to be part of the solution for Bug 1300597 and Bug 1300604. The idea is that the user will be able to tag certain nodes and/or resources, then use (not yet implemented) options to crm_mon to display the status of just those. An example of how it might eventually work: pcs resource tag myrsc1 special pcs resource create myrsc2 Dummy --tag special pcs status --resources=special # shows status of myrsc1 and myrsc2 only This bz is just for the tagging functionality, which is already supported by pacemaker. A separate bz will be opened for the pcs status functionality once the crm_mon interface is finalized. I can imagine tagging coming in handy in other situations in the future. Pacemaker implements tags mainly for UI use, so feel free to use tags elsewhere in pcs for any purpose. FYI, because tags are XML IDs, they are guaranteed to be unique with respect to resource names and node IDs (sadly, not node names). That gives you the option of accepting tag names wherever a resource name can be used, rather than requiring a special syntax in that situation. Jan Pokorný [poki]: See also bottom of [bug 1441332 comment 5] + a link from the subsequent comment. From the duplicate bz1730241: Chris Feist 2019-07-16 Pacemaker allows tagging resources, but this isn't currently implemented in pcs. Customers would like the ability to tag resources and then run commands on all resources with those tags. To start with we would be looking at the following commands: 1. View the status of resources with a specific tag 2. Enable/disable resources with a specific tag 3. Manage/Unmanage 4. Move/unmove 5. Anything else that would make sense to do to a group of resources *** Bug 1730241 has been marked as a duplicate of this bug. *** Created attachment 1681060 [details]
proposed fix + tests
Feature is not completed yet.
New commands added:
* pcs tag config|list
* pcs tag create
* pcs tag delete|remove
Modified commands:
* pcs resource delete -- aware of resources referenced in tags
Test:
[root@r8-node-01]# pcs resource create d-01 ocf:pacemaker:Dummy
[root@r8-node-01]# pcs resource create d-02 ocf:pacemaker:Dummy
[root@r8-node-01]# pcs tag create special-resources d-01 d-02
[root@r8-node-01]# pcs tag config
special-resources
d-01
d-02
[root@r8-node-01]# pcs resource delete d-01
Error: Unable to remove resource 'd-01' because it is referenced in the tag: special-resources
[root@r8-node-01]# pcs tag remove special-resources
[root@r8-node-01]# pcs tag
No tags defined
[root@r8-node-01 ]# pcs resource delete d-01
Attempting to stop: d-01... Stopped
[root@r8-node-01]# pcs resource
* d-02 (ocf::pacemaker:Dummy): Started r8-node-01
Created attachment 1683025 [details]
proposed fix2 + tests
Feature is not completed yet.
New command added:
* pcs tag update
[root@r8-node-01 ~]# pcs tag update -h
Usage: pcs tag <command>
update <tag id> [add <id> [<id>]... [--before <id> | --after <id>]]
[remove <id> [<id>]...]
Update a tag using the specified ids. Ids can be added, removed or
moved in a tag. You can use --before or --after to specify the position
of the added ids relatively to some id already existing in the tag. By
adding ids to a tag they are already in and specifying --after or
--before you can move the ids in the tag.
Test:
[root@r8-node-01 ~]# pcs resource
* d1 (ocf::pacemaker:Dummy): Started r8-node-01
* d2 (ocf::pacemaker:Dummy): Started r8-node-01
* d3 (ocf::pacemaker:Dummy): Started r8-node-01
* d4 (ocf::pacemaker:Dummy): Started r8-node-01
* d5 (ocf::pacemaker:Dummy): Started r8-node-01
* d6 (ocf::pacemaker:Dummy): Started r8-node-01
[root@r8-node-01 ~]# pcs tag
special-resources
d1
d2
d3
[root@r8-node-01 ~]# pcs tag update special-resources add d{4..6} --before d1
[root@r8-node-01 ~]# pcs tag config
special-resources
d4
d5
d6
d1
d2
d3
[root@r8-node-01 ~]# pcs tag update special-resources add d4 d5 --after d3 remove d6
[root@r8-node-01 ~]# pcs tag list
special-resources
d1
d2
d3
d4
d5
FYI: While working on Bug 1300604, it was discovered that pacemaker's CIB schema prevented tagging nodes. The issue arises because node IDs are not XML IDs -- they are determined by the cluster layer, which for corosync is integers, which are not legal XML IDs. Thus the schema was modified to allow any text in an <obj_ref id=ID/> inside a tag. This means that CIBs with validate-with below 3.3 will need to be upgraded before tagging a node will work. Created attachment 1696055 [details]
proposed fix3 + tests
Modified commands:
* pcs resource enable/disable
* pcs resource manage/unmanage
* pcs resource unclone
* pcs resource ungroup
* pcs resource group delete|remove
Test:
1) resource disable/enable/unmanage/manage
[root@r8-node-01 ~]# lpcs resource
* d-01 (ocf::pacemaker:Dummy): Started r8-node-01
* d-02 (ocf::pacemaker:Dummy): Started r8-node-01
[root@r8-node-01 ~]# lpcs tag
MyTag
d-01
d-02
[root@r8-node-01 ~]# lpcs resource disable MyTag
[root@r8-node-01 ~]# lpcs resource
* d-01 (ocf::pacemaker:Dummy): Stopped (disabled)
* d-02 (ocf::pacemaker:Dummy): Stopped (disabled)
[root@r8-node-01 ~]# lpcs resource enable MyTag
[root@r8-node-01 ~]# lpcs resource
* d-01 (ocf::pacemaker:Dummy): Started r8-node-01
* d-02 (ocf::pacemaker:Dummy): Started r8-node-01
[root@r8-node-01 ~]# lpcs resource unmanage MyTag
[root@r8-node-01 ~]# lpcs resource
* d-01 (ocf::pacemaker:Dummy): Started r8-node-01 (unmanaged)
* d-02 (ocf::pacemaker:Dummy): Started r8-node-01 (unmanaged)
[root@r8-node-01 ~]# lpcs resource manage MyTag
[root@r8-node-01 ~]# lpcs resource
* d-01 (ocf::pacemaker:Dummy): Started r8-node-01
* d-02 (ocf::pacemaker:Dummy): Started r8-node-01
2) resource unclone/ungroup/group delete/group remove
[root@r8-node-01 ~]# lpcs resource
* Clone Set: AGroup-clone [AGroup]:
* Started: [ r8-node-01 ]
[root@r8-node-01 ~]# lpcs tag
CloneTag
AGroup-clone
GroupTag
AGroup
[root@r8-node-01 ~]# lpcs resource unclone AGroup-clone
[root@r8-node-01 ~]# lpcs resource
* Resource Group: AGroup:
* d-01 (ocf::pacemaker:Dummy): Started r8-node-01
* d-02 (ocf::pacemaker:Dummy): Started r8-node-01
[root@r8-node-01 ~]# lpcs tag
GroupTag
AGroup
[root@r8-node-01 ~]# lpcs resource
* Resource Group: AGroup:
* d-01 (ocf::pacemaker:Dummy): Started r8-node-01
* d-02 (ocf::pacemaker:Dummy): Started r8-node-01
[root@r8-node-01 ~]# lpcs resource ungroup AGroup
[root@r8-node-01 ~]# lpcs resource
* d-01 (ocf::pacemaker:Dummy): Started r8-node-01
* d-02 (ocf::pacemaker:Dummy): Started r8-node-01
[root@r8-node-01 ~]# lpcs tag
No tags defined
Commands 'resource ungroup' and 'resource group delete|remove' are aliases.
SUMMARY ======= New commands for management of pacemaker tags: * pcs tag config|list * pcs tag create * pcs tag delete|remove * pcs tag update Allowed usage of tag ids in these commands: * pcs resource enable/disable * pcs resource manage/unmanage Modified commands do not produce invalid cib when used with resources which are included in tags: * pcs resource delete * pcs resource unclone * pcs resource ungroup * pcs resource group delete|remove NOT IMPLEMENTED: * View the status of resources with a specific tag * Move/unmove New BZs will be created for not implemented features and they will be addressed in the next releases. (In reply to Miroslav Lisik from comment #11) s/lpcs/pcs - I forgot to change my alias to local development version of pcs. Currently pcs only supports resource IDs in tag commands. In the future it could be able to tag nodes or some other xml ID references. Test:
[root@r8-node-01 ~]# rpm -q pcs
pcs-0.10.6-1.el8.x86_64
[root@r8-node-01 pcs]# pcs tag create TAG1 d-01 d-02
[root@r8-node-01 pcs]# pcs tag
TAG1
d-01
d-02
[root@r8-node-01 pcs]# pcs tag update TAG1 add d-03 --after d-01 remove d-02
[root@r8-node-01 pcs]# pcs tag
TAG1
d-01
d-03
[root@r8-node-01 pcs]# pcs resource delete d-03
Error: Unable to remove resource 'd-03' because it is referenced in the tag: 'TAG1'
[root@r8-node-01 pcs]# echo $?
1
[root@r8-node-01 pcs]# pcs tag update TAG1 remove d-03
[root@r8-node-01 pcs]# pcs resource delete d-03
Attempting to stop: d-03... Stopped
[root@r8-node-01 pcs]# echo $?
0
[root@r8-node-01 pcs]# pcs resource
* d-01 (ocf::pacemaker:Dummy): Started r8-node-01
* d-02 (ocf::pacemaker:Dummy): Started r8-node-02
[root@r8-node-01 pcs]# pcs tag
TAG1
d-01
[root@r8-node-01 pcs]# pcs resource disable TAG1 d-02
[root@r8-node-01 pcs]# pcs resource
* d-01 (ocf::pacemaker:Dummy): Stopped (disabled)
* d-02 (ocf::pacemaker:Dummy): Stopped (disabled)
[root@r8-node-01 pcs]# pcs resource enable d-02 TAG1
[root@r8-node-01 pcs]# pcs resource
* d-01 (ocf::pacemaker:Dummy): Started r8-node-01
* d-02 (ocf::pacemaker:Dummy): Started r8-node-02
[root@r8-node-01 pcs]# pcs resource unmanage d-02 TAG1
[root@r8-node-01 pcs]# pcs resource
* d-01 (ocf::pacemaker:Dummy): Started r8-node-01 (unmanaged)
* d-02 (ocf::pacemaker:Dummy): Started r8-node-02 (unmanaged)
[root@r8-node-01 pcs]# pcs resource manage TAG1 d-02
[root@r8-node-01 pcs]# pcs resource
* d-01 (ocf::pacemaker:Dummy): Started r8-node-01
* d-02 (ocf::pacemaker:Dummy): Started r8-node-02
[root@r8-node-01 pcs]# pcs resource clone G1
[root@r8-node-01 pcs]# pcs resource
* d-02 (ocf::pacemaker:Dummy): Started r8-node-02
* Clone Set: G1-clone [G1]:
* Started: [ r8-node-01 r8-node-02 ]
[root@r8-node-01 pcs]# pcs tag create GroupTag G1
[root@r8-node-01 pcs]# pcs tag create CloneTag G1-clone
[root@r8-node-01 pcs]# pcs tag
TAG1
d-01
GroupTag
G1
CloneTag
G1-clone
[root@r8-node-01 pcs]# pcs resource unclone G1
[root@r8-node-01 pcs]# pcs resource
* d-02 (ocf::pacemaker:Dummy): Started r8-node-02
* Resource Group: G1:
* d-01 (ocf::pacemaker:Dummy): Started r8-node-01
[root@r8-node-01 pcs]# pcs tag
TAG1
d-01
GroupTag
G1
[root@r8-node-01 pcs]# pcs resource group delete G1
[root@r8-node-01 pcs]# pcs resource
* d-02 (ocf::pacemaker:Dummy): Started r8-node-02
* d-01 (ocf::pacemaker:Dummy): Started r8-node-01
[root@r8-node-01 pcs]# pcs tag
TAG1
d-01
[root@r8-node-01 pcs]# pcs tag remove TAG1
[root@r8-node-01 pcs]# pcs tag
No tags defined
[root@virt-125 ~]# rpm -q pcs
pcs-0.10.6-2.el8.x86_64
[root@virt-125 ~]# pcs tag --help
Usage: pcs tag <command>
Manage pacemaker tags.
Commands:
[config|list [<tag id>...]]
Display configured tags.
create <tag id> <id> [<id>]...
Create a tag containing the specified ids.
delete <tag id>...
Delete specified tags.
remove <tag id>...
Delete specified tags.
update <tag id> [add <id> [<id>]... [--before <id> | --after <id>]]
[remove <id> [<id>]...]
Update a tag using the specified ids. Ids can be added, removed or
moved in a tag. You can use --before or --after to specify the position
of the added ids relatively to some id already existing in the tag. By
adding ids to a tag they are already in and specifying --after or
--before you can move the ids in the tag.
[root@virt-125 ~]# pcs resource --help | grep tag
enable <resource id | tag id>... [--wait[=n]]
disable <resource id | tag id>... [--safe [--no-strict]]
safe-disable <resource id | tag id>... [--no-strict] [--simulate [--brief]]
manage <resource id | tag id>... [--monitor]
unmanage <resource id | tag id>... [--monitor]
> OK, new command is well documented
## Preparing resources
[root@virt-125 ~]# pcs resource create dummy1 ocf:heartbeat:Dummy
[root@virt-125 ~]# pcs resource create dummy2 ocf:heartbeat:Dummy
[root@virt-125 ~]# pcs resource create dummy3 ocf:heartbeat:Dummy
[root@virt-125 ~]# pcs resource create dummy4 ocf:heartbeat:Dummy
[root@virt-125 ~]# pcs resource
* dummy1 (ocf::heartbeat:Dummy): Started virt-125
* dummy2 (ocf::heartbeat:Dummy): Started virt-126
* dummy3 (ocf::heartbeat:Dummy): Started virt-125
* dummy4 (ocf::heartbeat:Dummy): Started virt-126
## Creating tags
[root@virt-125 ~]# pcs tag create special_resources_1 dummy1 dummy2
[root@virt-125 ~]# echo $?
0
[root@virt-125 ~]# pcs tag
special_resources_1
dummy1
dummy2
[root@virt-125 ~]# pcs tag create special_resources_2 dummy3 dummy4
[root@virt-125 ~]# pcs tag
special_resources_1
dummy1
dummy2
special_resources_2
dummy3
dummy4
> OK
## Displaying tags
[root@virt-125 ~]# pcs tag list
special_resources_1
dummy1
dummy2
special_resources_2
dummy3
dummy4
[root@virt-125 ~]# pcs tag config
special_resources_1
dummy1
dummy2
special_resources_2
dummy3
dummy4
[root@virt-125 ~]# pcs tag list special_resources_1
special_resources_1
dummy1
dummy2
[root@virt-125 ~]# pcs config | grep Tags -A 6
Tags:
special_resources_1
dummy1
dummy2
special_resources_2
dummy3
dummy4
> OK
## Destroying tags
[root@virt-125 ~]# pcs tag delete special_resources_1
[root@virt-125 ~]# pcs tag
special_resources_2
dummy3
dummy4
[root@virt-125 ~]# pcs tag remove special_resources_2
[root@virt-125 ~]# pcs tag
No tags defined
[root@virt-125 ~]# pcs tag create special_resources_1 dummy1 dummy2
[root@virt-125 ~]# pcs tag create special_resources_2 dummy3 dummy4
[root@virt-125 ~]# pcs tag remove special_resources_1 special_resources_2
[root@virt-125 ~]# pcs tag
No tags defined
> OK
## Updating tags
[root@virt-125 ~]# pcs tag create special_resources dummy1 dummy2 dummy3
[root@virt-125 ~]# pcs tag
special_resources
dummy1
dummy2
dummy3
[root@virt-125 ~]# pcs tag update special_resources add dummy4
[root@virt-125 ~]# pcs tag
special_resources
dummy1
dummy2
dummy3
dummy4
[root@virt-125 ~]# pcs tag update special_resources remove dummy1
[root@virt-125 ~]# pcs tag
special_resources
dummy2
dummy3
dummy4
[root@virt-125 ~]# pcs tag update special_resources add dummy1 --before dummy3
[root@virt-125 ~]# pcs tag
special_resources
dummy2
dummy1
dummy3
dummy4
[root@virt-125 ~]# pcs tag update special_resources remove dummy4
[root@virt-125 ~]# pcs tag update special_resources add dummy4 --after dummy2
[root@virt-125 ~]# pcs tag
special_resources
dummy2
dummy4
dummy1
dummy3
[root@virt-125 ~]# pcs tag update special_resources remove dummy1 dummy2
[root@virt-125 ~]# pcs tag
special_resources
dummy4
dummy3
[root@virt-125 ~]# pcs tag update special_resources add dummy1 dummy2
[root@virt-125 ~]# pcs tag
special_resources
dummy4
dummy3
dummy1
dummy2
[root@virt-125 ~]# pcs tag update special_resources remove dummy1
[root@virt-125 ~]# pcs tag update special_resources add dummy1 --before dummy2 remove dummy4
[root@virt-125 ~]# pcs tag
special_resources
dummy3
dummy1
dummy2
[root@virt-125 ~]# pcs tag update special_resources add dummy1 --after dummy2
[root@virt-125 ~]# pcs tag
special_resources
dummy3
dummy2
dummy1
> OK
## Error cases
# Add/remove non-existing resource
[root@virt-125 ~]# pcs tag update special_resources add dummy5
Error: bundle/clone/group/resource 'dummy5' does not exist
Error: Errors have occurred, therefore pcs is unable to continue
[root@virt-125 ~]# echo $?
1
[root@virt-125 ~]# pcs tag update special_resources remove dummy5
Error: Tag 'special_resources' does not contain id: 'dummy5'
Error: Errors have occurred, therefore pcs is unable to continue
> OK
# Adding already added resource
[root@virt-125 ~]# pcs tag update special_resources add dummy1
Error: Cannot add reference id already in the tag 'special_resources': 'dummy1'
Error: Errors have occurred, therefore pcs is unable to continue
> OK
# Creating a tag without resources
[root@virt-125 ~]# pcs tag create special_resources
Usage: pcs tag <command>
create <tag id> <id> [<id>]...
Create a tag containing the specified ids.
> OK
# Removing non-existing tag
[root@virt-125 ~]# pcs tag remove special_resources_2
Error: tag 'special_resources_2' does not exist
Error: Errors have occurred, therefore pcs is unable to continue
> OK
# Creating a tag with one non-existing resource
[root@virt-125 ~]# pcs tag remove special_resources
[root@virt-125 ~]# pcs tag create special_resources_1 dummy1 dummy2 dummy6
Error: bundle/clone/group/resource 'dummy6' does not exist
Error: Errors have occurred, therefore pcs is unable to continue
[root@virt-125 ~]# pcs tag
No tags defined
> OK
# Creating a tag with the same id as one of the resource
[root@virt-125 ~]# pcs tag create dummy1 dummy2
Error: 'dummy1' already exists
Error: Errors have occurred, therefore pcs is unable to continue
> OK
# Creating a tag with special character in name
[root@virt-125 ~]# pcs tag create special_resources_# dummy1
Error: invalid id 'special_resources_#', '#' is not a valid character for a id
Error: Errors have occurred, therefore pcs is unable to continue
> OK
# Adding to tag with both options, --before and --after
[root@virt-125 ~]# pcs tag create special_resources dummy1 dummy2
[root@virt-125 ~]# pcs tag update special_resources add dummy3 --before dummy1 --after dummy2
Error: Cannot specify both --before and --after
> OK
# Adding/moving and removing resource at the same time
[root@virt-125 ~]# pcs tag update special_resources add dummy3 --after dummy2 remove dummy3
Error: Ids cannot be added and removed at the same time: 'dummy3'
Error: Tag 'special_resources' does not contain id: 'dummy3'
Error: Errors have occurred, therefore pcs is unable to continue
[root@virt-125 ~]# pcs tag update special_resources add dummy1 --after dummy2 remove dummy1
Error: Ids cannot be added and removed at the same time: 'dummy1'
Error: Errors have occurred, therefore pcs is unable to continue
> OK
## Tagging group/clone resources
[root@virt-125 ~]# pcs tag remove special_resources
[root@virt-125 ~]# pcs resource group add G1 dummy1 dummy2
[root@virt-125 ~]# pcs resource clone dummy3
[root@virt-125 ~]# pcs resource
* dummy4 (ocf::heartbeat:Dummy): Started virt-125
* Resource Group: G1:
* dummy1 (ocf::heartbeat:Dummy): Started virt-126
* dummy2 (ocf::heartbeat:Dummy): Started virt-126
* Clone Set: dummy3-clone [dummy3]:
* Started: [ virt-125 virt-126 ]
[root@virt-125 ~]# pcs tag create GroupTag G1
[root@virt-125 ~]# pcs tag
GroupTag
G1
[root@virt-125 ~]# pcs tag create GroupResourcesTag dummy1 dummy2
[root@virt-125 ~]# pcs tag
GroupTag
G1
GroupResourcesTag
dummy1
dummy2
[root@virt-125 ~]# pcs resource ungroup G1
[root@virt-125 ~]# pcs tag
GroupResourcesTag
dummy1
dummy2
> OK
[root@virt-125 ~]# pcs tag create CloneTag dummy3-clone
[root@virt-125 ~]# pcs tag create CloneResourceTag dummy3
[root@virt-125 ~]# pcs tag
GroupResourcesTag
dummy1
dummy2
CloneTag
dummy3-clone
CloneResourceTag
dummy3
[root@virt-125 ~]# pcs resource unclone dummy3
[root@virt-125 ~]# pcs tag
GroupResourcesTag
dummy1
dummy2
CloneResourceTag
dummy3
> OK
## Creating a mixed tag with a clone/resource group and another resource
[root@virt-125 ~]# pcs resource clone dummy3
[root@virt-125 ~]# pcs tag create CloneTag dummy3-clone dummy4
[root@virt-125 ~]# pcs tag
GroupResourcesTag
dummy1
dummy2
CloneResourceTag
dummy3
CloneTag
dummy3-clone
dummy4
[root@virt-125 ~]# pcs resource unclone dummy3
[root@virt-125 ~]# pcs tag
GroupResourcesTag
dummy1
dummy2
CloneResourceTag
dummy3
> NOK, non-empty CloneTag was deleted after removing the clone
[root@virt-125 ~]# pcs resource group add G1 dummy1 dummy2
[root@virt-125 ~]# pcs tag
GroupResourcesTag
dummy1
dummy2
CloneResourceTag
dummy3
GroupTag
G1
dummy3
[root@virt-125 ~]# pcs resource ungroup G1
[root@virt-125 ~]# pcs tag
GroupResourcesTag
dummy1
dummy2
CloneResourceTag
dummy3
> NOK, non-empty GroupTag was deleted after removing the resource group
> This problem will be addresed in new bz
## Deleting resources, that have tag
[root@virt-125 ~]# pcs resource delete dummy1
Error: Unable to remove resource 'dummy1' because it is referenced in the tag: 'GroupResourcesTag'
[root@virt-125 ~]# pcs tag list GroupResourcesTag
GroupResourcesTag
dummy1
dummy2
> OK
## Deleting resources, that doesn't have tag
[root@virt-125 ~]# pcs resource delete dummy4
Attempting to stop: dummy4... Stopped
> OK
## Enabling/disabling tags
[root@virt-125 ~]# pcs tag list GroupResourcesTag
GroupResourcesTag
dummy1
dummy2
[root@virt-125 ~]# pcs resource
* dummy1 (ocf::heartbeat:Dummy): Started virt-125
* dummy2 (ocf::heartbeat:Dummy): Started virt-126
* dummy3 (ocf::heartbeat:Dummy): Started virt-125
[root@virt-125 ~]# pcs resource disable GroupResourcesTag
[root@virt-125 ~]# pcs resource
* dummy1 (ocf::heartbeat:Dummy): Stopped (disabled)
* dummy2 (ocf::heartbeat:Dummy): Stopped (disabled)
* dummy3 (ocf::heartbeat:Dummy): Started virt-125
> OK
[root@virt-125 ~]# pcs resource enable GroupResourcesTag
[root@virt-125 ~]# pcs resource
* dummy1 (ocf::heartbeat:Dummy): Started virt-125
* dummy2 (ocf::heartbeat:Dummy): Started virt-126
* dummy3 (ocf::heartbeat:Dummy): Started virt-125
> OK
## Safe-disabling tags without constraints
[root@virt-125 ~]# pcs resource safe-disable GroupResourcesTag
[root@virt-125 ~]# pcs resource
* dummy1 (ocf::heartbeat:Dummy): Stopped (disabled)
* dummy2 (ocf::heartbeat:Dummy): Stopped (disabled)
* dummy3 (ocf::heartbeat:Dummy): Started virt-125
> OK
## Safe-disabling tags with single constraint
[root@virt-125 ~]# pcs resource enable GroupResourcesTag
[root@virt-125 ~]# pcs constraint order start dummy1 then start dummy3
Adding dummy1 dummy3 (kind: Mandatory) (Options: first-action=start then-action=start)
[root@virt-125 ~]# pcs resource safe-disable GroupResourcesTag
Error: Disabling specified resources would have an effect on other resources
2 of 5 resource instances DISABLED and 0 BLOCKED from further action due to failure
Current cluster status:
Online: [ virt-125 virt-126 ]
fence-virt-125 (stonith:fence_xvm): Started virt-125
fence-virt-126 (stonith:fence_xvm): Started virt-126
dummy1 (ocf::heartbeat:Dummy): Started virt-125 (disabled)
dummy2 (ocf::heartbeat:Dummy): Started virt-126 (disabled)
dummy3 (ocf::heartbeat:Dummy): Started virt-125
Transition Summary:
* Stop dummy1 ( virt-125 ) due to node availability
* Stop dummy2 ( virt-126 ) due to node availability
* Stop dummy3 ( virt-125 ) due to required dummy1 start
Executing cluster transition:
* Resource action: dummy2 stop on virt-126
* Resource action: dummy3 stop on virt-125
* Resource action: dummy1 stop on virt-125
Revised cluster status:
Online: [ virt-125 virt-126 ]
fence-virt-125 (stonith:fence_xvm): Started virt-125
fence-virt-126 (stonith:fence_xvm): Started virt-126
dummy1 (ocf::heartbeat:Dummy): Stopped (disabled)
dummy2 (ocf::heartbeat:Dummy): Stopped (disabled)
dummy3 (ocf::heartbeat:Dummy): Stopped
[root@virt-125 ~]# pcs resource
* dummy1 (ocf::heartbeat:Dummy): Started virt-125
* dummy2 (ocf::heartbeat:Dummy): Started virt-126
* dummy3 (ocf::heartbeat:Dummy): Started virt-125
> OK
[root@virt-125 ~]# pcs resource safe-disable --simulate GroupResourcesTag --brief
dummy3
> OK
## Safe-disabling tags with multiple constraints
[root@virt-125 ~]# pcs resource create dummy4 ocf:heartbeat:Dummy
[root@virt-125 ~]# pcs constraint order start dummy2 then start dummy4
Adding dummy2 dummy4 (kind: Mandatory) (Options: first-action=start then-action=start)
[root@virt-125 ~]# pcs resource safe-disable --simulate GroupResourcesTag --brief
dummy3
dummy4
[root@virt-125 ~]# pcs resource safe-disable GroupResourcesTag
Error: Disabling specified resources would have an effect on other resources
{...}
[root@virt-125 ~]# pcs resource
* dummy3 (ocf::heartbeat:Dummy): Started virt-126
* dummy1 (ocf::heartbeat:Dummy): Started virt-125
* dummy2 (ocf::heartbeat:Dummy): Started virt-126
* dummy4 (ocf::heartbeat:Dummy): Started virt-125
> OK
[root@virt-125 ~]# pcs constraint remove order-dummy1-dummy3-mandatory
[root@virt-125 ~]# pcs constraint remove order-dummy1-dummy4-mandatory
## Managing/unmanaging tag
[root@virt-125 ~]# pcs resource unmanage GroupResourcesTag
[root@virt-125 ~]# pcs resource
* dummy3 (ocf::heartbeat:Dummy): Started virt-126
* dummy1 (ocf::heartbeat:Dummy): Started virt-125 (unmanaged)
* dummy2 (ocf::heartbeat:Dummy): Started virt-125 (unmanaged)
* dummy4 (ocf::heartbeat:Dummy): Started virt-126
> OK
[root@virt-125 ~]# pcs resource manage GroupResourcesTag
[root@virt-125 ~]# pcs resource
* dummy3 (ocf::heartbeat:Dummy): Started virt-126
* dummy1 (ocf::heartbeat:Dummy): Started virt-125
* dummy2 (ocf::heartbeat:Dummy): Started virt-125
* dummy4 (ocf::heartbeat:Dummy): Started virt-126
> OK
## Managing/unmanaging multiple tags
[root@virt-125 ~]# pcs resource unmanage GroupResourcesTag CloneResourceTag
[root@virt-125 ~]# pcs resource
* dummy3 (ocf::heartbeat:Dummy): Started virt-126 (unmanaged)
* dummy1 (ocf::heartbeat:Dummy): Started virt-125 (unmanaged)
* dummy2 (ocf::heartbeat:Dummy): Started virt-125 (unmanaged)
* dummy4 (ocf::heartbeat:Dummy): Started virt-126
> OK
[root@virt-125 ~]# pcs resource manage GroupResourcesTag CloneResourceTag
[root@virt-125 ~]# pcs resource
* dummy3 (ocf::heartbeat:Dummy): Started virt-126
* dummy1 (ocf::heartbeat:Dummy): Started virt-125
* dummy2 (ocf::heartbeat:Dummy): Started virt-125
* dummy4 (ocf::heartbeat:Dummy): Started virt-126
> OK
RESULT:
=======
One problem was found, described in comment 22. New bz was created for this issue: bz1857295
Based on comment 12, view the status of resources with a specific tag and move/unmove tags will be implemented in the next releases.
Marking as VERIFIED in pcs-0.10.6-2.el8
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (pcs bug fix and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHEA-2020:4617 |