Class: Cfruby::Cfp_ClassList

Inherits:
Hash
  • Object
show all
Includes:
Cfp_ClassAccessor
Defined in:
lib/libcfenjin/cfp_classes.rb

Overview

List of Cfruby classes

Instance Method Summary collapse

Methods included from Cfp_ClassAccessor

#assign, #cfgroup, #dump_classlist, #init_classlist, #isa

Constructor Details

#initialize(defines, undefines) ⇒ Cfp_ClassList

Class list with hostname added automatically



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/libcfenjin/cfp_classes.rb', line 63

def initialize defines, undefines
    @undefines = undefines
	os = Cfruby::OS.get_os()
	@hostname = os.hostname
	# init_classlist --- don't do this, it is a circular        
	add('any',@hostname)
	add(os['name'].downcase,@hostname) if os['name']
	add(os['distribution'].downcase,@hostname) if os['distribution']
	usermanager = os.get_user_manager()
	add(usermanager.get_name(Process.euid()),@hostname)
    group = usermanager.get_group(Process.egid())
    add(group,@hostname) if group
    # ---- add classes passed through command line
    defines.each do | d |
      add(d,@hostname)
    end
end

Instance Method Details

#add(clname, name) ⇒ Object



92
93
94
95
96
97
98
99
100
101
# File 'lib/libcfenjin/cfp_classes.rb', line 92

def add clname, name
	if clname == nil
		dump nil," Trying to add nil class with <#{name}>"
	end
    if !@undefines.include? clname
      cl = findclass(clname)
      cl = addclass(clname) if !cl
      cl.add(name)    
    end
end

#addclass(name) ⇒ Object



85
86
87
88
89
90
# File 'lib/libcfenjin/cfp_classes.rb', line 85

def addclass name
    if !@undefines.include? name
      cl = Cfp_Class.new(name)
      self[name] = cl
    end
end

#dump(logger = nil, extra = nil) ⇒ Object



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

def dump logger=nil, extra=nil
	classes = []
	each do | item, value |
	  # p [ item,value ]
		classes.push(item) if isa? item
	end
	# p classes
	msg = 'Computer "'+@hostname+'" belongs to classes "'+classes.sort.join(', ')+'"'
    msg += extra if extra
	if logger != nil
		logger.notify(VERBOSE_CRITICAL,msg)
	else
		raise msg
	end
end

#expand(clname) ⇒ Object



103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/libcfenjin/cfp_classes.rb', line 103

def expand clname
	a = []
	if self[clname]
		self[clname].each do | item, value |
			if self[item]
				# ---- FIXME: recursion - no check for circular references
				item = expand item
			end
			a.push item
		end
	end
	a.flatten
end

#findclass(name) ⇒ Object



81
82
83
# File 'lib/libcfenjin/cfp_classes.rb', line 81

def findclass name
	self[name]
end

#isa?(clname) ⇒ Boolean

Returns:

  • (Boolean)


117
118
119
120
121
122
123
124
125
# File 'lib/libcfenjin/cfp_classes.rb', line 117

def isa? clname
	# ---- Quick check where hostname is actually checked against
	return true if clname == @hostname
	# ---- Check whether the hostname of the machine is in the (expanded) list
	# print "Expanding #{clname} to "
	a = expand clname
	# p a
	a.include? @hostname
end