right_flexiscale 0.1.0

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.
@@ -0,0 +1,228 @@
1
+ #
2
+ # Copyright (c) 2008 RightScale Inc
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #
23
+
24
+ class Date
25
+ def to_utc_time
26
+ dest = new_offset
27
+ # Convert a fraction of a day to a number of microseconds
28
+ usec = (dest.sec_fraction * 60 * 60 * 24 * (10**6)).to_i
29
+ Time.send(:utc, dest.year, dest.month, dest.day, dest.hour, dest.min, dest.sec, usec)
30
+ end
31
+ end
32
+
33
+ module FlexiScale
34
+
35
+ def self.attrs_to_hash(*list)
36
+ result = {}
37
+ object = list.shift
38
+ list.each { |attribute| result[attribute] = object.__send__(attribute) }
39
+ result
40
+ end
41
+
42
+ class OperatingSystemImage
43
+ def to_handy_hash
44
+ { :fxs_id => self.operating_system_image_id,
45
+ :name => self.operating_system_image_name }
46
+ end
47
+ end
48
+
49
+ class Disk
50
+ def to_handy_hash
51
+ ::FlexiScale::attrs_to_hash(self, :capacity, :locked, :package_id, :server_id, :usage).merge(
52
+ :fxs_id => self.disk_id,
53
+ :name => self.disk_name
54
+ )
55
+ end
56
+ end
57
+
58
+ class NetworkInterface
59
+ def to_handy_hash
60
+ ::FlexiScale::attrs_to_hash(self, :server_id, :vlan_id, :mac_address).merge(
61
+ :fxs_id => self.network_interface_id
62
+ )
63
+ end
64
+ end
65
+
66
+ class IpBlock
67
+ def to_handy_hash
68
+ ::FlexiScale::attrs_to_hash(self, :customer_vlan_id, :end_ip, :start_ip, :block_type).merge(
69
+ :fxs_id => self.ip_block_id
70
+ )
71
+ end
72
+ end
73
+
74
+ class Firewall
75
+ def to_handy_hash
76
+ ::FlexiScale::attrs_to_hash(self, :ip_address, :default_policy).merge(
77
+ :fxs_id => self.firewall_id
78
+ )
79
+ end
80
+ end
81
+
82
+ class FirewallTemplate
83
+ def to_handy_hash
84
+ { :fxs_id => self.firewall_template_id,
85
+ :name => self.template_name,
86
+ :default_policy => self.default_policy }
87
+ end
88
+ end
89
+
90
+ class FirewallRule
91
+ def to_handy_hash
92
+ ::FlexiScale::attrs_to_hash(self, :action, :destination_port, :direction, :firewall_id,
93
+ :icmp_parameter_id, :ip_address, :ip_address_mask,
94
+ :firewall_protocol_id, :sequence_no,
95
+ :source_port, :jump_to).merge(
96
+ :fxs_id => self.firewall_rule_id,
97
+ :name => self.rule_name
98
+ )
99
+ end
100
+ end
101
+
102
+ class FirewallTemplateRule
103
+ def to_handy_hash
104
+ ::FlexiScale::attrs_to_hash(self, :action, :destination_port, :direction, :firewall_protocol_id,
105
+ :firewall_template_id, :icmp_parameter_id, :ip_address,
106
+ :ip_address_mask, :jump_to, :sequence_no, :source_port).merge(
107
+ :fxs_id => self.firewall_template_rule_id,
108
+ :name => self.rule_name
109
+ )
110
+ end
111
+ end
112
+
113
+ class IcmpProtocol
114
+ def to_handy_hash
115
+ { :fxs_id => self.icmp_protocol_id,
116
+ :description => self.description }
117
+ end
118
+ end
119
+
120
+ class FirewallProtocol
121
+ def to_handy_hash
122
+ { :fxs_id => self.firewall_protocol_id,
123
+ :name => self.name }
124
+ end
125
+ end
126
+
127
+ class Vlan
128
+ def to_handy_hash
129
+ { :fxs_id => self.vlan_id,
130
+ :name => self.vlan_name }
131
+ end
132
+ end
133
+
134
+ class Server
135
+ STATUS_IN_WORDS = { '1' => 'error',
136
+ '2' => 'running',
137
+ '3' => 'starting',
138
+ '4' => 'stopping',
139
+ '5' => 'stopped' }
140
+ def to_handy_hash
141
+ ::FlexiScale::attrs_to_hash(self, :disk_capacity, :disks, :ip_addresses,
142
+ :memory, :modified, :network_interfaces, :package_id,
143
+ :processors, :status, :uptime ).merge(
144
+ :fxs_id => self.server_id,
145
+ :name => self.server_name,
146
+ :fxs_status => self.status,
147
+ # :status => STATUS_IN_WORDS[self.status],
148
+ :image_id => self.operating_system_image.operating_system_image_id,
149
+ :image_name => self.operating_system_image.operating_system_image_name,
150
+ :initial_password => self.initial_password.chop
151
+ )
152
+ end
153
+ end
154
+
155
+ class Job
156
+ STATUS_IN_WORDS = { 1 => 'running',
157
+ 2 => 'completed',
158
+ 3 => 'failed' }
159
+ def to_handy_hash
160
+ ::FlexiScale::attrs_to_hash(self, :type_id, :description, :parent_job, :notes ).merge(
161
+ :fxs_id => self.job_id,
162
+ :fxs_status => self.status,
163
+ :status => STATUS_IN_WORDS[self.status],
164
+ :started_at => self.started.to_utc_time,
165
+ :finished_at => self.finished ? self.finished.to_utc_time : nil
166
+ )
167
+ end
168
+ end
169
+
170
+ class Package
171
+ def to_handy_hash
172
+ { :fxs_id => self.package_id,
173
+ :name => self.package_name }
174
+ end
175
+ end
176
+
177
+ class DebitItem
178
+ def to_handy_hash
179
+ ::FlexiScale::attrs_to_hash( self, :debit_id, :item_type, :type_id, :item_value, :item_cost,
180
+ :description ).merge(
181
+ :fxs_id => self.debit_item_id,
182
+ :timestamp => Time.at(self.timestamp.to_i)
183
+ )
184
+ end
185
+ end
186
+
187
+ class Debit
188
+ def to_handy_hash
189
+ ::FlexiScale::attrs_to_hash( self, :creation_time, :item_count, :item_cost ).merge(
190
+ :fxs_id => :debit_id,
191
+ :creation_time => Time.at(self.creation_time.to_i)
192
+ )
193
+ end
194
+ end
195
+
196
+ class Credit
197
+ def to_handy_hash
198
+ { :fxs_id => self.credit_id,
199
+ :date => self.credit_date,
200
+ :amount => self.credit_amount,
201
+ :unused_credit => self.unused_credit
202
+ }
203
+ end
204
+ end
205
+
206
+ class CreditDebit
207
+ def to_handy_hash
208
+ ::FlexiScale::attrs_to_hash( self, :credit_id, :debit_id, :amount ).merge(
209
+ :fs => self.credit_debit_id
210
+ )
211
+ end
212
+ end
213
+
214
+ %w{ ArrayOf_xsd_int ArrayOf_xsd_string ArrayOfServer ArrayOfCredit
215
+ ArrayOfOperatingSystemImage ArrayOfFirewall ArrayOfFirewallTemplate
216
+ ArrayOfFirewallRule ArrayOfFirewallTemplateRule ArrayOfIcmpProtocol
217
+ ArrayOfFirewallProtocol ArrayOfIpBlock ArrayOfVlan ArrayOfNetworkInterface
218
+ ArrayOfDisk ArrayOfJob ArrayOfPackage ArrayOfDebitItem ArrayOfDebit }.each do |klass_name|
219
+ eval <<-EOF
220
+ class #{klass_name}
221
+ def to_handy_hash
222
+ map { |item| item.to_handy_hash }
223
+ end
224
+ end
225
+ EOF
226
+ end
227
+
228
+ end
@@ -0,0 +1,315 @@
1
+ require 'Flexiscale API.rb'
2
+ require 'Flexiscale APIMappingRegistry.rb'
3
+ require 'soap/rpc/driver'
4
+
5
+ module FlexiScale # :nodoc:
6
+
7
+ class FlexiScale < ::SOAP::RPC::Driver # :nodoc:
8
+ DefaultEndpointUrl = "https://api.flexiscale.com/0.5/index.php"
9
+ NsApiFlexiscaleCom = "http://api.flexiscale.com"
10
+
11
+ Methods = [
12
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListServers"),
13
+ "http://api.flexiscale.com",
14
+ "listServers",
15
+ [ ["in", "list", ["FlexiScale::ArrayOf_xsd_string", "http://api.flexiscale.com", "ArrayOf_xsd_string"]],
16
+ ["retval", "ListServersReturn", ["FlexiScale::ArrayOfServer", "http://api.flexiscale.com", "ArrayOfServer"]] ],
17
+ { :request_style => :rpc, :request_use => :encoded,
18
+ :response_style => :rpc, :response_use => :encoded,
19
+ :faults => {} }
20
+ ],
21
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListJobs"),
22
+ "http://api.flexiscale.com",
23
+ "listJobs",
24
+ [ ["in", "list", ["FlexiScale::ArrayOf_xsd_int", "http://api.flexiscale.com", "ArrayOf_xsd_int"]],
25
+ ["retval", "ListJobsReturn", ["FlexiScale::ArrayOfJob", "http://api.flexiscale.com", "ArrayOfJob"]] ],
26
+ { :request_style => :rpc, :request_use => :encoded,
27
+ :response_style => :rpc, :response_use => :encoded,
28
+ :faults => {} }
29
+ ],
30
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListFirewallTemplates"),
31
+ "http://api.flexiscale.com",
32
+ "listFirewallTemplates",
33
+ [ ["in", "list", ["FlexiScale::ArrayOf_xsd_int", "http://api.flexiscale.com", "ArrayOf_xsd_int"]],
34
+ ["retval", "ListFirewallTemplatesReturn", ["FlexiScale::ArrayOfFirewallTemplate", "http://api.flexiscale.com", "ArrayOfFirewallTemplate"]] ],
35
+ { :request_style => :rpc, :request_use => :encoded,
36
+ :response_style => :rpc, :response_use => :encoded,
37
+ :faults => {} }
38
+ ],
39
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListFirewallRules"),
40
+ "http://api.flexiscale.com",
41
+ "listFirewallRules",
42
+ [ ["in", "firewall_id", ["::SOAP::SOAPInt"]],
43
+ ["in", "direction", ["::SOAP::SOAPString"]],
44
+ ["retval", "ListFirewallRulesReturn", ["FlexiScale::ArrayOfFirewallRule", "http://api.flexiscale.com", "ArrayOfFirewallRule"]] ],
45
+ { :request_style => :rpc, :request_use => :encoded,
46
+ :response_style => :rpc, :response_use => :encoded,
47
+ :faults => {} }
48
+ ],
49
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListFirewallTemplateRules"),
50
+ "http://api.flexiscale.com",
51
+ "listFirewallTemplateRules",
52
+ [ ["in", "firewall_template_id", ["::SOAP::SOAPInt"]],
53
+ ["in", "direction", ["::SOAP::SOAPString"]],
54
+ ["retval", "ListFirewallTemplateRulesReturn", ["FlexiScale::ArrayOfFirewallTemplateRule", "http://api.flexiscale.com", "ArrayOfFirewallTemplateRule"]] ],
55
+ { :request_style => :rpc, :request_use => :encoded,
56
+ :response_style => :rpc, :response_use => :encoded,
57
+ :faults => {} }
58
+ ],
59
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListFirewalls"),
60
+ "http://api.flexiscale.com",
61
+ "listFirewalls",
62
+ [ ["in", "list", ["FlexiScale::ArrayOf_xsd_int", "http://api.flexiscale.com", "ArrayOf_xsd_int"]],
63
+ ["retval", "ListFirewallsReturn", ["FlexiScale::ArrayOfFirewall", "http://api.flexiscale.com", "ArrayOfFirewall"]] ],
64
+ { :request_style => :rpc, :request_use => :encoded,
65
+ :response_style => :rpc, :response_use => :encoded,
66
+ :faults => {} }
67
+ ],
68
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListFirewallProtocols"),
69
+ "http://api.flexiscale.com",
70
+ "listFirewallProtocols",
71
+ [ ["retval", "ListFirewallProtocolsReturn", ["FlexiScale::ArrayOfFirewallProtocol", "http://api.flexiscale.com", "ArrayOfFirewallProtocol"]] ],
72
+ { :request_style => :rpc, :request_use => :encoded,
73
+ :response_style => :rpc, :response_use => :encoded,
74
+ :faults => {} }
75
+ ],
76
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListIcmpProtocols"),
77
+ "http://api.flexiscale.com",
78
+ "listIcmpProtocols",
79
+ [ ["retval", "ListIcmpProtocolsReturn", ["FlexiScale::ArrayOfIcmpProtocol", "http://api.flexiscale.com", "ArrayOfIcmpProtocol"]] ],
80
+ { :request_style => :rpc, :request_use => :encoded,
81
+ :response_style => :rpc, :response_use => :encoded,
82
+ :faults => {} }
83
+ ],
84
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListIpBlocks"),
85
+ "http://api.flexiscale.com",
86
+ "listIpBlocks",
87
+ [ ["in", "list", ["FlexiScale::ArrayOf_xsd_int", "http://api.flexiscale.com", "ArrayOf_xsd_int"]],
88
+ ["retval", "ListIpBlocksReturn", ["FlexiScale::ArrayOfIpBlock", "http://api.flexiscale.com", "ArrayOfIpBlock"]] ],
89
+ { :request_style => :rpc, :request_use => :encoded,
90
+ :response_style => :rpc, :response_use => :encoded,
91
+ :faults => {} }
92
+ ],
93
+ [ XSD::QName.new(NsApiFlexiscaleCom, "FilterJobs"),
94
+ "http://api.flexiscale.com",
95
+ "filterJobs",
96
+ [ ["in", "limit", ["::SOAP::SOAPInt"]],
97
+ ["in", "order_by", ["::SOAP::SOAPString"]],
98
+ ["in", "direction", ["::SOAP::SOAPString"]],
99
+ ["retval", "ListJobsReturn", ["FlexiScale::ArrayOfJob", "http://api.flexiscale.com", "ArrayOfJob"]] ],
100
+ { :request_style => :rpc, :request_use => :encoded,
101
+ :response_style => :rpc, :response_use => :encoded,
102
+ :faults => {} }
103
+ ],
104
+ [ XSD::QName.new(NsApiFlexiscaleCom, "Login"),
105
+ "http://api.flexiscale.com",
106
+ "login",
107
+ [ ["in", "username", ["::SOAP::SOAPString"]],
108
+ ["in", "password", ["::SOAP::SOAPString"]] ],
109
+ { :request_style => :rpc, :request_use => :encoded,
110
+ :response_style => :rpc, :response_use => :encoded,
111
+ :faults => {} }
112
+ ],
113
+ [ XSD::QName.new(NsApiFlexiscaleCom, "Logout"),
114
+ "https://api.flexiscale.com",
115
+ "logout",
116
+ [],
117
+ { :request_style => :rpc, :request_use => :encoded,
118
+ :response_style => :rpc, :response_use => :encoded,
119
+ :faults => {} }
120
+ ],
121
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListRunningJobs"),
122
+ "https://api.flexiscale.com",
123
+ "listRunningJobs",
124
+ [ ["retval", "ListRunningJobsReturn", ["FlexiScale::ArrayOfJob", "http://api.flexiscale.com", "ArrayOfJob"]] ],
125
+ { :request_style => :rpc, :request_use => :encoded,
126
+ :response_style => :rpc, :response_use => :encoded,
127
+ :faults => {} }
128
+ ],
129
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListOperatingSystemImages"),
130
+ "https://api.flexiscale.com",
131
+ "listOperatingSystemImages",
132
+ [ ["retval", "ListOperatingSystemImagesReturn", ["FlexiScale::ArrayOfOperatingSystemImage", "http://api.flexiscale.com", "ArrayOfOperatingSystemImage"]] ],
133
+ { :request_style => :rpc, :request_use => :encoded,
134
+ :response_style => :rpc, :response_use => :encoded,
135
+ :faults => {} }
136
+ ],
137
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListDisks"),
138
+ "https://api.flexiscale.com",
139
+ "listDisks",
140
+ [ ["in", "list", ["FlexiScale::ArrayOf_xsd_int", "http://api.flexiscale.com", "ArrayOf_xsd_int"]],
141
+ ["retval", "ListDisksReturn", ["FlexiScale::ArrayOfDisk", "http://api.flexiscale.com", "ArrayOfDisk"]] ],
142
+ { :request_style => :rpc, :request_use => :encoded,
143
+ :response_style => :rpc, :response_use => :encoded,
144
+ :faults => {} }
145
+ ],
146
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListDebitItems"),
147
+ "https://api.flexiscale.com",
148
+ "listDebitItems",
149
+ [ ["in", "item_type", ["::SOAP::SOAPString"]],
150
+ ["in", "type_id", ["::SOAP::SOAPInt"]],
151
+ ["in", "start_date", ["::SOAP::SOAPInt"]],
152
+ ["in", "end_date", ["::SOAP::SOAPInt"]],
153
+ ["retval", "ListDebitItemsReturn", ["FlexiScale::ArrayOfDebitItem", "http://api.flexiscale.com", "ArrayOfDebitItem"]] ],
154
+ { :request_style => :rpc, :request_use => :encoded,
155
+ :response_style => :rpc, :response_use => :encoded,
156
+ :faults => {} }
157
+ ],
158
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListCredits"),
159
+ "https://api.flexiscale.com",
160
+ "listCredits",
161
+ [ ["in", "start_date", ["::SOAP::SOAPInt"]],
162
+ ["in", "end_date", ["::SOAP::SOAPInt"]],
163
+ ["retval", "ListCreditsReturn", ["FlexiScale::ArrayOfCredit", "http://api.flexiscale.com", "ArrayOfCredit"]] ],
164
+ { :request_style => :rpc, :request_use => :encoded,
165
+ :response_style => :rpc, :response_use => :encoded,
166
+ :faults => {} }
167
+ ],
168
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListDebits"),
169
+ "https://api.flexiscale.com",
170
+ "listDebits",
171
+ [ ["in", "start_date", ["::SOAP::SOAPInt"]],
172
+ ["in", "end_date", ["::SOAP::SOAPInt"]],
173
+ ["retval", "ListDebitsReturn", ["FlexiScale::ArrayOfDebit", "http://api.flexiscale.com", "ArrayOfDebit"]] ],
174
+ { :request_style => :rpc, :request_use => :encoded,
175
+ :response_style => :rpc, :response_use => :encoded,
176
+ :faults => {} }
177
+ ],
178
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListNetworkInterfaces"),
179
+ "https://api.flexiscale.com",
180
+ "listNetworkInterfaces",
181
+ [ ["in", "list", ["FlexiScale::ArrayOf_xsd_int", "http://api.flexiscale.com", "ArrayOf_xsd_int"]],
182
+ ["retval", "ListNetworkInterfacesReturn", ["FlexiScale::ArrayOfNetworkInterface", "http://api.flexiscale.com", "ArrayOfNetworkInterface"]] ],
183
+ { :request_style => :rpc, :request_use => :encoded,
184
+ :response_style => :rpc, :response_use => :encoded,
185
+ :faults => {} }
186
+ ],
187
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListVlans"),
188
+ "https://api.flexiscale.com",
189
+ "listVlans",
190
+ [ ["in", "list", ["FlexiScale::ArrayOf_xsd_int", "http://api.flexiscale.com", "ArrayOf_xsd_int"]],
191
+ ["retval", "ListVlansReturn", ["FlexiScale::ArrayOfVlan", "http://api.flexiscale.com", "ArrayOfVlan"]] ],
192
+ { :request_style => :rpc, :request_use => :encoded,
193
+ :response_style => :rpc, :response_use => :encoded,
194
+ :faults => {} }
195
+ ],
196
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ListPackages"),
197
+ "https://api.flexiscale.com",
198
+ "listPackages",
199
+ [ ["in", "list", ["FlexiScale::ArrayOf_xsd_int", "http://api.flexiscale.com", "ArrayOf_xsd_int"]],
200
+ ["retval", "ListPackagesReturn", ["FlexiScale::ArrayOfPackage", "http://api.flexiscale.com", "ArrayOfPackage"]] ],
201
+ { :request_style => :rpc, :request_use => :encoded,
202
+ :response_style => :rpc, :response_use => :encoded,
203
+ :faults => {} }
204
+ ],
205
+ [ XSD::QName.new(NsApiFlexiscaleCom, "StartServer"),
206
+ "https://api.flexiscale.com",
207
+ "startServer",
208
+ [ ["in", "server_name", ["::SOAP::SOAPString"]],
209
+ ["in", "notes", ["::SOAP::SOAPString"]],
210
+ ["retval", "StartServerReturn", ["::SOAP::SOAPInt"]] ],
211
+ { :request_style => :rpc, :request_use => :encoded,
212
+ :response_style => :rpc, :response_use => :encoded,
213
+ :faults => {} }
214
+ ],
215
+ [ XSD::QName.new(NsApiFlexiscaleCom, "StopServer"),
216
+ "https://api.flexiscale.com",
217
+ "stopServer",
218
+ [ ["in", "server_name", ["::SOAP::SOAPString"]],
219
+ ["in", "stop_method", ["::SOAP::SOAPInt"]],
220
+ ["in", "notes", ["::SOAP::SOAPString"]],
221
+ ["retval", "StopServerReturn", ["::SOAP::SOAPInt"]] ],
222
+ { :request_style => :rpc, :request_use => :encoded,
223
+ :response_style => :rpc, :response_use => :encoded,
224
+ :faults => {} }
225
+ ],
226
+ [ XSD::QName.new(NsApiFlexiscaleCom, "RebootServer"),
227
+ "https://api.flexiscale.com",
228
+ "rebootServer",
229
+ [ ["in", "server_name", ["::SOAP::SOAPString"]],
230
+ ["in", "notes", ["::SOAP::SOAPString"]],
231
+ ["retval", "RebootServerReturn", ["::SOAP::SOAPInt"]] ],
232
+ { :request_style => :rpc, :request_use => :encoded,
233
+ :response_style => :rpc, :response_use => :encoded,
234
+ :faults => {} }
235
+ ],
236
+ [ XSD::QName.new(NsApiFlexiscaleCom, "StopStartServer"),
237
+ "https://api.flexiscale.com",
238
+ "stopStartServer",
239
+ [ ["in", "server_name", ["::SOAP::SOAPString"]],
240
+ ["in", "notes", ["::SOAP::SOAPString"]],
241
+ ["retval", "StopStartServerReturn", ["::SOAP::SOAPInt"]] ],
242
+ { :request_style => :rpc, :request_use => :encoded,
243
+ :response_style => :rpc, :response_use => :encoded,
244
+ :faults => {} }
245
+ ],
246
+ [ XSD::QName.new(NsApiFlexiscaleCom, "WaitForJobs"),
247
+ "https://api.flexiscale.com",
248
+ "waitForJobs",
249
+ [ ["in", "list", ["FlexiScale::ArrayOf_xsd_int", "http://api.flexiscale.com", "ArrayOf_xsd_int"]],
250
+ ["retval", "WaitForJobsReturn", ["::SOAP::SOAPBoolean"]] ],
251
+ { :request_style => :rpc, :request_use => :encoded,
252
+ :response_style => :rpc, :response_use => :encoded,
253
+ :faults => {} }
254
+ ],
255
+ [ XSD::QName.new(NsApiFlexiscaleCom, "DestroyServer"),
256
+ "https://api.flexiscale.com",
257
+ "destroyServer",
258
+ [ ["in", "server_name", ["::SOAP::SOAPString"]],
259
+ ["retval", "DestroyServerReturn", ["::SOAP::SOAPInt"]] ],
260
+ { :request_style => :rpc, :request_use => :encoded,
261
+ :response_style => :rpc, :response_use => :encoded,
262
+ :faults => {} }
263
+ ],
264
+ [ XSD::QName.new(NsApiFlexiscaleCom, "CreateServer"),
265
+ "https://api.flexiscale.com",
266
+ "createServer",
267
+ [ ["in", "specification", ["FlexiScale::Server", "http://api.flexiscale.com", "Server"]],
268
+ ["in", "vlan", ["FlexiScale::Vlan", "http://api.flexiscale.com", "Vlan"]],
269
+ ["retval", "CreateServerReturn", ["::SOAP::SOAPInt"]] ],
270
+ { :request_style => :rpc, :request_use => :encoded,
271
+ :response_style => :rpc, :response_use => :encoded,
272
+ :faults => {} }
273
+ ],
274
+ [ XSD::QName.new(NsApiFlexiscaleCom, "ModifyServer"),
275
+ "https://api.flexiscale.com",
276
+ "modifyServer",
277
+ [ ["in", "specification", ["FlexiScale::Server", "http://api.flexiscale.com", "Server"]],
278
+ ["retval", "ModifyServerReturn", ["FlexiScale::Server", "http://api.flexiscale.com", "Server"]] ],
279
+ { :request_style => :rpc, :request_use => :encoded,
280
+ :response_style => :rpc, :response_use => :encoded,
281
+ :faults => {} }
282
+ ]
283
+ ]
284
+
285
+ def initialize(endpoint_url = nil)
286
+ endpoint_url ||= DefaultEndpointUrl
287
+ super(endpoint_url, nil)
288
+ self.mapping_registry = FlexiscaleAPIMappingRegistry::EncodedRegistry
289
+ self.literal_mapping_registry = FlexiscaleAPIMappingRegistry::LiteralRegistry
290
+ init_methods
291
+ end
292
+
293
+ private
294
+
295
+ def init_methods
296
+ Methods.each do |definitions|
297
+ opt = definitions.last
298
+ if opt[:request_style] == :document
299
+ add_document_operation(*definitions)
300
+ else
301
+ add_rpc_operation(*definitions)
302
+ qname = definitions[0]
303
+ name = definitions[2]
304
+ if qname.name != name and qname.name.capitalize == name.capitalize
305
+ ::SOAP::Mapping.define_singleton_method(self, qname.name) do |*arg|
306
+ __send__(name, *arg)
307
+ end
308
+ end
309
+ end
310
+ end
311
+ end
312
+ end
313
+
314
+
315
+ end