| # This is openwsman/openwsman |
| # do NOT require this file, but do a simple |
| # require 'openwsman' |
| # instead |
| # |
| |
| require 'openwsman/version' |
| |
| # this loads the binary .so file |
| require '_openwsman' |
| |
| # this extends Openwsman::XmlNode with method_missing |
| require 'openwsman/xmlnode' |
| |
| # this extends Openwsman::XmlDoc with method_missing |
| require 'openwsman/xmldoc' |
| |
| # = About openwsman |
| # Openwsman (http://www.openwsman.org) is a project intended to provide an open-source |
| # implementation of the Web Services Management specification |
| # (WS-Management) and to expose system management information on the |
| # Linux operating system using the WS-Management protocol. WS-Management |
| # is based on a suite of web services specifications and usage |
| # requirements that exposes a set of operations focused on and covers |
| # all system management aspects. |
| # |
| # = Using the bindings |
| # The bindings provide access to the client-side API of openwsman. |
| # You start by creating a Client instance and set up ClientOptions |
| # to control the communication. |
| # |
| # The Client instance now provides the WS-Management operations, like |
| # enumerate, get, invoke, etc. |
| # |
| # All client operations return a XmlDoc representing the SOAP response |
| # from the system. |
| # # You can then use XmlDoc methods to extract SOAP elements from the |
| # response and dig down through its XmlNode and XmlAttr objects. |
| |
| module Openwsman |
| class Transport |
| # called when authentication credentials missing or wrong |
| def Transport.auth_request_callback client, auth_type |
| # override in client code |
| # return Array of [ username, password ] |
| # return nil to abort authentication |
| end |
| end |
| # |
| # return endpoint-reference (EPR) prefix for given classname and namespace |
| # |
| # * +classname+ - classname (using the <schema>_<name> format) |
| # * +namespace+ - optional namespace, required for Windows WMI which embeds the namespace in the EPR |
| # |
| # ==== Examples |
| # prefix = Openwsman.epr_prefix_for "CIM_Managed_Element" |
| # => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2" |
| # prefix = Openwsman.epr_prefix_for "Win32_Foo", "root/cimv2" |
| # => "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2" |
| # |
| def self.epr_prefix_for classname, namespace = nil |
| prefix = Openwsman::uri_prefix classname |
| prefix += "/#{namespace}" if namespace && !namespace.empty? |
| prefix |
| end |
| |
| # create full endpoint reference URI for namespace and classname |
| # |
| # * +classname+ - classname (using the <schema>_<name> format) |
| # * +namespace+ - optional namespace, required for Windows WMI which embeds the namespace in the EPR |
| # |
| # ==== Examples |
| # Openwsman.epr_uri_for "root/cimv2", "Win32_Foo" |
| # => "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Foo" |
| def self.epr_uri_for namespace, classname |
| raise "Namespace must not be nil" unless namespace |
| raise "Classname must not be nil" unless classname |
| epr = epr_prefix_for(classname,namespace) + "/#{classname}" |
| end |
| |
| class EndPointReference |
| def method_missing name, *args # :nodoc: |
| selector(name) |
| end |
| end |
| end |