unit-hosting 0.0.1 → 0.0.3

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 CHANGED
@@ -2,6 +2,13 @@ source "http://rubygems.org"
2
2
  # Add dependencies required to use your gem here.
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
+ gem 'mutter'
6
+ gem 'keystorage', '> 0.1'
7
+ gem 'mechanize', '>= 1.0.0'
8
+ gem 'highline', '> 1.6'
9
+ gem 'progressbar', '>= 0.9.0'
10
+ gem 'httpclient', '>= 2.1.6.1'
11
+ gem 'command-line-utils' , '>= 0.0.1'
5
12
 
6
13
  # Add dependencies to develop your gem here.
7
14
  # Include everything needed to run rake, tests, features, etc.
data/Gemfile.lock ADDED
@@ -0,0 +1,36 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ command-line-utils (0.0.1)
5
+ git (1.2.5)
6
+ highline (1.6.1)
7
+ httpclient (2.1.6.1)
8
+ jeweler (1.5.2)
9
+ bundler (~> 1.0.0)
10
+ git (>= 1.2.5)
11
+ rake
12
+ keystorage (0.4.3)
13
+ mechanize (1.0.0)
14
+ nokogiri (>= 1.2.1)
15
+ mutter (0.5.3)
16
+ nokogiri (1.4.4)
17
+ progressbar (0.9.0)
18
+ rake (0.8.7)
19
+ rcov (0.9.9)
20
+ shoulda (2.11.3)
21
+
22
+ PLATFORMS
23
+ ruby
24
+
25
+ DEPENDENCIES
26
+ bundler (~> 1.0.0)
27
+ command-line-utils (>= 0.0.1)
28
+ highline (> 1.6)
29
+ httpclient (>= 2.1.6.1)
30
+ jeweler (~> 1.5.2)
31
+ keystorage (> 0.1)
32
+ mechanize (>= 1.0.0)
33
+ mutter
34
+ progressbar (>= 0.9.0)
35
+ rcov
36
+ shoulda
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.3
data/lib/unit-hosting.rb CHANGED
@@ -0,0 +1,2 @@
1
+ require 'unit-hosting/agent'
2
+ require 'unit-hosting/commands'
@@ -32,11 +32,20 @@ module UnitHosting
32
32
  getr("/logout")
33
33
  end
34
34
 
35
+ def group(id)
36
+ getr("/my/group/#{id}/info")
37
+ group = Group.new(id)
38
+ group.key = page.at("span.api-key").text.to_s
39
+ group.name = page.at("span.group-name").text.to_s
40
+ group
41
+ end
42
+
35
43
  def groups
36
44
  getr("/my/group")
37
- page.search("#server-groups .instance_id a").each { |i|
38
- puts i.text.to_s
39
- }
45
+ page.search("#server-groups .instance_id a").collect { |a|
46
+ group(a.text.to_s)
47
+ }.extend(Groups)
40
48
  end
49
+
41
50
  end
42
51
  end
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+ require 'unit-hosting/api/base'
4
+ require 'unit-hosting/api/vm'
5
+ require 'unit-hosting/api/vm_group'
6
+ require 'unit-hosting/api/vm_recipe'
7
+
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env ruby
2
+ # vim:set fileencoding=utf-8:
3
+ require 'rubygems'
4
+ require 'logger'
5
+ require 'xmlrpc/client'
6
+ require 'optparse'
7
+ require 'rexml/document'
8
+
9
+ module UnitHosting
10
+ module Api
11
+ def keypath instance_id
12
+ "%s/.UnitHosting/keys/%s.key" % [ENV['HOME'], instance_id]
13
+ end
14
+ module_function :keypath
15
+ class Base
16
+ attr_reader :instance_id,:api_key;
17
+ def initialize(instance_id=nil,api_key=nil)
18
+ @instance_id = instance_id
19
+ @api_key = api_key
20
+ @server = XMLRPC::Client.
21
+ new_from_uri("https://www.unit-hosting.com/xmlrpc",nil,1000)
22
+ @server.instance_variable_get(:@http).
23
+ instance_variable_get(:@ssl_context).
24
+ instance_variable_set(:@verify_mode, OpenSSL::SSL::VERIFY_NONE)
25
+ end
26
+ def self.load(instance_id)
27
+ self.new.load(instance_id)
28
+ end
29
+ def load(instance_id)
30
+ load_key(UnitHosting::keypath(instance_id))
31
+ end
32
+ def load_key(file)
33
+ File::open(file) do |f|
34
+ xml = f.read
35
+ doc = REXML::Document.new(xml)
36
+ @instance_id = doc.elements[@instance_id_elm].text
37
+ @api_key = doc.elements[@api_key_elm].text
38
+ end
39
+ self
40
+ end
41
+ def server_call(method,param = {})
42
+ param["instance_id"] = @instance_id
43
+ param["api_key"] = @api_key
44
+ return @server.call(method,param)
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env ruby
2
+ # vim:set fileencoding=utf-8:
3
+ require "rubygems"
4
+ require 'mutter'
5
+
6
+ require 'unit-hosting/api/base'
7
+
8
+ module UnitHosting
9
+ module Api
10
+ class Vm < Base
11
+ def initialize(instance_id=nil,api_key=nil)
12
+ @instance_id_elm = '/server/instance_id'
13
+ @api_key_elm = '/server/key'
14
+ super
15
+ end
16
+ def reboot
17
+ server_call("vm.reboot")
18
+ end
19
+ def start
20
+ server_call("vm.start")
21
+ end
22
+ def shutdown
23
+ server_call("vm.shutdown")
24
+ end
25
+ def power_off
26
+ server_call("vm.powerOff")
27
+ end
28
+ def destroy
29
+ server_call("vm.destroy")
30
+ end
31
+ def status?
32
+ server_call("vm.getStatus")
33
+ end
34
+ def memory_unit_size size
35
+ server_call("vm.setMemoryUnitSize",{"size" => size})
36
+ end
37
+ def cpu_unit_num num
38
+ server_call("vm.setCpuUnitNum",{"num" => num})
39
+ end
40
+ def memory_unit_size?
41
+ server_call("vm.getMemoryUnitSize")
42
+ end
43
+ def cpu_unit_num?
44
+ server_call("vm.getCpuUnitNum")
45
+ end
46
+ def ips
47
+ server_call("vm.getIpInfo")
48
+ end
49
+ def display_name
50
+ server_call("vm.getDisplayName")
51
+ end
52
+ def display_name= name
53
+ server_call("vm.setDisplayName",{"display_name" => name})
54
+ end
55
+ def replicate name=""
56
+ server_call("vm.replicate",{"display_name" => name})
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby
2
+ # vim:set fileencoding=utf-8:
3
+ require 'unit-hosting/api/base'
4
+ require 'unit-hosting/api/vm'
5
+
6
+ module UnitHosting
7
+ module Api
8
+ class VmGroup < Base
9
+ def initialize(instance_id=nil,api_key=nil)
10
+ @instance_id_elm = '/server-group/instance_id'
11
+ @api_key_elm = '/server-group/key'
12
+ super
13
+ end
14
+ # このサーバグループに含まれるVMオブジェクトをすべて返す
15
+ def vms
16
+ server_call("vmGroup.getVms")
17
+ end
18
+ def vm_api_key instance_id
19
+ server_call("vmGroup.getVms").each do |vm|
20
+ return vm["api_key"] if vm[instance_id] == instance_id
21
+ end
22
+ end
23
+ # instance_idに紐づくvmを返す
24
+ def vm(instance_id)
25
+ Vm.new(instance_id,vm_api_key(instance_id))
26
+ end
27
+ # vmの作成
28
+ def create_vm(recipe)
29
+ r = server_call("vmGroup.createVm",recipe.params)
30
+ return false if r["result"] != "success"
31
+ r
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ if $0 == __FILE__
38
+ pp UnitHosting::VmGroup.load('tumf-sg-10').vm('tumf-vm-107')
39
+ exit
40
+ recipe = UnitHosting::VmRecipe.new
41
+ # recipe.
42
+ end
43
+
44
+
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env ruby
2
+ # vim:set fileencoding=utf-8:
3
+ require 'unit_hosting/base'
4
+ module UnitHosting
5
+ module Api
6
+ class VmRecipe
7
+ attr_accessor :rootpw,:ssh_key,:plan_id
8
+ attr_accessor :op_user,:op_mail,:user_script,:display_name
9
+ def initialize
10
+ @op_user = ENV['USER']
11
+ end
12
+ def load_ssh_key file
13
+ File::open(file) do |f|
14
+ @ssh_key = f.read
15
+ end
16
+ end
17
+ def params
18
+ param = {
19
+ "rootpw" => @rootpw,
20
+ "ssh_key" => @ssh_key,
21
+ "op_user" => @op_user,
22
+ "op_mail" => @op_mail,
23
+ "user_script" => @user_script,
24
+ "plan_id" => @plan_id,
25
+ "display_name" => @display_name
26
+ }
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+ require 'pstore'
4
+ require 'unit-hosting/group'
5
+
6
+ module UnitHosting
7
+ class Cache < PStore
8
+ def groups
9
+ transaction { |ps| ps["groups"] ||=[] }.extend(Groups)
10
+ end
11
+ end
12
+ end
@@ -1,50 +1,15 @@
1
1
  #!/usr/bin/env ruby
2
2
  # -*- coding: utf-8 -*-
3
- require 'optparse'
3
+ require 'command-line-utils'
4
4
  require 'unit-hosting/commands'
5
-
6
5
  module UnitHosting
7
- class CLI
6
+ class CLI < CommandLineUtils::CLI
8
7
  def initialize
9
- @options = Hash.new
10
- @options[:debug] = false
8
+ super
9
+ @commands = Commands.new
11
10
  end
12
-
13
- def execute(argv)
14
- begin
15
- @opt = OptionParser.new
16
- @opt.on('--version', 'show version') { version;exit }
17
- @opt.on('--help', 'show this message') { usage;exit }
18
- @opt.on('--debug', 'debug mode') { @options[:debug] = true }
19
- cmd_argv = @opt.order!(argv)
20
- cmd = cmd_argv.shift
21
- raise unless cmd
22
- Commands.new(cmd_argv,@options).send(cmd)
23
- rescue =>e
24
- puts "Message: #{e}\n"
25
- usage
26
- raise e if @options[:debug]
27
- end
28
- end
29
-
30
- def usage(e=nil)
31
- puts @opt
32
- puts "\nCommands:\n"
33
- COMMANDS.each { |c|
34
- puts " " + c
35
- }
36
- end
37
-
38
- def version
39
- File.open(File.dirname(__FILE__) + '/../../VERSION',"r") { |file|
40
- puts file.gets
41
- }
42
- end
43
-
44
- class << self
45
- def run(argv)
46
- self.new.execute(argv)
47
- end
11
+ def dispatch(cmd,cmd_argv)
12
+ @commands.send(cmd.sub(/:/,"_"))
48
13
  end
49
14
  end
50
15
  end
@@ -6,36 +6,22 @@ require "highline/import"
6
6
  require "keystorage"
7
7
 
8
8
  require "unit-hosting"
9
+ require "unit-hosting/api"
9
10
  require "unit-hosting/agent"
11
+ require "unit-hosting/cache"
10
12
  #require "unit-hosting/api"
13
+ require "command-line-utils"
11
14
 
12
15
  module UnitHosting
13
- COMMANDS = ["help","login","logout"]
14
- class Commands
15
-
16
- def initialize(cmd_options,options)
17
- @options = options
18
- @command_options = cmd_options
19
- @help = false
16
+ class Commands < CommandLineUtils::Commands
17
+ # CommandLineUtils::COMMANDS +=
18
+ def initialize
19
+ super
20
+ @commands += ["login","logout","update","groups","group"]
20
21
  @agent = Agent.new
22
+ @cache_file = ENV['HOME']+"/.unit-hosting.cache"
23
+ @cache = Cache.new(@cache_file)
21
24
 
22
- @summery = ""
23
- @banner = ""
24
- end
25
-
26
- def help
27
- opt = OptionParser.new
28
- opt.parse!(@command_options)
29
- @summery = "Show command helps."
30
- @banner = "command"
31
- return opt if @help
32
- @help = true
33
- command = @command_options.shift
34
- raise "Unknown command: " + command unless COMMANDS.include?(command)
35
- opt = send(command)
36
- puts "Summery: #{@summery}"
37
- opt.banner="Usage: unit-hosting [options] #{command} #{@banner}"
38
- puts opt
39
25
  end
40
26
 
41
27
  def login
@@ -76,10 +62,72 @@ module UnitHosting
76
62
  Keystorage.delete("bookscan")
77
63
  end
78
64
 
79
-
65
+ include UnitHosting::Api
80
66
  def update
67
+ all = false
68
+ opt = OptionParser.new
69
+ opt.on('-a','--all', 'update all cache') { all = true }
70
+ opt.parse!(@command_options)
71
+ @summery = "Update cache."
72
+ @banner = "GID [-a|--all]"
73
+ return opt if @help
74
+ gid = @command_options.shift
75
+
76
+
81
77
  start
82
- groups = @agent.groups
78
+ gs = @agent.groups.collect { |g|
79
+ unless g.key.empty?
80
+ v = @cache.groups.find{ |c| c.instance_id == g.instance_id }
81
+ v.update if v and v.vms == nil
82
+ g.vms = v.vms if v
83
+ g
84
+ end
85
+ }.compact
86
+ @cache.transaction { |ps|
87
+ if all
88
+ ps["groups"] = gs.find_all { |g|
89
+ !g.key.empty?
90
+ }.extend(Groups).update
91
+ else
92
+ group = ask_group(gid,gs)
93
+ ps["groups"] = gs.collect{ |g|
94
+ unless g.key.empty?
95
+ g.update if g.instance_id == group.instance_id
96
+ g
97
+ end
98
+ }.compact.extend(Groups)
99
+ end
100
+ }
101
+ end
102
+
103
+ def groups
104
+ opt = OptionParser.new
105
+ opt.parse!(@command_options)
106
+ @summery = "List sever groups."
107
+ @banner = ""
108
+ return opt if @help
109
+
110
+ puts @cache.groups.tablize
111
+ end
112
+
113
+ def group
114
+ opt = OptionParser.new
115
+ opt.parse!(@command_options)
116
+ @summery = "List servers in group."
117
+ @banner = ""
118
+ return opt if @help
119
+
120
+ id = @command_options.shift
121
+ group = ask_group(id,@cache.groups)
122
+ puts group.tablize if group
123
+ end
124
+
125
+ def vif_plug
126
+
127
+ end
128
+
129
+ def vm_create
130
+ # vm:create tumf-sg-1
83
131
  end
84
132
 
85
133
  private
@@ -93,5 +141,19 @@ module UnitHosting
93
141
  end
94
142
  end
95
143
 
144
+ def ask_group(id,gs)
145
+ unless id
146
+ puts gs.extend(Groups).tablize
147
+ id = ask('Enter group id ([q]uit): ',gs.ids << 'q') { |q|
148
+ q.validate = /\w+/
149
+ q.readline = true
150
+ }
151
+ end
152
+ raise SystemExit if id == "q"
153
+ group = gs.find { |g| id == g.instance_id }
154
+ raise "Group #{id} is not exists." unless group
155
+ group
156
+ end
157
+
96
158
  end
97
159
  end
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+ require 'rubygems'
4
+ require 'mutter'
5
+
6
+ module UnitHosting
7
+ module Groups
8
+
9
+ def update
10
+ each { |g| g.update}
11
+ self
12
+ end
13
+
14
+ def tablize
15
+ table = Mutter::Table.new(:delimiter => '|') do
16
+ column :style => :green
17
+ column
18
+ end
19
+ each do |group|
20
+ table << [group.instance_id, group.name]
21
+ end
22
+ table.to_s if length > 0
23
+ end
24
+
25
+ def ids
26
+ collect { |g| g.instance_id }
27
+ end
28
+ end
29
+
30
+ class Group
31
+ include UnitHosting::Api
32
+
33
+ attr_accessor :instance_id, :key, :name, :remote, :vms
34
+ alias :apikey :key
35
+
36
+ def initialize(instance_id = nil)
37
+ @instance_id = instance_id
38
+ end
39
+
40
+ def update
41
+ STDERR.puts "update #{instance_id}"
42
+ @vms = VmGroup.new(@instance_id,@key).vms
43
+ self
44
+ end
45
+
46
+ def tablize
47
+ table = Mutter::Table.new(:delimiter => '|') do
48
+ column :style => :green
49
+ column;column
50
+ end
51
+ return "#{instance_id} has no vms" unless @vms
52
+ @vms.each { |vm|
53
+ table << [vm["instance_id"],vm["status"],vm["display_name"]]
54
+ }
55
+ table.to_s if @vms.length > 0
56
+ end
57
+ end
58
+
59
+ end
@@ -1,7 +1,13 @@
1
+ # -*- coding: utf-8 -*-
1
2
  require 'helper'
2
3
 
3
4
  class TestUnitHosting < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
5
+ context "Agent" do
6
+ should "access" do
7
+ UnitHosting::Agent.new {|agent|
8
+ agent.getr("/")
9
+ assert(agent.page.body =~ /ユニットホスティング/,"to top page")
10
+ }
11
+ end
6
12
  end
7
13
  end
@@ -0,0 +1,96 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{unit-hosting}
8
+ s.version = "0.0.3"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Yoshihiro TAKAHARA"]
12
+ s.date = %q{2011-01-23}
13
+ s.default_executable = %q{unit-hosting}
14
+ s.description = %q{This is a command to manage virtual servers on UnitHosting(http://www.unit-hosting.com).}
15
+ s.email = %q{y.takahara@gmail.com}
16
+ s.executables = ["unit-hosting"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE.txt",
19
+ "README.rdoc"
20
+ ]
21
+ s.files = [
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE.txt",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "bin/unit-hosting",
29
+ "lib/unit-hosting.rb",
30
+ "lib/unit-hosting/agent.rb",
31
+ "lib/unit-hosting/api.rb",
32
+ "lib/unit-hosting/api/base.rb",
33
+ "lib/unit-hosting/api/vm.rb",
34
+ "lib/unit-hosting/api/vm_group.rb",
35
+ "lib/unit-hosting/api/vm_recipe.rb",
36
+ "lib/unit-hosting/cache.rb",
37
+ "lib/unit-hosting/cli.rb",
38
+ "lib/unit-hosting/commands.rb",
39
+ "lib/unit-hosting/group.rb",
40
+ "test/helper.rb",
41
+ "test/test_unit-hosting.rb",
42
+ "unit-hosting.gemspec"
43
+ ]
44
+ s.homepage = %q{http://github.com/tumf/unit-hosting}
45
+ s.licenses = ["MIT"]
46
+ s.require_paths = ["lib"]
47
+ s.rubygems_version = %q{1.4.2}
48
+ s.summary = %q{unit-hosting command line tool}
49
+ s.test_files = [
50
+ "test/helper.rb",
51
+ "test/test_unit-hosting.rb"
52
+ ]
53
+
54
+ if s.respond_to? :specification_version then
55
+ s.specification_version = 3
56
+
57
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
58
+ s.add_runtime_dependency(%q<mutter>, [">= 0"])
59
+ s.add_runtime_dependency(%q<keystorage>, ["> 0.1"])
60
+ s.add_runtime_dependency(%q<mechanize>, [">= 1.0.0"])
61
+ s.add_runtime_dependency(%q<highline>, ["> 1.6"])
62
+ s.add_runtime_dependency(%q<progressbar>, [">= 0.9.0"])
63
+ s.add_runtime_dependency(%q<httpclient>, [">= 2.1.6.1"])
64
+ s.add_runtime_dependency(%q<command-line-utils>, [">= 0.0.1"])
65
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
66
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
67
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
68
+ s.add_development_dependency(%q<rcov>, [">= 0"])
69
+ else
70
+ s.add_dependency(%q<mutter>, [">= 0"])
71
+ s.add_dependency(%q<keystorage>, ["> 0.1"])
72
+ s.add_dependency(%q<mechanize>, [">= 1.0.0"])
73
+ s.add_dependency(%q<highline>, ["> 1.6"])
74
+ s.add_dependency(%q<progressbar>, [">= 0.9.0"])
75
+ s.add_dependency(%q<httpclient>, [">= 2.1.6.1"])
76
+ s.add_dependency(%q<command-line-utils>, [">= 0.0.1"])
77
+ s.add_dependency(%q<shoulda>, [">= 0"])
78
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
79
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
80
+ s.add_dependency(%q<rcov>, [">= 0"])
81
+ end
82
+ else
83
+ s.add_dependency(%q<mutter>, [">= 0"])
84
+ s.add_dependency(%q<keystorage>, ["> 0.1"])
85
+ s.add_dependency(%q<mechanize>, [">= 1.0.0"])
86
+ s.add_dependency(%q<highline>, ["> 1.6"])
87
+ s.add_dependency(%q<progressbar>, [">= 0.9.0"])
88
+ s.add_dependency(%q<httpclient>, [">= 2.1.6.1"])
89
+ s.add_dependency(%q<command-line-utils>, [">= 0.0.1"])
90
+ s.add_dependency(%q<shoulda>, [">= 0"])
91
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
92
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
93
+ s.add_dependency(%q<rcov>, [">= 0"])
94
+ end
95
+ end
96
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unit-hosting
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Yoshihiro TAKAHARA
@@ -15,12 +15,12 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-20 00:00:00 +09:00
18
+ date: 2011-01-23 00:00:00 +09:00
19
19
  default_executable: unit-hosting
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- type: :development
23
- name: shoulda
22
+ type: :runtime
23
+ name: mutter
24
24
  version_requirements: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
@@ -32,10 +32,119 @@ dependencies:
32
32
  version: "0"
33
33
  prerelease: false
34
34
  requirement: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ type: :runtime
37
+ name: keystorage
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">"
42
+ - !ruby/object:Gem::Version
43
+ hash: 9
44
+ segments:
45
+ - 0
46
+ - 1
47
+ version: "0.1"
48
+ prerelease: false
49
+ requirement: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ type: :runtime
52
+ name: mechanize
53
+ version_requirements: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 23
59
+ segments:
60
+ - 1
61
+ - 0
62
+ - 0
63
+ version: 1.0.0
64
+ prerelease: false
65
+ requirement: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ type: :runtime
68
+ name: highline
69
+ version_requirements: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ">"
73
+ - !ruby/object:Gem::Version
74
+ hash: 3
75
+ segments:
76
+ - 1
77
+ - 6
78
+ version: "1.6"
79
+ prerelease: false
80
+ requirement: *id004
81
+ - !ruby/object:Gem::Dependency
82
+ type: :runtime
83
+ name: progressbar
84
+ version_requirements: &id005 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ hash: 59
90
+ segments:
91
+ - 0
92
+ - 9
93
+ - 0
94
+ version: 0.9.0
95
+ prerelease: false
96
+ requirement: *id005
97
+ - !ruby/object:Gem::Dependency
98
+ type: :runtime
99
+ name: httpclient
100
+ version_requirements: &id006 !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ hash: 125
106
+ segments:
107
+ - 2
108
+ - 1
109
+ - 6
110
+ - 1
111
+ version: 2.1.6.1
112
+ prerelease: false
113
+ requirement: *id006
114
+ - !ruby/object:Gem::Dependency
115
+ type: :runtime
116
+ name: command-line-utils
117
+ version_requirements: &id007 !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ hash: 29
123
+ segments:
124
+ - 0
125
+ - 0
126
+ - 1
127
+ version: 0.0.1
128
+ prerelease: false
129
+ requirement: *id007
130
+ - !ruby/object:Gem::Dependency
131
+ type: :development
132
+ name: shoulda
133
+ version_requirements: &id008 !ruby/object:Gem::Requirement
134
+ none: false
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ hash: 3
139
+ segments:
140
+ - 0
141
+ version: "0"
142
+ prerelease: false
143
+ requirement: *id008
35
144
  - !ruby/object:Gem::Dependency
36
145
  type: :development
37
146
  name: bundler
38
- version_requirements: &id002 !ruby/object:Gem::Requirement
147
+ version_requirements: &id009 !ruby/object:Gem::Requirement
39
148
  none: false
40
149
  requirements:
41
150
  - - ~>
@@ -47,11 +156,11 @@ dependencies:
47
156
  - 0
48
157
  version: 1.0.0
49
158
  prerelease: false
50
- requirement: *id002
159
+ requirement: *id009
51
160
  - !ruby/object:Gem::Dependency
52
161
  type: :development
53
162
  name: jeweler
54
- version_requirements: &id003 !ruby/object:Gem::Requirement
163
+ version_requirements: &id010 !ruby/object:Gem::Requirement
55
164
  none: false
56
165
  requirements:
57
166
  - - ~>
@@ -63,11 +172,11 @@ dependencies:
63
172
  - 2
64
173
  version: 1.5.2
65
174
  prerelease: false
66
- requirement: *id003
175
+ requirement: *id010
67
176
  - !ruby/object:Gem::Dependency
68
177
  type: :development
69
178
  name: rcov
70
- version_requirements: &id004 !ruby/object:Gem::Requirement
179
+ version_requirements: &id011 !ruby/object:Gem::Requirement
71
180
  none: false
72
181
  requirements:
73
182
  - - ">="
@@ -77,7 +186,7 @@ dependencies:
77
186
  - 0
78
187
  version: "0"
79
188
  prerelease: false
80
- requirement: *id004
189
+ requirement: *id011
81
190
  description: This is a command to manage virtual servers on UnitHosting(http://www.unit-hosting.com).
82
191
  email: y.takahara@gmail.com
83
192
  executables:
@@ -89,6 +198,7 @@ extra_rdoc_files:
89
198
  - README.rdoc
90
199
  files:
91
200
  - Gemfile
201
+ - Gemfile.lock
92
202
  - LICENSE.txt
93
203
  - README.rdoc
94
204
  - Rakefile
@@ -96,10 +206,18 @@ files:
96
206
  - bin/unit-hosting
97
207
  - lib/unit-hosting.rb
98
208
  - lib/unit-hosting/agent.rb
209
+ - lib/unit-hosting/api.rb
210
+ - lib/unit-hosting/api/base.rb
211
+ - lib/unit-hosting/api/vm.rb
212
+ - lib/unit-hosting/api/vm_group.rb
213
+ - lib/unit-hosting/api/vm_recipe.rb
214
+ - lib/unit-hosting/cache.rb
99
215
  - lib/unit-hosting/cli.rb
100
216
  - lib/unit-hosting/commands.rb
217
+ - lib/unit-hosting/group.rb
101
218
  - test/helper.rb
102
219
  - test/test_unit-hosting.rb
220
+ - unit-hosting.gemspec
103
221
  has_rdoc: true
104
222
  homepage: http://github.com/tumf/unit-hosting
105
223
  licenses: