Skip to content

Commit 6a64a70

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 bbbd4f0 commit 6a64a70

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
@@ -81,11 +81,11 @@ def self.get_sql_property_values(version, instance_name, property_name)
8181

8282
def self.get_wmi_instance_info(version, instance_name)
8383
{
84-
:name => instance_name,
85-
:version_friendly => version,
86-
:version => get_sql_property_values(version, instance_name, 'VERSION').first,
84+
'name' => instance_name,
85+
'version_friendly' => version,
86+
'version' => get_sql_property_values(version, instance_name, 'VERSION').first,
8787
# typically Software\Microsoft\Microsoft SQL Server\MSSQL11.MSSQLSERVER
88-
:reg_root => get_sql_property_values(version, instance_name, 'REGROOT').first,
88+
'reg_root' => get_sql_property_values(version, instance_name, 'REGROOT').first,
8989
}
9090
end
9191

@@ -145,11 +145,11 @@ def self.get_shared_features(version, reg_root)
145145
# "SQL_2012" => {},
146146
# "SQL_2014" => {
147147
# "MSSQLSERVER" => {
148-
# :name => "MSSQLSERVER",
149-
# :version_friendly => "SQL_2014",
150-
# :version => "12.0.2000.8",
151-
# :reg_root => "Software\\Microsoft\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER",
152-
# :features => [
148+
# "name" => "MSSQLSERVER",
149+
# "version_friendly" => "SQL_2014",
150+
# "version" => "12.0.2000.8",
151+
# "reg_root" => "Software\\Microsoft\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER",
152+
# "features" => [
153153
# "SQL Server Replication",
154154
# "Database Engine Services",
155155
# "Full-Text and Semantic Extractions for Search",
@@ -158,7 +158,7 @@ def self.get_shared_features(version, reg_root)
158158
# "Reporting Services - Native"
159159
# ]
160160
# },
161-
# :features => [
161+
# "features" => [
162162
# "Client Tools Connectivity",
163163
# "Client Tools SDK",
164164
# "Master Data Services",
@@ -176,8 +176,8 @@ def self.get_installations
176176
.map { |name| [ name, get_instance_info(version, name) ] }
177177

178178
if !instance_names.empty?
179-
reg_root = get_parent_path(instances.first[1][:reg_root])
180-
instances.push([:features, get_shared_features(version, reg_root)])
179+
reg_root = get_parent_path(instances.first[1]['reg_root'])
180+
instances.push(['features', get_shared_features(version, reg_root)])
181181
end
182182

183183
[ version, Hash[instances] ]
@@ -202,11 +202,11 @@ def self.get_instance_names
202202
# returns a hash containing instance details
203203
#
204204
# {
205-
# :name => "MSSQLSERVER2",
206-
# :version_friendly => "SQL_2014",
207-
# :version => "12.0.2000.8",
208-
# :reg_root => "Software\\Microsoft\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER2",
209-
# :features => [
205+
# "name" => "MSSQLSERVER2",
206+
# "version_friendly" => "SQL_2014",
207+
# "version" => "12.0.2000.8",
208+
# "reg_root" => "Software\\Microsoft\\Microsoft SQL Server\\MSSQL12.MSSQLSERVER2",
209+
# "features" => [
210210
# "SQLServer Replication",
211211
# "Database Engine Services",
212212
# "Full-Text and Semantic Extractions for Search",
@@ -217,8 +217,8 @@ def self.get_instance_names
217217
# }
218218
def self.get_instance_info(version = SQL_2012, instance_name)
219219
sql_instance = get_wmi_instance_info(version, instance_name)
220-
feats = get_instance_features(sql_instance[:reg_root], sql_instance[:name])
221-
sql_instance.merge({:features => feats})
220+
feats = get_instance_features(sql_instance['reg_root'], sql_instance['name'])
221+
sql_instance.merge({'features' => feats})
222222
end
223223
end
224224
end

0 commit comments

Comments
 (0)