bbrowning-deltacloud-core 0.0.6-java → 0.0.6.1-java

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.
@@ -186,7 +186,8 @@ class EC2Driver < Deltacloud::BaseDriver
186
186
  :monitoring_enabled => true,
187
187
  :instance_type => hwp.name,
188
188
  :disable_api_termination => false,
189
- :instance_initiated_shutdown_behavior => 'terminate'
189
+ :instance_initiated_shutdown_behavior => 'terminate',
190
+ :security_group => opts[:security_group]
190
191
  )
191
192
  return convert_instance( ec2_instances.instancesSet.item.first, 'pending' )
192
193
  end
@@ -310,15 +311,6 @@ class EC2Driver < Deltacloud::BaseDriver
310
311
  end
311
312
  end
312
313
 
313
- def valid_credentials?(credentials)
314
- client = new_client(credentials)
315
- # FIXME: We need to do this call to determine if
316
- # EC2 is working with given credentials. There is no
317
- # other way to check, if given credentials are valid or not.
318
- realms = client.describe_availability_zones rescue false
319
- return realms ? true : false
320
- end
321
-
322
314
  private
323
315
 
324
316
  def new_client(credentials)
@@ -192,15 +192,6 @@ class GogridDriver < Deltacloud::BaseDriver
192
192
  return creds
193
193
  end
194
194
 
195
- def valid_credentials?(credentials)
196
- client = new_client(credentials)
197
- # FIXME: We need to do this call to determine if
198
- # GoGrid is working with given credentials. There is no
199
- # other way to check, if given credentials are valid or not.
200
- return false unless new_client(credentials).request('common/lookup/list', { 'lookup' => 'ip.datacenter' })
201
- true
202
- end
203
-
204
195
  define_instance_states do
205
196
  start.to( :pending ) .automatically
206
197
  pending.to( :running ) .automatically
@@ -257,15 +257,6 @@ class MockDriver < Deltacloud::BaseDriver
257
257
  snapshots
258
258
  end
259
259
 
260
- def valid_credentials?(credentials)
261
- begin
262
- check_credentials(credentials)
263
- return true
264
- rescue Deltacloud::AuthException
265
- end
266
- return false
267
- end
268
-
269
260
  private
270
261
 
271
262
  def check_credentials(credentials)
@@ -131,15 +131,6 @@ class RackspaceDriver < Deltacloud::BaseDriver
131
131
  instances
132
132
  end
133
133
 
134
- def valid_credentials?(credentials)
135
- begin
136
- new_client(credentials)
137
- rescue
138
- return false
139
- end
140
- true
141
- end
142
-
143
134
 
144
135
  def convert_srv_to_instance(srv)
145
136
  inst = Instance.new(:id => srv["id"].to_s,
@@ -191,15 +191,6 @@ def destroy_instance(credentials, id)
191
191
  end
192
192
  end
193
193
 
194
- def valid_credentials?(credentials)
195
- begin
196
- new_client(credentials)
197
- rescue Deltacloud::AuthException
198
- return false
199
- end
200
- true
201
- end
202
-
203
194
  #--
204
195
  # PRIVATE METHODS:
205
196
  #--
data/lib/drivers.rb CHANGED
@@ -6,7 +6,6 @@ DRIVERS = {
6
6
  :rimuhosting => { :name => "RimuHosting"},
7
7
  :opennebula => { :name => "Opennebula", :class => "OpennebulaDriver" },
8
8
  :terremark => { :name => "Terremark"},
9
- :virtualbox => { :name => "Virtualbox" },
10
9
  :mock => { :name => "Mock" }
11
10
  }
12
11
 
data/server.rb CHANGED
@@ -42,9 +42,6 @@ get '/' do redirect url_for('/api'); end
42
42
 
43
43
  get '/api\/?' do
44
44
  @version = 0.1
45
- if params[:force_auth]
46
- return [401, 'Authentication failed'] unless driver.valid_credentials?(credentials)
47
- end
48
45
  respond_to do |format|
49
46
  format.xml { haml :"api/show" }
50
47
  format.json do
metadata CHANGED
@@ -6,7 +6,8 @@ version: !ruby/object:Gem::Version
6
6
  - 0
7
7
  - 0
8
8
  - 6
9
- version: 0.0.6
9
+ - 1
10
+ version: 0.0.6.1
10
11
  platform: java
11
12
  authors:
12
13
  - Red Hat, Inc.
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-09-19 00:00:00 -04:00
18
+ date: 2010-09-24 00:00:00 -04:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
@@ -197,7 +198,6 @@ files:
197
198
  - lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb
198
199
  - lib/deltacloud/drivers/rimuhosting/rimuhosting_driver.rb
199
200
  - lib/deltacloud/drivers/terremark/terremark_driver.rb
200
- - lib/deltacloud/drivers/virtualbox/virtualbox_driver.rb
201
201
  - lib/deltacloud/helpers/application_helper.rb
202
202
  - lib/deltacloud/helpers/conversion_helper.rb
203
203
  - lib/deltacloud/helpers/hardware_profiles_helper.rb
@@ -1,253 +0,0 @@
1
- #
2
- # Copyright (C) 2009 Red Hat, Inc.
3
- #
4
- # Licensed to the Apache Software Foundation (ASF) under one or more
5
- # contributor license agreements. See the NOTICE file distributed with
6
- # this work for additional information regarding copyright ownership. The
7
- # ASF licenses this file to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance with the
9
- # License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16
- # License for the specific language governing permissions and limitations
17
- # under the License.
18
-
19
- # INSTALLATION:
20
- # 1. You need VirtualBox and VBoxManage tool installed
21
- # 2. You need to setup some images manually inside VirtualBox
22
- # 3. You need to install 'Guest Additions' to this images for metrics
23
- # 4. You need a lot of hard drive space ;-)
24
-
25
- # NETWORKING:
26
- # For now, the VM is always started with bridged networking. The NIC
27
- # it uses defaults to eth0, but may be overriden with the VIRTUALBOX_NIC
28
- # environment variable. This should be the NIC name as expected by Virtualbox.
29
- # For example, on my Macbook Pro this is 'en1: AirPort'
30
-
31
- require 'deltacloud/base_driver'
32
- require 'virtualbox'
33
-
34
- module Deltacloud
35
- module Drivers
36
- module Virtualbox
37
- class VirtualboxDriver < Deltacloud::BaseDriver
38
-
39
- ( REALMS = [
40
- Realm.new({
41
- :id => 'local',
42
- :name => 'localhost',
43
- :limit => 100,
44
- :state => 'AVAILABLE'
45
- })
46
- ] ) unless defined?( REALMS )
47
-
48
- define_hardware_profile 'small' do
49
- cpu 1
50
- memory 0.5
51
- storage 1
52
- architecture `uname -m`.strip
53
- end
54
-
55
- define_hardware_profile 'medium' do
56
- cpu 1
57
- memory 1
58
- storage 1
59
- architecture `uname -m`.strip
60
- end
61
-
62
- define_hardware_profile 'large' do
63
- cpu 2
64
- memory 2
65
- storage 1
66
- architecture `uname -m`.strip
67
- end
68
-
69
- define_instance_states do
70
- start.to( :pending ) .on( :create )
71
- pending.to( :running ) .automatically
72
- running.to( :stopped ) .on( :stop )
73
- stopped.to( :running ) .on( :start )
74
- stopped.to( :finish ) .on( :destroy )
75
- end
76
-
77
- def realms(credentials, opts = nil)
78
- return REALMS if ( opts.nil? )
79
- results = REALMS
80
- results = filter_on( results, :id, opts )
81
- results
82
- end
83
-
84
- def images(credentials, opts = nil)
85
- images = convert_images(VirtualBox::VM.all)
86
- images = filter_on( images, :id, opts )
87
- images = filter_on( images, :architecture, opts )
88
- images.sort_by{|e| [e.owner_id, e.description]}
89
- end
90
-
91
- def instances(credentials, opts = nil)
92
- instances = convert_instances(VirtualBox::VM.all)
93
- instances = filter_on( instances, :id, opts )
94
- instances = filter_on( instances, :state, opts )
95
- instances = filter_on( instances, :image_id, opts )
96
- instances
97
- end
98
-
99
- def create_instance(credentials, image_id, opts)
100
- image = images(credentials, { :id => image_id }).first
101
-
102
- # Choose a name for the new vm unless one was given
103
- name = opts[:name]
104
- if name.nil? or name.empty?
105
- # random uniqueish name w/o having to pull in UUID gem
106
- name = "#{image.name} - #{(Time.now.to_f * 1000).to_i}#{rand(1000)}"
107
- end
108
-
109
- hwp = find_hardware_profile(credentials, opts[:hwp_id], image_id)
110
- parent_vm = VirtualBox::VM.find(image.id)
111
-
112
- # Create new virtual machine
113
- vm = VirtualBox::VM.create(name, parent_vm.os_type_id)
114
- new_uid = vm.uuid
115
-
116
- # Add Hardware profile to this machine
117
- vm.memory_size = ((hwp.memory.value*1.024)*1000).to_i
118
- vm.cpu_count = hwp.cpu.value.to_i
119
- vm.vram_size = 16
120
-
121
- # Copy the network adapter settings from the parent vm
122
- vm.network_adapters[0].enabled = true
123
- vm.network_adapters[0].attachment_type = parent_vm.network_adapters[0].attachment_type
124
- vm.network_adapters[0].host_interface = parent_vm.network_adapters[0].host_interface
125
-
126
- # Store some metadata using extra data fields
127
- vm.extra_data['deltacloud_hwp_id'] = hwp.name
128
- vm.extra_data['deltacloud_image_id'] = image_id
129
-
130
- vm.save
131
-
132
- # Clone the disk image in a separate thread because it can take a long time
133
- Thread.new do
134
- # Reload the vm objects because they probably aren't safe to
135
- # reuse across threads
136
- parent_vm = VirtualBox::VM.find(image.id)
137
- vm = VirtualBox::VM.find(new_uid)
138
-
139
- # Add storage
140
- # This will 'reuse' existing image
141
- parent_hdd = hard_disk(parent_vm)
142
- new_location = File.join(File.dirname(parent_hdd.location), "#{name}.vdi")
143
-
144
- new_hd = parent_hdd.clone(new_location, "VDI")
145
- vm.add_storage_controller('IDE Controller', :ide, :piix4)
146
- vm.attach_storage('IDE Controller', 0, 0, :hard_disk, new_hd.uuid)
147
- vm.start
148
- if opts[:user_data]
149
- user_data = opts[:user_data].gsub("\n", '') # remove newlines from base64 encoded text
150
- vm.guest_property["/Deltacloud/UserData"] = user_data
151
- end
152
- end
153
- instances(credentials, :id => new_uid).first
154
- end
155
-
156
- def reboot_instance(credentials, id)
157
- vm = VirtualBox::VM.find(id)
158
- vm.control(:reset)
159
- end
160
-
161
- def stop_instance(credentials, id)
162
- vm = VirtualBox::VM.find(id)
163
- unless vm.shutdown
164
- vm.stop
165
- end
166
- end
167
-
168
- def start_instance(credentials, id)
169
- vm = VirtualBox::VM.find(id)
170
- vm.start
171
- end
172
-
173
- def destroy_instance(credentials, id)
174
- vm = VirtualBox::VM.find(id)
175
- vm.destroy(:destroy_medium => :delete)
176
- end
177
-
178
- private
179
-
180
- def convert_instances(instances)
181
- vms = []
182
- instances.each do |instance|
183
- volume = convert_volume(instance)
184
- state = convert_state(instance.state, volume)
185
- ip = vbox_get_ip(instance)
186
- hwp_name = instance.extra_data['deltacloud_hwp_id'] || 'small'
187
- image_id = instance.extra_data['deltacloud_image_id'] || ''
188
- vms << Instance.new(:id => instance.uuid,
189
- :image_id => image_id,
190
- :name => instance.name,
191
- :state => state,
192
- :owner_id => ENV['USER'] || ENV['USERNAME'] || 'nobody',
193
- :realm_id => 'local',
194
- :public_addresses => ip,
195
- :private_addresses => ip,
196
- :actions => instance_actions_for(state),
197
- :instance_profile => InstanceProfile.new(hwp_name))
198
- end
199
- vms
200
- end
201
-
202
- # Warning: You need VirtualHost guest additions for this
203
- def vbox_get_ip(instance)
204
- ip = instance.guest_property["/VirtualBox/GuestInfo/Net/0/V4/IP"]
205
- ip.nil? ? [] : [ip]
206
- end
207
-
208
- def convert_state(state, volume)
209
- return 'PENDING' if volume.nil?
210
- state = state.to_s.strip.upcase
211
- case state
212
- when 'POWEROFF' then 'STOPPED'
213
- when 'POWERED_OFF' then 'STOPPED'
214
- else
215
- state
216
- end
217
- end
218
-
219
- def convert_volume(vm)
220
- hdd = hard_disk(vm)
221
- return nil if hdd.nil?
222
- StorageVolume.new(:id => hdd.uuid,
223
- :created => Time.now,
224
- :state => 'AVAILABLE',
225
- :capacity => hdd.logical_size,
226
- :instance_id => vm.uuid,
227
- :device => hdd.type)
228
- end
229
-
230
- def hard_disk(vm)
231
- attachment = vm.medium_attachments.select { |ma| ma.type == :hard_disk }.first
232
- attachment.nil? ? nil : attachment.medium
233
- end
234
-
235
- def convert_images(images)
236
- vms = []
237
- images.each do |image|
238
- hdd = hard_disk(image)
239
- next unless hdd
240
- capacity = ", #{hdd.logical_size} MBytes HDD"
241
- vms << Image.new(:id => image.uuid,
242
- :name => image.name,
243
- :description => "#{image.memory_size} MB RAM, #{image.cpu_count} CPU#{capacity}",
244
- :owner_id => ENV['USER'] || ENV['USERNAME'] || 'nobody',
245
- :architecture => `uname -m`.strip)
246
- end
247
- vms
248
- end
249
-
250
- end
251
- end
252
- end
253
- end