Showing with 4,542 additions and 551 deletions.
  1. +1 −1 .fixtures.yml
  2. +6 −0 .geppetto-rc.json
  3. +16 −6 .gitignore
  4. +23 −0 .project
  5. +39 −0 .sync.yml
  6. +19 −8 .travis.yml
  7. +19 −0 CHANGELOG.md
  8. +112 −18 Gemfile
  9. +427 −149 README.md
  10. +43 −0 appveyor.yml
  11. +2 −2 examples/sp_configure.pp
  12. +9 −0 lib/facter/sqlserver_features.rb
  13. +9 −0 lib/facter/sqlserver_instances.rb
  14. +28 −0 lib/puppet/parser/functions/sqlserver_upcase.rb
  15. +21 −0 lib/puppet/parser/functions/sqlserver_validate_hash_uniq_values.rb
  16. +3 −0 lib/puppet/parser/functions/sqlserver_validate_instance_name.rb
  17. +14 −7 lib/puppet/parser/functions/sqlserver_validate_range.rb
  18. 0 lib/puppet/property/{login.rb → sqlserver_login.rb}
  19. +22 −0 lib/puppet/property/sqlserver_tsql.rb
  20. +1 −81 lib/puppet/provider/sqlserver.rb
  21. +44 −8 lib/puppet/provider/sqlserver_features/mssql.rb
  22. +71 −20 lib/puppet/provider/sqlserver_instance/mssql.rb
  23. +21 −7 lib/puppet/provider/sqlserver_tsql/mssql.rb
  24. +0 −40 lib/puppet/templates/authenticated_query.ps1.erb
  25. +8 −1 lib/puppet/type/sqlserver_features.rb
  26. +10 −1 lib/puppet/type/sqlserver_instance.rb
  27. +23 −10 lib/puppet/type/sqlserver_tsql.rb
  28. +235 −0 lib/puppet_x/sqlserver/features.rb
  29. +1 −27 lib/puppet_x/sqlserver/server_helper.rb
  30. +127 −0 lib/puppet_x/sqlserver/sql_connection.rb
  31. +2 −21 manifests/config.pp
  32. +44 −2 manifests/login.pp
  33. +53 −0 manifests/login/permissions.pp
  34. +117 −0 manifests/role.pp
  35. +74 −0 manifests/role/permissions.pp
  36. +7 −1 manifests/sp_configure.pp
  37. +113 −0 manifests/user.pp
  38. +67 −0 manifests/user/permissions.pp
  39. +15 −14 metadata.json
  40. +24 −0 spec/acceptance/nodesets/win_2012_sql2012.yml
  41. +27 −0 spec/acceptance/nodesets/win_2012_sql2012_future.yml
  42. +24 −0 spec/acceptance/nodesets/win_2012_sql2014.yml
  43. +27 −0 spec/acceptance/nodesets/win_2012_sql2014_future.yml
  44. +24 −0 spec/acceptance/nodesets/win_2012r2_sql2012.yml
  45. +27 −0 spec/acceptance/nodesets/win_2012r2_sql2012_future.yml
  46. +24 −0 spec/acceptance/nodesets/win_2012r2_sql2014.yml
  47. +27 −0 spec/acceptance/nodesets/win_2012r2_sql2014_future.yml
  48. +142 −0 spec/acceptance/sqlserver_config_spec.rb
  49. +118 −0 spec/acceptance/sqlserver_instance_spec.rb
  50. +279 −0 spec/acceptance/z_last_sqlserver_features_spec.rb
  51. +18 −0 spec/defines/config_spec.rb
  52. +6 −1 spec/defines/database_spec.rb
  53. +135 −0 spec/defines/login/permissions_spec.rb
  54. +86 −13 spec/defines/login_spec.rb
  55. +11 −1 spec/defines/manifest_shared_examples.rb
  56. +143 −0 spec/defines/role/permissions_spec.rb
  57. +236 −0 spec/defines/role_spec.rb
  58. +21 −4 spec/defines/sp_configure_spec.rb
  59. +187 −0 spec/defines/user/permissions_spec.rb
  60. +188 −0 spec/defines/user_spec.rb
  61. +53 −0 spec/functions/sqlserver_upcase_spec.rb
  62. +27 −0 spec/functions/sqlserver_validate_hash_uniq_values_spec.rb
  63. +6 −0 spec/functions/sqlserver_validate_instance_name_spec.rb
  64. +6 −6 spec/spec_helper.rb
  65. +54 −0 spec/spec_helper_acceptance.rb
  66. +219 −0 spec/sql_testing_helpers.rb
  67. +26 −0 spec/unit/puppet/property/tsql_spec.rb
  68. +49 −11 spec/unit/puppet/provider/sqlserver__instance_spec.rb
  69. +85 −0 spec/unit/puppet/provider/sqlserver__tsql_spec.rb
  70. +45 −22 spec/unit/puppet/provider/sqlserver_features_spec.rb
  71. +6 −3 spec/unit/puppet/sqlserver_spec_helper.rb
  72. +0 −26 spec/unit/puppet_x/server_helper_spec.rb
  73. +98 −0 spec/unit/puppet_x/sql_connection_spec.rb
  74. +0 −3 templates/create/database.sql.erb
  75. +4 −7 templates/create/login.sql.erb
  76. +17 −0 templates/create/login/permission.sql.erb
  77. +10 −0 templates/create/role.sql.erb
  78. +30 −0 templates/create/role/members.sql.erb
  79. +15 −0 templates/create/role/permissions.sql.erb
  80. +0 −3 templates/create/sp_configure.sql.erb
  81. +18 −0 templates/create/user.sql.erb
  82. +17 −0 templates/create/user/permission.sql.erb
  83. +5 −0 templates/delete/role.sql.erb
  84. +4 −0 templates/delete/user.sql.erb
  85. +1 −1 templates/instance_config.erb
  86. +0 −3 templates/query/database_exists.sql.erb
  87. +8 −0 templates/query/login/permission_exists.sql.erb
  88. +9 −5 templates/query/login_exists.sql.erb
  89. +18 −0 templates/query/role/member_exists.sql.erb
  90. +8 −0 templates/query/role/permission_exists.sql.erb
  91. +7 −0 templates/query/role_exists.sql.erb
  92. +1 −13 templates/query/sp_configure.sql.erb
  93. +8 −0 templates/query/user/permission_exists.sql.erb
  94. +4 −0 templates/query/user_exists.sql.erb
  95. +0 −5 templates/snippets/begin_catch.sql.erb
  96. +7 −0 templates/snippets/login/get_perm_state.sql.erb
  97. +4 −0 templates/snippets/login/permission/exists.sql.erb
  98. +4 −0 templates/snippets/principal/permission/exists.sql.erb
  99. +6 −0 templates/snippets/principal/permission/get_perm_state.sql.erb
  100. +11 −0 templates/snippets/role/declare_and_set_variables.sql.erb
  101. +3 −0 templates/snippets/role/exists.sql.erb
  102. +5 −0 templates/snippets/role/member_exists.sql.erb
  103. +4 −0 templates/snippets/role/owner_check.sql.erb
  104. +11 −0 templates/snippets/role/populate_purge_members.sql.erb
  105. +4 −0 templates/snippets/user/permission/exists.sql.erb
  106. +5 −0 templates/snippets/user/permission/get_perm_state.sql.erb
2 changes: 1 addition & 1 deletion .fixtures.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ fixtures:
forge_modules:
stdlib: "puppetlabs/stdlib"
symlinks:
"sqlserver": "#{source_dir}"
sqlserver: "#{source_dir}"
6 changes: 6 additions & 0 deletions .geppetto-rc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"excludes": [
"**/spec/**",
"**/pkg/**"
]
}
22 changes: 16 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
*.iml
.idea
coverage
spec/log
pkg/
Gemfile.lock
.bundle
spec/fixtures
Gemfile.local
vendor/
spec/fixtures/
log/
junit/
.vagrant/
.bundle/
coverage/
.idea/
.metadata
*.iml
.*.sw[op]
.DS_Store
.rspec

23 changes: 23 additions & 0 deletions .project
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>puppetlabs-sqlserver</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.puppetlabs.geppetto.pp.dsl.ui.modulefileBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.puppetlabs.geppetto.pp.dsl.ui.puppetNature</nature>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
</natures>
</projectDescription>
39 changes: 39 additions & 0 deletions .sync.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
.travis.yml:
script: "\"bundle exec rake validate && bundle exec rake lint && bundle exec rake spec SPEC_OPTS='--color --format documentation'\""
extras:
- rvm: 1.9.3
env: PUPPET_GEM_VERSION="3.7.0"
- rvm: 2.0.0
env: PUPPET_GEM_VERSION="3.7.0"
CONTRIBUTING.md:
unmanaged: true
Gemfile:
supports_windows: true
required:
':development':
- gem: rake
- gem: rspec
version: '~>3.0.0'
- gem: puppet-lint
- gem: puppetlabs_spec_helper
version: '~>0.10.3'
- gem: puppet_facts
- gem: mocha
version: '~>0.10.5'
- gem: simplecov
- gem: yard
':system_tests':
- gem: beaker-rspec
- gem: beaker
- gem: beaker-puppet_install_helper
Rakefile:
unmanaged: true
spec/spec_helper.rb:
unmanaged: true
appveyor.yml:
matrix_extras:
- PUPPET_GEM_VERSION: 3.7.0
RUBY_VER: 193
- PUPPET_GEM_VERSION: 3.7.0
RUBY_VER: 200-x64
27 changes: 19 additions & 8 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,25 @@
---
sudo: false
language: ruby
bundler_args: --without development
script: "bundle exec rake spec SPEC_OPTS='--format documentation'"
rvm:
- 1.9.3
- 2.0.0
env:
matrix:
- PUPPET_GEM_VERSION="~> 3.7.1"
bundler_args: --without system_tests
script: "bundle exec rake validate && bundle exec rake lint && bundle exec rake spec SPEC_OPTS='--color --format documentation'"
matrix:
fast_finish: true
include:
- rvm: 1.9.3
env: PUPPET_GEM_VERSION="~> 3.0"
- rvm: 2.0.0
env: PUPPET_GEM_VERSION="~> 3.0"
- rvm: 2.1.5
env: PUPPET_GEM_VERSION="~> 4.0"
- rvm: 2.0.0
env: PUPPET_GEM_VERSION="~> 3.0" FUTURE_PARSER="yes"
- rvm: 1.9.3
env: PUPPET_GEM_VERSION="3.7.0"
- rvm: 2.0.0
env: PUPPET_GEM_VERSION="3.7.0"
allow_failures:
- rvm: 2.1.5
env: PUPPET_GEM_VERSION="~> 4.0"
notifications:
email: false
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,21 @@
##2015-08-24 - 1.1.0
###Summary

User, Roles and Login as well as they permissions associated with each are now available.

####Features
- `sqlserver_instance` and `sqlserver_features` have new parameter `install_switches` which takes a hash of install switches and writes them to a temp configuration file for the the install process
- Add define for permissions for Users, Roles and Logins
- `sqlserver::config` no longer writes a file to the sytem
- New `sqlserver_tsql` provider available to execute custom scripts
- Remove dependency on 'sqlcmd.exe'
- Performance discovery improvements
- Remove dependency for ACL modules

####Bug Fixes
- Munge values for instance names to always be uppercase when comparing
- Change the way we look up logins to use sys.server_principals instead of function that might not report correctly
- Fix issue with collation_name and databases where the variable was not named properly causing it to never be set

##2014-12-08 - 1.0.0
Initial release
130 changes: 112 additions & 18 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,23 +1,117 @@
source ENV['GEM_SOURCE'] || 'https://rubygems.org'

group :development, :test do
gem 'nokogiri'
gem 'mime-types', '<2.0', :require => false
gem 'rake', :require => false
gem 'rspec-puppet', :require => false
gem 'puppetlabs_spec_helper', :require => false
gem 'puppet-lint', :require => false
gem 'simplecov', :require => false
gem 'rspec', '~> 2.14.0', :require => false
gem 'beaker-rspec', :require => false
gem 'yard', :require => false
gem 'pry', :require => false
source ENV['GEM_SOURCE'] || "https://rubygems.org"

# Determines what type of gem is requested based on place_or_version.
def gem_type(place_or_version)
if place_or_version =~ /^git:/
:git
elsif place_or_version =~ /^file:/
:file
else
:gem
end
end

# Find a location or specific version for a gem. place_or_version can be a
# version, which is most often used. It can also be git, which is specified as
# `git://somewhere.git#branch`. You can also use a file source location, which
# is specified as `file://some/location/on/disk`.
def location_for(place_or_version, fake_version = nil)
if place_or_version =~ /^(git[:@][^#]*)#(.*)/
[fake_version, { :git => $1, :branch => $2, :require => false }].compact
elsif place_or_version =~ /^file:\/\/(.*)/
['>= 0', { :path => File.expand_path($1), :require => false }]
else
[place_or_version, { :require => false }]
end
end

group :development do
gem 'rake', :require => false
gem 'rspec', '~>3.0.0', :require => false
gem 'puppet-lint', :require => false
gem 'puppetlabs_spec_helper', '~>0.10.3', :require => false
gem 'puppet_facts', :require => false
gem 'mocha', '~>0.10.5', :require => false
gem 'simplecov', :require => false
gem 'yard', :require => false
end

group :system_tests do
gem 'beaker-rspec', *location_for(ENV['BEAKER_RSPEC_VERSION'] || '~> 5.1')
gem 'beaker', *location_for(ENV['BEAKER_VERSION'] || '~> 2.20')
gem 'beaker-puppet_install_helper', :require => false
end

# The recommendation is for PROJECT_GEM_VERSION, although there are older ways
# of referencing these. Add them all for compatibility reasons. We'll remove
# later when no issues are known. We'll prefer them in the right order.
puppetversion = ENV['PUPPET_GEM_VERSION'] || ENV['GEM_PUPPET_VERSION'] || ENV['PUPPET_LOCATION'] || '>= 0'
gem 'puppet', *location_for(puppetversion)

# Only explicitly specify Facter/Hiera if a version has been specified.
# Otherwise it can lead to strange bundler behavior. If you are seeing weird
# gem resolution behavior, try setting `DEBUG_RESOLVER` environment variable
# to `1` and then run bundle install.
facterversion = ENV['FACTER_GEM_VERSION'] || ENV['GEM_FACTER_VERSION'] || ENV['FACTER_LOCATION']
gem "facter", *location_for(facterversion) if facterversion
hieraversion = ENV['HIERA_GEM_VERSION'] || ENV['GEM_HIERA_VERSION'] || ENV['HIERA_LOCATION']
gem "hiera", *location_for(hieraversion) if hieraversion

# For Windows dependencies, these could be required based on the version of
# Puppet you are requiring. Anything greater than v3.5.0 is going to have
# Windows-specific dependencies dictated by the gem itself. The other scenario
# is when you are faking out Puppet to use a local file path / git path.
explicitly_require_windows_gems = false
puppet_gem_location = gem_type(puppetversion)
# This is not a perfect answer to the version check
if puppet_gem_location != :gem || puppetversion < '3.5.0'
if Gem::Platform.local.os == 'mingw32'
explicitly_require_windows_gems = true
end
end

if explicitly_require_windows_gems
# This also means Puppet Gem less than 3.5.0 - this has been tested back
# to 3.0.0. Any further back is likely not supported.
if puppet_gem_location == :gem
gem "ffi", "1.9.0", :require => false
gem "win32-eventlog", "0.5.3", :require => false
gem "win32-process", "0.6.5", :require => false
gem "win32-security", "~> 0.1.2", :require => false
gem "win32-service", "0.7.2", :require => false
gem "minitar", "0.5.4", :require => false
# If facterversion hasn't been specified and we are
# looking for a Puppet Gem version less than 3.5.0, we
# need to ensure we get a good Facter for Windows specs.
gem "facter",">= 1.6.11","<= 1.7.5",:require => false unless facterversion
else
gem "ffi", "~> 1.9.0", :require => false
gem "win32-eventlog", "~> 0.5", :require => false
gem "win32-process", "~> 0.6", :require => false
gem "win32-security", "~> 0.1", :require => false
gem "win32-service", "~> 0.7", :require => false
gem "minitar", "~> 0.5.4", :require => false
end

gem "win32-dir", "~> 0.3", :require => false
gem "win32console", "1.3.2", :require => false if RUBY_VERSION =~ /^1\./

# Puppet less than 3.7.0 requires these.
# Puppet 3.5.0+ will control the actual requirements.
# These are listed in formats that work with all versions of
# Puppet from 3.0.0 to 3.6.x. After that, these were no longer used.
# We do not want to allow newer versions than what came out after
# 3.6.x to be used as they constitute some risk in breaking older
# functionality. So we set these to exact versions.
gem "sys-admin", "1.5.6", :require => false
gem "win32-api", "1.4.8", :require => false
gem "win32-taskscheduler", "0.2.2", :require => false
gem "windows-api", "0.4.3", :require => false
gem "windows-pr", "1.2.3", :require => false
end

if puppetversion = ENV['PUPPET_GEM_VERSION']
gem 'puppet', puppetversion, :require => false
else
gem 'puppet', '~> 3.7', :require => false
if File.exists? "#{__FILE__}.local"
eval(File.read("#{__FILE__}.local"), binding)
end

# vim:ft=ruby
Loading