solusvm 0.3.3 → 0.4.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.
Files changed (6) hide show
  1. data/README.rdoc +35 -3
  2. data/Rakefile +5 -0
  3. data/VERSION.yml +3 -3
  4. data/bin/solusvm +119 -0
  5. data/solusvm.gemspec +6 -2
  6. metadata +10 -9
data/README.rdoc CHANGED
@@ -1,6 +1,38 @@
1
- = solusvm
1
+ = Solusvm
2
2
 
3
- Description goes here.
3
+ Solusvm allows for easy interaction with the SolusVM Admin::API.
4
+
5
+ This library was first created for internal use at {Site5 LLC}[http://www.site5.com].
6
+
7
+ == Basic Examples
8
+
9
+ Solusvm.config('api_id', 'api_password', :url => 'http://www.example.com/api')
10
+ server = Solusvm::Server.new
11
+
12
+ # 200 is the id of the virtual server
13
+ server.shutdown(200) # => true
14
+ server.boot(200) # => true
15
+ server.reboot(200) # => true
16
+ server.suspend(200) # => true
17
+ server.resume(200) # => true
18
+
19
+ == Server creation
20
+ options = {:type => 'xen', :username => 'bob', :node => 'node1', :plan => 'plan1', :template => 'mytpl', :ips => 1}
21
+ result = sever.create('server.hostname.com', 'password', options}
22
+ p server.successful?
23
+ => true
24
+
25
+ p result
26
+ => {"mainipaddress"=>"127.0.0.1", "consoleuser"=>"console-user", "vserverid"=>"10",
27
+ "statusmsg"=>"Virtual server created", "virtid"=>"vm10", "consolepassword"=>"myPassisL33t",
28
+ "extraipaddress"=>{}, "hostname"=>"server.hostname", "rootpassword"=>"password", "status"=>"success"}
29
+
30
+
31
+ == REQUIREMENTS:
32
+ * xml-simple
33
+
34
+ == INSTALL:
35
+ * gem install solusvm
4
36
 
5
37
  == Note on Patches/Pull Requests
6
38
 
@@ -14,4 +46,4 @@ Description goes here.
14
46
 
15
47
  == Copyright
16
48
 
17
- Copyright (c) 2010 Justin Mazzi. See LICENSE for details.
49
+ Copyright (c) 2010 Site5. See LICENSE for details.
data/Rakefile CHANGED
@@ -11,8 +11,13 @@ begin
11
11
  gem.homepage = "http://github.com/site5/solusvm"
12
12
  gem.authors = ["Justin Mazzi"]
13
13
  gem.add_dependency 'xml-simple'
14
+ gem.rubyforge_project = 'solusvm'
14
15
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
16
  end
17
+
18
+ Jeweler::RubyforgeTasks.new do |rubyforge|
19
+ rubyforge.doc_task = "rdoc"
20
+ end
16
21
  Jeweler::GemcutterTasks.new
17
22
  rescue LoadError
18
23
  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- :minor: 3
3
- :build:
4
- :patch: 3
5
2
  :major: 0
3
+ :build:
4
+ :minor: 4
5
+ :patch: 0
data/bin/solusvm ADDED
@@ -0,0 +1,119 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "optparse"
4
+ require "pp"
5
+ require "yaml"
6
+
7
+ $:.unshift(File.join(File.dirname(__FILE__), "/../lib"))
8
+ require "solusvm"
9
+
10
+ opts = {}
11
+ shell_methods = {}
12
+ shell_methods['server-create'] = "<hostname> <password> -t myimag -k xen -p myplan -i 1"
13
+ shell_methods['server-boot'] = "<vserverid>"
14
+ shell_methods['server-reboot'] = "<vserverid>"
15
+ shell_methods['server-shutdown'] = "<vserverid>"
16
+ shell_methods['server-suspend'] = "<vserverid>"
17
+ shell_methods['server-resume'] = "<vserverid>"
18
+ shell_methods['server-status'] = "<vserverid>"
19
+ shell_methods['server-addip'] = "<vserverid>"
20
+ shell_methods['server-changeplan'] = "<vserverid> <newplan>"
21
+ shell_methods['server-check-exists'] = "<vserverid>"
22
+
23
+ OptionParser.new do |o|
24
+ o.banner = "USAGE: #{$0} <command> [options]"
25
+ o.on("-I", "--api-login [id]", "API ID: ") do |opt|
26
+ opts[:api_id] = opt
27
+ end
28
+
29
+ o.on("-K", "--api-key [key]", "API KEY: ") do |opt|
30
+ opts[:api_key] = opt
31
+ end
32
+
33
+ o.on("-N", "--node [node]", "Node to provision on: ") do |opt|
34
+ opts[:node] = opt
35
+ end
36
+
37
+ o.on("-U", "--api-url [URL]", "URL to the API: ") do |opt|
38
+ opts[:api_url] = opt
39
+ end
40
+
41
+ o.on("-u", "--username [username]", "The client to put the VPS under: ") do |opt|
42
+ opts[:username] = opt
43
+ end
44
+
45
+ o.on("-k", "--kind [kind]", "Type of VPS (#{Solusvm::Server::VALID_SERVER_TYPES.join(',')}): ") do |opt|
46
+ opts[:kind] = opt
47
+ end
48
+
49
+ o.on("-t", "--template [template]", "VPS template to boot from: ") do |opt|
50
+ opts[:template] = opt
51
+ end
52
+
53
+ o.on("-p", "--plan [plan]", "Plan to use: ") do |opt|
54
+ opts[:plan] = opt
55
+ end
56
+
57
+ o.on("-i", "--ips [number]", "Number of ips to add to the VPS: ") do |opt|
58
+ opts[:ips] = opt.to_i
59
+ end
60
+
61
+ o.on("-h", "--help", "Show help documentation") do |h|
62
+ puts o
63
+ puts "Commands:"
64
+ puts shell_methods.collect { |k,v| " #{k} #{v}"}.join("\n")
65
+
66
+ exit
67
+ end
68
+ end.parse!
69
+
70
+ config_file = File.join(File.expand_path(ENV['HOME']), '.soulsvm.yml')
71
+ server = Solusvm::Server.new
72
+ if ARGV.empty?
73
+ STDERR.puts "USAGE: #{$0} [function] [options]"
74
+ else
75
+ if File.exists?(config_file)
76
+ config = YAML::load(File.open(config_file))
77
+ Solusvm.config(config['id'], config['key'], :url => config['url'])
78
+ opts[:username] = config['username'] unless opts[:username]
79
+ elsif opts[:api_url] && opts[:api_id] && opts[:api_key]
80
+ Solusvm.config(opts[:api_id], opts[:api_key], :url => opts[:api_url])
81
+ else
82
+ puts "Must supply the api id/key and URL"
83
+ exit
84
+ end
85
+ meth = ARGV[0].chomp
86
+ if shell_methods.include?(meth)
87
+ ARGV.shift
88
+ if ARGV.empty?
89
+ p shell_methods[meth]
90
+ exit
91
+ else
92
+ case meth
93
+ when 'server-create'
94
+ unless ARGV.size == 2
95
+ p shell_methods[meth]
96
+ exit
97
+ end
98
+ p server.create(ARGV[0], ARGV[1], :plan => opts[:plan], :ips => opts[:ips], :type => opts[:kind],
99
+ :username => opts[:username], :template => opts[:template], :node => opts[:node])
100
+ when 'server-status'
101
+ p server.status(ARGV[0])
102
+ when 'server-boot'
103
+ p server.boot(ARGV[0])
104
+ when 'server-reboot'
105
+ p server.reboot(ARGV[0])
106
+ when 'server-suspend'
107
+ p server.suspend(ARGV[0])
108
+ when 'server-resume'
109
+ p server.resume(ARGV[0])
110
+ when 'server-check-exists'
111
+ p server.exists?(ARGV[0])
112
+ when 'server-terminate'
113
+ p server.terminate(ARGV[0])
114
+ end
115
+ end
116
+ else
117
+ puts "#{meth} is not a valid function"
118
+ end
119
+ end
data/solusvm.gemspec CHANGED
@@ -5,13 +5,15 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{solusvm}
8
- s.version = "0.3.3"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Justin Mazzi"]
12
- s.date = %q{2010-06-21}
12
+ s.date = %q{2010-06-22}
13
+ s.default_executable = %q{solusvm}
13
14
  s.description = %q{Solusvm allows for easy interaction with the SolusVM Admin::API.}
14
15
  s.email = %q{jmazzi@gmail.com}
16
+ s.executables = ["solusvm"]
15
17
  s.extra_rdoc_files = [
16
18
  "LICENSE",
17
19
  "README.rdoc"
@@ -23,6 +25,7 @@ Gem::Specification.new do |s|
23
25
  "README.rdoc",
24
26
  "Rakefile",
25
27
  "VERSION.yml",
28
+ "bin/solusvm",
26
29
  "lib/solusvm.rb",
27
30
  "lib/solusvm/base.rb",
28
31
  "lib/solusvm/client.rb",
@@ -58,6 +61,7 @@ Gem::Specification.new do |s|
58
61
  s.homepage = %q{http://github.com/site5/solusvm}
59
62
  s.rdoc_options = ["--charset=UTF-8"]
60
63
  s.require_paths = ["lib"]
64
+ s.rubyforge_project = %q{solusvm}
61
65
  s.rubygems_version = %q{1.3.7}
62
66
  s.summary = %q{Wrapper for the SolusVM Admin::API}
63
67
  s.test_files = [
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solusvm
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 3
9
- - 3
10
- version: 0.3.3
8
+ - 4
9
+ - 0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Justin Mazzi
@@ -15,8 +15,8 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-06-21 00:00:00 -04:00
19
- default_executable:
18
+ date: 2010-06-22 00:00:00 -04:00
19
+ default_executable: solusvm
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: xml-simple
@@ -34,8 +34,8 @@ dependencies:
34
34
  version_requirements: *id001
35
35
  description: Solusvm allows for easy interaction with the SolusVM Admin::API.
36
36
  email: jmazzi@gmail.com
37
- executables: []
38
-
37
+ executables:
38
+ - solusvm
39
39
  extensions: []
40
40
 
41
41
  extra_rdoc_files:
@@ -48,6 +48,7 @@ files:
48
48
  - README.rdoc
49
49
  - Rakefile
50
50
  - VERSION.yml
51
+ - bin/solusvm
51
52
  - lib/solusvm.rb
52
53
  - lib/solusvm/base.rb
53
54
  - lib/solusvm/client.rb
@@ -108,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
109
  version: "0"
109
110
  requirements: []
110
111
 
111
- rubyforge_project:
112
+ rubyforge_project: solusvm
112
113
  rubygems_version: 1.3.7
113
114
  signing_key:
114
115
  specification_version: 3