Skip to content

cs_order fails with pcs provider because of score parameter #485

@efoft

Description

@efoft

Affected Puppet, Ruby, OS and module versions/distributions

  • Puppet: puppet-agent-6.15.0-1.el7.x86_64
  • Ruby: ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
  • Distribution: CentOS 7.7, 7.8
  • Module version: master

How to reproduce (e.g Puppet code you use)

cs_order { 'drbd_before_fs':
    first  => 'ms_drbd:promote',
    second => 'drbd_mount:start',
    cib => 'puppet'
}

What are you seeing

Error: /Stage[main]/Profile::Ha::Nfs/Cs_order[drbd_before_fs]: Could not evaluate: Execution of '/usr/sbin/pcs constraint order promote ms_drbd then start drbd_mount INFINITY kind=Mandatory id=drbd_before_fs symmetrical=true -f /opt/puppetlabs/puppet/cache/shadow.puppet' returned 1: Error: missing value of 'INFINITY' option

What behaviour did you expect instead

Proper creation of cluster resources order without error.

Output log

Any additional information you'd like to impart

This errorneous INFINITY word in produced pcs command comes from the score parameter:

lib/puppet/type/cs_order.rb:

newproperty(:score) do
    desc "The priority of the this ordered grouping.  Primitives can be a part
      of multiple order groups and so there is a way to control which
      primitives get priority when forcing the order of state changes on
      other primitives.  This value can be an integer but is often defined
      as the string INFINITY."

    defaultto 'INFINITY'
  end

lib/puppet/provider/cs_order/pcs.rb:

score = if items['score']
                  items['score']
                else
                  'INFINITY'
                end

Actually neither pacemaker 1.1 nor 2.0 currently have score parameter for order constraints.
https://clusterlabs.org/pacemaker/doc/en-US/Pacemaker/1.1/html-single/Pacemaker_Explained/#idm140583457263504
https://clusterlabs.org/pacemaker/doc/en-US/Pacemaker/2.0/html-single/Pacemaker_Explained/#idm47160732931568

Seems that score was completely replaced with kind feature some time ago.

Need to update the type and provider code to reflect current pcs syntax.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions