Currently, handling of different resource standards (ocf, systemd, etc.) is disjointed. Consider refactoring into an object-oriented model along the lines of:
- A new pcmk__standard_t object would have a uint32_t capabilities member that pcmk_get_ra_caps() would become an accessor for; a void *standard_data for standard-specific data; and a variety of methods (list available providers, list available agents, execute action, etc.).
- A global hash table would use the standard ("ocf", "systemd", etc.) as key and the corresponding pcmk__standard_t as value.
- Try to replace anywhere that we currently check a standard name with a method.