Class: LabmanagerService

Inherits:
Handsoap::Service
  • Object
show all
Includes:
Constants
Defined in:
lib/labmanager/labmanager_service.rb

Constant Summary collapse

@@workspace =
''
@@username =
''
@@password =
''
@@pragmatic =
false

Constants included from Constants

Constants::CONFIGURATION_ACTION_POWEROFF, Constants::CONFIGURATION_ACTION_POWERON, Constants::CONFIGURATION_ACTION_RESET, Constants::CONFIGURATION_ACTION_RESUME, Constants::CONFIGURATION_ACTION_REVERT, Constants::CONFIGURATION_ACTION_SHUTDOWN, Constants::CONFIGURATION_ACTION_SNAPSHOT, Constants::CONFIGURATION_ACTION_SUSPEND, Constants::FENCE_MODE_UNFENCED, Constants::MACHINE_ACTION_CONSOLIDATE, Constants::MACHINE_ACTION_DEPLOY, Constants::MACHINE_ACTION_EJECTCD, Constants::MACHINE_ACTION_EJECTFLOPPY, Constants::MACHINE_ACTION_FORCEUNDEPLOY, Constants::MACHINE_ACTION_POWEROFF, Constants::MACHINE_ACTION_POWERON, Constants::MACHINE_ACTION_RESET, Constants::MACHINE_ACTION_RESUME, Constants::MACHINE_ACTION_REVERT, Constants::MACHINE_ACTION_SHUTDOWN, Constants::MACHINE_ACTION_SNAPSHOT, Constants::MACHINE_ACTION_SUSPEND, Constants::MACHINE_ACTION_UNDEPLOY, Constants::MACHINE_STATUS_INVALID, Constants::MACHINE_STATUS_OFF, Constants::MACHINE_STATUS_ON, Constants::MACHINE_STATUS_STUCK, Constants::MACHINE_STATUS_SUSPENDED

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.configure(config) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/labmanager/labmanager_service.rb', line 14

def self.configure(config)
  @@wsdl = config[:wsdl]

  @@username = config[:username]
  @@password = config[:password]
  @@workspace = config[:workspace]
  @@pragmatic = config[:pragmatic]

  endpoint :uri => @@wsdl, :version => 2
end

Instance Method Details

#createConfiguration(args = {}) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/labmanager/labmanager_service.rb', line 49

def createConfiguration(args = {})
  puts "create Document"
  
  begin

    response = invoke('labmanager:ConfigurationCreateEx') do |message|
      message.add('labmanager:name',args[:name])
      message.add('labmanager:desc',args[:description])
    end

    puts "create Document 2"
    
    (response/"//labmanager:ConfigurationCreateExResponse/labmanager:ConfigurationCreateExResult").to_i

  rescue Handsoap::Fault => error
    if @@pragmatic then
      config = getConfigurationByName(args[:name])
      config[:id]
    else
      raise error
    end

  end

end

#createMachine(config) ⇒ Object



182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
# File 'lib/labmanager/labmanager_service.rb', line 182

def createMachine(config)
  begin
    response = invoke('labmanager:ConfigurationAddMachineEx') do |message|
      message.add('labmanager:id',config[:configuration_id])
      message.add('labmanager:template_id',config[:template_id])
      message.add('labmanager:name',config[:name])
      message.add('labmanager:desc',config[:description])
      message.add('labmanager:netInfo') do |netinfo|
        netinfo.add('labmanager:NetInfo') do |network|
          network.add('labmanager:networkId',config[:network_id])
          network.add('labmanager:ipAddress',config[:ipaddress])
          network.add('labmanager:ipAddressingMode',config[:ipaddressingmode])
        end
      end

    end

    (response/"//labmanager:ConfigurationAddMachineExResponse/labmanager:ConfigurationAddMachineExResult").to_i

  rescue Handsoap::Fault => error
    if @@pragmatic then
      machine = getMachineByName(config[:configuration_id],config[:name])
      machine[:id]
    else
      raise error
    end
  end
end

#deleteConfiguration(id) ⇒ Object



75
76
77
78
79
80
81
# File 'lib/labmanager/labmanager_service.rb', line 75

def deleteConfiguration(id)

  response = invoke('labmanager:ConfigurationDelete') do |message|
    message.add('labmanager:configurationId',id)
  end

end

#deleteMachine(id) ⇒ Object



233
234
235
236
237
238
239
240
241
242
243
244
# File 'lib/labmanager/labmanager_service.rb', line 233

def deleteMachine(id)
  begin
    response = invoke('labmanager:MachineDelete') do |message|
      message.add('labmanager:vmId',id)
    end

  rescue Handsoap::Fault => error
    if !@@pragmatic then
      raise error
    end
  end
end

#deployMachine(id) ⇒ Object



215
216
217
# File 'lib/labmanager/labmanager_service.rb', line 215

def deployMachine(id)
  performMachineAction(id,MACHINE_ACTION_DEPLOY)
end

#getConfigurationByName(name) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/labmanager/labmanager_service.rb', line 83

def getConfigurationByName(name)
  response = invoke('labmanager:GetConfigurationByName') do |message|
    message.add('labmanager:name',name)
  end

  hashes = (response/"//labmanager:GetConfigurationByNameResponse/labmanager:GetConfigurationByNameResult/labmanager:Configuration").map do |configuration|
    {
      :id => (configuration/"labmanager:id").to_s,
      :name => (configuration/"labmanager:name").to_s,
      :description => (configuration/"labmanager:description").to_s
    }
  end

  return hashes[0]

end

#getConfigurationsObject



100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/labmanager/labmanager_service.rb', line 100

def getConfigurations
  response = invoke('labmanager:GetCurrentWorkspace')

  hashes = (response/"//labmanager:GetCurrentWorkspaceResponse/labmanager:GetCurrentWorkspaceResult/labmanager:Configurations/labmanager:Configuration").map do |configuration|
    {
      :id => (configuration/"labmanager:id").to_s,
      :name => (configuration/"labmanager:name").to_s,
      :description => (configuration/"labmanager:description").to_s
    }
  end

end

#getMachine(id) ⇒ Object



246
247
248
# File 'lib/labmanager/labmanager_service.rb', line 246

def getMachine(id)

end

#getMachineByName(config_id, name) ⇒ Object



250
251
252
253
254
255
256
257
258
259
260
261
262
263
# File 'lib/labmanager/labmanager_service.rb', line 250

def getMachineByName(config_id,name)
  response = invoke('labmanager:GetMachineByName') do |message|
    message.add('labmanager:configurationId',config_id)
    message.add('labmanager:name',name)
  end

  machine =
  {
    :id => (response/"//labmanager:GetMachineByNameResponse/labmanager:GetMachineByNameResult/labmanager:id").to_s,
    :name => (response/"//labmanager:GetMachineByNameResponse/labmanager:GetMachineByNameResult/labmanager:name").to_s,
    :description => (response/"//labmanager:GetMachineByNameResponse/labmanager:GetMachineByNameResult/labmanager:description").to_s
  }

end

#getNetworkByName(name) ⇒ Object



156
157
158
159
160
161
162
163
164
165
166
167
168
# File 'lib/labmanager/labmanager_service.rb', line 156

def getNetworkByName(name)
  response = invoke('labmanager:GetNetworkTemplateByName') do |message|
    message.add('labmanager:name',name)
  end

  network =
  {
    :id => (response/"//labmanager:GetNetworkTemplateByNameResponse/labmanager:GetNetworkTemplateByNameResult/labmanager:NetID").to_s,
    :name => (response/"//labmanager:GetNetworkTemplateByNameResponse/labmanager:GetNetworkTemplateByNameResult/labmanager:Name").to_s,
    :description => (response/"//labmanager:GetNetworkTemplateByNameResponse/labmanager:GetNetworkTemplateByNameResult/labmanager:Description").to_s
  }

end

#getTemplate(id) ⇒ Object



126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/labmanager/labmanager_service.rb', line 126

def getTemplate(id)
  response = invoke('labmanager:GetTemplate') do |message|
    message.add('labmanager:id',id)
  end

  template =
  {
    :id => (response/"//labmanager:GetTemplateResponse/labmanager:GetTemplateResult/labmanager:id").to_s,
    :name => (response/"//labmanager:GetTemplateResponse/labmanager:GetTemplateResult/labmanager:name").to_s,
    :description => (response/"//labmanager:GetTemplateResponse/labmanager:GetTemplateResult/labmanager:description").to_s
  }

end

#getTemplateByName(name) ⇒ Object



140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/labmanager/labmanager_service.rb', line 140

def getTemplateByName(name)
  response = invoke('labmanager:GetTemplateByName') do |message|
    message.add('labmanager:name',name)
  end

  hashes = (response/"//labmanager:GetTemplateByNameResponse/labmanager:GetTemplateByNameResult/labmanager:Template").map do |template|
    {
      :id => (template/"labmanager:id").to_s,
      :name => (template/"labmanager:name").to_s,
      :description => (template/"labmanager:description").to_s
    }
  end

  return hashes[0]
end

#listNetworksObject



170
171
172
173
174
175
176
177
178
179
180
# File 'lib/labmanager/labmanager_service.rb', line 170

def listNetworks()
  response = invoke('labmanager:ListNetworks')

  hashes = (response/"//labmanager:ListNetworksResponse/labmanager:ListNetworksResult/labmanager:Network").map do |network|
    {
      :id => (network/"labmanager:NetID").to_s,
      :name => (network/"labmanager:Name").to_s,
      :description => (network/"labmanager:Description").to_s
    }
  end
end

#listTemplatesObject



113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/labmanager/labmanager_service.rb', line 113

def listTemplates()
  response = invoke('labmanager:ListTemplates')

  hashes = (response/"//labmanager:ListTemplatesResponse/labmanager:ListTemplatesResult/labmanager:Template").map do |template|
    {
      :id => (template/"labmanager:id").to_s,
      :name => (template/"labmanager:name").to_s,
      :description => (template/"labmanager:description").to_s
    }
  end

end

#on_create_document(doc) ⇒ Object

Register namespaces for request



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/labmanager/labmanager_service.rb', line 26

def on_create_document(doc)
  
  
  doc.alias 'labmanager', 'http://vmware.com/labmanager'

  header = doc.find("Header")
  header.add "labmanager:AuthenticationHeader" do |s|
    s.set_attr "env:mustUnderstand", "1"

    s.add "labmanager:workspacename", @@workspace
    s.add "labmanager:username", @@username
    s.add "labmanager:password", @@password

  end
  
  

end

#on_response_document(doc) ⇒ Object



45
46
47
# File 'lib/labmanager/labmanager_service.rb', line 45

def on_response_document(doc)
  doc.add_namespace 'labmanager', 'http://vmware.com/labmanager'
end

#performMachineAction(id, action) ⇒ Object



219
220
221
222
223
224
225
226
227
228
229
230
231
# File 'lib/labmanager/labmanager_service.rb', line 219

def performMachineAction(id,action)
  begin
    response = invoke('labmanager:MachinePerformAction') do |message|
      message.add('labmanager:machineId',id)
      message.add('labmanager:action',action)
    end

  rescue Handsoap::Fault => error
    if !@@pragmatic then
      raise error
    end
  end
end

#undeployMachine(id) ⇒ Object



211
212
213
# File 'lib/labmanager/labmanager_service.rb', line 211

def undeployMachine(id)
  performMachineAction(id,MACHINE_ACTION_UNDEPLOY)
end