Skip to content

Commit 8784328

Browse files
committed
(FM-2790) Return SQL installations as Facter facts
- Fact 'sqlserver_instances' contains all detailed instance information and is not segregated by SQL version given instance names are unique even in a side by side installation - Fact 'sqlserver_features' contains all shared features segregated by SQL version - run_discovery_script method has been completely removed in favor of leveraging Facts - note that to make the output compatible with Facter, the Ruby symbols used in the hashes returned from PuppetX::Sqlserver::Features have all been changed to bare strings
1 parent a759148 commit 8784328

File tree

6 files changed

+46
-37
lines changed

6 files changed

+46
-37
lines changed

lib/facter/sqlserver_features.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'puppet_x/sqlserver/features'))
2+
3+
Facter.add(:sqlserver_features) do
4+
confine :osfamily => :windows
5+
6+
setcode do
7+
PuppetX::Sqlserver::Features.get_features
8+
end
9+
end

lib/facter/sqlserver_instances.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'puppet_x/sqlserver/features'))
2+
3+
Facter.add(:sqlserver_instances) do
4+
confine :osfamily => :windows
5+
6+
setcode do
7+
PuppetX::Sqlserver::Features.get_instances
8+
end
9+
end

lib/puppet/provider/sqlserver.rb

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,6 @@ def not_nil_and_not_empty?(obj)
3939
!obj.nil? and !obj.empty?
4040
end
4141

42-
def self.run_discovery_script
43-
features = PuppetX::Sqlserver::Features.get_features
44-
45-
instances = {
46-
# SQL instance names are unique over side-by-side installs
47-
:instances => PuppetX::Sqlserver::Features.get_instances.values.inject(:merge),
48-
# but features across versions are different
49-
:features => !features[SQL_2014].empty? ? features[SQL_2014] : features[SQL_2012]
50-
}
51-
end
52-
5342
def self.run_install_dot_net
5443
install_dot_net = <<-DOTNET
5544
Install-WindowsFeature NET-Framework-Core

lib/puppet/provider/sqlserver_features/mssql.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@
88
Puppet::Type::type(:sqlserver_features).provide(:mssql, :parent => Puppet::Provider::Sqlserver) do
99
def self.instances
1010
instances = []
11-
result = Puppet::Provider::Sqlserver.run_discovery_script
11+
result = Facter.value(:sqlserver_features)
1212
debug "Parsing result #{result}"
13-
if !result[:features].empty?
13+
result = !result[SQL_2014].empty? ? result[SQL_2014] : result[SQL_2012]
14+
if !result.empty?
1415
existing_instance = {:name => "Generic Features",
1516
:ensure => :present,
1617
:features =>
1718
PuppetX::Sqlserver::ServerHelper.translate_features(
18-
result[:features]).sort!
19+
result).sort!
1920
}
2021
debug "Parsed features = #{existing_instance[:features]}"
2122

lib/puppet/provider/sqlserver_instance/mssql.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@
99
Puppet::Type::type(:sqlserver_instance).provide(:mssql, :parent => Puppet::Provider::Sqlserver) do
1010
def self.instances
1111
instances = []
12-
result = Puppet::Provider::Sqlserver.run_discovery_script
12+
result = Facter.value(:sqlserver_instances)
1313
debug "Parsing result #{result}"
14-
result[:instances].keys.each do |instance_name|
14+
result = result.values.inject(:merge)
15+
result.keys.each do |instance_name|
1516
existing_instance = {:name => instance_name,
1617
:ensure => :present,
1718
:features =>
1819
PuppetX::Sqlserver::ServerHelper.translate_features(
19-
result[:instances][instance_name][:features]).sort!
20+
result[instance_name]['features']).sort!
2021
}
2122
instance = new(existing_instance)
2223
instances << instance

lib/puppet_x/sqlserver/features.rb

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
SQL_2012 = 'SQL_2012'
2-
SQL_2014 = 'SQL_2014'
1+
SQL_2012 ||= 'SQL_2012'
2+
SQL_2014 ||= 'SQL_2014'
33

44
module PuppetX
55
module Sqlserver
66
# https://msdn.microsoft.com/en-us/library/ms143786.aspx basic feature docs
77
class Features
88
private
99

10-
SQL_WMI_PATH = {
10+
SQL_WMI_PATH ||= {
1111
SQL_2012 => 'ComputerManagement11',
1212
SQL_2014 => 'ComputerManagement12',
1313
}
1414

15-
SQL_REG_ROOT = 'Software\Microsoft\Microsoft SQL Server'
15+
SQL_REG_ROOT ||= 'Software\Microsoft\Microsoft SQL Server'
1616

1717
# http://msdn.microsoft.com/en-us/library/windows/desktop/aa384129(v=vs.85).aspx
1818
KEY64 ||= 0x100
@@ -102,11 +102,11 @@ def self.get_sql_property_values(version, instance_name, property_name)
102102

103103
def self.get_wmi_instance_info(version, instance_name)
104104
{
105-
:name => instance_name,
106-
:version_friendly => version,
107-
:version => get_sql_property_values(version, instance_name, 'VERSION').first,
105+
'name' => instance_name,
106+
'version_friendly' => version,
107+
'version' => get_sql_property_values(version, instance_name, 'VERSION').first,
108108
# typically Software\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER
109-
:reg_root => get_sql_property_values(version, instance_name, 'REGROOT').first,
109+
'reg_root' => get_sql_property_values(version, instance_name, 'REGROOT').first,
110110
}
111111
end
112112

@@ -166,11 +166,11 @@ def self.get_shared_features(version)
166166
# "SQL_2012" => {},
167167
# "SQL_2014" => {
168168
# "MSSQLSERVER" => {
169-
# :name => "MSSQLSERVER",
170-
# :version_friendly => "SQL_2014",
171-
# :version => "12.0.2000.8",
172-
# :reg_root => "Software\\Microsoft\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER",
173-
# :features => [
169+
# "name" => "MSSQLSERVER",
170+
# "version_friendly" => "SQL_2014",
171+
# "version" => "12.0.2000.8",
172+
# "reg_root" => "Software\\Microsoft\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER",
173+
# "features" => [
174174
# "SQL Server Replication",
175175
# "Database Engine Services",
176176
# "Full-Text and Semantic Extractions for Search",
@@ -209,11 +209,11 @@ def self.get_features
209209
# returns a hash containing instance details
210210
#
211211
# {
212-
# :name => "MSSQLSERVER2",
213-
# :version_friendly => "SQL_2014",
214-
# :version => "12.0.2000.8",
215-
# :reg_root => "Software\\Microsoft\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER2",
216-
# :features => [
212+
# "name" => "MSSQLSERVER2",
213+
# "version_friendly" => "SQL_2014",
214+
# "version" => "12.0.2000.8",
215+
# "reg_root" => "Software\\Microsoft\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER2",
216+
# "features" => [
217217
# "SQLServer Replication",
218218
# "Database Engine Services",
219219
# "Full-Text and Semantic Extractions for Search",
@@ -224,8 +224,8 @@ def self.get_features
224224
# }
225225
def self.get_instance_info(version = SQL_2014, instance_name)
226226
sql_instance = get_wmi_instance_info(version, instance_name)
227-
feats = get_instance_features(sql_instance[:reg_root], sql_instance[:name])
228-
sql_instance.merge({:features => feats})
227+
feats = get_instance_features(sql_instance['reg_root'], sql_instance['name'])
228+
sql_instance.merge({'features' => feats})
229229
end
230230
end
231231
end

0 commit comments

Comments
 (0)