Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix regex and test error #554

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/puppet/provider/cs_clone/pcs.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def change_clone_id(type, primitive, id, cib)
return unless doc.root.attributes['id'] != id

doc.root.attributes['id'] = id
cmd = [command(:cibadmin), '--replace', '--xpath', xpath, '--xml-text', doc.to_s.chop]
cmd = [command(:cibadmin), '--replace', '--xpath', xpath, '--xml-text', doc.to_s]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

which errors did that cause? Maybe this was meant to be chomp. not chop?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i agree chomp is the best solution! i it was cutting in half a new line.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh you did find that also. wasn't aware of it

self.class.run_command_in_cib(cmd, cib)
end

Expand Down
154 changes: 84 additions & 70 deletions spec/classes/corosync_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,6 @@
)
end

it 'validates the corosync configuration' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_validate_cmd(
'/usr/bin/env COROSYNC_MAIN_CONFIG_FILE=% /usr/sbin/corosync -t'
)
end

context 'validates the corosncy configuration when config_validate_cmd is set' do
let(:params) do
super().merge(
Expand Down Expand Up @@ -65,16 +59,16 @@

it 'configures votequorum' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{nodelist}
%r{nodelist\s*\{}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering if those additional regular expressions provide any value? Do you think the original tests weren't sufficient enough, or did they cause problems?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not really add value, just checking whole line.

)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: node1\.test\.org\n\s*nodeid: 1}
%r{^\s*ring0_addr:\s*node1\.test\.org\s*(?:\r\n|\n)\s*nodeid:\s*1\s*$}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: node2\.test\.org\n\s*nodeid: 2}
%r{^\s*ring0_addr:\s*node2\.test\.org\s*(?:\r\n|\n)\s*nodeid:\s*2\s*$}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{two_node: 1\n}
%r{^\s*two_node:\s*1}
)
end

Expand All @@ -83,13 +77,13 @@

it 'supports persistent node IDs' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{nodelist}
%r{nodelist\s*\{}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: node1\.test\.org\n\s*nodeid: 3}
%r{^\s*ring0_addr:\s*node1\.test\.org\s*(?:\r\n|\n)\s*nodeid:\s*3}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: node2\.test\.org\n\s*nodeid: 11}
%r{^\s*ring0_addr:\s*node2\.test\.org\s*(?:\r\n|\n)\s*nodeid:\s*11}
)
end
end
Expand All @@ -104,13 +98,13 @@

it 'supports persistent node names' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{nodelist}
%r{nodelist\s*\{}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: 192\.168\.0\.1\n\s*nodeid: 1\n\s*name: node1\.test\.org}
%r{^\s*ring0_addr:\s*192\.168\.0\.1(?:\r\n|\n)\s*nodeid:\s*1(?:\r\n|\n)\s*name:\s*node1\.test\.org}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: 192\.168\.0\.2\n\s*nodeid: 2\n\s*name: node2\.test\.org}
%r{^\s*ring0_addr:\s*192\.168\.0\.2(?:\r\n|\n)\s*nodeid:\s*2(?:\r\n|\n)\s*name:\s*node2\.test\.org}
)
end
end
Expand All @@ -126,7 +120,7 @@

it 'does not configure two_nodes option' do
is_expected.not_to contain_file('/etc/corosync/corosync.conf').with_content(
%r{two_node: 1\n}
%r{^\s*two_node:\s*1}
)
end
end
Expand All @@ -140,7 +134,7 @@

it 'configures two_node' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{two_node: 1\n}
%r{^\s*two_node:\s*1}
)
end
end
Expand All @@ -155,16 +149,16 @@

it 'configures nodelist' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{nodelist}
%r{nodelist\s*\{}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: node1\.test\.org\n\s*nodeid: 1}
%r{^\s*ring0_addr:\s*node1\.test\.org(?:\r\n|\n)\s*nodeid:\s*1}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: node2\.test\.org\n\s*nodeid: 2}
%r{^\s*ring0_addr:\s*node2\.test\.org(?:\r\n|\n)\s*nodeid:\s*2}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{two_node: 1\n}
%r{^\s*two_node:\s*1}
)
end
end
Expand All @@ -184,14 +178,14 @@
(1..4).each do |node_id|
it "configures rings for host #{node_id} correctly" do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: 172.31.10.#{node_id}\n\s*ring1_addr: 172.31.11.#{node_id}\n\s*ring2_addr: 172.31.12.#{node_id}\n\s*nodeid: #{node_id}}
%r{ring0_addr: 172.31.10.#{node_id}(?:\r\n|\n)\s*ring1_addr: 172.31.11.#{node_id}(?:\r\n|\n)\s*ring2_addr: 172.31.12.#{node_id}(?:\r\n|\n)\s*nodeid: #{node_id}}
)
end
end

it 'does not configure two_nodes option' do
is_expected.not_to contain_file('/etc/corosync/corosync.conf').with_content(
%r{two_node: 1\n}
%r{^\s*two_node:\s*1}
)
end
end
Expand All @@ -209,14 +203,14 @@
(1..2).each do |node_id|
it "configures rings for host #{node_id} correctly" do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: 172.31.10.#{node_id}\n\s*ring1_addr: 172.31.11.#{node_id}\n\s*ring2_addr: 172.31.12.#{node_id}\n\s*nodeid: #{node_id}}
%r{ring0_addr: 172.31.10.#{node_id}(?:\r\n|\n)\s*ring1_addr: 172.31.11.#{node_id}(?:\r\n|\n)\s*ring2_addr: 172.31.12.#{node_id}(?:\r\n|\n)\s*nodeid: #{node_id}}
)
end
end

it 'configures two_node' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{two_node: 1\n}
%r{^\s*two_node:\s*1}
)
end
end
Expand All @@ -240,43 +234,43 @@

it 'configures votequorum' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{nodelist}
%r{nodelist\s*\{}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: node1\.test\.org\n\s*nodeid: 1}
%r{^\s*ring0_addr: node1\.test\.org(?:\r\n|\n)\s*nodeid:\s*1}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: node2\.test\.org\n\s*nodeid: 2}
%r{^\s*ring0_addr: node2\.test\.org(?:\r\n|\n)\s*nodeid:\s*2}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{two_node: 1\n}
%r{^\s*two_node:\s*1}
)
end

it 'supports persistent node IDs' do
params[:quorum_members_ids] = [3, 11]
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{nodelist}
%r{nodelist\s*\{}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: node1\.test\.org\n\s*nodeid: 3}
%r{^\s*ring0_addr:\s*node1\.test\.org(?:\r\n|\n)\s*nodeid:\s*3}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: node2\.test\.org\n\s*nodeid: 11}
%r{^\s*ring0_addr:\s*node2\.test\.org(?:\r\n|(?:\r\n|\n))\s*nodeid:\s*11}
)
end

it 'supports persistent node names' do
params[:quorum_members] = ['192.168.0.1', '192.168.0.2']
params[:quorum_members_names] = ['node1.test.org', 'node2.test.org']
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{nodelist}
%r{nodelist\s*\{}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: 192\.168\.0\.1\n\s*nodeid: 1\n\s*name: node1\.test\.org}
%r{^\s*ring0_addr: 192\.168\.0\.1(?:\r\n|\n)\s*nodeid:\s*1(?:\r\n|\n)\s*name:\s*node1\.test\.org}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{ring0_addr: 192\.168\.0\.2\n\s*nodeid: 2\n\s*name: node2\.test\.org}
%r{^\s*ring0_addr: 192\.168\.0\.2(?:\r\n|\n)\s*nodeid:\s*2(?:\r\n|\n)\s*name:\s*node2\.test\.org}
)
end
end
Expand Down Expand Up @@ -337,7 +331,7 @@

it 'configures cluster_name' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{cluster_name:\s*hacell$}
%r{^\s*cluster_name:\s*hacell}
)
end
end
Expand Down Expand Up @@ -541,9 +535,7 @@
end

it 'is set in corosync.conf' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{#{optional_parameter}:\s*#{possible_value}\n}
)
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(%r{#{optional_parameter}:\s*#{Regexp.escape(possible_value.to_s)}\s*\n})
end
end
end
Expand Down Expand Up @@ -601,7 +593,7 @@

it 'does not contain nodelist' do
is_expected.not_to contain_file('/etc/corosync/corosync.conf').with_content(
%r{nodelist}
%r{nodelist\s*\{}
)
end
end
Expand All @@ -616,7 +608,7 @@

it 'does not contain nodelist' do
is_expected.not_to contain_file('/etc/corosync/corosync.conf').with_content(
%r{nodelist}
%r{nodelist\s*\{}
)
end
end
Expand Down Expand Up @@ -730,6 +722,27 @@

it_configures 'corosync'

# Check the correct validation command is used for each OS
it 'validates the corosync configuration' do
case os_facts[:os]['family']
when 'RedHat'
case os_facts[:os]['release']['major'].to_i
when 0..7
is_expected.to contain_file('/etc/corosync/corosync.conf').with_validate_cmd(
'/usr/bin/env COROSYNC_MAIN_CONFIG_FILE=% /usr/sbin/corosync -t'
)
else
is_expected.to contain_file('/etc/corosync/corosync.conf').with_validate_cmd(
'/usr/sbin/corosync -c % -t'
)
end
else
is_expected.to contain_file('/etc/corosync/corosync.conf').with_validate_cmd(
'/usr/bin/env COROSYNC_MAIN_CONFIG_FILE=% /usr/sbin/corosync -t'
)
end
end

# Check default package installations per platform
case os_facts[:os]['family']
when 'RedHat'
Expand Down Expand Up @@ -942,9 +955,7 @@

it 'does not contain the quorum device config in corosync.conf' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r!quorum {
provider: corosync_votequorum
}$!m
%r{quorum\s*\{\s*provider:\s*corosync_votequorum\s*\}\s*$}
)
end

Expand All @@ -963,18 +974,20 @@

it 'contains the quorum configuration' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r!quorum {
provider: corosync_votequorum
device {
model: net
votes: 1

net {
algorithm: ffsplit
host: quorum1[.]test[.]org
}
}
}!m
%r{
quorum\s*\{
\s*provider:\s*corosync_votequorum
\s*device\s*\{
\s*model:\s*net
\s*votes:\s*1
\s*
\s*net\s*\{
\s*algorithm:\s*ffsplit
\s*host:\s*quorum1\.test\.org
\s*\}
\s*\}
\s*\}
}x
)
end

Expand Down Expand Up @@ -1050,18 +1063,19 @@

it 'contains the quorum configuration' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r!quorum {
provider: corosync_votequorum
device {
model: net
votes: 1

net {
algorithm: ffsplit
host: quorum1[.]test[.]org
}
}
}!m
%r{
quorum\s*\{
\s*provider:\s*corosync_votequorum # Match 'provider: corosync_votequorum'
\s*device\s*\{
\s*model:\s*net
\s*votes:\s*1
\s*net\s*\{
\s*algorithm:\s*ffsplit
\s*host:\s*quorum1\.test\.org
\s*\}
\s*\}
\s*\}
}x
)
end
end
Expand All @@ -1079,7 +1093,7 @@

it 'does not configure two node' do
is_expected.not_to contain_file('/etc/corosync/corosync.conf').with_content(
%r{two_node: 1\n}
%r{^\s*two_node:\s*1}
)
end
# else - to implement
Expand Down
Loading