vzlimit 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/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
|