/*
* wsman-soap.i * * soap structure accessors for openwsman swig bindings * */
%ignore __WsmanFaultCodeTable; %ignore __WsmanFaultDetailTable;
%include “wsman-faults.h”
%nodefault __WsEnumerateInfo; %rename(EnumerateInfo) __WsEnumerateInfo; struct __WsEnumerateInfo {};
/*
* Document-class: EnumerateInfo * * EnumerateInfo contains all information related to an enumeration * request. * * The initial client.enumerate operation only returns a +context+ * (String) which can be used to +pull+ the next enumeration item. * This item contains the next context in the chain. * */
%extend __WsEnumerateInfo {
~__WsEnumerateInfo() { } /* * Return the maximum number of items that will be returned by this enumeration * call-seq: * enumerate_info.max_items -> Integer * */ int max_items() { return $self->maxItems; }
if defined(SWIGRUBY)
%rename("max_items=") set_max_items(int mi);
endif
/* * Set the maximum number of items returned by this enumeration * call-seq: * enumerate_info.max_items = 100 * */ void set_max_items(int mi) { $self->maxItems = mi; } /* * enumeration flags * call-seq: * enumerate_info.flags -> Integer * */ int flags() { return $self->flags; } /* * The URL of the endpoint receiving the enumeration * call-seq: * enumerate_info.epr_to -> String * */ const char *epr_to() { return $self->epr_to; } /* * The URI of the end point reference * call-seq: * enumerate_info.epr_uri -> String * */ const char *epr_uri() { return $self->epr_uri; } /* * The current encoding (defaults to 'utf-8') * call-seq: * enumerate_info.encoding -> String * */ const char *encoding() { return $self->encoding; } /* * The Filter for this enumeration * call-seq: * enumerate_info.filter -> Openwsman::Filter * */ const filter_t *filter() { return $self->filter; } /* * The current index (number of the last returned item) * call-seq: * enumerate_info.index -> Integer * */ int index() { return $self->index; }
if defined(SWIGRUBY)
%rename("index=") set_index(int i);
endif
/* * Set a specific index (used to skip ahead) * call-seq: * enumerate_info.index = 42 * */ void set_index(int i) { $self->index = i; } /* * The total number of items in this enumeration * * index is the number already returned, this is the total number * call-seq: * enumerate_info.total_items -> Integer * */ int total_items() { return $self->totalItems; }
if defined(SWIGRUBY)
%rename("total_items=") set_total_items(int i);
endif
/* * Set the total number of items in this enumeration * call-seq: * enumerate_info.total_items = 10 * */ void set_total_items(int i) { $self->totalItems = i; } /* * XmlDoc representing the result pulled last * call-seq: * enumerate_info.pull_result -> Openwsman::XmlDoc * */ WsXmlDocH pull_result() { return (WsXmlDocH)$self->pullResultPtr; }
if defined(SWIGRUBY)
%rename("pull_result=") set_pull_result(WsXmlDocH result);
endif
/* * Set the pull result (XmlDoc) * * Used for server-side plugin extensions * call-seq: * enumerate_info.pull_result = xml_doc * */ void set_pull_result(WsXmlDocH result) { $self->pullResultPtr = (void *)result; }
}
/*
* __SoapOp -> SoapOp */
%nodefault __SoapOp; %rename(SoapOp) __SoapOp; struct __SoapOp {};
/*
* Document-class: SoapOp * * SoapOp represents a SOAP operation * */
%extend __SoapOp {
/* * The incoming XmlDoc * call-seq: * soap_op.indoc -> Openwsman::XmlDoc * */ WsXmlDocH indoc() { return soap_get_op_doc($self, 1); }
if defined(SWIGRUBY)
%rename("indoc=") set_indoc( WsXmlDocH doc );
endif
/* * Set the incoming XmlDoc * call-seq: * soap_op.indoc = xml_doc * */ void set_indoc( WsXmlDocH doc ) { soap_set_op_doc( $self, doc, 1 ); } /* * The outgoing XmlDoc * call-seq: * soap_op.outdoc -> Openwsman::XmlDoc * */ WsXmlDocH outdoc() { return soap_get_op_doc($self, 0); }
if defined(SWIGRUBY)
%rename("outdoc=") set_outdoc( WsXmlDocH doc );
endif
/* * Set the outgoing XmlDoc * call-seq: * soap_op.outdoc = xml_doc * */ void set_outdoc( WsXmlDocH doc ) { soap_set_op_doc( $self, doc, 0 ); } /* * The Soap instance of this operation * call-seq: * soap_op.soap -> Openwsman::Soap * */ struct __Soap *soap() { return soap_get_op_soap($self); } /* * The raw (SOAP) message for this operation * call-seq: * soap_op.msg -> Openwsman::Message * */ WsmanMessage *msg() { return wsman_get_msg_from_op($self); } /* * The maximum size (on the wire) of this operation * call-seq: * soap_op.maxsize -> Integer * */ unsigned long maxsize(){ return wsman_get_maxsize_from_op($self); }
}
/*
* __Soap -> Soap */
%nodefault __Soap; %rename(Soap) __Soap; struct __Soap {};
/*
* Document-class: Soap * * Soap represents a part of a SoapOp used to create and reference * context information. * * There is no constructor for Soap, use SoapOp.soap to access the * Soap instance associated with a SOAP operation. * */
%extend __Soap {
~__Soap() { soap_destroy($self); } %typemap(newfree) WsContextH "free($1);"; /* * Create a new Context * call-seq: * soap.create_context -> Openwsman::Context * */ WsContextH create_context() { return ws_create_context($self); } /* * Get the current Context * call-seq: * soap.context -> Openwsman::Context * */ WsContextH context() { return ws_get_soap_context($self); } /* * Create a new endpoint Context * call-seq: * soap.create_ep_context -> Openwsman::Context * */ WsContextH create_ep_context( WsXmlDocH doc ) { return ws_create_ep_context( $self, doc ); }
}
/*
* WsContext -> Context */
%rename(Context) _WS_CONTEXT; %nodefault _WS_CONTEXT; struct _WS_CONTEXT {}; typedef struct _WS_CONTEXT* WsContextH;
/*
* Document-class: Context * * Context contains all information of an ongoing SOAP operation * * There is no constructor for Context, use Soap.context to get the * current one. * */
%extend _WS_CONTEXT {
~_WS_CONTEXT() { ws_destroy_context($self); } %typemap(newfree) WsXmlDocH "ws_xml_destroy_doc($1);"; /* * The incoming XmlDoc * call-seq: * context.indox -> Openwsman::XmlDoc * */ WsXmlDocH indoc() { return $self->indoc; } /* * Get the Soap runtime environment * call-seq: * context.runtime -> Openwsman::Soap * */ struct __Soap *runtime() { return ws_context_get_runtime($self); }
if defined(SWIGRUBY)
%rename("enum_idle_timeout=") set_enumIdleTimeout(unsigned long timeout);
endif
/* * Set the idle timeout for enumerations * call-seq: * context.enum_idle_timeout = 60 * */ void set_enumIdleTimeout(unsigned long timeout) { ws_set_context_enumIdleTimeout($self, timeout); } /* * The class name * call-seq: * context.classname -> String * */ const char *classname() { return wsman_get_class_name($self); } /* * The method name * call-seq: * context.method -> String * */ const char *method() { return wsman_get_method_name($self); } /* * The method arguments * call-seq: * context.method -> Hash * */ hash_t *method_args(const char *resource_uri) { return wsman_get_method_args($self, resource_uri); } /* * The maximum elements of the document * call-seq: * context.max_elements -> Integer * context.max_elements(xmldoc) -> Integer * */ int max_elements(WsXmlDocH doc = NULL) { return wsman_get_max_elements($self, doc); } /* * The maximum envelope size of the document * call-seq: * context.max_envelope_size -> Integer * context.max_envelope_size(xmldoc) -> Integer * */ unsigned long max_envelope_size(WsXmlDocH doc = NULL) { return wsman_get_max_envelope_size($self, doc); } /* * The fragment of the document * call-seq: * context.fragment_string -> String * context.fragment_string(xmldoc) -> String * */ const char *fragment_string(WsXmlDocH doc = NULL) { return wsman_get_fragment_string($self, doc); } /* * The selector for an element * call-seq: * context.selector(xml_doc, "Name", 1) -> String * */ const char *selector(WsXmlDocH doc, const char *name, int index) { return wsman_get_selector($self, doc, name, index); } /* * The selectors from an endpoint reference * call-seq: * context.selectors_from_epr(epr_node_as_xml_doc) -> Hash * */ hash_t *selectors_from_epr(WsXmlNodeH epr_node) { return wsman_get_selectors_from_epr($self, epr_node); } /* * The selectors for a document * call-seq: * context.selectors -> Hash * context.selectors(xml_doc) -> Hash * */ hash_t *selectors(WsXmlDocH doc = NULL) { return wsman_get_selector_list($self, doc); } /* * The selectors from a filter * call-seq: * context.selectors_from_filter -> Hash * context.selectors_from_filter(xml_doc) -> Hash * */ hash_t *selectors_from_filter(WsXmlDocH doc = NULL) { return wsman_get_selector_list_from_filter($self, doc); } /* * The action * call-seq: * context.action -> String * context.action(xml_doc) -> String * */ const char *action(WsXmlDocH doc = NULL) { return wsman_get_action($self, doc); } /* * The resource uri * call-seq: * context.resource_uri -> String * context.resource_uri(xml_doc) -> String * */ const char *resource_uri(WsXmlDocH doc = NULL) { return wsman_get_resource_uri($self, doc); } /* * The option set * call-seq: * context.option_set(xml_doc, "op") -> String * */ const char *option_set(WsXmlDocH doc, const char *op) { return wsman_get_option_set($self, doc, op); } /* * Parse enumeration request * call-seq: * context.parse_enum_request(enumerate_info) -> Integer * */ int parse_enum_request(WsEnumerateInfo *enumInfo) { WsmanStatus status; wsman_status_init(&status); return wsman_parse_enum_request( $self, enumInfo, &status); /* FIXME: return status */ }
}
/*
* WsmanStatus -> Status */
%rename(Status) _WsmanStatus; %nodefault _WsmanStatus; struct _WsmanStatus {}; typedef struct _WsmanStatus WsmanStatus;
/*
* Document-class: Status * * Status represents the detailed status of a (failed) WS-Management * operation. * * Its primarily used implementing server-side plugins to report a Fault * back to the calling client. * */
%extend _WsmanStatus {
/* * Create a new Status object * * call-seq: * Openwsman::Status.new # create 'good' status * Openwsman::Status.new error_code * Openwsman::Status.new error_code, error_detail * Openwsman::Status.new error_code, error_detail, "Error message" * */ _WsmanStatus(int code = 0, int detail = 0, const char *msg = NULL) { WsmanStatus *s = (WsmanStatus *)malloc(sizeof(WsmanStatus)); wsman_status_init(s); if (code) s->fault_code = code; if (msg) s->fault_msg = strdup(msg); if (detail < 0 || detail > OWSMAN_SYSTEM_ERROR) { SWIG_exception( SWIG_ValueError, "Bad fault detail" ); } else { s->fault_detail_code = detail; }
if defined(SWIGPYTHON) || defined(SWIGPERL) || defined(SWIGJAVA)
fail:
endif
return s; } ~_WsmanStatus() { if ($self->fault_msg) free($self->fault_msg); free($self); } /* * String representation (returns the fault message) * * call-seq: * status.to_s -> String * */ const char *to_s() { return $self->fault_msg; }
if defined(SWIGRUBY)
%rename("code=") set_code(int code);
endif
/* * Set the fault code * * call-seq: * status.code = 1 * */ void set_code(int code) { $self->fault_code = code; } /* * Get the fault code * * call-seq: * status.code -> Integer * */ int code() { return $self->fault_code; }
if defined(SWIGRUBY)
%rename("detail=") set_detail(int detail);
endif
/* * Set the fault detail code * * call-seq: * status.detail = 42 * */ void set_detail(int detail) { if (detail < 0 || detail > OWSMAN_SYSTEM_ERROR) { SWIG_exception( SWIG_ValueError, "Bad fault detail" ); } else { $self->fault_detail_code = detail; }
if defined(SWIGPYTHON) || defined(SWIGPERL) || defined(SWIGJAVA)
fail: return;
endif
} /* * Get the fault detail code * * call-seq: * status.detail -> Integer * */ int detail() { return $self->fault_detail_code; }
if defined(SWIGRUBY)
%rename("msg=") set_msg(const char *msg);
endif
/* * Set the fault message * * call-seq: * status.msg = "This is a fault message" * */ void set_msg(const char *msg) { if ($self->fault_msg) free($self->fault_msg); if (msg) $self->fault_msg = strdup(msg); else $self->fault_msg = NULL; } /* * Get the fault message * * call-seq: * status.msg -> String * */ const char *msg() { return $self->fault_msg; } %typemap(newfree) WsXmlDocH "ws_xml_destroy_doc($1);"; /* * Create a new fault XmlDoc based on Status information * * call-seq: * status.generate_fault(xml_doc) -> XmlDoc * */ WsXmlDocH generate_fault(WsXmlDocH doc) { return wsman_generate_fault( doc, $self->fault_code, $self->fault_detail_code, $self->fault_msg); }
}
/*
* WsManFault -> Fault */
%rename(Fault) _WsManFault; %nodefault _WsManFault; struct _WsManFault {}; typedef struct _WsManFault WsManFault;
/*
* Document-class: Fault * * Fault represents details of a failed WS-Management operation * */
%extend _WsManFault {
/* * Create a Fault representation of a failed WS-Management result doc * * call-seq: * Openwsman::Fault.new result -> Openwsman::Fault * */ _WsManFault(WsXmlDocH doc) { WsManFault *fault = wsmc_fault_new(); wsmc_get_fault_data(doc, fault); return fault; } ~_WsManFault() { wsmc_fault_destroy($self); } /* * Fault code * * call-seq: * fault.code -> String * */ const char *code() { return $self->code; } /* * Fault subcode * * call-seq: * fault.subcode -> String * */ const char *subcode() { return $self->subcode; } /* * Fault reason * * call-seq: * fault.reason -> String * */ const char *reason() { return $self->reason; } /* * Fault detail * * call-seq: * fault.detail -> String * */ const char *detail() { return $self->fault_detail; }
}