openwsman 2.4.14 → 2.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/openwsman/openwsman.i +24 -0
- data/ext/openwsman/version.i +3 -3
- data/ext/openwsman/wsman-client_opt.i +16 -37
- data/ext/openwsman/wsman-epr.i +6 -8
- data/ext/ruby/helpers.h +24 -16
- data/lib/openwsman/openwsman.rb +36 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 863a157db8977112dd862c430f9f8ae8348fa448
|
4
|
+
data.tar.gz: 7d78155cf5883a0bdc1f4d83a14f4c20dbe94a9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 87a91cb1af88c6a4cb74f6367791a8bcf7c863aa49ab5f9fc06044fe0345ecce65a7b87a58514c98cf8dad6e9dfafaf396822d9ddd6adeec5663ab2f9e79b081
|
7
|
+
data.tar.gz: 103cbaf1914d50d0693232cba422ba9880e2db2860d0c8c2977ff8117e392034e185d4802c047063246e945459f66da5ef0bd9c54e823f93ddac5221e3856949
|
data/ext/openwsman/openwsman.i
CHANGED
@@ -182,6 +182,9 @@ SWIGINTERNINLINE SV *SWIG_From_double SWIG_PERL_DECL_ARGS_1(double value);
|
|
182
182
|
|
183
183
|
#if defined(SWIGPYTHON)
|
184
184
|
%module pywsman
|
185
|
+
/* Wrap file operations, as Python's native ones are incompatible */
|
186
|
+
FILE *fopen(char *, char *);
|
187
|
+
void fclose(FILE *f);
|
185
188
|
#endif
|
186
189
|
|
187
190
|
#if defined(SWIGPERL)
|
@@ -419,6 +422,27 @@ static epr_t *my_epr_deserialize(WsXmlNodeH node) {
|
|
419
422
|
/* else search the WSA_EPR node */
|
420
423
|
return epr_deserialize(node, XML_NS_ADDRESSING, WSA_EPR, 1);
|
421
424
|
}
|
425
|
+
|
426
|
+
static VALUE kv_list_to_hash(list_t *list)
|
427
|
+
{
|
428
|
+
VALUE v = Qnil;
|
429
|
+
if (!list_isempty(list)) {
|
430
|
+
v = rb_hash_new();
|
431
|
+
lnode_t *node = list_first(list);
|
432
|
+
while (node) {
|
433
|
+
key_value_t *kv = (key_value_t *)node->list_data;
|
434
|
+
if (kv->type == 0) {
|
435
|
+
rb_hash_aset( v, makestring(kv->key), makestring(kv->v.text));
|
436
|
+
}
|
437
|
+
else {
|
438
|
+
VALUE epr = SWIG_NewPointerObj((void*)kv->v.epr, SWIGTYPE_p_epr_t, 0);
|
439
|
+
rb_hash_aset( v, makestring(kv->key), epr);
|
440
|
+
}
|
441
|
+
node = list_next(list, node);
|
442
|
+
}
|
443
|
+
}
|
444
|
+
return v;
|
445
|
+
}
|
422
446
|
#endif
|
423
447
|
|
424
448
|
static char *epr_prefix(const char *uri);
|
data/ext/openwsman/version.i
CHANGED
@@ -368,42 +368,36 @@ typedef struct {} client_opt_t;
|
|
368
368
|
* Add a selector as key/value pair
|
369
369
|
*
|
370
370
|
* NOTE:
|
371
|
-
* the value must be properly escaped (replace & with &, etc.)
|
371
|
+
* the string value must be properly escaped (replace & with &, etc.)
|
372
372
|
* in Ruby use CGI::escapeHTML()
|
373
373
|
*
|
374
374
|
* call-seq:
|
375
375
|
* options.add_selector "Key", "Value"
|
376
|
+
* options.add_selector "Key", end_point_reference
|
376
377
|
*
|
377
378
|
*/
|
378
379
|
void add_selector(VALUE k, VALUE v)
|
379
380
|
{
|
380
381
|
const char *key = as_string(k);
|
381
|
-
|
382
|
+
KLASS_DECL(SwigClassEndPointReference,SWIGTYPE_p_epr_t);
|
383
|
+
if (CLASS_OF(v) == KLASS_OF(SwigClassEndPointReference)) {
|
384
|
+
epr_t *epr;
|
385
|
+
SWIG_ConvertPtr(v, (void **)&epr, SWIGTYPE_p_epr_t, 0);
|
386
|
+
wsmc_add_selector_epr($self, key, epr);
|
387
|
+
}
|
388
|
+
else {
|
389
|
+
const char *value = as_string(v);
|
390
|
+
wsmc_add_selector($self, key, value);
|
391
|
+
}
|
392
|
+
}
|
382
393
|
#else
|
383
394
|
void add_selector(const char *key, const char *value)
|
384
395
|
{
|
385
|
-
#endif
|
386
396
|
wsmc_add_selector($self, key, value);
|
387
397
|
}
|
398
|
+
#endif
|
388
399
|
|
389
400
|
#if defined(SWIGRUBY)
|
390
|
-
%rename( "selectors=" ) set_selectors(VALUE hash);
|
391
|
-
/*
|
392
|
-
* Set selectors from Hash
|
393
|
-
*
|
394
|
-
* NOTE:
|
395
|
-
* the values must be properly escaped (replace & with &, etc.)
|
396
|
-
* in Ruby use CGI::escapeHTML()
|
397
|
-
*
|
398
|
-
* call-seq:
|
399
|
-
* options.selectors = { "Key" => "Value", ... }
|
400
|
-
*
|
401
|
-
*/
|
402
|
-
void set_selectors(VALUE hash)
|
403
|
-
{
|
404
|
-
$self->selectors = value2hash(NULL, hash, 0);
|
405
|
-
}
|
406
|
-
|
407
401
|
%rename( "selectors" ) get_selectors(void);
|
408
402
|
/*
|
409
403
|
* Get selectors as Hash
|
@@ -414,7 +408,7 @@ typedef struct {} client_opt_t;
|
|
414
408
|
*/
|
415
409
|
VALUE get_selectors(void)
|
416
410
|
{
|
417
|
-
return
|
411
|
+
return kv_list_to_hash($self->selectors);
|
418
412
|
}
|
419
413
|
#endif
|
420
414
|
|
@@ -485,22 +479,7 @@ typedef struct {} client_opt_t;
|
|
485
479
|
*/
|
486
480
|
VALUE get_properties(void)
|
487
481
|
{
|
488
|
-
|
489
|
-
if (!list_isempty($self->properties)) {
|
490
|
-
v = rb_hash_new();
|
491
|
-
lnode_t *node = list_first($self->properties);
|
492
|
-
while (node) {
|
493
|
-
client_property_t *property = (client_property_t *)node->list_data;
|
494
|
-
if (property->value.type == 0) {
|
495
|
-
rb_hash_aset( v, makestring(property->key), makestring(property->value.entry.text));
|
496
|
-
}
|
497
|
-
else {
|
498
|
-
rb_hash_aset( v, makestring(property->key), makestring(epr_to_string(property->value.entry.eprp)));
|
499
|
-
}
|
500
|
-
node = list_next($self->properties, node);
|
501
|
-
}
|
502
|
-
}
|
503
|
-
return v;
|
482
|
+
return kv_list_to_hash($self->properties);
|
504
483
|
}
|
505
484
|
#endif
|
506
485
|
|
data/ext/openwsman/wsman-epr.i
CHANGED
@@ -193,9 +193,9 @@ typedef struct {} epr_t;
|
|
193
193
|
#endif
|
194
194
|
int i;
|
195
195
|
Target_Type ary = Target_SizedArray($self->refparams.selectorset.count);
|
196
|
-
|
196
|
+
key_value_t *p = $self->refparams.selectorset.selectors;
|
197
197
|
for (i = 0; i < $self->refparams.selectorset.count; i++) {
|
198
|
-
Target_ListSet(ary, i, SWIG_FromCharPtr(p->
|
198
|
+
Target_ListSet(ary, i, SWIG_FromCharPtr(p->key));
|
199
199
|
++p;
|
200
200
|
}
|
201
201
|
#if defined(SWIGPERL)
|
@@ -216,18 +216,16 @@ typedef struct {} epr_t;
|
|
216
216
|
*/
|
217
217
|
void each() {
|
218
218
|
int i;
|
219
|
-
|
219
|
+
key_value_t *p = NULL;
|
220
220
|
VALUE value, ary;
|
221
221
|
p = $self->refparams.selectorset.selectors;
|
222
222
|
for (i = 0; i < $self->refparams.selectorset.count; i++) {
|
223
223
|
ary = rb_ary_new2(2);
|
224
|
-
rb_ary_store(ary, 0, SWIG_FromCharPtr(p->
|
224
|
+
rb_ary_store(ary, 0, SWIG_FromCharPtr(p->key));
|
225
225
|
if (p->type == 0) {
|
226
|
-
value = SWIG_FromCharPtr(p->
|
226
|
+
value = SWIG_FromCharPtr(p->v.text);
|
227
227
|
} else {
|
228
|
-
|
229
|
-
value = SWIG_FromCharPtr(epr_value);
|
230
|
-
u_free(epr_value);
|
228
|
+
value = SWIG_NewPointerObj((void*) p->v.epr, SWIGTYPE_p_epr_t, 0);
|
231
229
|
}
|
232
230
|
rb_ary_store(ary, 1, value);
|
233
231
|
rb_yield(ary);
|
data/ext/ruby/helpers.h
CHANGED
@@ -125,26 +125,34 @@ _add_str( VALUE key, VALUE value, hash_t *h )
|
|
125
125
|
}
|
126
126
|
|
127
127
|
|
128
|
-
/* add key,value VALUE pair to hash_t* as
|
128
|
+
/* add key,value VALUE pair to hash_t* as key_value_t*
|
129
129
|
* (used as callback for value2hash)
|
130
130
|
*/
|
131
131
|
static int
|
132
|
-
|
132
|
+
_add_kv( VALUE key, VALUE value, hash_t *h )
|
133
133
|
{
|
134
134
|
if (key != Qundef) {
|
135
|
-
const char *k =
|
135
|
+
const char *k = as_string( key );
|
136
136
|
if (!hash_lookup( h, k ) ) {
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
137
|
+
epr_t *epr;
|
138
|
+
const char *text;
|
139
|
+
key_value_t *entry;
|
140
|
+
KLASS_DECL(SwigClassEndPointReference,SWIGTYPE_p_epr_t);
|
141
|
+
if (CLASS_OF(value) == KLASS_OF(SwigClassEndPointReference)) {
|
142
|
+
SWIG_ConvertPtr(value, (void **)&epr, SWIGTYPE_p_epr_t, 0);
|
143
|
+
text = NULL;
|
144
|
+
}
|
145
|
+
else if (TYPE(value) == T_ARRAY) {
|
146
|
+
rb_raise( rb_eException, "Passing array parameter via invoke() still unsupported" );
|
147
|
+
}
|
148
|
+
else {
|
149
|
+
text = as_string(value);
|
150
|
+
epr = NULL;
|
151
|
+
}
|
152
|
+
entry = key_value_create(k, text, epr, NULL);
|
153
|
+
if ( !hash_alloc_insert( h, k, entry ) ) {
|
154
|
+
rb_raise( rb_eException, "hash_alloc_insert failed" );
|
155
|
+
}
|
148
156
|
}
|
149
157
|
}
|
150
158
|
return 0;
|
@@ -158,7 +166,7 @@ _add_selector( VALUE key, VALUE value, hash_t *h )
|
|
158
166
|
*
|
159
167
|
* valuetype - type of hash values
|
160
168
|
* 0 - values are string (char *)
|
161
|
-
* 1 - values are
|
169
|
+
* 1 - values are key_value_t *
|
162
170
|
*
|
163
171
|
*/
|
164
172
|
static hash_t *
|
@@ -170,7 +178,7 @@ value2hash( hash_t *h, VALUE v, int valuetype )
|
|
170
178
|
|
171
179
|
if (!h) h = hash_create3(HASHCOUNT_T_MAX, 0, 0);
|
172
180
|
|
173
|
-
rb_hash_foreach( v, (valuetype==0)?_add_str:
|
181
|
+
rb_hash_foreach( v, (valuetype==0)?_add_str:_add_kv, (unsigned long)h );
|
174
182
|
|
175
183
|
return h;
|
176
184
|
}
|
data/lib/openwsman/openwsman.rb
CHANGED
@@ -38,14 +38,26 @@ require 'openwsman/xmldoc'
|
|
38
38
|
# response and dig down through its XmlNode and XmlAttr objects.
|
39
39
|
|
40
40
|
module Openwsman
|
41
|
-
|
41
|
+
#
|
42
|
+
# ClientOptions
|
43
|
+
#
|
44
|
+
class ClientOptions
|
42
45
|
# assign hash to properties
|
43
46
|
def properties= value
|
44
47
|
value.each do |k,v|
|
45
|
-
self.add_property k.to_s, v
|
48
|
+
self.add_property k.to_s, v
|
49
|
+
end
|
50
|
+
end
|
51
|
+
# assign hash to selectors
|
52
|
+
def selectors= value
|
53
|
+
value.each do |k,v|
|
54
|
+
self.add_selector k.to_s, v
|
46
55
|
end
|
47
56
|
end
|
48
57
|
end
|
58
|
+
#
|
59
|
+
# Transport
|
60
|
+
#
|
49
61
|
class Transport
|
50
62
|
# called when authentication credentials missing or wrong
|
51
63
|
def Transport.auth_request_callback client, auth_type
|
@@ -85,10 +97,30 @@ module Openwsman
|
|
85
97
|
raise "Classname must not be nil" unless classname
|
86
98
|
epr = epr_prefix_for(classname,namespace) + "/#{classname}"
|
87
99
|
end
|
88
|
-
|
100
|
+
#
|
101
|
+
# EndPointReference
|
102
|
+
#
|
89
103
|
class EndPointReference
|
90
104
|
def method_missing name, *args # :nodoc:
|
91
|
-
selector(name)
|
105
|
+
selector(name.to_s)
|
106
|
+
end
|
107
|
+
def to_s
|
108
|
+
s = "#{classname}"
|
109
|
+
first = true
|
110
|
+
self.each do |k,v|
|
111
|
+
s << ((first)?"?":"&")
|
112
|
+
first = false
|
113
|
+
s << "#{k}=#{v.inspect}"
|
114
|
+
end
|
115
|
+
s
|
116
|
+
end
|
117
|
+
end
|
118
|
+
#
|
119
|
+
# Fault
|
120
|
+
#
|
121
|
+
class Fault
|
122
|
+
def to_s
|
123
|
+
"Fault #{code}.#{subcode}: #{detail} - #{reason}"
|
92
124
|
end
|
93
125
|
end
|
94
126
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openwsman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Klaus Kämpf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|