Module: PuppetFacts

Defined in:
lib/puppet_facts.rb,
lib/puppet_facts/version.rb

Defined Under Namespace

Modules: Version

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.get_meta_supported_platformsObject



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/puppet_facts.rb', line 121

def self.get_meta_supported_platforms
  if ! File.file?('metadata.json')
    fail StandardError, "Can't find metadata.json... dunno why"
  end
   = JSON.parse(File.read('metadata.json'))
  if .nil? or ['operatingsystem_support'].nil?
    fail StandardError, "Unknown operatingsystem support"
  end
  os_sup = ['operatingsystem_support']

  os_sup.collect do |os_rel|
    os = meta_to_facts(os_rel['operatingsystem'])
    #os = meta_to_facts[os_sup['operatingsystem']]
    os_rel['operatingsystemrelease'].collect do |release|
      rel = meta_to_facts(release)
      [
        "#{os}-#{rel}-i386",
        "#{os}-#{rel}-x86_64"
      ]
    end
  end.flatten
end

.get_pe_facts_pathsObject



72
73
74
75
76
# File 'lib/puppet_facts.rb', line 72

def self.get_pe_facts_paths
  @pe_dirs.collect do |dir|
    Dir[File.join(dir,"*")]
  end.flatten
end

.get_pe_platform_factsObject



81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/puppet_facts.rb', line 81

def self.get_pe_platform_facts
  pe_facts_paths.inject({}) do |memo,file|
    pe_platform = File.basename(file.gsub(/\.facts/, ''))
    pe_version = File.basename(File.dirname(file))
    memo[pe_version] = Hash.new unless memo[pe_version]
    memo[pe_version][pe_platform] = Hash.new
    File.read(file).each_line do |line|
      key, value = line.split(' => ')
      memo[pe_version][pe_platform][key.to_sym] = value.chomp unless value.nil?
    end
    memo
  end
end

.get_pe_platformsObject



56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/puppet_facts.rb', line 56

def self.get_pe_platforms
  @pe_dirs.inject({}) do |memo,pe_dir|
    pe_version = File.basename(pe_dir)
    if Dir[File.join(@proj_root,pe_version,"*")].empty?
      fail(StandardError, "Puppet facts missing for #{pe_version}")
    end
    memo[pe_version] = Dir[File.join(@proj_root,pe_version,"*")].collect do |facts|
      File.basename(facts.gsub(/\.facts/, ''))
    end
    memo
  end
end

.get_pe_versionsObject



47
48
49
50
51
# File 'lib/puppet_facts.rb', line 47

def self.get_pe_versions
  @pe_dirs.collect do |dir|
    File.basename(dir)
  end
end

.meta_supported_platformsObject



95
96
97
# File 'lib/puppet_facts.rb', line 95

def self.meta_supported_platforms
  @meta_supported_platforms ||= get_meta_supported_platforms
end

.meta_to_facts(input) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/puppet_facts.rb', line 99

def self.meta_to_facts(input)
  meta_to_facts = {
    'RedHat' => 'redhat',
    'CentOS' => 'centos',
    'Ubuntu' => 'ubuntu',
    'OracleLinux' => 'oracle',
    'SLES' => 'sles',
    'Scientific' => 'scientific',
    'Debian' => 'debian',
    '14.04' => '1404',
    '12.04' => '1204',
    '10.04' => '1004',
    '11 SP1' => '11',
  }
  ans = meta_to_facts[input]
  if ans
    ans
  else
    input
  end
end

.pe_facts_pathsObject



69
70
71
# File 'lib/puppet_facts.rb', line 69

def self.pe_facts_paths
  @pe_facts_paths ||= get_pe_facts_paths
end

.pe_platform_factsObject



78
79
80
# File 'lib/puppet_facts.rb', line 78

def self.pe_platform_facts
  @pe_platform_facts ||= get_pe_platform_facts
end

.pe_platformsObject



53
54
55
# File 'lib/puppet_facts.rb', line 53

def self.pe_platforms
  @pe_platforms ||= get_pe_platforms
end

.pe_versionsObject

Returns array of PE versions



44
45
46
# File 'lib/puppet_facts.rb', line 44

def self.pe_versions
  @pe_versions ||= get_pe_versions
end

Instance Method Details

#available_pe_platforms(pe_version) ⇒ Object

Returns array of PE platforms for given PE version



14
15
16
# File 'lib/puppet_facts.rb', line 14

def available_pe_platforms(pe_version)
  PuppetFacts.pe_platforms[pe_version]
end

#available_pe_versionsObject



9
10
11
# File 'lib/puppet_facts.rb', line 9

def available_pe_versions
  PuppetFacts.pe_versions
end

#on_pe_supported_platformsObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/puppet_facts.rb', line 18

def on_pe_supported_platforms
  # This should filter based on set_pe_supported_platforms
  facts = PuppetFacts.pe_platform_facts
  sup_facts = Hash.new
  #TODO how do we compare against this?
  #  "name": "pe",
  #  "version_requirement": "3.2.x"
  #  "version_requirement": ">= 3.2.0 < 3.4.0"
  facts.each do |pe_ver,platforms|
    sup_facts[pe_ver] = platforms.select do |platform, facts|
      PuppetFacts.meta_supported_platforms.include?(platform)
    end
  end
  sup_facts
end

#set_pe_supported_platforms(metadata_format_hash) ⇒ Object



5
6
7
# File 'lib/puppet_facts.rb', line 5

def set_pe_supported_platforms()
  PuppetFacts.pe_supported_platforms
end