Class: Zenoss::Model::DeviceClass

Inherits:
Object
  • Object
show all
Includes:
Zenoss, Zenoss::Model
Defined in:
lib/zenoss/model/devices/device_class.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Zenoss::Model

#model_init

Methods included from Zenoss

connect, #parse_array, #pdatetime_to_datetime, #pdict_to_hash, #plist_to_array, #ptuples_to_hash, #sanitize_str

Constructor Details

#initialize(devclass) ⇒ DeviceClass

Returns a new instance of DeviceClass.



28
29
30
31
32
33
34
35
36
37
# File 'lib/zenoss/model/devices/device_class.rb', line 28

def initialize(devclass)
  @base_id = 'Devices'

  # This confusing little ditty lets us accept a DeviceClass in a number of ways:
  # Like, '/zport/dmd/Devices/Server/Linux'
  # or, '/Devices/Server/Linux'
  # or, '/Server/Linux'
  path = devclass.sub(/^(\/zport\/dmd\/)?(#{@base_id}\/)?([^\/]+)\/?$/,'\2')
  @organizer_name = rest('getOrganizerName', "#{@base_id}/#{path}")
end

Instance Attribute Details

#organizer_nameObject (readonly)

Returns the value of attribute organizer_name.



26
27
28
# File 'lib/zenoss/model/devices/device_class.rb', line 26

def organizer_name
  @organizer_name
end

Instance Method Details

#add_device(fully_qualified_device) ⇒ Object

Add a device beneath this Device Class. It is also typically best to use the fully qualified version of the device name. It returns true if the device is added, false otherwise.



47
48
49
50
# File 'lib/zenoss/model/devices/device_class.rb', line 47

def add_device(fully_qualified_device)
  loader = ZDeviceLoader.instance
  loader.load_device(fully_qualified_device, @organizer_name)
end

#find_device_path(device_name) ⇒ Device?

Name of the device in Zenoss. This method will return the first match if the device_name is not fully qualified.

Parameters:

  • device_name (String)

    the hostname of the device

Returns:

  • (Device, nil)

    Device object of passed hostname or nil if the device doesn’t exist



61
62
63
64
# File 'lib/zenoss/model/devices/device_class.rb', line 61

def find_device_path(device_name)
  devpath = rest("findDevicePath?devicename=#{device_name}")
  devpath.nil? ? nil : Device.new(devpath)
end

#get_sub_devicesArray<Device>

Returns an Array of Devices (or some Device subclass).

Returns:

  • (Array<Device>)

    an Array of Devices (or some Device subclass)



67
68
69
70
71
72
73
74
75
# File 'lib/zenoss/model/devices/device_class.rb', line 67

def get_sub_devices
  (plist_to_array( rest('getSubDevices') )).map do |dstr|
    # I'm using this regex here so some day we can generate
    # Devices and sub Device types with an eval like so:
    # eval "#{$1}.new(#{$2})"
    dev = dstr.sub(/^<([\w]+)\s+at\s+(.*)>$/,'\2')
    Device.new(dev)
  end
end