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
1 change: 1 addition & 0 deletions .rubocop_todo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ RSpec/NamedSubject:
- 'spec/defines/sp_configure_spec.rb'
- 'spec/defines/user_spec.rb'
- 'spec/unit/puppet_x/sql_connection_spec.rb'
- 'spec/functions/partial_params_args_spec.rb'

# Offense count: 31
# Configuration parameters: AllowedGroups.
Expand Down
50 changes: 50 additions & 0 deletions lib/puppet/functions/sqlserver/partial_params_args.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# frozen_string_literal: true

# @summary this function populates and returns the string of arguments which later gets injected in template.
# arguments that return string holds is conditional and decided by the the input given to function.

Puppet::Functions.create_function(:'sqlserver::partial_params_args') do
# @param args contains
# Enum['ON', 'OFF'] $db_chaining
# Enum['ON', 'OFF'] $trustworthy
# String[1] $default_fulltext_language
# String[1] $default_language
# Optional[Enum['ON', 'OFF']] $nested_triggers
# Optional[Enum['ON', 'OFF']] $transform_noise_words
# Integer[1753, 9999] $two_digit_year_cutoff
#
# @return String
# Generated on the basis of provided values.
#
# Sample Input Output
#
# Input
# args = {
# db_chaining: 'OFF',
# trustworthy: 'OFF',
# default_fulltext_language: 'English',
# default_language: 'us_english',
# two_digit_year_cutoff: 2049,
# nested_triggers: 'OFF',
# }
#
# Output
# "DB_CHAINING OFF,TRUSTWORTHY OFF,DEFAULT_FULLTEXT_LANGUAGE=[English]\n,DEFAULT_LANGUAGE = [us_english]\n,NESTED_TRIGGERS = OFF,TWO_DIGIT_YEAR_CUTOFF = 2049"

dispatch :partial_params_args do
param 'Hash', :args
return_type 'Variant[String]'
end

def partial_params_args(args)
partial_params = []
partial_params << "DB_CHAINING #{args['db_chaining']}" if args['db_chaining']
partial_params << "TRUSTWORTHY #{args['trustworthy']}" if args['trustworthy']
partial_params << "DEFAULT_FULLTEXT_LANGUAGE=[#{args['default_fulltext_language']}]\n" if args['default_fulltext_language']
partial_params << "DEFAULT_LANGUAGE = [#{args['default_language']}]\n" if args['default_language']
partial_params << "NESTED_TRIGGERS = #{args['nested_triggers']}" if args['nested_triggers']
partial_params << "TRANSFORM_NOISE_WORDS = #{args['transform_noise_words']}" if args['transform_noise_words']
partial_params << "TWO_DIGIT_YEAR_CUTOFF = #{args['two_digit_year_cutoff']}" if args['two_digit_year_cutoff']
partial_params.join(',')
end
end
136 changes: 134 additions & 2 deletions manifests/database.pp
Original file line number Diff line number Diff line change
Expand Up @@ -179,10 +179,142 @@
'absent' => 'delete',
}

$database_containment_exists_parameters = {
'db_name' => $db_name,
'containment' => $containment,
}

$database_compatibility_exists_parameters = {
'db_name' => $db_name,
'compatibility' => $compatibility,
}

$database_collation_exists_parameters = {
'db_name' => $db_name,
'collation_name' => $collation_name,
}

$database_db_chaining_exists_parameters = {
'db_name' => $db_name,
'db_chaining' => $db_chaining,
}

$database_default_fulltext_language_exists_parameters = {
'default_fulltext_language' => $default_fulltext_language,
'db_name' => $db_name,
}

$database_default_language_exists_parameters = {
'default_language' => $default_language,
'db_name' => $db_name,
}

$database_nested_triggers_exists_parameters = {
'db_name' => $db_name,
'nested_triggers' => $nested_triggers,
}

$database_transform_noise_words_exists_parameters = {
'db_name' => $db_name,
'transform_noise_words' => $transform_noise_words,
}

$database_trustworthy_exists_parameters = {
'db_name' => $db_name,
'trustworthy' => $trustworthy,
}

$database_two_digit_year_cutoff_exists_parameters= {
'db_name' => $db_name,
'two_digit_year_cutoff' => $two_digit_year_cutoff,
}

$partial_params_parameters = {
'db_chaining' => $db_chaining,
'trustworthy' => $trustworthy,
'default_fulltext_language' => $default_fulltext_language,
'default_language' => $default_language,
'nested_triggers' => $nested_triggers,
'transform_noise_words' => $transform_noise_words,
'two_digit_year_cutoff' => $two_digit_year_cutoff,
}

$partial_params = sqlserver::partial_params_args($partial_params_parameters)

if $create_delete == 'create' {
$database_create_delete_parameters = {
'db_name' => $db_name,
'containment' => $containment,
'filespec_name' => $filespec_name,
'filespec_filename' => $filespec_filename,
'filespec_size' => $filespec_size,
'filespec_maxsize' => $filespec_maxsize,
'filespec_filegrowth' => $filespec_filegrowth,
'log_name' => $log_name,
'log_filename' => $log_filename,
'log_size' => $log_size,
'log_maxsize' => $log_maxsize,
'log_filegrowth' => $log_filegrowth,
'filestream_directory_name' => $filestream_directory_name,
'filestream_non_transacted_access' => $filestream_non_transacted_access,
'db_chaining' => $db_chaining,
'trustworthy' => $trustworthy,
'default_fulltext_language' => $default_fulltext_language,
'default_language' => $default_language,
'nested_triggers' => $nested_triggers,
'transform_noise_words' => $transform_noise_words,
'two_digit_year_cutoff' => $two_digit_year_cutoff,
'database_compatibility_exists_parameters' => $database_compatibility_exists_parameters,
'compatibility' => $compatibility,
'collation_name' => $collation_name,
'database_collation_exists_parameters' => $database_collation_exists_parameters,
'database_db_chaining_exists_parameters' => $database_db_chaining_exists_parameters,
'database_default_fulltext_language_exists_parameters' => $database_default_fulltext_language_exists_parameters,
'database_default_language_exists_parameters' => $database_default_language_exists_parameters,
'database_nested_triggers_exists_parameters' => $database_nested_triggers_exists_parameters,
'database_transform_noise_words_exists_parameters' => $database_transform_noise_words_exists_parameters,
'database_trustworthy_exists_parameters' => $database_trustworthy_exists_parameters,
'database_two_digit_year_cutoff_exists_parameters' => $database_two_digit_year_cutoff_exists_parameters,
'partial_params' => $partial_params,
}
} else {
$database_create_delete_parameters = {
'db_name' => $db_name,
}
}

$database_check_exists_parameters = {
'compatibility' => $database_compatibility_exists_parameters,
'collation' => $database_collation_exists_parameters,
'containment' => $database_containment_exists_parameters,
'db_chaining' => $database_db_chaining_exists_parameters,
'default_fulltext_language' => $database_default_fulltext_language_exists_parameters,
'default_language' => $database_default_language_exists_parameters,
'nested_triggers' => $database_nested_triggers_exists_parameters,
'transform_noise_words' => $database_transform_noise_words_exists_parameters,
'trustworthy' => $database_trustworthy_exists_parameters,
'two_digit_year_cutoff' => $database_two_digit_year_cutoff_exists_parameters,
}

$database_exists_parameters = {
'ensure' => $ensure,
'db_name' => $db_name,
'collation_name' => $collation_name,
'containment' => $containment,
'default_fulltext_language' => $default_fulltext_language,
'default_language' => $default_language,
'db_chaining' => $db_chaining,
'nested_triggers' => $nested_triggers,
'transform_noise_words' => $transform_noise_words,
'trustworthy' => $trustworthy,
'two_digit_year_cutoff' => $two_digit_year_cutoff,
'database_check_exists_parameters' => $database_check_exists_parameters,
}

sqlserver_tsql { "database-${instance}-${db_name}":
instance => $instance,
command => template("sqlserver/${create_delete}/database.sql.erb"),
onlyif => template('sqlserver/query/database_exists.sql.erb'),
command => epp("sqlserver/${create_delete}/database.sql.epp", $database_create_delete_parameters),
onlyif => epp('sqlserver/query/database_exists.sql.epp', $database_exists_parameters),
require => Sqlserver::Config[$instance],
}
}
42 changes: 30 additions & 12 deletions manifests/login.pp
Original file line number Diff line number Diff line change
Expand Up @@ -76,22 +76,40 @@
'absent' => 'delete',
}

$parameters = {
'password' => Deferred('sqlserver::password', [$password]),
'disabled' => $disabled,
'login_type' => $login_type,
'login' => $login,
'default_language' => $default_language,
'default_database' => $default_database,
'check_policy' => $check_policy,
'check_expiration' => $check_expiration,
'svrroles' => $svrroles,
if $_create_delete == 'create' {
$create_delete_login_parameters = {
'disabled' => $disabled,
'login' => $login,
'password' => Deferred('sqlserver::password', [$password]),
'check_expiration' => $check_expiration,
'check_policy' => $check_policy,
'default_language' => $default_language,
'default_database' => $default_database,
'login_type' => $login_type,
'svrroles' => $svrroles,
}
} else {
$create_delete_login_parameters = {
'login' => $login,
}
}

$query_login_exists_parameters = {
'login' => $login,
'disabled' => $disabled,
'check_expiration' => $check_expiration,
'check_policy' => $check_policy,
'login_type' => $login_type,
'default_database' => $default_database,
'default_language' => $default_language,
'ensure' => $ensure,
'svrroles' => $svrroles,
}

sqlserver_tsql { "login-${instance}-${login}":
instance => $instance,
command => stdlib::deferrable_epp("sqlserver/${_create_delete}/login.sql.epp", $parameters),
onlyif => template('sqlserver/query/login_exists.sql.erb'),
command => stdlib::deferrable_epp("sqlserver/${_create_delete}/login.sql.epp", $create_delete_login_parameters),
onlyif => epp('sqlserver/query/login_exists.sql.epp', $query_login_exists_parameters),
require => Sqlserver::Config[$instance],
}

Expand Down
23 changes: 21 additions & 2 deletions manifests/login/permissions.pp
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,29 @@
true => '-WITH_GRANT_OPTION',
default => ''
}

$create_login_permission_parameters = {
'permissions' => $permissions,
'with_grant_option' => $with_grant_option,
'login' => $login,
'_state' => $_state,
}

$login_permission_exists_parameters = {
'login' => $login,
'_state' => $_state,
'with_grant_option' => $with_grant_option,
}

$query_login_permission_exists_parameters = {
'permissions' => $permissions,
'login_permission_exists_parameters' => $login_permission_exists_parameters,
}

sqlserver_tsql { "login-permission-${instance}-${login}-${_state}${_grant_option}":
instance => $instance,
command => template('sqlserver/create/login/permission.sql.erb'),
onlyif => template('sqlserver/query/login/permission_exists.sql.erb'),
command => epp('sqlserver/create/login/permission.sql.epp', $create_login_permission_parameters),
onlyif => epp('sqlserver/query/login/permission_exists.sql.epp', $query_login_permission_exists_parameters),
require => Sqlserver::Config[$instance],
}
}
66 changes: 62 additions & 4 deletions manifests/role.pp
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,50 @@
# users. see MODULES-3355
$sqlserver_tsql_title = "role-${instance}-${database}-${role}"

$role_exists_parameters = {
'ensure' => $ensure,
'type' => $type,
'role' => $role,
}

$role_owner_check_parameters = {
'type' => $type,
'authorization' => $authorization,
'role' => $role,
}

$query_role_exists_parameters = {
'database' => $database,
'role_exists_parameters' => $role_exists_parameters,
'type' => $type,
'role' => $role,
'ensure' => $ensure,
'authorization' => $authorization,
'role_owner_check_parameters' => $role_owner_check_parameters,
}

if $_create_delete == 'create' {
$role_create_delete_parameters = {
'database' => $database,
'role_exists_parameters' => $role_exists_parameters,
'type' => $type,
'role' => $role,
'authorization' => $authorization,
'role_owner_check_parameters' => $role_owner_check_parameters,
'query_role_exists_parameters' => $query_role_exists_parameters,
}
} else {
$role_create_delete_parameters = {
'database' => $database,
'type' => $type,
'role' => $role,
'query_role_exists_parameters' => $query_role_exists_parameters,
}
}

sqlserver_tsql { $sqlserver_tsql_title:
command => template("sqlserver/${_create_delete}/role.sql.erb"),
onlyif => template('sqlserver/query/role_exists.sql.erb'),
command => epp("sqlserver/${_create_delete}/role.sql.epp", $role_create_delete_parameters),
onlyif => epp('sqlserver/query/role_exists.sql.epp', $query_role_exists_parameters),
instance => $instance,
}

Expand Down Expand Up @@ -105,10 +146,27 @@
}
}

$role_members_parameters = {
'database' => $database,
'role' => $role,
'members' => $members,
'type' => $type,
'members_purge' => $members_purge,
}

$query_role_member_exists_parameters = {
'database' => $database,
'role' => $role,
'members' => $members,
'ensure' => $ensure,
'members_purge' => $members_purge,
'type' => $type,
}

if size($members) > 0 or $members_purge == true {
sqlserver_tsql { "${sqlserver_tsql_title}-members":
command => template('sqlserver/create/role/members.sql.erb'),
onlyif => template('sqlserver/query/role/member_exists.sql.erb'),
command => epp('sqlserver/create/role/members.sql.epp', $role_members_parameters),
onlyif => epp('sqlserver/query/role/member_exists.sql.epp', $query_role_member_exists_parameters),
instance => $instance,
}
}
Expand Down
Loading