Skip to content

Commit a27ae75

Browse files
committed
(FM-2790) Return SQL installations as Facter facts
- Fact 'sqlserver_installs' contains all detailed installation information - Fact 'sqlserver_instance_names' contains all instance names 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 bbe61ad commit a27ae75

File tree

6 files changed

+45
-32
lines changed

6 files changed

+45
-32
lines changed

lib/facter/sqlserver_installs.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_installs) do
4+
confine :osfamily => :windows
5+
6+
setcode do
7+
PuppetX::Sqlserver::Features.get_installations
8+
end
9+
end
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_instance_names) do
4+
confine :osfamily => :windows
5+
6+
setcode do
7+
PuppetX::Sqlserver::Features.get_instance_names
8+
end
9+
end

lib/puppet/provider/sqlserver.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +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-
installs = PuppetX::Sqlserver::Features.get_installations
44-
return installs[:SQL_2014] if !installs[:SQL_2014].empty?
45-
46-
installs[:SQL_2012]
47-
end
48-
4942
def self.run_install_dot_net
5043
install_dot_net = <<-DOTNET
5144
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_installs)
1212
debug "Parsing result #{result}"
13-
if result.has_key?(:features)
13+
result = !result[SQL_2014].empty? ? result[SQL_2014] : result[SQL_2012]
14+
if result.has_key?('features')
1415
existing_instance = {:name => "Generic Features",
1516
:ensure => :present,
1617
:features =>
1718
PuppetX::Sqlserver::ServerHelper.translate_features(
18-
result[:features]).sort!
19+
result['features']).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_installs)
1313
debug "Parsing result #{result}"
14-
result.keys.reject { |key| key == :features }.each do |instance_name|
14+
result = !result[SQL_2014].empty? ? result[SQL_2014] : result[SQL_2012]
15+
result.keys.reject { |key| key == 'features' }.each do |instance_name|
1516
existing_instance = {:name => instance_name,
1617
:ensure => :present,
1718
:features =>
1819
PuppetX::Sqlserver::ServerHelper.translate_features(
19-
result[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: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ def self.get_sql_property_values(version, instance_name, property_name)
8686

8787
def self.get_wmi_instance_info(version, instance_name)
8888
{
89-
:name => instance_name,
90-
:version_friendly => version,
91-
:version => get_sql_property_values(version, instance_name, 'VERSION').first,
89+
'name' => instance_name,
90+
'version_friendly' => version,
91+
'version' => get_sql_property_values(version, instance_name, 'VERSION').first,
9292
# typically Software\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER
93-
:reg_root => get_sql_property_values(version, instance_name, 'REGROOT').first,
93+
'reg_root' => get_sql_property_values(version, instance_name, 'REGROOT').first,
9494
}
9595
end
9696

@@ -150,11 +150,11 @@ def self.get_shared_features(version, reg_root)
150150
# "SQL_2012" => {},
151151
# "SQL_2014" => {
152152
# "MSSQLSERVER" => {
153-
# :name => "MSSQLSERVER",
154-
# :version_friendly => "SQL_2014",
155-
# :version => "12.0.2000.8",
156-
# :reg_root => "Software\\Microsoft\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER",
157-
# :features => [
153+
# "name" => "MSSQLSERVER",
154+
# "version_friendly" => "SQL_2014",
155+
# "version" => "12.0.2000.8",
156+
# "reg_root" => "Software\\Microsoft\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER",
157+
# "features" => [
158158
# "SQL Server Replication",
159159
# "Database Engine Services",
160160
# "Full-Text and Semantic Extractions for Search",
@@ -163,7 +163,7 @@ def self.get_shared_features(version, reg_root)
163163
# "Reporting Services - Native"
164164
# ]
165165
# },
166-
# :features => [
166+
# "features" => [
167167
# "Client Tools Connectivity",
168168
# "Client Tools SDK",
169169
# "Master Data Services",
@@ -181,8 +181,8 @@ def self.get_installations
181181
.map { |name| [ name, get_instance_info(version, name) ] }
182182

183183
if !instance_names.empty?
184-
reg_root = get_parent_path(instances.first[1][:reg_root])
185-
instances.push([:features, get_shared_features(version, reg_root)])
184+
reg_root = get_parent_path(instances.first[1]['reg_root'])
185+
instances.push(['features', get_shared_features(version, reg_root)])
186186
end
187187

188188
[ version, Hash[instances] ]
@@ -207,11 +207,11 @@ def self.get_instance_names
207207
# returns a hash containing instance details
208208
#
209209
# {
210-
# :name => "MSSQLSERVER2",
211-
# :version_friendly => "SQL_2014",
212-
# :version => "12.0.2000.8",
213-
# :reg_root => "Software\\Microsoft\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER2",
214-
# :features => [
210+
# "name" => "MSSQLSERVER2",
211+
# "version_friendly" => "SQL_2014",
212+
# "version" => "12.0.2000.8",
213+
# "reg_root" => "Software\\Microsoft\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER2",
214+
# "features" => [
215215
# "SQLServer Replication",
216216
# "Database Engine Services",
217217
# "Full-Text and Semantic Extractions for Search",
@@ -222,8 +222,8 @@ def self.get_instance_names
222222
# }
223223
def self.get_instance_info(version = SQL_2012, instance_name)
224224
sql_instance = get_wmi_instance_info(version, instance_name)
225-
feats = get_instance_features(sql_instance[:reg_root], sql_instance[:name])
226-
sql_instance.merge({:features => feats})
225+
feats = get_instance_features(sql_instance['reg_root'], sql_instance['name'])
226+
sql_instance.merge({'features' => feats})
227227
end
228228
end
229229
end

0 commit comments

Comments
 (0)