Class: Ucert::SomTracker

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
lib/ucert/som_tracker.rb

Overview

Class to handle SOM user account IDs

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils

#file_2_list, #is_fqdn?, #is_ip?, #is_url?, #list_2_file, #load_known_user_map_from_file, #nslookup, #search_ad, #update_dn

Constructor Details

#initialize(params = {}) ⇒ SomTracker

Instance default variables



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

def initialize (params ={})
   @verbose=params.fetch(:verbose, false)
	# Som to AD user map file
	@file_user_map =  File.dirname(__FILE__)+"/../../data/som/som_user_map.txt"
	@som_user_report = File.dirname(__FILE__)+"/../../data/som/som_user_report.csv"
	# Load the user map file to an instance variable (for performance gain)
	@som_2_ad_user=load_known_user_map_from_file(@file_user_map)
	# Load the user entitlement instance variable from the native Som user entitlement report
	parse_som_user_report(@som_user_report)
	# Insert DN field into the user entitlement data structure
	insert_dn
	save!
end

Instance Attribute Details

#file_user_mapObject

Class constant variables



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

def file_user_map
  @file_user_map
end

#som_2_ad_userObject (readonly)

Returns the value of attribute som_2_ad_user.



15
16
17
# File 'lib/ucert/som_tracker.rb', line 15

def som_2_ad_user
  @som_2_ad_user
end

#som_user_entitlementObject (readonly)

Returns the value of attribute som_user_entitlement.



15
16
17
# File 'lib/ucert/som_tracker.rb', line 15

def som_user_entitlement
  @som_user_entitlement
end

#som_user_reportObject

Class constant variables



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

def som_user_report
  @som_user_report
end

#verboseObject

Class constant variables



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

def verbose
  @verbose
end

Instance Method Details

Print out the user entitlement table in plain text, to be imported into database



127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/ucert/som_tracker.rb', line 127

def print_user_entitlement
	begin
     puts "User Entitlement Report in Plain-text Format" if @verbose
		@som_user_entitlement.first[1].each {|k,v| print k,"|"} if @verbose
		puts if @verbose
		@som_user_entitlement.values.map do |rec|
			next if rec.nil?
			rec.each {|k,v| print v,"|" unless k.nil? }
			puts
     end
	rescue => ee
		puts "Exception on method #{__method__}: #{ee}"
	end
end

#save_som_user_map!(file = @file_user_map) ⇒ Object Also known as: save!

Save the SOM to AD user mapping relation into the cache file



144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# File 'lib/ucert/som_tracker.rb', line 144

def save_som_user_map!(file=@file_user_map)
	puts "Saving the known Som to AD user mapping relationship to file: #{file} ..." if @verbose
	begin
		timestamp=Time.now
		f=File.open(file, 'w')
		f.write "# local Som to AD user map file created by the #{self.class} class #{__method__} method at: #{timestamp}"
		@som_user_entitlement.each do |key,record|
			value = record['DN']
			f.write "\n#{record['uid'].upcase}|#{value}"
		end
		f.close
		puts "Som to AD user map file is successfully saved to: #{file}" if @verbose
	rescue => ee
		puts "Exception on method #{__method__}: #{ee}" if @verbose
	end
end

#som_id_2_dn(id) ⇒ Object

DN lookup via SOM for ssomems under SOM, such as CVM



214
215
216
217
218
219
# File 'lib/ucert/som_tracker.rb', line 214

def som_id_2_dn (id)
	@som_user_entitlement.each do |key,val|
		return val["DN"] if val["uid"] == id.strip
	end
	return nil
end

#som_search_by_dn(dn) ⇒ Object Also known as: search_by_dn

Search user entitlement record by AD DN



163
164
165
166
167
168
169
170
171
172
173
# File 'lib/ucert/som_tracker.rb', line 163

def som_search_by_dn (dn)
	begin
     puts "Perform search on the user entitlement record by AD DN: #{dn}" if @verbose
     @som_user_entitlement.each do |key, val|
         return val if @som_user_entitlement[key]['DN'].eql? dn
     end
		return nil
   rescue => ee
     puts "Exception on method #{__method__}: #{ee}"
   end
end

#som_search_by_id(uid) ⇒ Object Also known as: search_by_id

Search user entitlement record by USER_ID



200
201
202
203
204
205
206
207
208
209
210
# File 'lib/ucert/som_tracker.rb', line 200

def som_search_by_id (uid)
	#begin
     puts "Perform search on the user entitlement record by USER_ID: #{uid}" if @verbose
     @som_user_entitlement.each do |key, val|
         return val if @som_user_entitlement[key]['USER_ID'].eql? uid.strip
     end
		return nil
   #rescue => ee
   #  puts "Exception on method #{__method__}: #{ee}"
   #end
end

#uid_2_index(uid) ⇒ Object

Search user entitlement instance valueable for uid, return index for match uid; return nil if no match found



191
192
193
194
195
196
197
# File 'lib/ucert/som_tracker.rb', line 191

def uid_2_index (uid)
	puts "Perform search on the user entitlement record by user ID: #{uid}" if @verbose
	@som_user_entitlement.each do |key,val|
		return key if val['uid'] == uid.strip
	end
	return nil
end

#uid_include?(uid) ⇒ Boolean

Search user entitlement instance valueable for uid, return true if found

Returns:

  • (Boolean)


177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/ucert/som_tracker.rb', line 177

def uid_include? (uid)
	puts "Determine if UID is already known: #{uid}" if @verbose
	return false if @som_user_entitlement.nil?
	@som_user_entitlement.each do |key,val|
		if val['uid'] == uid.strip
			#puts "Found" if @verbose
			return true
		end
	end
	#puts "Unfound" if @verbose
	return false
end