ruby-hijiki 0.0.1
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.
- data/Gemfile +3 -0
- data/Rakefile +25 -0
- data/lib/hijiki/dcmgr_resource/11.12/account.rb +5 -0
- data/lib/hijiki/dcmgr_resource/11.12/base.rb +31 -0
- data/lib/hijiki/dcmgr_resource/11.12/host_node.rb +13 -0
- data/lib/hijiki/dcmgr_resource/11.12/image.rb +22 -0
- data/lib/hijiki/dcmgr_resource/11.12/instance.rb +8 -0
- data/lib/hijiki/dcmgr_resource/11.12/instance_spec.rb +7 -0
- data/lib/hijiki/dcmgr_resource/11.12/network.rb +7 -0
- data/lib/hijiki/dcmgr_resource/11.12/security_group.rb +8 -0
- data/lib/hijiki/dcmgr_resource/11.12/ssh_key_pair.rb +8 -0
- data/lib/hijiki/dcmgr_resource/11.12/storage_node.rb +7 -0
- data/lib/hijiki/dcmgr_resource/11.12/volume.rb +8 -0
- data/lib/hijiki/dcmgr_resource/11.12/volume_snapshot.rb +14 -0
- data/lib/hijiki/dcmgr_resource/12.03/account.rb +5 -0
- data/lib/hijiki/dcmgr_resource/12.03/base.rb +18 -0
- data/lib/hijiki/dcmgr_resource/12.03/host_node.rb +6 -0
- data/lib/hijiki/dcmgr_resource/12.03/image.rb +6 -0
- data/lib/hijiki/dcmgr_resource/12.03/instance.rb +56 -0
- data/lib/hijiki/dcmgr_resource/12.03/instance_spec.rb +6 -0
- data/lib/hijiki/dcmgr_resource/12.03/network.rb +6 -0
- data/lib/hijiki/dcmgr_resource/12.03/security_group.rb +41 -0
- data/lib/hijiki/dcmgr_resource/12.03/ssh_key_pair.rb +26 -0
- data/lib/hijiki/dcmgr_resource/12.03/storage_node.rb +6 -0
- data/lib/hijiki/dcmgr_resource/12.03/volume.rb +52 -0
- data/lib/hijiki/dcmgr_resource/12.03/volume_snapshot.rb +54 -0
- data/lib/hijiki/dcmgr_resource/base.rb +95 -0
- data/lib/hijiki.rb +49 -0
- data/ruby-hijiki.gemspec +21 -0
- data/test/api/ts_base.rb +14 -0
- data/test/api/ts_host_node.rb +27 -0
- data/test/api/ts_image.rb +24 -0
- data/test/api/ts_instance.rb +21 -0
- data/test/api/ts_network.rb +24 -0
- data/test/api/ts_ssh_key_pair.rb +21 -0
- data/test/api/ts_storage_node.rb +35 -0
- data/test/api/ts_volume.rb +30 -0
- data/test/api/ts_volume_snapshot.rb +35 -0
- data/test/ts_all.rb +19 -0
- metadata +85 -0
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rubygems/package_task'
|
3
|
+
|
4
|
+
spec = Gem::Specification.load('ruby-hijiki.gemspec')
|
5
|
+
|
6
|
+
desc "Build ruby-hijiki, then run tests."
|
7
|
+
task :default => [:package]
|
8
|
+
|
9
|
+
desc 'Generate documentation'
|
10
|
+
begin
|
11
|
+
require 'yard'
|
12
|
+
YARD::Rake::YardocTask.new do |t|
|
13
|
+
t.files = ['lib/**/*.rb', '-', 'docs/*.md']
|
14
|
+
end
|
15
|
+
rescue LoadError
|
16
|
+
task :yard do puts "Please install yard first!"; end
|
17
|
+
end
|
18
|
+
|
19
|
+
task :test do
|
20
|
+
sh %{cd test && ruby ts_all.rb}
|
21
|
+
end
|
22
|
+
|
23
|
+
Gem::PackageTask.new(spec) do |pkg|
|
24
|
+
pkg.need_tar = true
|
25
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module Hijiki::DcmgrResource::V1112
|
3
|
+
|
4
|
+
@debug = false
|
5
|
+
|
6
|
+
class << self
|
7
|
+
attr_accessor :debug
|
8
|
+
end
|
9
|
+
|
10
|
+
class Base < Hijiki::DcmgrResource::Base
|
11
|
+
|
12
|
+
self.prefix = '/api/11.12/'
|
13
|
+
|
14
|
+
def total
|
15
|
+
attributes['total']
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
module ListTranslateMethods
|
20
|
+
def self.included(base)
|
21
|
+
base.extend(ClassMethods)
|
22
|
+
end
|
23
|
+
|
24
|
+
module ClassMethods
|
25
|
+
def instantiate_record(record, prefix_options = {})
|
26
|
+
record['total'] = record.delete('owner_total')
|
27
|
+
super(record, prefix_options)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module Hijiki::DcmgrResource::V1112
|
3
|
+
class HostNode < Base
|
4
|
+
include Hijiki::DcmgrResource::ListMethods
|
5
|
+
include ListTranslateMethods
|
6
|
+
end
|
7
|
+
|
8
|
+
HostNode.preload_resource('Result', Module.new {
|
9
|
+
def node_id
|
10
|
+
nil
|
11
|
+
end
|
12
|
+
})
|
13
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
module Hijiki::DcmgrResource::V1112
|
6
|
+
class Image < Base
|
7
|
+
include Hijiki::DcmgrResource::ListMethods
|
8
|
+
include ListTranslateMethods
|
9
|
+
end
|
10
|
+
|
11
|
+
Image.preload_resource('Result', Module.new {
|
12
|
+
def source
|
13
|
+
find_or_create_resource_for('source').new(YAML::load(attributes['source']))
|
14
|
+
end
|
15
|
+
|
16
|
+
def features
|
17
|
+
find_or_create_resource_for('features').new(YAML::load(attributes['features']))
|
18
|
+
end
|
19
|
+
})
|
20
|
+
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module Hijiki::DcmgrResource::V1112
|
3
|
+
class VolumeSnapshot < Base
|
4
|
+
include Hijiki::DcmgrResource::ListMethods
|
5
|
+
include ListTranslateMethods
|
6
|
+
include Hijiki::DcmgrResource::V1203::VolumeSnapshotMethods
|
7
|
+
end
|
8
|
+
|
9
|
+
VolumeSnapshot.preload_resource('Result', Module.new {
|
10
|
+
def storage_node
|
11
|
+
nil
|
12
|
+
end
|
13
|
+
})
|
14
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module Hijiki::DcmgrResource::V1203
|
3
|
+
|
4
|
+
@debug = false
|
5
|
+
|
6
|
+
class << self
|
7
|
+
attr_accessor :debug
|
8
|
+
end
|
9
|
+
|
10
|
+
class Base < Hijiki::DcmgrResource::Base
|
11
|
+
|
12
|
+
self.prefix = '/api/12.03/'
|
13
|
+
|
14
|
+
def total
|
15
|
+
attributes['total']
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module Hijiki::DcmgrResource::V1203
|
3
|
+
module InstanceMethods
|
4
|
+
def self.included(base)
|
5
|
+
base.extend(ClassMethods)
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
def create(params)
|
10
|
+
instance = self.new
|
11
|
+
instance.image_id = params[:image_id]
|
12
|
+
instance.instance_spec_id = params[:instance_spec_id]
|
13
|
+
instance.host_pool_id = params[:host_pool_id]
|
14
|
+
instance.host_name = params[:host_name]
|
15
|
+
instance.user_data = params[:user_data]
|
16
|
+
instance.security_groups = params[:security_groups]
|
17
|
+
instance.ssh_key_id = params[:ssh_key]
|
18
|
+
instance.save
|
19
|
+
instance
|
20
|
+
end
|
21
|
+
|
22
|
+
def destroy(instance_id)
|
23
|
+
self.delete(instance_id).body
|
24
|
+
end
|
25
|
+
|
26
|
+
def reboot(instance_id)
|
27
|
+
@collection ||= self.collection_name
|
28
|
+
self.collection_name = File.join(@collection,instance_id)
|
29
|
+
result = self.put(:reboot)
|
30
|
+
self.collection_name = @collection
|
31
|
+
result.body
|
32
|
+
end
|
33
|
+
|
34
|
+
def start(instance_id)
|
35
|
+
@collection ||= self.collection_name
|
36
|
+
self.collection_name = File.join(@collection,instance_id)
|
37
|
+
result = self.put(:start)
|
38
|
+
self.collection_name = @collection
|
39
|
+
result.body
|
40
|
+
end
|
41
|
+
|
42
|
+
def stop(instance_id)
|
43
|
+
@collection ||= self.collection_name
|
44
|
+
self.collection_name = File.join(@collection,instance_id)
|
45
|
+
result = self.put(:stop)
|
46
|
+
self.collection_name = @collection
|
47
|
+
result.body
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
class Instance < Base
|
53
|
+
include Hijiki::DcmgrResource::ListMethods
|
54
|
+
include InstanceMethods
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module Hijiki::DcmgrResource::V1203
|
3
|
+
module SecurityGroupMethods
|
4
|
+
def self.included(base)
|
5
|
+
base.extend(ClassMethods)
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
def create(params)
|
10
|
+
security_group = self.new
|
11
|
+
security_group.description = params[:description]
|
12
|
+
security_group.rule = params[:rule]
|
13
|
+
security_group.save
|
14
|
+
security_group
|
15
|
+
end
|
16
|
+
|
17
|
+
def update(uuid,params)
|
18
|
+
self.put(uuid,params).body
|
19
|
+
end
|
20
|
+
|
21
|
+
def destroy(uuid)
|
22
|
+
self.delete(uuid).body
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# workaround for the bug:
|
27
|
+
# the value of the key "rule" is encoded to JSON wrongly by
|
28
|
+
# ActiveSupport::JSON encoder.
|
29
|
+
# "{\"security_group\":{\"description\":\"\",\"rule\":[[null,[],null]]}}"
|
30
|
+
# So it has to use the encoder from JSON library.
|
31
|
+
def to_json(options={})
|
32
|
+
require 'json'
|
33
|
+
{'security_group'=>@attributes}.to_json
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class SecurityGroup < Base
|
38
|
+
include Hijiki::DcmgrResource::ListMethods
|
39
|
+
include SecurityGroupMethods
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module Hijiki::DcmgrResource::V1203
|
3
|
+
module SshKeyPairMethods
|
4
|
+
def self.included(base)
|
5
|
+
base.extend(ClassMethods)
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
def create(params)
|
10
|
+
ssh_key_pair = self.new
|
11
|
+
ssh_key_pair.download_once = params[:download_once]
|
12
|
+
ssh_key_pair.save
|
13
|
+
ssh_key_pair
|
14
|
+
end
|
15
|
+
|
16
|
+
def destroy(uuid)
|
17
|
+
self.delete(uuid).body
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class SshKeyPair < Base
|
23
|
+
include Hijiki::DcmgrResource::ListMethods
|
24
|
+
include SshKeyPairMethods
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module Hijiki::DcmgrResource::V1203
|
3
|
+
module VolumeMethods
|
4
|
+
def self.included(base)
|
5
|
+
base.extend(ClassMethods)
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
def create(params)
|
10
|
+
volume = self.new
|
11
|
+
volume.volume_size = params[:volume_size]
|
12
|
+
volume.snapshot_id = params[:snapshot_id]
|
13
|
+
volume.storage_pool_id = params[:storage_pool_id]
|
14
|
+
volume.save
|
15
|
+
volume
|
16
|
+
end
|
17
|
+
|
18
|
+
def destroy(volume_id)
|
19
|
+
self.delete(volume_id).body
|
20
|
+
end
|
21
|
+
|
22
|
+
def attach(volume_id, instance_id)
|
23
|
+
@collection ||= self.collection_name
|
24
|
+
self.collection_name = File.join(@collection,volume_id)
|
25
|
+
result = self.put(:attach, {:volume_id => volume_id,:instance_id => instance_id})
|
26
|
+
self.collection_name = @collection
|
27
|
+
result.body
|
28
|
+
end
|
29
|
+
|
30
|
+
def detach(volume_id)
|
31
|
+
@collection ||= self.collection_name
|
32
|
+
self.collection_name = File.join(@collection,volume_id)
|
33
|
+
result = self.put(:detach, {:volume_id => volume_id})
|
34
|
+
self.collection_name = @collection
|
35
|
+
result.body
|
36
|
+
end
|
37
|
+
|
38
|
+
def status(account_id)
|
39
|
+
@collection ||= self.collection_name
|
40
|
+
self.collection_name = File.join(@collection,account_id)
|
41
|
+
result = self.get(:status)
|
42
|
+
self.collection_name = @collection
|
43
|
+
result
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
class Volume < Base
|
49
|
+
include Hijiki::DcmgrResource::ListMethods
|
50
|
+
include VolumeMethods
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module Hijiki::DcmgrResource::V1203
|
3
|
+
module VolumeSnapshotMethods
|
4
|
+
def self.included(base)
|
5
|
+
base.extend(ClassMethods)
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
def list(params = {})
|
10
|
+
data = self.find(:all, :params => params)
|
11
|
+
results = []
|
12
|
+
data.each { |row|
|
13
|
+
results << row.attributes
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
def create(params)
|
18
|
+
snapshot = self.new
|
19
|
+
snapshot.volume_id = params[:volume_id]
|
20
|
+
snapshot.destination = params[:destination]
|
21
|
+
snapshot.save
|
22
|
+
snapshot
|
23
|
+
end
|
24
|
+
|
25
|
+
def destroy(snapshot_id)
|
26
|
+
self.delete(snapshot_id).body
|
27
|
+
end
|
28
|
+
|
29
|
+
def status(account_id)
|
30
|
+
@collection ||= self.collection_name
|
31
|
+
self.collection_name = File.join(@collection,account_id)
|
32
|
+
result = self.get(:status)
|
33
|
+
self.collection_name = @collection
|
34
|
+
result
|
35
|
+
end
|
36
|
+
|
37
|
+
def upload_destination
|
38
|
+
result = self.get(:upload_destination)
|
39
|
+
result
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class VolumeSnapshot < Base
|
45
|
+
include Hijiki::DcmgrResource::ListMethods
|
46
|
+
include VolumeSnapshotMethods
|
47
|
+
end
|
48
|
+
|
49
|
+
VolumeSnapshot.preload_resource('Result', Module.new {
|
50
|
+
def storage_node
|
51
|
+
attributes['storage_node'] ||= StorageNode.find(attributes['storage_node_id'])
|
52
|
+
end
|
53
|
+
})
|
54
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module Hijiki::DcmgrResource
|
3
|
+
|
4
|
+
@debug = false
|
5
|
+
|
6
|
+
class << self
|
7
|
+
attr_accessor :debug
|
8
|
+
end
|
9
|
+
|
10
|
+
class Base < ActiveResource::Base
|
11
|
+
|
12
|
+
# self.site = 'http://your.dcmgr.api.server'
|
13
|
+
self.timeout = 30
|
14
|
+
self.format = :json
|
15
|
+
|
16
|
+
class << self
|
17
|
+
|
18
|
+
def total_resource
|
19
|
+
result = self.find(:first,:params => {:start => 0,:limit => 1})
|
20
|
+
result.total
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_resource_state_count(resources, state)
|
24
|
+
resource_count = 0
|
25
|
+
unless resources.empty?
|
26
|
+
resources.each do |item|
|
27
|
+
if item.state == state
|
28
|
+
resource_count += 1;
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
resource_count
|
33
|
+
end
|
34
|
+
|
35
|
+
def preload_resource(resource_name, compatibility_module)
|
36
|
+
resource = self.const_set(resource_name, Class.new(Hijiki::DcmgrResource::Base))
|
37
|
+
resource.prefix = self.prefix
|
38
|
+
resource.site = self.site
|
39
|
+
|
40
|
+
resource.class_eval do
|
41
|
+
include compatibility_module
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
module ListMethods
|
49
|
+
def self.included(base)
|
50
|
+
base.extend(ClassMethods)
|
51
|
+
end
|
52
|
+
|
53
|
+
module ClassMethods
|
54
|
+
def list(params = {})
|
55
|
+
self.find(:all,:params => params)
|
56
|
+
end
|
57
|
+
|
58
|
+
def show(uuid)
|
59
|
+
self.get(uuid)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
ActiveResource::Connection.class_eval do
|
67
|
+
|
68
|
+
class << self
|
69
|
+
def set_vdc_account_uuid(uuid)
|
70
|
+
class_variable_set(:@@vdc_account_uuid,uuid)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
def default_header
|
76
|
+
@default_header = {
|
77
|
+
'X-VDC-ACCOUNT-UUID' => self.class.send(:class_variable_get,:@@vdc_account_uuid)
|
78
|
+
}
|
79
|
+
end
|
80
|
+
|
81
|
+
def configure_http(http)
|
82
|
+
http = apply_ssl_options(http)
|
83
|
+
|
84
|
+
#add debug
|
85
|
+
http.set_debug_output($stderr) if Hijiki::DcmgrResource.debug
|
86
|
+
|
87
|
+
# Net::HTTP timeouts default to 60 seconds.
|
88
|
+
if @timeout
|
89
|
+
http.open_timeout = @timeout
|
90
|
+
http.read_timeout = @timeout
|
91
|
+
end
|
92
|
+
|
93
|
+
http
|
94
|
+
end
|
95
|
+
end
|
data/lib/hijiki.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'active_resource'
|
4
|
+
|
5
|
+
module Hijiki
|
6
|
+
module DcmgrResource
|
7
|
+
|
8
|
+
require 'hijiki/dcmgr_resource/base'
|
9
|
+
|
10
|
+
module V1112
|
11
|
+
require 'hijiki/dcmgr_resource/11.12/base'
|
12
|
+
|
13
|
+
autoload :Account, 'hijiki/dcmgr_resource/11.12/account'
|
14
|
+
autoload :HostNode, 'hijiki/dcmgr_resource/11.12/host_node'
|
15
|
+
autoload :Image, 'hijiki/dcmgr_resource/11.12/image'
|
16
|
+
autoload :Instance, 'hijiki/dcmgr_resource/11.12/instance'
|
17
|
+
autoload :InstanceSpec, 'hijiki/dcmgr_resource/11.12/instance_spec'
|
18
|
+
autoload :Network, 'hijiki/dcmgr_resource/11.12/network'
|
19
|
+
autoload :SecurityGroup, 'hijiki/dcmgr_resource/11.12/security_group'
|
20
|
+
autoload :SshKeyPair, 'hijiki/dcmgr_resource/11.12/ssh_key_pair'
|
21
|
+
autoload :StorageNode, 'hijiki/dcmgr_resource/11.12/storage_node'
|
22
|
+
autoload :Volume, 'hijiki/dcmgr_resource/11.12/volume'
|
23
|
+
autoload :VolumeSnapshot, 'hijiki/dcmgr_resource/11.12/volume_snapshot'
|
24
|
+
end
|
25
|
+
|
26
|
+
module V1203
|
27
|
+
require 'hijiki/dcmgr_resource/12.03/base'
|
28
|
+
|
29
|
+
autoload :Account, 'hijiki/dcmgr_resource/12.03/account'
|
30
|
+
autoload :HostNode, 'hijiki/dcmgr_resource/12.03/host_node'
|
31
|
+
autoload :Image, 'hijiki/dcmgr_resource/12.03/image'
|
32
|
+
autoload :Instance, 'hijiki/dcmgr_resource/12.03/instance'
|
33
|
+
autoload :InstanceSpec, 'hijiki/dcmgr_resource/12.03/instance_spec'
|
34
|
+
autoload :Network, 'hijiki/dcmgr_resource/12.03/network'
|
35
|
+
autoload :SecurityGroup, 'hijiki/dcmgr_resource/12.03/security_group'
|
36
|
+
autoload :SshKeyPair, 'hijiki/dcmgr_resource/12.03/ssh_key_pair'
|
37
|
+
autoload :StorageNode, 'hijiki/dcmgr_resource/12.03/storage_node'
|
38
|
+
autoload :Volume, 'hijiki/dcmgr_resource/12.03/volume'
|
39
|
+
autoload :VolumeSnapshot, 'hijiki/dcmgr_resource/12.03/volume_snapshot'
|
40
|
+
|
41
|
+
autoload :InstanceMethods, 'hijiki/dcmgr_resource/12.03/instance'
|
42
|
+
autoload :SecurityGroupMethods, 'hijiki/dcmgr_resource/12.03/security_group'
|
43
|
+
autoload :SshKeyPairMethods, 'hijiki/dcmgr_resource/12.03/ssh_key_pair'
|
44
|
+
autoload :VolumeMethods, 'hijiki/dcmgr_resource/12.03/volume'
|
45
|
+
autoload :VolumeSnapshotMethods, 'hijiki/dcmgr_resource/12.03/volume_snapshot'
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
data/ruby-hijiki.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{ruby-hijiki}
|
5
|
+
s.version = "0.0.1"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = [%q{axsh Ltd.}]
|
9
|
+
s.date = %q{2012-06-01}
|
10
|
+
s.description = %q{Datacenter Hypervisor API Library}
|
11
|
+
s.email = [%q{dev@axsh.net}]
|
12
|
+
|
13
|
+
s.homepage = %q{http://wakame.jp/}
|
14
|
+
s.require_paths = [%q{lib}]
|
15
|
+
s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
|
16
|
+
s.rubygems_version = %q{1.8.6}
|
17
|
+
s.summary = %q{Wakame-VDC: API library}
|
18
|
+
|
19
|
+
s.files = [%q{Gemfile}, %q{Rakefile}, %q{lib/hijiki.rb}, %q{lib/hijiki/dcmgr_resource/11.12/account.rb}, %q{lib/hijiki/dcmgr_resource/11.12/base.rb}, %q{lib/hijiki/dcmgr_resource/11.12/host_node.rb}, %q{lib/hijiki/dcmgr_resource/11.12/image.rb}, %q{lib/hijiki/dcmgr_resource/11.12/instance.rb}, %q{lib/hijiki/dcmgr_resource/11.12/instance_spec.rb}, %q{lib/hijiki/dcmgr_resource/11.12/network.rb}, %q{lib/hijiki/dcmgr_resource/11.12/security_group.rb}, %q{lib/hijiki/dcmgr_resource/11.12/ssh_key_pair.rb}, %q{lib/hijiki/dcmgr_resource/11.12/storage_node.rb}, %q{lib/hijiki/dcmgr_resource/11.12/volume.rb}, %q{lib/hijiki/dcmgr_resource/11.12/volume_snapshot.rb}, %q{lib/hijiki/dcmgr_resource/12.03/account.rb}, %q{lib/hijiki/dcmgr_resource/12.03/base.rb}, %q{lib/hijiki/dcmgr_resource/12.03/host_node.rb}, %q{lib/hijiki/dcmgr_resource/12.03/image.rb}, %q{lib/hijiki/dcmgr_resource/12.03/instance.rb}, %q{lib/hijiki/dcmgr_resource/12.03/instance_spec.rb}, %q{lib/hijiki/dcmgr_resource/12.03/network.rb}, %q{lib/hijiki/dcmgr_resource/12.03/security_group.rb}, %q{lib/hijiki/dcmgr_resource/12.03/ssh_key_pair.rb}, %q{lib/hijiki/dcmgr_resource/12.03/storage_node.rb}, %q{lib/hijiki/dcmgr_resource/12.03/volume.rb}, %q{lib/hijiki/dcmgr_resource/12.03/volume_snapshot.rb}, %q{lib/hijiki/dcmgr_resource/base.rb}, %q{ruby-hijiki.gemspec}, %q{test/api/ts_base.rb}, %q{test/api/ts_host_node.rb}, %q{test/api/ts_image.rb}, %q{test/api/ts_instance.rb}, %q{test/api/ts_network.rb}, %q{test/api/ts_ssh_key_pair.rb}, %q{test/api/ts_storage_node.rb}, %q{test/api/ts_volume.rb}, %q{test/api/ts_volume_snapshot.rb}, %q{test/ts_all.rb}]
|
20
|
+
|
21
|
+
end
|
data/test/api/ts_base.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
module TestBaseMethods
|
6
|
+
def test_basic_1112
|
7
|
+
[:v1112, :v1203].each { |api_ver|
|
8
|
+
object = api_class(api_ver).find(:first,:params => {:start => 0,:limit => 1})
|
9
|
+
|
10
|
+
assert_not_nil(object.total)
|
11
|
+
assert_raise(NoMethodError) { object.owner_total }
|
12
|
+
}
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
class TestHostNode < Test::Unit::TestCase
|
4
|
+
def api_class(version)
|
5
|
+
case version
|
6
|
+
when :v1112 then Hijiki::DcmgrResource::V1112::HostNode
|
7
|
+
when :v1203 then Hijiki::DcmgrResource::V1203::HostNode
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
include TestBaseMethods
|
12
|
+
|
13
|
+
def test_host_node
|
14
|
+
[:v1112, :v1203].each { |api_ver|
|
15
|
+
assert_nothing_raised() {
|
16
|
+
host_node = api_class(api_ver).find(:first).results.first
|
17
|
+
|
18
|
+
if api_ver == :v1112
|
19
|
+
assert_equal(nil, host_node.node_id)
|
20
|
+
else
|
21
|
+
assert_not_equal(nil, host_node.node_id)
|
22
|
+
end
|
23
|
+
}
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
class TestImage < Test::Unit::TestCase
|
4
|
+
def api_class(version)
|
5
|
+
case version
|
6
|
+
when :v1112 then Hijiki::DcmgrResource::V1112::Image
|
7
|
+
when :v1203 then Hijiki::DcmgrResource::V1203::Image
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
include TestBaseMethods
|
12
|
+
|
13
|
+
def test_image
|
14
|
+
[:v1112, :v1203].each { |api_ver|
|
15
|
+
assert_nothing_raised() {
|
16
|
+
image = api_class(api_ver).find(:first).results.first
|
17
|
+
|
18
|
+
assert_not_nil(image.source.uri)
|
19
|
+
assert_not_nil(image.features)
|
20
|
+
}
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
class TestInstance < Test::Unit::TestCase
|
4
|
+
def api_class(version)
|
5
|
+
case version
|
6
|
+
when :v1112 then Hijiki::DcmgrResource::V1112::Instance
|
7
|
+
when :v1203 then Hijiki::DcmgrResource::V1203::Instance
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
include TestBaseMethods
|
12
|
+
|
13
|
+
def test_instance
|
14
|
+
[:v1112, :v1203].each { |api_ver|
|
15
|
+
assert_nothing_raised() {
|
16
|
+
instance = api_class(api_ver).find(:first).results.first
|
17
|
+
}
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
class TestNetwork < Test::Unit::TestCase
|
4
|
+
def api_class(version)
|
5
|
+
case version
|
6
|
+
when :v1112 then Hijiki::DcmgrResource::V1112::Network
|
7
|
+
when :v1203 then Hijiki::DcmgrResource::V1203::Network
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
include TestBaseMethods
|
12
|
+
|
13
|
+
def test_network
|
14
|
+
[:v1112, :v1203].each { |api_ver|
|
15
|
+
assert_nothing_raised() {
|
16
|
+
object = api_class(api_ver).find(:first).results.first
|
17
|
+
|
18
|
+
assert(object.uuid =~ /^nw-[0-9a-z]*$/)
|
19
|
+
assert_not_nil(object.account_id)
|
20
|
+
}
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
class TestSshKeyPair < Test::Unit::TestCase
|
4
|
+
def api_class(version)
|
5
|
+
case version
|
6
|
+
when :v1112 then Hijiki::DcmgrResource::V1112::SshKeyPair
|
7
|
+
when :v1203 then Hijiki::DcmgrResource::V1203::SshKeyPair
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
include TestBaseMethods
|
12
|
+
|
13
|
+
def test_ssh_key_pair
|
14
|
+
[:v1112, :v1203].each { |api_ver|
|
15
|
+
assert_nothing_raised() {
|
16
|
+
ssh_key_pair = api_class(api_ver).find(:first).results.first
|
17
|
+
}
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
class TestStorageNode < Test::Unit::TestCase
|
4
|
+
def api_class(version)
|
5
|
+
case version
|
6
|
+
when :v1112 then Hijiki::DcmgrResource::V1112::StorageNode
|
7
|
+
when :v1203 then Hijiki::DcmgrResource::V1203::StorageNode
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
include TestBaseMethods
|
12
|
+
|
13
|
+
def test_storage_node
|
14
|
+
[:v1112, :v1203].each { |api_ver|
|
15
|
+
assert_nothing_raised() {
|
16
|
+
storage_node = api_class(api_ver).find(:first).results.first
|
17
|
+
|
18
|
+
if api_ver == :v1112
|
19
|
+
assert_raise(NoMethodError) { storage_node.node_id }
|
20
|
+
else
|
21
|
+
assert_not_nil(storage_node.node_id)
|
22
|
+
end
|
23
|
+
}
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_list_1203
|
28
|
+
[:v1112, :v1203].each { |api_ver|
|
29
|
+
assert_nothing_raised() {
|
30
|
+
list = api_class(api_ver).list
|
31
|
+
}
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
class TestVolume < Test::Unit::TestCase
|
4
|
+
def api_class(version)
|
5
|
+
case version
|
6
|
+
when :v1112 then Hijiki::DcmgrResource::V1112::Volume
|
7
|
+
when :v1203 then Hijiki::DcmgrResource::V1203::Volume
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
include TestBaseMethods
|
12
|
+
|
13
|
+
def test_volume
|
14
|
+
[:v1112, :v1203].each { |api_ver|
|
15
|
+
assert_nothing_raised() {
|
16
|
+
object = api_class(api_ver).find(:first).results.first
|
17
|
+
|
18
|
+
if api_ver == :v1112
|
19
|
+
assert_raise(NoMethodError) { object.account_id }
|
20
|
+
assert_equal(String, object.instance_id.class)
|
21
|
+
assert(object.instance_id =~ /^i-[0-9]*/)
|
22
|
+
else
|
23
|
+
assert_not_nil(object.account_id)
|
24
|
+
assert_equal(Fixnum, object.instance_id.class)
|
25
|
+
end
|
26
|
+
}
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
class TestVolumeSnapshot < Test::Unit::TestCase
|
4
|
+
def api_class(version)
|
5
|
+
case version
|
6
|
+
when :v1112 then Hijiki::DcmgrResource::V1112::VolumeSnapshot
|
7
|
+
when :v1203 then Hijiki::DcmgrResource::V1203::VolumeSnapshot
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
include TestBaseMethods
|
12
|
+
|
13
|
+
def test_volume_snapshot
|
14
|
+
[:v1112, :v1203].each { |api_ver|
|
15
|
+
assert_nothing_raised() {
|
16
|
+
object = api_class(api_ver).find(:first).results.first
|
17
|
+
|
18
|
+
assert(object.origin_volume_id =~ /^vol-[0-9a-z]*$/)
|
19
|
+
|
20
|
+
if api_ver == :v1112
|
21
|
+
assert_raise(NoMethodError) { object.account_id }
|
22
|
+
assert_raise(NoMethodError) { object.storage_node_id }
|
23
|
+
|
24
|
+
assert_equal(nil, object.storage_node)
|
25
|
+
else
|
26
|
+
assert_not_nil(object.account_id)
|
27
|
+
assert(object.storage_node_id =~ /^sn-[0-9a-z]*$/)
|
28
|
+
|
29
|
+
assert_equal(Hijiki::DcmgrResource::V1203::StorageNode, object.storage_node.class)
|
30
|
+
end
|
31
|
+
}
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
data/test/ts_all.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
4
|
+
|
5
|
+
require 'hijiki'
|
6
|
+
|
7
|
+
ActiveResource::Base.class_eval do
|
8
|
+
self.site = 'http://localhost:9001'
|
9
|
+
end
|
10
|
+
|
11
|
+
ActiveResource::Connection.set_vdc_account_uuid('a-shpoolxx')
|
12
|
+
|
13
|
+
require File.join(File.dirname(__FILE__) + '/api/ts_base.rb')
|
14
|
+
|
15
|
+
['api'].each do |l|
|
16
|
+
Dir.glob(File.join(File.dirname(__FILE__) + "/#{l}", '*.rb')).each do |f|
|
17
|
+
require f
|
18
|
+
end
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby-hijiki
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- axsh Ltd.
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-06-01 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Datacenter Hypervisor API Library
|
15
|
+
email:
|
16
|
+
- dev@axsh.net
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- Gemfile
|
22
|
+
- Rakefile
|
23
|
+
- lib/hijiki.rb
|
24
|
+
- lib/hijiki/dcmgr_resource/11.12/account.rb
|
25
|
+
- lib/hijiki/dcmgr_resource/11.12/base.rb
|
26
|
+
- lib/hijiki/dcmgr_resource/11.12/host_node.rb
|
27
|
+
- lib/hijiki/dcmgr_resource/11.12/image.rb
|
28
|
+
- lib/hijiki/dcmgr_resource/11.12/instance.rb
|
29
|
+
- lib/hijiki/dcmgr_resource/11.12/instance_spec.rb
|
30
|
+
- lib/hijiki/dcmgr_resource/11.12/network.rb
|
31
|
+
- lib/hijiki/dcmgr_resource/11.12/security_group.rb
|
32
|
+
- lib/hijiki/dcmgr_resource/11.12/ssh_key_pair.rb
|
33
|
+
- lib/hijiki/dcmgr_resource/11.12/storage_node.rb
|
34
|
+
- lib/hijiki/dcmgr_resource/11.12/volume.rb
|
35
|
+
- lib/hijiki/dcmgr_resource/11.12/volume_snapshot.rb
|
36
|
+
- lib/hijiki/dcmgr_resource/12.03/account.rb
|
37
|
+
- lib/hijiki/dcmgr_resource/12.03/base.rb
|
38
|
+
- lib/hijiki/dcmgr_resource/12.03/host_node.rb
|
39
|
+
- lib/hijiki/dcmgr_resource/12.03/image.rb
|
40
|
+
- lib/hijiki/dcmgr_resource/12.03/instance.rb
|
41
|
+
- lib/hijiki/dcmgr_resource/12.03/instance_spec.rb
|
42
|
+
- lib/hijiki/dcmgr_resource/12.03/network.rb
|
43
|
+
- lib/hijiki/dcmgr_resource/12.03/security_group.rb
|
44
|
+
- lib/hijiki/dcmgr_resource/12.03/ssh_key_pair.rb
|
45
|
+
- lib/hijiki/dcmgr_resource/12.03/storage_node.rb
|
46
|
+
- lib/hijiki/dcmgr_resource/12.03/volume.rb
|
47
|
+
- lib/hijiki/dcmgr_resource/12.03/volume_snapshot.rb
|
48
|
+
- lib/hijiki/dcmgr_resource/base.rb
|
49
|
+
- ruby-hijiki.gemspec
|
50
|
+
- test/api/ts_base.rb
|
51
|
+
- test/api/ts_host_node.rb
|
52
|
+
- test/api/ts_image.rb
|
53
|
+
- test/api/ts_instance.rb
|
54
|
+
- test/api/ts_network.rb
|
55
|
+
- test/api/ts_ssh_key_pair.rb
|
56
|
+
- test/api/ts_storage_node.rb
|
57
|
+
- test/api/ts_volume.rb
|
58
|
+
- test/api/ts_volume_snapshot.rb
|
59
|
+
- test/ts_all.rb
|
60
|
+
homepage: http://wakame.jp/
|
61
|
+
licenses: []
|
62
|
+
post_install_message:
|
63
|
+
rdoc_options: []
|
64
|
+
require_paths:
|
65
|
+
- lib
|
66
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: 1.8.7
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
requirements: []
|
79
|
+
rubyforge_project:
|
80
|
+
rubygems_version: 1.8.23
|
81
|
+
signing_key:
|
82
|
+
specification_version: 3
|
83
|
+
summary: ! 'Wakame-VDC: API library'
|
84
|
+
test_files: []
|
85
|
+
has_rdoc:
|