Bug 2096909

Summary: Systemd and service resources do not comply with the OCF1.1 standard
Product: Red Hat Enterprise Linux 9 Reporter: Markéta Smazová <msmazova>
Component: pacemakerAssignee: Ken Gaillot <kgaillot>
Status: NEW --- QA Contact: cluster-qe <cluster-qe>
Severity: low Docs Contact:
Priority: low    
Version: 9.0CC: cluster-maint, tojeline
Target Milestone: rcKeywords: Triaged
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: No Doc Update
Doc Text:
This is mostly invisible to end users
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Enhancement
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Markéta Smazová 2022-06-14 14:23:52 UTC
Description of problem:
	Unable to validate metadata for systemd and service resources with the ocf 1.1 standard schema.

Version-Release number of selected component (if applicable):
	pacemaker-2.1.2-4.el9.x86_64

How reproducible:
	always

Steps to Reproduce:
	1. curl -s https://raw.githubusercontent.com/ClusterLabs/OCF-spec/main/ra/1.1/ra-api.rng -o ocf1.1.rng
	2. crm_resource --show-metadata=service:sssd | xmllint --noout --relaxng ocf1.1.rng -

Actual results:
	-:9: element parameters: Relax-NG validity error : Expecting an element , got nothing
	- fails to validate

Expected results:
	Systemd and service resources metadata validate with the schema

Additional info:

It seems that the schema requires at least one element in "parameters":

	cat ocf1.1.rng | grep parameters
		<element name="parameters"> <oneOrMore>


But there are no elements in "parameters" for this service resource:

	crm_resource --show-metadata=service:sssd | grep parameters -C1
	  <shortdesc lang="en">systemd unit file for sssd</shortdesc>
	  <parameters/>
	  <actions>

Comment 1 Ken Gaillot 2022-06-14 15:04:11 UTC
Right, only OCF agents can validate against the OCF schema.

Pacemaker simulates OCF-like meta-data for non-OCF resources, but it can't be perfect since they don't actually support the OCF standard. At best we could supply an alternate schema for non-OCF meta-data.

Comment 2 Tomas Jelinek 2022-06-15 15:39:09 UTC
(In reply to Ken Gaillot from comment #1)
> Right, only OCF agents can validate against the OCF schema.

Interesting. I always thought, that pacemaker generates OCF valid meta-data for all non-OCF agents, so that the agents can be worked with as if they were truly OCF. What you said would suggest that this is not the case, and non-OCF agents and their meta-data potentially need to be handled differently.

Comment 3 Ken Gaillot 2022-06-15 17:28:59 UTC
(In reply to Tomas Jelinek from comment #2)
> (In reply to Ken Gaillot from comment #1)
> > Right, only OCF agents can validate against the OCF schema.
> 
> Interesting. I always thought, that pacemaker generates OCF valid meta-data
> for all non-OCF agents, so that the agents can be worked with as if they
> were truly OCF. What you said would suggest that this is not the case, and
> non-OCF agents and their meta-data potentially need to be handled
> differently.

Correct -- non-OCF agents don't support parameters for example, but the OCF standard requires at least one parameter to be specified. Technically they may not support all the required actions either, but Pacemaker probably already simulates those.

If we relax the requirement for parameters in the next OCF standard, I suppose we could make them compliant, which would be convenient.