class Filer

connect to filer, assign object

Public Class Methods

info() click to toggle source
# File lib/netapp.rb, line 60
def self.info
    system_info = @@filer.invoke("system-get-info") 
    raise system_info.results_reason \
          if system_info.results_status == 'failed'
    result = {}
    system_info.child_get("system-info").children_get.each do |key|
        result = {
            systemid:                      key.child_get_string("system-id"),
            systemname:                    key.child_get_string("system-name"),
            systemmodel:                   key.child_get_string("system-model"),
            systemmachinetype:             key.child_get_string("system-machine-type"),
            systemrev:                     key.child_get_string("system-revision"),
            systemserialno:                key.child_get_string("system-serial-number"),
            vendorid:                      key.child_get_string("vendor-id"),
            prodtype:                      key.child_get_string("prod-type"),
            partnersystemid:               key.child_get_string("partner-system-id"),
            partnersystemname:             key.child_get_string("partner-system-name"),
            partnersystemserialno:         key.child_get_string("partner-system-serial-number"),
            backplanepartno:               key.child_get_string("backplane-part-number"),
            backplanerev:                  key.child_get_string("backplane-revision"),
            processorsno:                  key.child_get_string("number-of-processors"),
            memorysize:                    key.child_get_string("memory-size"),
            cpuserialno:                   key.child_get_string("cpu-serial-number"),
            cpurev:                        key.child_get_string("cpu-revision"),
            cputype:                       key.child_get_string("cpu-processor-type"),
            cpuid:                         key.child_get_string("cpu-processor-id"),
            cpupartno:                     key.child_get_string("cpu-part-number"),
            cpumicrocodeversion:           key.child_get_string("cpu-microcode-version"),
            cpufirmwarerel:                key.child_get_string("cpu-firmware-release"),
            cpuciobrevid:                  key.child_get_string("cpu-ciob-revision-id"),
            supportsraidarray:             key.child_get_string("supports-raid-array"),
            controlleraddress:             key.child_get_string("controller-address"),
            boardtype:                     key.child_get_string("board-type"),
            boardspeed:                    key.child_get_string("board-speed")
        }
    end
    return result
end
is_clustered?() click to toggle source
# File lib/netapp.rb, line 44
def self.is_clustered?
    sys_version = @@filer.invoke("system-get-version")
    raise sys_version.results_reason \
          if sys_version.results_status == 'failed'
    return sys_version.child_get_string("version") =~ /Cluster-Mode/ ? true : false
end
is_ha?() click to toggle source
# File lib/netapp.rb, line 50
def self.is_ha?
    cf_status = @@filer.invoke("cf-status")
    return false if cf_status.results_status == 'failed' \
                 and cf_status.results_reason == 'monitor not initialiazed'
    raise cf_status.results_reason if cf_status.results_status == 'failed'
    return result = cf_status.child_get_string("is-enabled")
end
is_secure?() click to toggle source
# File lib/netapp.rb, line 40
def self.is_secure?
    https = @@filer.use_https
    return true if https
end
new(filer, username, password, secure=true, type=filer) click to toggle source
# File lib/netapp.rb, line 24
def initialize(filer, username, password, secure=true, type=filer)
    @@filer = NaServer.new(filer, 1, 17) # specifies API version (1.17)
    if secure
        # connect via SSL/TLS
        @@filer.set_transport_type("HTTPS")
        raise 'insecure connection!' unless @@filer.use_https
        @@filer.set_admin_user(username, password)
    else
        # non-encrypted connection
        @@filer.set_admin_user(username, password)
    end

    # TODO: implement NaServer::set_server_type for NetApp DFM/Filer
    # TODO: implement different login styles (usr,pwd - cert - ...)
    #       see also - NaServer::set_style
end
set_vfiler(vfilername) click to toggle source
# File lib/netapp.rb, line 57
def self.set_vfiler(vfilername)
    return true if @@filer.set_vfiler(vfilername)
end