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



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