vzlimit 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +7 -0
- data/Manifest.txt +17 -0
- data/README.rdoc +25 -0
- data/Rakefile +25 -0
- data/bin/vzlimit +10 -0
- data/config/website.yml +2 -0
- data/lib/vzlimit/cli.rb +201 -0
- data/lib/vzlimit.rb +9 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +71 -0
- data/test/test_helper.rb +3 -0
- data/test/test_vzlimit.rb +11 -0
- data/test/test_vzlimit_cli.rb +14 -0
- data/vzlimit.gemspec +49 -0
- data/website/index.html +15 -0
- metadata +135 -0
data/History.txt
ADDED
data/Manifest.txt
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
History.txt
|
2
|
+
Manifest.txt
|
3
|
+
README.rdoc
|
4
|
+
Rakefile
|
5
|
+
bin/vzlimit
|
6
|
+
config/website.yml
|
7
|
+
lib/vzlimit.rb
|
8
|
+
lib/vzlimit/cli.rb
|
9
|
+
script/console
|
10
|
+
script/destroy
|
11
|
+
script/generate
|
12
|
+
script/txt2html
|
13
|
+
test/test_helper.rb
|
14
|
+
test/test_vzlimit.rb
|
15
|
+
test/test_vzlimit_cli.rb
|
16
|
+
vzlimit.gemspec
|
17
|
+
website/index.html
|
data/README.rdoc
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
= vzlimit
|
2
|
+
|
3
|
+
* http://vzlimit.rubyforge.org/
|
4
|
+
|
5
|
+
== DESCRIPTION:
|
6
|
+
|
7
|
+
vzlimit simplifies the resource management of the virtualization system 'OpenVZ'. It allows to list all the configured limits as well as changing them in human readable/writable units.
|
8
|
+
|
9
|
+
== FEATURES/PROBLEMS:
|
10
|
+
|
11
|
+
* FIX (list of features or problems)
|
12
|
+
|
13
|
+
== SYNOPSIS:
|
14
|
+
|
15
|
+
vzlimit list
|
16
|
+
|
17
|
+
== REQUIREMENTS:
|
18
|
+
|
19
|
+
* highline
|
20
|
+
* rubyforge
|
21
|
+
* hirb
|
22
|
+
|
23
|
+
== INSTALL:
|
24
|
+
|
25
|
+
* sudo gem install vzlimit
|
data/Rakefile
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
gem 'hoe', '>= 2.1.0'
|
3
|
+
require 'hoe'
|
4
|
+
require 'fileutils'
|
5
|
+
require './lib/vzlimit'
|
6
|
+
|
7
|
+
Hoe.plugin :newgem
|
8
|
+
Hoe.plugin :website
|
9
|
+
# Hoe.plugin :cucumberfeatures
|
10
|
+
|
11
|
+
# Generate all the Rake tasks
|
12
|
+
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
13
|
+
$hoe = Hoe.spec 'vzlimit' do
|
14
|
+
self.developer 'Remo Fritzsche', 'dev@remofritzsche.com'
|
15
|
+
#self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
|
16
|
+
self.rubyforge_name = 'vzlimit' # TODO this is default value
|
17
|
+
self.extra_deps = [['highline','>= 1.5.1'], ['rubyforge','>= 2.0.3'], ['hirb', '>= 0.2.9']]
|
18
|
+
end
|
19
|
+
|
20
|
+
require 'newgem/tasks'
|
21
|
+
Dir['tasks/**/*.rake'].each { |t| load t }
|
22
|
+
|
23
|
+
# TODO - want other tests/tasks run by default? Add them to the list
|
24
|
+
# remove_task :default
|
25
|
+
# task :default => [:spec, :features]
|
data/bin/vzlimit
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Remo Fritzsche on 2010-1-30.
|
4
|
+
# Copyright (c) 2010. All rights reserved.
|
5
|
+
|
6
|
+
require 'rubygems'
|
7
|
+
require File.expand_path(File.dirname(__FILE__) + "/../lib/vzlimit")
|
8
|
+
require "vzlimit/cli"
|
9
|
+
|
10
|
+
Vzlimit::CLI.new(STDOUT, ARGV)
|
data/config/website.yml
ADDED
data/lib/vzlimit/cli.rb
ADDED
@@ -0,0 +1,201 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'highline'
|
3
|
+
require 'hirb'
|
4
|
+
|
5
|
+
module Vzlimit
|
6
|
+
class CLI
|
7
|
+
ACTIONS = [:limit, :list]
|
8
|
+
VZ_CONF_DIR = '/etc/vz/conf'
|
9
|
+
|
10
|
+
def initialize(stdout, arguments)
|
11
|
+
@stdout = stdout
|
12
|
+
@arguments = arguments
|
13
|
+
@h = HighLine.new
|
14
|
+
|
15
|
+
begin
|
16
|
+
# Check action argument
|
17
|
+
if !@arguments[0] ||! ACTIONS.include?(@arguments[0].to_sym)
|
18
|
+
usage
|
19
|
+
end
|
20
|
+
|
21
|
+
# list
|
22
|
+
if @arguments[0].to_sym == :list
|
23
|
+
list
|
24
|
+
end
|
25
|
+
|
26
|
+
# limit
|
27
|
+
if @arguments[0].to_sym == :limit
|
28
|
+
limit
|
29
|
+
end
|
30
|
+
rescue
|
31
|
+
@h.say $!
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def list
|
36
|
+
# Scan directory /etc/vz/conf/
|
37
|
+
conf_files = Dir.entries(VZ_CONF_DIR)
|
38
|
+
|
39
|
+
vps_list = []
|
40
|
+
|
41
|
+
conf_files.each do |file|
|
42
|
+
if !(file =~ /^\d\d+\.conf$/)
|
43
|
+
next;
|
44
|
+
end
|
45
|
+
|
46
|
+
vpsid = /^(\d\d+)/.match(file)[0]
|
47
|
+
conf = File.open(VZ_CONF_DIR + '/' + file, "rb").read
|
48
|
+
|
49
|
+
# Get memory limits
|
50
|
+
null, memory_soft, memory_hard = /\nPRIVVMPAGES="(\d+):(\d+)"\n/.match(conf).to_a
|
51
|
+
memory_soft = (memory_soft.to_f / 1024 * 4).to_i.to_s
|
52
|
+
memory_hard = (memory_hard.to_f / 1024 * 4).to_i.to_s
|
53
|
+
|
54
|
+
# Get diskspace limits
|
55
|
+
null, diskspace_soft, diskspace_hard = /\nDISKSPACE="(\d+):(\d+)"\n/.match(conf).to_a
|
56
|
+
diskspace_soft = (diskspace_soft.to_f / 1024).to_i.to_s
|
57
|
+
diskspace_hard = (diskspace_hard.to_f / 1024).to_i.to_s
|
58
|
+
|
59
|
+
# Get ip
|
60
|
+
ip = /\nIP_ADDRESS="(\d+\.\d+\.\d+\.\d+)"\n/.match(conf)[1]
|
61
|
+
|
62
|
+
vps_list << {
|
63
|
+
:vpsid => vpsid,
|
64
|
+
:ip => ip,
|
65
|
+
:memory_soft => @h.color(memory_soft + ' MB', :yellow),
|
66
|
+
:memory_hard => @h.color(memory_hard + ' MB', :red),
|
67
|
+
:diskspace_soft => @h.color(diskspace_soft + ' MB', :yellow),
|
68
|
+
:diskspace_hard => @h.color(diskspace_hard + ' MB', :red)
|
69
|
+
}
|
70
|
+
|
71
|
+
#vps_list << [
|
72
|
+
# vpsid + "e[32mDONEe[0m",
|
73
|
+
# ip,
|
74
|
+
# memory_soft,
|
75
|
+
# memory_hard,
|
76
|
+
# diskspace_soft,
|
77
|
+
# diskspace_hard
|
78
|
+
#]
|
79
|
+
end
|
80
|
+
|
81
|
+
#@h.say Hirb::Helpers::Table.render(vps_list,
|
82
|
+
# :fields => [:vpsid, :ip, :memory_soft, :memory_hard, :diskspace_soft, :diskspace_hard],
|
83
|
+
# :headers => {:vpsid => 'CTID', :ip => 'IP', :memory_soft => 'MEMORY SOFT LIMIT', :memory_hard => 'MEMORY HARD LIMIT', :diskspace_soft => 'DISKSPACE SOFT LIMIT', :diskspace_hard => 'DISKSPACE HARD LIMIT'}
|
84
|
+
#)
|
85
|
+
HighLine.use_color=false
|
86
|
+
|
87
|
+
@h.say sprintf("%-8s\t%-15s\t%-20s\t%-20s\t%-20s\t%-20s", 'CTID', 'IP', 'MEMORY SOFT LIMIT', 'MEMORY HARD LIMIT', 'DISKSPACE SOFT LIMIT', 'DISKSPACE HARD LIMIT') + "\n"
|
88
|
+
@h.say sprintf("%-8s\t%-15s\t%-17s\t%-17s\t%-20s\t%-20s", '='*8, '='*15, '='*17, '='*17, '='*20, '='*20) + "\n"
|
89
|
+
|
90
|
+
vps_list.each do |vps|
|
91
|
+
@h.say sprintf("%-8s\t%-15s\t%-17s\t\t%-17s\t\t%-20s\t\t%-20s", vps[:vpsid], vps[:ip], vps[:memory_soft], vps[:memory_hard], vps[:diskspace_soft], vps[:diskspace_hard]) + "\n"
|
92
|
+
end
|
93
|
+
|
94
|
+
#@h.say sprintf("%10sworld", "hello");
|
95
|
+
#@h.say @h.list vps_list, :columns_down
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
def limit
|
100
|
+
@arguments.shift
|
101
|
+
usage = 'Usage: vzlimit limit vpsid [options]'
|
102
|
+
raise usage unless @arguments[0]
|
103
|
+
|
104
|
+
vpsid = @arguments.shift
|
105
|
+
memory = nil
|
106
|
+
disk = nil
|
107
|
+
|
108
|
+
while (arg = @arguments.shift) do
|
109
|
+
if ['-m', '--memory'].include? arg
|
110
|
+
memory = @arguments.shift
|
111
|
+
|
112
|
+
if !(memory =~ /^[-+]?[0-9]*\.?[0-9]+:[-+]?[0-9]*\.?[0-9]+$/)
|
113
|
+
raise "Usage: vzlimit limit vpsid #{arg} soft:hard"
|
114
|
+
end
|
115
|
+
elsif ['-d', '--diskspace'].include? arg
|
116
|
+
disk = @arguments.shift
|
117
|
+
|
118
|
+
if !(disk =~ /^\d+:\d+$/)
|
119
|
+
raise "Usage: vzlimit limit vpsid #{arg} soft:hard"
|
120
|
+
end
|
121
|
+
else
|
122
|
+
raise "Argument #{arg} not valid for action limit."
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
if !memory &&! disk
|
127
|
+
raise "Nothing to set."
|
128
|
+
end
|
129
|
+
|
130
|
+
# Limit memory
|
131
|
+
limit_memory(vpsid, memory) if memory
|
132
|
+
|
133
|
+
# Limit disk space
|
134
|
+
limit_disk_space(vpsid, disk) if disk
|
135
|
+
end
|
136
|
+
|
137
|
+
def limit_memory(vpsid, memory)
|
138
|
+
# Get separate soft and hard limit
|
139
|
+
soft_mb, hard_mb = memory.split(':')
|
140
|
+
|
141
|
+
# Desaster validation
|
142
|
+
if soft_mb.to_f > hard_mb.to_f || soft_mb.to_f < 0 || hard_mb.to_f < 0
|
143
|
+
raise "Memory limits not valid."
|
144
|
+
end
|
145
|
+
|
146
|
+
# Convert MB limits to mempages
|
147
|
+
soft = (soft_mb.to_f * 1024 / 4).to_i
|
148
|
+
hard = (soft_mb.to_f * 1024 / 4).to_i
|
149
|
+
|
150
|
+
# Execute command
|
151
|
+
execute "vzctl set #{vpsid} --privvmpages #{soft}:#{hard} --save"
|
152
|
+
|
153
|
+
# Success message
|
154
|
+
@h.say @h.color "Memory limits have been set:", :green
|
155
|
+
@h.say " VPS-ID: #{vpsid}"
|
156
|
+
@h.say " Soft memory limit: #{soft_mb} MB"
|
157
|
+
@h.say " Hard memory limit: #{hard_mb} MB"
|
158
|
+
end
|
159
|
+
|
160
|
+
def limit_disk_space(vpsid, disk)
|
161
|
+
# Get separate soft and hard limit
|
162
|
+
soft_mb, hard_mb = disk.split(':')
|
163
|
+
|
164
|
+
# Desaster validation
|
165
|
+
if soft_mb.to_f > hard_mb.to_f || soft_mb.to_f < 0 || hard_mb.to_f < 0
|
166
|
+
raise "Disk limits not valid."
|
167
|
+
end
|
168
|
+
|
169
|
+
# Convert MB limits to 1K-block
|
170
|
+
soft = (soft_mb.to_f * 1024).to_i
|
171
|
+
hard = (soft_mb.to_f * 1024).to_i
|
172
|
+
|
173
|
+
# Execute command
|
174
|
+
execute "vzctl set #{vpsid} --diskspace #{soft}:#{hard} --save"
|
175
|
+
|
176
|
+
# Success message
|
177
|
+
@h.say @h.color "Diskspace limits have been set:", :green
|
178
|
+
@h.say " VPS-ID: #{vpsid}"
|
179
|
+
@h.say " Soft memory limit: #{soft_mb} MB"
|
180
|
+
@h.say " Hard memory limit: #{hard_mb} MB"
|
181
|
+
end
|
182
|
+
|
183
|
+
def execute(command)
|
184
|
+
@h.say "Will execute the following command:"
|
185
|
+
@h.say "=================================================================================="
|
186
|
+
@h.say command
|
187
|
+
@h.say "=================================================================================="
|
188
|
+
|
189
|
+
unless @h.agree @h.color("Execute this command?", :red) + " [yes/no] "
|
190
|
+
raise 'User aborted.'
|
191
|
+
end
|
192
|
+
|
193
|
+
retval = system command
|
194
|
+
raise @h.color "Error: Command execution failed, exit status #{$?}.", :red unless retval
|
195
|
+
end
|
196
|
+
|
197
|
+
def usage
|
198
|
+
@h.say "Usage: vzlimit action [params...]"
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
data/lib/vzlimit.rb
ADDED
data/script/console
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# File: script/console
|
3
|
+
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
|
+
|
5
|
+
libs = " -r irb/completion"
|
6
|
+
# Perhaps use a console_lib to store any extra methods I may want available in the cosole
|
7
|
+
# libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
|
8
|
+
libs << " -r #{File.dirname(__FILE__) + '/../lib/vzlimit.rb'}"
|
9
|
+
puts "Loading vzlimit gem"
|
10
|
+
exec "#{irb} #{libs} --simple-prompt"
|
data/script/destroy
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'rubigen'
|
6
|
+
rescue LoadError
|
7
|
+
require 'rubygems'
|
8
|
+
require 'rubigen'
|
9
|
+
end
|
10
|
+
require 'rubigen/scripts/destroy'
|
11
|
+
|
12
|
+
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
+
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
+
RubiGen::Scripts::Destroy.new.run(ARGV)
|
data/script/generate
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'rubigen'
|
6
|
+
rescue LoadError
|
7
|
+
require 'rubygems'
|
8
|
+
require 'rubigen'
|
9
|
+
end
|
10
|
+
require 'rubigen/scripts/generate'
|
11
|
+
|
12
|
+
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
+
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
+
RubiGen::Scripts::Generate.new.run(ARGV)
|
data/script/txt2html
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
load File.dirname(__FILE__) + "/../Rakefile"
|
4
|
+
require 'rubyforge'
|
5
|
+
require 'redcloth'
|
6
|
+
require 'syntax/convertors/html'
|
7
|
+
require 'erb'
|
8
|
+
|
9
|
+
download = "http://rubyforge.org/projects/#{$hoe.rubyforge_name}"
|
10
|
+
version = $hoe.version
|
11
|
+
|
12
|
+
def rubyforge_project_id
|
13
|
+
RubyForge.new.configure.autoconfig["group_ids"][$hoe.rubyforge_name]
|
14
|
+
end
|
15
|
+
|
16
|
+
class Fixnum
|
17
|
+
def ordinal
|
18
|
+
# teens
|
19
|
+
return 'th' if (10..19).include?(self % 100)
|
20
|
+
# others
|
21
|
+
case self % 10
|
22
|
+
when 1: return 'st'
|
23
|
+
when 2: return 'nd'
|
24
|
+
when 3: return 'rd'
|
25
|
+
else return 'th'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class Time
|
31
|
+
def pretty
|
32
|
+
return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def convert_syntax(syntax, source)
|
37
|
+
return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
|
38
|
+
end
|
39
|
+
|
40
|
+
if ARGV.length >= 1
|
41
|
+
src, template = ARGV
|
42
|
+
template ||= File.join(File.dirname(__FILE__), '/../website/template.html.erb')
|
43
|
+
else
|
44
|
+
puts("Usage: #{File.split($0).last} source.txt [template.html.erb] > output.html")
|
45
|
+
exit!
|
46
|
+
end
|
47
|
+
|
48
|
+
template = ERB.new(File.open(template).read)
|
49
|
+
|
50
|
+
title = nil
|
51
|
+
body = nil
|
52
|
+
File.open(src) do |fsrc|
|
53
|
+
title_text = fsrc.readline
|
54
|
+
body_text_template = fsrc.read
|
55
|
+
body_text = ERB.new(body_text_template).result(binding)
|
56
|
+
syntax_items = []
|
57
|
+
body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</\1>!m){
|
58
|
+
ident = syntax_items.length
|
59
|
+
element, syntax, source = $1, $2, $3
|
60
|
+
syntax_items << "<#{element} class='syntax'>#{convert_syntax(syntax, source)}</#{element}>"
|
61
|
+
"syntax-temp-#{ident}"
|
62
|
+
}
|
63
|
+
title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
|
64
|
+
body = RedCloth.new(body_text).to_html
|
65
|
+
body.gsub!(%r!(?:<pre><code>)?syntax-temp-(\d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
|
66
|
+
end
|
67
|
+
stat = File.stat(src)
|
68
|
+
created = stat.ctime
|
69
|
+
modified = stat.mtime
|
70
|
+
|
71
|
+
$stdout << template.result(binding)
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_helper.rb")
|
2
|
+
require 'vzlimit/cli'
|
3
|
+
|
4
|
+
class TestVzlimitCli < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
Vzlimit::CLI.execute(@stdout_io = StringIO.new, [])
|
7
|
+
@stdout_io.rewind
|
8
|
+
@stdout = @stdout_io.read
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_print_default_output
|
12
|
+
assert_match(/To update this executable/, @stdout)
|
13
|
+
end
|
14
|
+
end
|
data/vzlimit.gemspec
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{vzlimit}
|
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 = ["Remo Fritzsche"]
|
9
|
+
s.date = %q{2010-01-30}
|
10
|
+
s.default_executable = %q{vzlimit}
|
11
|
+
s.description = %q{FIX (describe your package)}
|
12
|
+
s.email = ["dev@remofritzsche.com"]
|
13
|
+
s.executables = ["vzlimit"]
|
14
|
+
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "PostInstall.txt", "website/index.txt"]
|
15
|
+
s.files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "bin/vzlimit", "config/website.yml.sample", "lib/vzlimit.rb", "lib/vzlimit/cli.rb", "script/console", "script/destroy", "script/generate", "script/txt2html", "test/test_helper.rb", "test/test_vzlimit.rb", "test/test_vzlimit_cli.rb", "website/index.html", "website/index.txt", "website/javascripts/rounded_corners_lite.inc.js", "website/stylesheets/screen.css", "website/template.html.erb"]
|
16
|
+
s.homepage = %q{http://github.com/#{github_username}/#{project_name}}
|
17
|
+
s.post_install_message = %q{PostInstall.txt}
|
18
|
+
s.rdoc_options = ["--main", "README.rdoc"]
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
s.rubyforge_project = %q{vzlimit}
|
21
|
+
s.rubygems_version = %q{1.3.5}
|
22
|
+
s.summary = %q{FIX (describe your package)}
|
23
|
+
s.test_files = ["test/test_helper.rb", "test/test_vzlimit.rb", "test/test_vzlimit_cli.rb"]
|
24
|
+
|
25
|
+
if s.respond_to? :specification_version then
|
26
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
27
|
+
s.specification_version = 3
|
28
|
+
|
29
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
30
|
+
s.add_runtime_dependency(%q<highline>, [">= 1.5.1"])
|
31
|
+
s.add_runtime_dependency(%q<rubyforge>, [">= 2.0.3"])
|
32
|
+
s.add_development_dependency(%q<rubyforge>, [">= 2.0.3"])
|
33
|
+
s.add_development_dependency(%q<gemcutter>, [">= 0.3.0"])
|
34
|
+
s.add_development_dependency(%q<hoe>, [">= 2.5.0"])
|
35
|
+
else
|
36
|
+
s.add_dependency(%q<highline>, [">= 1.5.1"])
|
37
|
+
s.add_dependency(%q<rubyforge>, [">= 2.0.3"])
|
38
|
+
s.add_dependency(%q<rubyforge>, [">= 2.0.3"])
|
39
|
+
s.add_dependency(%q<gemcutter>, [">= 0.3.0"])
|
40
|
+
s.add_dependency(%q<hoe>, [">= 2.5.0"])
|
41
|
+
end
|
42
|
+
else
|
43
|
+
s.add_dependency(%q<highline>, [">= 1.5.1"])
|
44
|
+
s.add_dependency(%q<rubyforge>, [">= 2.0.3"])
|
45
|
+
s.add_dependency(%q<rubyforge>, [">= 2.0.3"])
|
46
|
+
s.add_dependency(%q<gemcutter>, [">= 0.3.0"])
|
47
|
+
s.add_dependency(%q<hoe>, [">= 2.5.0"])
|
48
|
+
end
|
49
|
+
end
|
data/website/index.html
ADDED
metadata
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vzlimit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Remo Fritzsche
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-01-30 00:00:00 +01:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: highline
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.5.1
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rubyforge
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.0.3
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: hirb
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.2.9
|
44
|
+
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: rubyforge
|
47
|
+
type: :development
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 2.0.3
|
54
|
+
version:
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: gemcutter
|
57
|
+
type: :development
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 0.3.0
|
64
|
+
version:
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: hoe
|
67
|
+
type: :development
|
68
|
+
version_requirement:
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 2.5.0
|
74
|
+
version:
|
75
|
+
description: vzlimit simplifies the resource management of the virtualization system 'OpenVZ'. It allows to list all the configured limits as well as changing them in human readable/writable units.
|
76
|
+
email:
|
77
|
+
- dev@remofritzsche.com
|
78
|
+
executables:
|
79
|
+
- vzlimit
|
80
|
+
extensions: []
|
81
|
+
|
82
|
+
extra_rdoc_files:
|
83
|
+
- History.txt
|
84
|
+
- Manifest.txt
|
85
|
+
files:
|
86
|
+
- History.txt
|
87
|
+
- Manifest.txt
|
88
|
+
- README.rdoc
|
89
|
+
- Rakefile
|
90
|
+
- bin/vzlimit
|
91
|
+
- config/website.yml
|
92
|
+
- lib/vzlimit.rb
|
93
|
+
- lib/vzlimit/cli.rb
|
94
|
+
- script/console
|
95
|
+
- script/destroy
|
96
|
+
- script/generate
|
97
|
+
- script/txt2html
|
98
|
+
- test/test_helper.rb
|
99
|
+
- test/test_vzlimit.rb
|
100
|
+
- test/test_vzlimit_cli.rb
|
101
|
+
- vzlimit.gemspec
|
102
|
+
- website/index.html
|
103
|
+
has_rdoc: true
|
104
|
+
homepage: http://vzlimit.rubyforge.org/
|
105
|
+
licenses: []
|
106
|
+
|
107
|
+
post_install_message:
|
108
|
+
rdoc_options:
|
109
|
+
- --main
|
110
|
+
- README.rdoc
|
111
|
+
require_paths:
|
112
|
+
- lib
|
113
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: "0"
|
118
|
+
version:
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: "0"
|
124
|
+
version:
|
125
|
+
requirements: []
|
126
|
+
|
127
|
+
rubyforge_project: vzlimit
|
128
|
+
rubygems_version: 1.3.5
|
129
|
+
signing_key:
|
130
|
+
specification_version: 3
|
131
|
+
summary: vzlimit simplifies the resource management of the virtualization system 'OpenVZ'
|
132
|
+
test_files:
|
133
|
+
- test/test_helper.rb
|
134
|
+
- test/test_vzlimit.rb
|
135
|
+
- test/test_vzlimit_cli.rb
|