Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
14 changes: 11 additions & 3 deletions manifests/server/dbgroup.pp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,14 @@
$port_override = $postgresql::server::port
}

#
# Group members, converted to a string acceptable by psql
# [user1, user2] to {"user1", "user2"}
#
$groupmembers_braces = regsubst("${groupmembers}", '^\[(.*)\]$', '{"\1"}')
$groupmembers_strip_empty_array = regsubst("${groupmembers_braces}", '^{""}$', '{}')
$groupmembers_psql = regsubst("${groupmembers_strip_empty_array}", ', ', '", "', 'G')

Postgresql_psql {
db => $db,
port => $port_override,
Expand All @@ -44,8 +52,8 @@
require => Class['Postgresql::Server'],
}

postgresql_psql {"${title}: UPDATE pg_group SET grolist = ARRAY${groupmembers} WHERE groname = '${groupname}'":
command => "UPDATE pg_group SET grolist = ARRAY${groupmembers} WHERE groname = '${groupname}'",
unless => "SELECT 1 FROM pg_group WHERE groname = '${groupname}' AND grolist = ARRAY${groupmembers}",
postgresql_psql {"${title}: UPDATE pg_group SET grolist = '${groupmembers_psql}' WHERE groname = '${groupname}'":
command => "UPDATE pg_group SET grolist = '${groupmembers_psql}' WHERE groname = '${groupname}'",
unless => "SELECT 1 FROM pg_group WHERE groname = '${groupname}' AND grolist = '${groupmembers_psql}'",
}
}
16 changes: 7 additions & 9 deletions spec/unit/defines/server/dbgroup_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,10 @@
'port' => "5432",
})
end
it 'should have update pg_group for test group with groupmembers as []' do
is_expected.to contain_postgresql_psql("test: UPDATE pg_group SET grolist = ARRAY[] WHERE groname = 'test'").with({
'command' => "UPDATE pg_group SET grolist = ARRAY[] WHERE groname = 'test'",
'environment' => [],
'unless' => "SELECT 1 FROM pg_group WHERE groname = 'test' AND grolist = ARRAY[]",
it 'should have update pg_group for test group with groupmembers as {}' do
is_expected.to contain_postgresql_psql("test: UPDATE pg_group SET grolist = '{}' WHERE groname = 'test'").with({
'command' => "UPDATE pg_group SET grolist = '{}' WHERE groname = 'test'",
'unless' => "SELECT 1 FROM pg_group WHERE groname = 'test' AND grolist = '{}'",
'port' => "5432",
})
end
Expand Down Expand Up @@ -65,10 +64,9 @@
})
end
it 'should have update pg_group for test group with provided groupmembers' do
is_expected.to contain_postgresql_psql("test: UPDATE pg_group SET grolist = ARRAY[testuser1, testuser2] WHERE groname = 'test'").with({
'command' => "UPDATE pg_group SET grolist = ARRAY[testuser1, testuser2] WHERE groname = 'test'",
'environment' => [],
'unless' => "SELECT 1 FROM pg_group WHERE groname = 'test' AND grolist = ARRAY[testuser1, testuser2]",
is_expected.to contain_postgresql_psql("test: UPDATE pg_group SET grolist = '{\"testuser1\", \"testuser2\"}' WHERE groname = 'test'").with({
'command' => "UPDATE pg_group SET grolist = '{\"testuser1\", \"testuser2\"}' WHERE groname = 'test'",
'unless' => "SELECT 1 FROM pg_group WHERE groname = 'test' AND grolist = '{\"testuser1\", \"testuser2\"}'",
'port' => "5432",
})
end
Expand Down
1 change: 0 additions & 1 deletion spec/unit/defines/server/role_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,6 @@
it 'should have an alter statement to set PASSWORD DISABLE' do
is_expected.to contain_postgresql_psql('test: ALTER USER "test" PASSWORD DISABLE').with({
'command' => "ALTER USER \"test\" PASSWORD DISABLE",
'environment' => [],
'port' => "5432",
})
end
Expand Down