Class: Ucert::CvmTracker
- Inherits:
-
Object
- Object
- Ucert::CvmTracker
- Includes:
- Utils
- Defined in:
- lib/ucert/cvm_tracker.rb
Overview
Class to handle CVM user account IDs
Instance Attribute Summary collapse
-
#cvm_2_ad_user ⇒ Object
readonly
Returns the value of attribute cvm_2_ad_user.
-
#cvm_role_report ⇒ Object
Class constant variables.
-
#cvm_user_entitlement ⇒ Object
readonly
Returns the value of attribute cvm_user_entitlement.
-
#cvm_user_report ⇒ Object
Class constant variables.
-
#file_user_map ⇒ Object
Class constant variables.
-
#verbose ⇒ Object
Class constant variables.
Instance Method Summary collapse
- #cvm_id_2_index(id) ⇒ Object
-
#cvm_search_by_dn(dn) ⇒ Object
(also: #search_by_dn)
Search user entitlement record by AD DN.
-
#initialize(params = {}) ⇒ CvmTracker
constructor
Instance default variables.
-
#parse_cvm_func_report(file) ⇒ Object
Parsing the CVM user function report in xlsx format.
-
#print_user_entitlement ⇒ Object
(also: #print_user)
Print out the user entitlement table in plain text, to be imported into database.
-
#save_cvm_user_map!(file = @file_user_map) ⇒ Object
(also: #save!)
Save the CVM to AD user mapping relation into the cache file.
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 = {}) ⇒ CvmTracker
Instance default variables
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/ucert/cvm_tracker.rb', line 20 def initialize (params ={}) @verbose=params.fetch(:verbose, false) # CVM user entitlement report in XLSX format, generated by CVM export function @cvm_user_report = File.dirname(__FILE__)+"/../../data/cvm/cvm_user_list.xlsx" # CVM user role, which is mapped to YST data structure @cvm_role_report = File.dirname(__FILE__)+"/../../data/cvm/cvm_user_role.xlsx" # CVM user details entitlement report @cvm_func_report = File.dirname(__FILE__)+"/../../data/cvm/cvm_user_func.xlsx" # CVM to AD user map file @file_user_map = File.dirname(__FILE__)+"/../../data/cvm/cvm_user_map.txt" # Load the user map file to an instance variable (for performance gain) @cvm_2_ad_user=load_known_user_map_from_file(@file_user_map) # Load the user entitlement instance variable from the native CVM user entitlement reports @cvm_user_entitlement=parse_cvm_user_report(@cvm_user_report) parse_cvm_role_report(@cvm_role_report) parse_cvm_func_report(@cvm_func_report) # Insert DN field into the user entitlement data structure insert_dn save! end |
Instance Attribute Details
#cvm_2_ad_user ⇒ Object (readonly)
Returns the value of attribute cvm_2_ad_user.
17 18 19 |
# File 'lib/ucert/cvm_tracker.rb', line 17 def cvm_2_ad_user @cvm_2_ad_user end |
#cvm_role_report ⇒ Object
Class constant variables
16 17 18 |
# File 'lib/ucert/cvm_tracker.rb', line 16 def cvm_role_report @cvm_role_report end |
#cvm_user_entitlement ⇒ Object (readonly)
Returns the value of attribute cvm_user_entitlement.
17 18 19 |
# File 'lib/ucert/cvm_tracker.rb', line 17 def cvm_user_entitlement @cvm_user_entitlement end |
#cvm_user_report ⇒ Object
Class constant variables
16 17 18 |
# File 'lib/ucert/cvm_tracker.rb', line 16 def cvm_user_report @cvm_user_report end |
#file_user_map ⇒ Object
Class constant variables
16 17 18 |
# File 'lib/ucert/cvm_tracker.rb', line 16 def file_user_map @file_user_map end |
#verbose ⇒ Object
Class constant variables
16 17 18 |
# File 'lib/ucert/cvm_tracker.rb', line 16 def verbose @verbose end |
Instance Method Details
#cvm_id_2_index(id) ⇒ Object
104 105 106 107 108 109 |
# File 'lib/ucert/cvm_tracker.rb', line 104 def cvm_id_2_index (id) @cvm_user_entitlement.each do |key,val| return key if val['用户编号'] == id.strip end return nil end |
#cvm_search_by_dn(dn) ⇒ Object Also known as: search_by_dn
Search user entitlement record by AD DN
215 216 217 218 219 220 221 222 223 224 225 |
# File 'lib/ucert/cvm_tracker.rb', line 215 def cvm_search_by_dn (dn) begin puts "Perform search on the user entitlement record by AD DN: #{dn}" if @verbose @cvm_user_entitlement.each do |key, val| return val if @cvm_user_entitlement[key]['DN'].eql? dn end return nil rescue => ee puts "Exception on method #{__method__}: #{ee}" end end |
#parse_cvm_func_report(file) ⇒ Object
Parsing the CVM user function report in xlsx format
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
# File 'lib/ucert/cvm_tracker.rb', line 145 def parse_cvm_func_report (file) #begin workbook = RubyXL::Parser.parse(file) worksheet=workbook.worksheets.first func_entitlement=Hash.new worksheet.count.times do |row| puts "Parsing workbook row: #{row}" if @verbose # skip the 1st line of the file (header line) next if row == 0 func_entitlement = Hash.new func_entitlement['用户一事通ID'] = worksheet[row][0].value.to_s.strip unless worksheet[row].nil? func_entitlement['功能ID'] = worksheet[row][3].value.to_s.strip unless worksheet[row].nil? func_entitlement['功能名称'] = worksheet[row][4].value.to_s.strip unless worksheet[row].nil? func_entitlement['权限'] = worksheet[row][5].value.to_s.strip unless worksheet[row].nil? func_entitlement['增减方向'] = worksheet[row][6].value.to_s.strip unless worksheet[row].nil? func_entitlement['有效性'] = worksheet[row][7].value.to_s.strip unless worksheet[row].nil? func_entitlement['有效期开始时间'] = worksheet[row][8].value.to_s.strip unless worksheet[row].nil? func_entitlement['有效期结束时间'] = worksheet[row][9].value.to_s.strip unless worksheet[row].nil? func_entitlement['功能机构全称'] = worksheet[row][10].value.to_s.strip unless worksheet[row].nil? puts "Function: #{func_entitlement.inspect}" if @verbose unless func_entitlement['用户一事通ID'].nil? or func_entitlement['功能ID'].nil? user_index = cvm_id_2_index(func_entitlement['用户一事通ID']) puts "Insert function information into record: #{user_index}" if @verbose @cvm_user_entitlement[user_index]['funcs']=Array.new unless @cvm_user_entitlement[user_index]['funcs'] @cvm_user_entitlement[user_index]['funcs'].push(func_entitlement) end end return func_entitlement #rescue => ee #puts "Exception on method #{__method__}: #{ee}" #end end |
#print_user_entitlement ⇒ Object Also known as: print_user
Print out the user entitlement table in plain text, to be imported into database
179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'lib/ucert/cvm_tracker.rb', line 179 def print_user_entitlement #begin puts "user Entitlement Report in Plain-text Format" if @verbose @cvm_user_entitlement.first[1].each {|k,v| print k,"|"} if @verbose puts if @verbose @cvm_user_entitlement.values.map do |rec| rec.each {|k,v| print v,"|"} puts end #rescue => ee #puts "Exception on method #{__method__}: #{ee}" #end end |
#save_cvm_user_map!(file = @file_user_map) ⇒ Object Also known as: save!
Save the CVM to AD user mapping relation into the cache file
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
# File 'lib/ucert/cvm_tracker.rb', line 195 def save_cvm_user_map!(file=@file_user_map) puts "Saving the known Cvm to AD user mapping relationship to file: #{file} ..." if @verbose begin =Time.now f=File.open(file, 'w') f.write "# local Cvm to AD user map file created by the #{self.class} class #{__method__} method at: #{}" @cvm_user_entitlement.values.map do |record| key = record['用户编号'] value = record['DN'] f.write "\n#{key}|#{value}" end f.close puts "CVM to AD user map file is successfully saved to: #{file}" if @verbose rescue => ee puts "Exception on method #{__method__}: #{ee}" if @verbose end end |