linux_admin 0.5.1 → 0.5.2
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.
- checksums.yaml +15 -0
- data/lib/linux_admin/command_result.rb +10 -5
- data/lib/linux_admin/common.rb +6 -5
- data/lib/linux_admin/deb.rb +39 -0
- data/lib/linux_admin/hosts.rb +1 -1
- data/lib/linux_admin/logical_volume.rb +20 -3
- data/lib/linux_admin/package.rb +18 -0
- data/lib/linux_admin/registration_system/rhn.rb +5 -0
- data/lib/linux_admin/registration_system/subscription_manager.rb +5 -0
- data/lib/linux_admin/registration_system.rb +6 -0
- data/lib/linux_admin/rpm.rb +22 -1
- data/lib/linux_admin/version.rb +1 -1
- data/lib/linux_admin/yum.rb +26 -0
- data/lib/linux_admin.rb +2 -0
- data/spec/command_result_spec.rb +13 -0
- data/spec/data/yum/output_repo_list +13 -0
- data/spec/deb_spec.rb +54 -0
- data/spec/logical_volume_spec.rb +24 -4
- data/spec/package_spec.rb +17 -0
- data/spec/rhn_spec.rb +29 -12
- data/spec/rpm_spec.rb +48 -2
- data/spec/subscription_manager_spec.rb +29 -13
- data/spec/volume_group_spec.rb +2 -2
- data/spec/yum_spec.rb +12 -0
- metadata +15 -23
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
OGNlMTBjZmY0NmY3MjcyMjlhM2FiMWM5YjM4MjZhODFiNWY3M2FmNQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NjQxOGE5NDA4ZDQ2ZDdlYWI1OGQ0MWQ2M2NiZDhkNjFmN2JmNTNhMw==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NTk5NDA1MmM1MWY2ZGZjMzViNDQ3NGI1M2FjZjEzN2ZlYTA0ODIyMGZhMWY2
|
10
|
+
NjkxMWFiOTZkM2NhYzY4ZjhlMDZlYzE5NjdkYWY3ZTc0ZTk5M2M1YzAyMzIy
|
11
|
+
MDMwYTk2MDk4NDAwMjA2MzljMWYxYmIxMDMwNjVmYzQwMjdmNWE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZmNkNzQwZjE0NTNmZGFjMGMxMzMzMTA2ZjU5OTk3YjRmZjVhZDQ1ODJkZmU2
|
14
|
+
NDcyMWNjNGVkMDJhNGIzYmFkM2ZlNWUyOTdiN2Y4YTk5MWViNDllNzg1ZDM0
|
15
|
+
Y2I4Y2JlNjRiOGQ0NzhiOGFhYmQyMjQyMTVmOTRhMDg4OTJjNjA=
|
@@ -1,9 +1,14 @@
|
|
1
1
|
class CommandResult
|
2
|
-
attr_reader :output, :error, :exit_status
|
2
|
+
attr_reader :command_line, :output, :error, :exit_status
|
3
3
|
|
4
|
-
def initialize(output, error, exit_status)
|
5
|
-
@
|
6
|
-
@
|
7
|
-
@
|
4
|
+
def initialize(command_line, output, error, exit_status)
|
5
|
+
@command_line = command_line
|
6
|
+
@output = output
|
7
|
+
@error = error
|
8
|
+
@exit_status = exit_status
|
9
|
+
end
|
10
|
+
|
11
|
+
def inspect
|
12
|
+
"#{to_s.chop} @exit_status=#{@exit_status}>"
|
8
13
|
end
|
9
14
|
end
|
data/lib/linux_admin/common.rb
CHANGED
@@ -12,12 +12,13 @@ class LinuxAdmin
|
|
12
12
|
launch_params = {}
|
13
13
|
launch_params[:chdir] = options[:chdir] if options[:chdir]
|
14
14
|
|
15
|
-
output
|
16
|
-
error
|
17
|
-
status
|
15
|
+
output = ""
|
16
|
+
error = ""
|
17
|
+
status = nil
|
18
|
+
command_line = build_cmd(cmd, params)
|
18
19
|
|
19
20
|
begin
|
20
|
-
output, error = launch(
|
21
|
+
output, error = launch(command_line, launch_params)
|
21
22
|
status = exitstatus
|
22
23
|
ensure
|
23
24
|
output ||= ""
|
@@ -28,7 +29,7 @@ class LinuxAdmin
|
|
28
29
|
raise NoSuchFileError.new(err.message) if NoSuchFileError.detected?(err.message)
|
29
30
|
raise
|
30
31
|
else
|
31
|
-
CommandResult.new(output, error, status)
|
32
|
+
CommandResult.new(command_line, output, error, status)
|
32
33
|
end
|
33
34
|
|
34
35
|
def run!(cmd, options = {})
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# LinuxAdmin Deb Representation
|
2
|
+
#
|
3
|
+
# Copyright (C) 2013 Red Hat Inc.
|
4
|
+
# Licensed under the MIT License
|
5
|
+
|
6
|
+
class LinuxAdmin
|
7
|
+
class Deb < Package
|
8
|
+
APT_CACHE_CMD = '/usr/bin/apt-cache'
|
9
|
+
|
10
|
+
def self.from_line(apt_cache_line, in_description=false)
|
11
|
+
tag,value = apt_cache_line.split(':')
|
12
|
+
tag = tag.strip.downcase
|
13
|
+
[tag, value]
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.from_string(apt_cache_string)
|
17
|
+
in_description = false
|
18
|
+
apt_cache_string.split("\n").each.with_object({}) do |line,deb|
|
19
|
+
tag,value = self.from_line(line)
|
20
|
+
if tag == 'description-en'
|
21
|
+
in_description = true
|
22
|
+
elsif tag == 'homepage'
|
23
|
+
in_description = false
|
24
|
+
end
|
25
|
+
|
26
|
+
if in_description && tag != 'description-en'
|
27
|
+
deb['description-en'] << line
|
28
|
+
else
|
29
|
+
deb[tag] = value.strip
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.info(pkg)
|
35
|
+
self.from_string(run!(APT_CACHE_CMD, :params => ["show", pkg]).output)
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
data/lib/linux_admin/hosts.rb
CHANGED
@@ -3,8 +3,15 @@
|
|
3
3
|
# Copyright (C) 2013 Red Hat Inc.
|
4
4
|
# Licensed under the MIT License
|
5
5
|
|
6
|
+
require 'pathname'
|
7
|
+
|
6
8
|
class LinuxAdmin
|
7
9
|
class LogicalVolume < Volume
|
10
|
+
DEVICE_PATH = Pathname.new('/dev/')
|
11
|
+
|
12
|
+
# path to logical volume
|
13
|
+
attr_accessor :path
|
14
|
+
|
8
15
|
# logical volume name
|
9
16
|
attr_accessor :name
|
10
17
|
|
@@ -26,10 +33,19 @@ class LinuxAdmin
|
|
26
33
|
# major device number of logical volume
|
27
34
|
# minor device number of logical volume
|
28
35
|
|
36
|
+
def path=(value)
|
37
|
+
@path = value.include?(File::SEPARATOR) ? value : DEVICE_PATH.join(@volume_group.name, value)
|
38
|
+
end
|
39
|
+
|
40
|
+
def name=(value)
|
41
|
+
@name = value.include?(File::SEPARATOR) ? value.split(File::SEPARATOR).last : value
|
42
|
+
end
|
43
|
+
|
29
44
|
def initialize(args = {})
|
30
|
-
@name = args[:name]
|
31
45
|
@volume_group = args[:volume_group]
|
32
46
|
@sectors = args[:sectors]
|
47
|
+
self.path = args[:name]
|
48
|
+
self.name = args[:name]
|
33
49
|
end
|
34
50
|
|
35
51
|
def extend_with(vg)
|
@@ -66,9 +82,10 @@ class LinuxAdmin
|
|
66
82
|
params.merge!({'-L' => bytes_to_string(size)})
|
67
83
|
end
|
68
84
|
run!(cmd(:lvcreate), :params => params)
|
69
|
-
|
85
|
+
|
86
|
+
lv = LogicalVolume.new(:name => name,
|
70
87
|
:volume_group => vg,
|
71
|
-
:sectors => size
|
88
|
+
:sectors => size)
|
72
89
|
@lvs << lv
|
73
90
|
lv
|
74
91
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# LinuxAdmin Abstract Package Representation
|
2
|
+
#
|
3
|
+
# Copyright (C) 2013 Red Hat Inc.
|
4
|
+
# Licensed under the MIT License
|
5
|
+
|
6
|
+
class LinuxAdmin
|
7
|
+
class Package < LinuxAdmin
|
8
|
+
def self.info(pkg)
|
9
|
+
if Distro.local == Distros.redhat
|
10
|
+
return Rpm.info(pkg)
|
11
|
+
elsif Distro.local == Distros.ubuntu
|
12
|
+
return Deb.info(pkg)
|
13
|
+
end
|
14
|
+
|
15
|
+
nil
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -2,6 +2,8 @@ require 'nokogiri'
|
|
2
2
|
|
3
3
|
class LinuxAdmin
|
4
4
|
class Rhn < RegistrationSystem
|
5
|
+
SATELLITE5_SERVER_CERT_PATH = "pub/rhn-org-trusted-ssl-cert-1.0-1.noarch.rpm"
|
6
|
+
|
5
7
|
def registered?
|
6
8
|
id = ""
|
7
9
|
if File.exists?(systemid_file)
|
@@ -24,10 +26,13 @@ class LinuxAdmin
|
|
24
26
|
raise ArgumentError, "activation key or username and password are required"
|
25
27
|
end
|
26
28
|
|
29
|
+
install_server_certificate(options[:server_url], SATELLITE5_SERVER_CERT_PATH) if options[:server_url]
|
30
|
+
|
27
31
|
params["--proxy="] = options[:proxy_address] if options[:proxy_address]
|
28
32
|
params["--proxyUser="] = options[:proxy_username] if options[:proxy_username]
|
29
33
|
params["--proxyPassword="] = options[:proxy_password] if options[:proxy_password]
|
30
34
|
params["--serverUrl="] = options[:server_url] if options[:server_url]
|
35
|
+
params["--systemorgid="] = options[:org] if options[:server_url] && options[:org]
|
31
36
|
|
32
37
|
run!(cmd, :params => params)
|
33
38
|
end
|
@@ -9,6 +9,8 @@ class LinuxAdmin
|
|
9
9
|
raise
|
10
10
|
end
|
11
11
|
|
12
|
+
SATELLITE6_SERVER_CERT_PATH = "pub/candlepin-cert-consumer-latest.noarch.rpm"
|
13
|
+
|
12
14
|
def validate_credentials(options)
|
13
15
|
!!organizations(options)
|
14
16
|
end
|
@@ -35,6 +37,9 @@ class LinuxAdmin
|
|
35
37
|
|
36
38
|
def register(options)
|
37
39
|
raise ArgumentError, "username and password are required" unless options[:username] && options[:password]
|
40
|
+
|
41
|
+
install_server_certificate(options[:server_url], SATELLITE6_SERVER_CERT_PATH) if options[:server_url]
|
42
|
+
|
38
43
|
cmd = "subscription-manager register"
|
39
44
|
|
40
45
|
params = {"--username=" => options[:username], "--password=" => options[:password]}
|
@@ -39,6 +39,12 @@ class LinuxAdmin
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
private_class_method :white_list_methods
|
42
|
+
|
43
|
+
def install_server_certificate(server, cert_path)
|
44
|
+
host = server.start_with?("http") ? URI.parse(server).host : server
|
45
|
+
|
46
|
+
LinuxAdmin::Rpm.upgrade("http://#{host}/#{cert_path}")
|
47
|
+
end
|
42
48
|
end
|
43
49
|
end
|
44
50
|
|
data/lib/linux_admin/rpm.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
class LinuxAdmin
|
2
|
-
class Rpm <
|
2
|
+
class Rpm < Package
|
3
|
+
RPM_CMD = '/usr/bin/rpm'
|
4
|
+
|
3
5
|
def self.list_installed
|
4
6
|
out = run!("rpm -qa --qf \"%{NAME} %{VERSION}-%{RELEASE}\n\"").output
|
5
7
|
out.split("\n").each_with_object({}) do |line, pkg_hash|
|
@@ -8,6 +10,25 @@ class LinuxAdmin
|
|
8
10
|
end
|
9
11
|
end
|
10
12
|
|
13
|
+
def self.info(pkg)
|
14
|
+
params = { "-qi" => pkg}
|
15
|
+
in_description = false
|
16
|
+
out = run!(RPM_CMD, :params => params).output
|
17
|
+
out.split("\n").each.with_object({}) do |line, rpm|
|
18
|
+
tag,value = line.split(':')
|
19
|
+
tag = tag.strip
|
20
|
+
if tag == 'Description'
|
21
|
+
in_description = true
|
22
|
+
elsif in_description
|
23
|
+
rpm['description'] ||= ""
|
24
|
+
rpm['description'] << line + " "
|
25
|
+
else
|
26
|
+
tag = tag.downcase.gsub(/\s/, '_')
|
27
|
+
rpm[tag] = value.strip
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
11
32
|
def self.upgrade(pkg)
|
12
33
|
cmd = "rpm -U"
|
13
34
|
params = { nil => pkg }
|
data/lib/linux_admin/version.rb
CHANGED
data/lib/linux_admin/yum.rb
CHANGED
@@ -72,6 +72,16 @@ class LinuxAdmin
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
+
def self.repo_list(scope = "enabled")
|
76
|
+
# Scopes could be "enabled", "all"
|
77
|
+
|
78
|
+
cmd = "yum repolist"
|
79
|
+
params = {nil => scope}
|
80
|
+
output = run!(cmd, :params => params).output
|
81
|
+
|
82
|
+
parse_repo_list_output(output)
|
83
|
+
end
|
84
|
+
|
75
85
|
private
|
76
86
|
|
77
87
|
def self.parse_repo_dir(dir)
|
@@ -88,6 +98,22 @@ class LinuxAdmin
|
|
88
98
|
int_keys.each { |k| data[k] = data[k].to_i if data.has_key?(k) }
|
89
99
|
end
|
90
100
|
end
|
101
|
+
|
102
|
+
def self.parse_repo_list_output(content)
|
103
|
+
collect_content = false
|
104
|
+
index_start = "repo id"
|
105
|
+
index_end = "repolist:"
|
106
|
+
|
107
|
+
content.split("\n").each_with_object([]) do |line, array|
|
108
|
+
collect_content = false if line.start_with?(index_end)
|
109
|
+
collect_content = true if line.start_with?(index_start)
|
110
|
+
next if line.start_with?(index_start)
|
111
|
+
next if !collect_content
|
112
|
+
|
113
|
+
repo_id, repo_name, status = line.split(/\s{2,}/)
|
114
|
+
array.push(repo_id)
|
115
|
+
end
|
116
|
+
end
|
91
117
|
end
|
92
118
|
end
|
93
119
|
|
data/lib/linux_admin.rb
CHANGED
@@ -6,7 +6,9 @@ require 'linux_admin/registration_system'
|
|
6
6
|
require 'linux_admin/common'
|
7
7
|
require 'linux_admin/exceptions'
|
8
8
|
require 'linux_admin/command_result'
|
9
|
+
require 'linux_admin/package'
|
9
10
|
require 'linux_admin/rpm'
|
11
|
+
require 'linux_admin/deb'
|
10
12
|
require 'linux_admin/version'
|
11
13
|
require 'linux_admin/yum'
|
12
14
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe CommandResult do
|
4
|
+
context "#inspect" do
|
5
|
+
it "will not display sensitive information" do
|
6
|
+
command_result = described_class.new("aaa", "bbb", "ccc", 0).inspect
|
7
|
+
|
8
|
+
expect(command_result.include?("aaa")).to be_false
|
9
|
+
expect(command_result.include?("bbb")).to be_false
|
10
|
+
expect(command_result.include?("ccc")).to be_false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Loaded plugins: product-id, rhnplugin, security, subscription-manager
|
2
|
+
This system is receiving updates from Red Hat Subscription Management.
|
3
|
+
This system is not registered with RHN Classic or RHN Satellite.
|
4
|
+
You can use rhn_register to register.
|
5
|
+
RHN Satellite or RHN Classic support will be disabled.
|
6
|
+
rhel-6-server-rpms | 3.7 kB 00:00
|
7
|
+
rhel-ha-for-rhel-6-server-rpms | 3.7 kB 00:00
|
8
|
+
rhel-lb-for-rhel-6-server-rpms | 3.7 kB 00:00
|
9
|
+
repo id repo name status
|
10
|
+
rhel-6-server-rpms Red Hat Enterprise Linux 6 Server (RPMs) 11,016
|
11
|
+
rhel-ha-for-rhel-6-server-rpms Red Hat Enterprise Linux High Availability (for RHEL 6 Server) (RPMs) 269
|
12
|
+
rhel-lb-for-rhel-6-server-rpms Red Hat Enterprise Linux Load Balancer (for RHEL 6 Server) (RPMs) 0
|
13
|
+
repolist: 11,909
|
data/spec/deb_spec.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LinuxAdmin::Deb do
|
4
|
+
describe "#info" do
|
5
|
+
it "returns package metadata" do
|
6
|
+
# as output w/ apt-cache show ruby on ubuntu 13.04
|
7
|
+
data = <<EOS
|
8
|
+
Package: ruby
|
9
|
+
Priority: optional
|
10
|
+
Section: interpreters
|
11
|
+
Installed-Size: 31
|
12
|
+
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
|
13
|
+
Original-Maintainer: akira yamada <akira@debian.org>
|
14
|
+
Architecture: all
|
15
|
+
Source: ruby-defaults
|
16
|
+
Version: 4.9
|
17
|
+
Replaces: irb, rdoc
|
18
|
+
Provides: irb, rdoc
|
19
|
+
Depends: ruby1.9.1 (>= 1.9.3.194-1)
|
20
|
+
Suggests: ri, ruby-dev
|
21
|
+
Conflicts: irb, rdoc
|
22
|
+
Filename: pool/main/r/ruby-defaults/ruby_4.9_all.deb
|
23
|
+
Size: 4896
|
24
|
+
MD5sum: b1991f2e0eafb04f5930ed242cfe1476
|
25
|
+
SHA1: a7c55fbb83dd8382631ea771b5555d989351f840
|
26
|
+
SHA256: 84d042e0273bd2f0082dd9e7dda0246267791fd09607041a35485bfff92f38d9
|
27
|
+
Description-en: Interpreter of object-oriented scripting language Ruby (default version)
|
28
|
+
Ruby is the interpreted scripting language for quick and easy
|
29
|
+
object-oriented programming. It has many features to process text
|
30
|
+
files and to do system management tasks (as in perl). It is simple,
|
31
|
+
straight-forward, and extensible.
|
32
|
+
.
|
33
|
+
This package is a dependency package, which depends on Debian's default Ruby
|
34
|
+
version (currently v1.9.3).
|
35
|
+
Homepage: http://www.ruby-lang.org/
|
36
|
+
Description-md5: da2991b37e3991230d79ba70f9c01682
|
37
|
+
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
|
38
|
+
Origin: Ubuntu
|
39
|
+
Supported: 9m
|
40
|
+
Task: kubuntu-desktop, kubuntu-full, kubuntu-active, kubuntu-active-desktop, kubuntu-active-full, kubuntu-active, edubuntu-desktop-gnome, ubuntustudio-font-meta
|
41
|
+
EOS
|
42
|
+
described_class.should_receive(:run).
|
43
|
+
with(described_class::APT_CACHE_CMD, :params => ["show", "ruby"]).
|
44
|
+
and_return(CommandResult.new("", data, "", 0))
|
45
|
+
metadata = described_class.info("ruby")
|
46
|
+
metadata['package'].should == 'ruby'
|
47
|
+
metadata['priority'].should == 'optional'
|
48
|
+
metadata['section'].should == 'interpreters'
|
49
|
+
metadata['architecture'].should == 'all'
|
50
|
+
metadata['version'].should == '4.9'
|
51
|
+
metadata['origin'].should == 'Ubuntu'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/spec/logical_volume_spec.rb
CHANGED
@@ -23,8 +23,8 @@ eos
|
|
23
23
|
|
24
24
|
describe "#extend_with" do
|
25
25
|
it "uses lvextend" do
|
26
|
-
lv = described_class.new :name => 'lv'
|
27
26
|
vg = LinuxAdmin::VolumeGroup.new :name => 'vg'
|
27
|
+
lv = described_class.new :name => 'lv', :volume_group => vg
|
28
28
|
lv.should_receive(:run!).
|
29
29
|
with(vg.cmd(:lvextend),
|
30
30
|
:params => ['lv', 'vg'])
|
@@ -32,8 +32,8 @@ eos
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it "returns self" do
|
35
|
-
lv = described_class.new :name => 'lv'
|
36
35
|
vg = LinuxAdmin::VolumeGroup.new :name => 'vg'
|
36
|
+
lv = described_class.new :name => 'lv', :volume_group => vg
|
37
37
|
lv.stub(:run!)
|
38
38
|
lv.extend_with(vg).should == lv
|
39
39
|
end
|
@@ -86,6 +86,24 @@ eos
|
|
86
86
|
lv.name.should == 'lv'
|
87
87
|
end
|
88
88
|
|
89
|
+
context "name is specified" do
|
90
|
+
it "sets path under volume group" do
|
91
|
+
LinuxAdmin::VolumeGroup.stub(:run! => double(:output => ""))
|
92
|
+
described_class.stub(:run! => double(:output => ""))
|
93
|
+
lv = described_class.create 'lv', @vg, 256.gigabytes
|
94
|
+
lv.path.to_s.should == "#{described_class::DEVICE_PATH}#{@vg.name}/lv"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
context "path is specified" do
|
99
|
+
it "sets name" do
|
100
|
+
LinuxAdmin::VolumeGroup.stub(:run! => double(:output => ""))
|
101
|
+
described_class.stub(:run! => double(:output => ""))
|
102
|
+
lv = described_class.create '/dev/lv', @vg, 256.gigabytes
|
103
|
+
lv.name.should == "lv"
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
89
107
|
it "adds logical volume to local registry" do
|
90
108
|
LinuxAdmin::VolumeGroup.stub(:run! => double(:output => ""))
|
91
109
|
described_class.stub(:run! => double(:output => ""))
|
@@ -110,11 +128,13 @@ eos
|
|
110
128
|
lvs = described_class.scan
|
111
129
|
|
112
130
|
lvs[0].should be_an_instance_of(described_class)
|
113
|
-
lvs[0].
|
131
|
+
lvs[0].path.should == '/dev/vg_foobar/lv_swap'
|
132
|
+
lvs[0].name.should == 'lv_swap'
|
114
133
|
lvs[0].sectors.should == 4128768
|
115
134
|
|
116
135
|
lvs[1].should be_an_instance_of(described_class)
|
117
|
-
lvs[1].
|
136
|
+
lvs[1].path.should == '/dev/vg_foobar/lv_root'
|
137
|
+
lvs[1].name.should == 'lv_root'
|
118
138
|
lvs[1].sectors.should == 19988480
|
119
139
|
end
|
120
140
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LinuxAdmin::Package do
|
4
|
+
describe "#info" do
|
5
|
+
it "dispatches to redhat lookup mechanism" do
|
6
|
+
LinuxAdmin::Distro.should_receive(:local).and_return(LinuxAdmin::Distros.redhat)
|
7
|
+
LinuxAdmin::Rpm.should_receive(:info).with('ruby')
|
8
|
+
described_class.info 'ruby'
|
9
|
+
end
|
10
|
+
|
11
|
+
it "dispatches to ubuntu lookup mechanism" do
|
12
|
+
LinuxAdmin::Distro.should_receive(:local).twice.and_return(LinuxAdmin::Distros.ubuntu)
|
13
|
+
LinuxAdmin::Deb.should_receive(:info).with('ruby')
|
14
|
+
described_class.info 'ruby'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/spec/rhn_spec.rb
CHANGED
@@ -23,26 +23,43 @@ describe LinuxAdmin::Rhn do
|
|
23
23
|
expect { described_class.new.register({}) }.to raise_error(ArgumentError)
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
)
|
26
|
+
context "with username and password" do
|
27
|
+
let(:base_options) { {:username => "SomeUser@SomeDomain.org",
|
28
|
+
:password => "SomePass",
|
29
|
+
:org => "2",
|
30
|
+
:proxy_address => "1.2.3.4",
|
31
|
+
:proxy_username => "ProxyUser",
|
32
|
+
:proxy_password => "ProxyPass",
|
33
|
+
}
|
34
|
+
}
|
35
|
+
let(:run_params) { {:params=>{"--username="=>"SomeUser@SomeDomain.org", "--password="=>"SomePass", "--proxy="=>"1.2.3.4", "--proxyUser="=>"ProxyUser", "--proxyPassword="=>"ProxyPass"}} }
|
36
|
+
|
37
|
+
it "with server_url" do
|
38
|
+
run_params.store_path(:params, "--systemorgid=", "2")
|
39
|
+
run_params.store_path(:params, "--serverUrl=", "https://server.url")
|
40
|
+
base_options.store_path(:server_url, "https://server.url")
|
41
|
+
|
42
|
+
described_class.any_instance.should_receive(:run!).once.with("rhnreg_ks", run_params)
|
43
|
+
LinuxAdmin::Rpm.should_receive(:upgrade).with("http://server.url/pub/rhn-org-trusted-ssl-cert-1.0-1.noarch.rpm")
|
44
|
+
|
45
|
+
described_class.new.register(base_options)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "without server_url" do
|
49
|
+
described_class.any_instance.should_receive(:run!).once.with("rhnreg_ks", run_params)
|
50
|
+
described_class.any_instance.should_not_receive(:install_server_certificate)
|
51
|
+
|
52
|
+
described_class.new.register(base_options)
|
53
|
+
end
|
36
54
|
end
|
37
55
|
|
38
56
|
it "with activation key" do
|
39
|
-
described_class.any_instance.should_receive(:run!).once.with("rhnreg_ks", {:params=>{"--activationkey="=>"123abc", "--proxy="=>"1.2.3.4", "--proxyUser="=>"ProxyUser", "--proxyPassword="=>"ProxyPass"
|
57
|
+
described_class.any_instance.should_receive(:run!).once.with("rhnreg_ks", {:params=>{"--activationkey="=>"123abc", "--proxy="=>"1.2.3.4", "--proxyUser="=>"ProxyUser", "--proxyPassword="=>"ProxyPass"}})
|
40
58
|
described_class.new.register(
|
41
59
|
:activationkey => "123abc",
|
42
60
|
:proxy_address => "1.2.3.4",
|
43
61
|
:proxy_username => "ProxyUser",
|
44
62
|
:proxy_password => "ProxyPass",
|
45
|
-
:server_url => "192.168.1.1",
|
46
63
|
)
|
47
64
|
end
|
48
65
|
end
|
data/spec/rpm_spec.rb
CHANGED
@@ -27,8 +27,54 @@ describe LinuxAdmin::Rpm do
|
|
27
27
|
})
|
28
28
|
end
|
29
29
|
|
30
|
+
describe "#info" do
|
31
|
+
it "returns package metadata" do
|
32
|
+
# as output w/ rpm -qi ruby on F19
|
33
|
+
data = <<EOS
|
34
|
+
Name : ruby
|
35
|
+
Version : 2.0.0.247
|
36
|
+
Release : 15.fc19
|
37
|
+
Architecture: x86_64
|
38
|
+
Install Date: Sat 19 Oct 2013 08:17:20 PM EDT
|
39
|
+
Group : Development/Languages
|
40
|
+
Size : 64473
|
41
|
+
License : (Ruby or BSD) and Public Domain
|
42
|
+
Signature : RSA/SHA256, Thu 01 Aug 2013 02:07:03 PM EDT, Key ID 07477e65fb4b18e6
|
43
|
+
Source RPM : ruby-2.0.0.247-15.fc19.src.rpm
|
44
|
+
Build Date : Wed 31 Jul 2013 08:26:49 AM EDT
|
45
|
+
Build Host : buildvm-16.phx2.fedoraproject.org
|
46
|
+
Relocations : (not relocatable)
|
47
|
+
Packager : Fedora Project
|
48
|
+
Vendor : Fedora Project
|
49
|
+
URL : http://ruby-lang.org/
|
50
|
+
Summary : An interpreter of object-oriented scripting language
|
51
|
+
Description :
|
52
|
+
Ruby is the interpreted scripting language for quick and easy
|
53
|
+
object-oriented programming. It has many features to process text
|
54
|
+
files and to do system management tasks (as in Perl). It is simple,
|
55
|
+
straight-forward, and extensible.
|
56
|
+
EOS
|
57
|
+
described_class.should_receive(:run).
|
58
|
+
with(described_class::RPM_CMD, :params => {"-qi" => "ruby"}).
|
59
|
+
and_return(CommandResult.new("", data, "", 0))
|
60
|
+
metadata = described_class.info("ruby")
|
61
|
+
metadata['name'].should == 'ruby'
|
62
|
+
metadata['version'].should == '2.0.0.247'
|
63
|
+
metadata['release'].should == '15.fc19'
|
64
|
+
metadata['architecture'].should == 'x86_64'
|
65
|
+
metadata['group'].should == 'Development/Languages'
|
66
|
+
metadata['size'].should == '64473'
|
67
|
+
metadata['license'].should == '(Ruby or BSD) and Public Domain'
|
68
|
+
metadata['source_rpm'].should == 'ruby-2.0.0.247-15.fc19.src.rpm'
|
69
|
+
metadata['build_host'].should == 'buildvm-16.phx2.fedoraproject.org'
|
70
|
+
metadata['packager'].should == 'Fedora Project'
|
71
|
+
metadata['vendor'].should == 'Fedora Project'
|
72
|
+
metadata['summary'].should == 'An interpreter of object-oriented scripting language'
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
30
76
|
it ".upgrade" do
|
31
|
-
described_class.should_receive(:run).with("rpm -U", {:params=>{nil=>"abc"}}).and_return(CommandResult.new("", "", 0))
|
77
|
+
described_class.should_receive(:run).with("rpm -U", {:params=>{nil=>"abc"}}).and_return(CommandResult.new("", "", "", 0))
|
32
78
|
expect(described_class.upgrade("abc")).to be_true
|
33
79
|
end
|
34
|
-
end
|
80
|
+
end
|
@@ -23,18 +23,34 @@ describe LinuxAdmin::SubscriptionManager do
|
|
23
23
|
expect { described_class.new.register }.to raise_error(ArgumentError)
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
26
|
+
context "with username and password" do
|
27
|
+
let(:base_options) { {:username => "SomeUser@SomeDomain.org",
|
28
|
+
:password => "SomePass",
|
29
|
+
:org => "IT",
|
30
|
+
:proxy_address => "1.2.3.4",
|
31
|
+
:proxy_username => "ProxyUser",
|
32
|
+
:proxy_password => "ProxyPass",
|
33
|
+
}
|
34
|
+
}
|
35
|
+
let(:run_params) { {:params=>{"--username="=>"SomeUser@SomeDomain.org", "--password="=>"SomePass", "--proxy="=>"1.2.3.4", "--proxyuser="=>"ProxyUser", "--proxypassword="=>"ProxyPass"}} }
|
36
|
+
|
37
|
+
it "with server_url" do
|
38
|
+
run_params.store_path(:params, "--org=", "IT")
|
39
|
+
run_params.store_path(:params, "--serverurl=", "https://server.url")
|
40
|
+
base_options.store_path(:server_url, "https://server.url")
|
41
|
+
|
42
|
+
described_class.any_instance.should_receive(:run!).once.with("subscription-manager register", run_params)
|
43
|
+
LinuxAdmin::Rpm.should_receive(:upgrade).with("http://server.url/pub/candlepin-cert-consumer-latest.noarch.rpm")
|
44
|
+
|
45
|
+
described_class.new.register(base_options)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "without server_url" do
|
49
|
+
described_class.any_instance.should_receive(:run!).once.with("subscription-manager register", run_params)
|
50
|
+
described_class.any_instance.should_not_receive(:install_server_certificate)
|
51
|
+
|
52
|
+
described_class.new.register(base_options)
|
53
|
+
end
|
38
54
|
end
|
39
55
|
end
|
40
56
|
|
@@ -121,7 +137,7 @@ describe LinuxAdmin::SubscriptionManager do
|
|
121
137
|
|
122
138
|
it "with invalid credentials" do
|
123
139
|
run_options = ["subscription-manager orgs", {:params=>{"--username="=>"BadUser", "--password="=>"BadPass"}}]
|
124
|
-
described_class.any_instance.should_receive(:run).once.with(*run_options).and_return(CommandResult.new("", "Invalid username or password. To create a login, please visit https://www.redhat.com/wapps/ugc/register.html", 255))
|
140
|
+
described_class.any_instance.should_receive(:run).once.with(*run_options).and_return(CommandResult.new("", "", "Invalid username or password. To create a login, please visit https://www.redhat.com/wapps/ugc/register.html", 255))
|
125
141
|
expect { described_class.new.organizations({:username=>"BadUser", :password=>"BadPass"}) }.to raise_error(LinuxAdmin::CredentialError)
|
126
142
|
end
|
127
143
|
end
|
data/spec/volume_group_spec.rb
CHANGED
@@ -18,8 +18,8 @@ eos
|
|
18
18
|
|
19
19
|
describe "#attach_to" do
|
20
20
|
it "uses lvextend" do
|
21
|
-
lv = LinuxAdmin::LogicalVolume.new :name => 'lv'
|
22
21
|
vg = described_class.new :name => 'vg'
|
22
|
+
lv = LinuxAdmin::LogicalVolume.new :name => 'lv', :volume_group => vg
|
23
23
|
vg.should_receive(:run!).
|
24
24
|
with(vg.cmd(:lvextend),
|
25
25
|
:params => ['lv', 'vg'])
|
@@ -27,8 +27,8 @@ eos
|
|
27
27
|
end
|
28
28
|
|
29
29
|
it "returns self" do
|
30
|
-
lv = LinuxAdmin::LogicalVolume.new :name => 'lv'
|
31
30
|
vg = described_class.new :name => 'vg'
|
31
|
+
lv = LinuxAdmin::LogicalVolume.new :name => 'lv', :volume_group => vg
|
32
32
|
vg.stub(:run!)
|
33
33
|
vg.attach_to(lv).should == vg
|
34
34
|
end
|
data/spec/yum_spec.rb
CHANGED
@@ -124,4 +124,16 @@ describe LinuxAdmin::Yum do
|
|
124
124
|
})
|
125
125
|
end
|
126
126
|
end
|
127
|
+
|
128
|
+
context ".repo_list" do
|
129
|
+
it "with no arguments" do
|
130
|
+
described_class.should_receive(:run!).with("yum repolist", {:params=>{nil=>"enabled"}}).and_return(double(:output => sample_output("yum/output_repo_list")))
|
131
|
+
expect(described_class.repo_list).to eq(["rhel-6-server-rpms", "rhel-ha-for-rhel-6-server-rpms", "rhel-lb-for-rhel-6-server-rpms"])
|
132
|
+
end
|
133
|
+
|
134
|
+
it "with argument" do
|
135
|
+
described_class.should_receive(:run!).with("yum repolist", {:params=>{nil=>"enabled"}}).and_return(double(:output => sample_output("yum/output_repo_list")))
|
136
|
+
expect(described_class.repo_list("enabled")).to eq(["rhel-6-server-rpms", "rhel-ha-for-rhel-6-server-rpms", "rhel-lb-for-rhel-6-server-rpms"])
|
137
|
+
end
|
138
|
+
end
|
127
139
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linux_admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
5
|
-
prerelease:
|
4
|
+
version: 0.5.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Brandon Dunne
|
@@ -12,12 +11,11 @@ authors:
|
|
12
11
|
autorequire:
|
13
12
|
bindir: bin
|
14
13
|
cert_chain: []
|
15
|
-
date: 2013-
|
14
|
+
date: 2013-11-13 00:00:00.000000000 Z
|
16
15
|
dependencies:
|
17
16
|
- !ruby/object:Gem::Dependency
|
18
17
|
name: bundler
|
19
18
|
requirement: !ruby/object:Gem::Requirement
|
20
|
-
none: false
|
21
19
|
requirements:
|
22
20
|
- - ~>
|
23
21
|
- !ruby/object:Gem::Version
|
@@ -25,7 +23,6 @@ dependencies:
|
|
25
23
|
type: :development
|
26
24
|
prerelease: false
|
27
25
|
version_requirements: !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
26
|
requirements:
|
30
27
|
- - ~>
|
31
28
|
- !ruby/object:Gem::Version
|
@@ -33,7 +30,6 @@ dependencies:
|
|
33
30
|
- !ruby/object:Gem::Dependency
|
34
31
|
name: rake
|
35
32
|
requirement: !ruby/object:Gem::Requirement
|
36
|
-
none: false
|
37
33
|
requirements:
|
38
34
|
- - ! '>='
|
39
35
|
- !ruby/object:Gem::Version
|
@@ -41,7 +37,6 @@ dependencies:
|
|
41
37
|
type: :development
|
42
38
|
prerelease: false
|
43
39
|
version_requirements: !ruby/object:Gem::Requirement
|
44
|
-
none: false
|
45
40
|
requirements:
|
46
41
|
- - ! '>='
|
47
42
|
- !ruby/object:Gem::Version
|
@@ -49,7 +44,6 @@ dependencies:
|
|
49
44
|
- !ruby/object:Gem::Dependency
|
50
45
|
name: rspec
|
51
46
|
requirement: !ruby/object:Gem::Requirement
|
52
|
-
none: false
|
53
47
|
requirements:
|
54
48
|
- - ~>
|
55
49
|
- !ruby/object:Gem::Version
|
@@ -57,7 +51,6 @@ dependencies:
|
|
57
51
|
type: :development
|
58
52
|
prerelease: false
|
59
53
|
version_requirements: !ruby/object:Gem::Requirement
|
60
|
-
none: false
|
61
54
|
requirements:
|
62
55
|
- - ~>
|
63
56
|
- !ruby/object:Gem::Version
|
@@ -65,7 +58,6 @@ dependencies:
|
|
65
58
|
- !ruby/object:Gem::Dependency
|
66
59
|
name: coveralls
|
67
60
|
requirement: !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
61
|
requirements:
|
70
62
|
- - ! '>='
|
71
63
|
- !ruby/object:Gem::Version
|
@@ -73,7 +65,6 @@ dependencies:
|
|
73
65
|
type: :development
|
74
66
|
prerelease: false
|
75
67
|
version_requirements: !ruby/object:Gem::Requirement
|
76
|
-
none: false
|
77
68
|
requirements:
|
78
69
|
- - ! '>='
|
79
70
|
- !ruby/object:Gem::Version
|
@@ -81,7 +72,6 @@ dependencies:
|
|
81
72
|
- !ruby/object:Gem::Dependency
|
82
73
|
name: activesupport
|
83
74
|
requirement: !ruby/object:Gem::Requirement
|
84
|
-
none: false
|
85
75
|
requirements:
|
86
76
|
- - <
|
87
77
|
- !ruby/object:Gem::Version
|
@@ -89,7 +79,6 @@ dependencies:
|
|
89
79
|
type: :runtime
|
90
80
|
prerelease: false
|
91
81
|
version_requirements: !ruby/object:Gem::Requirement
|
92
|
-
none: false
|
93
82
|
requirements:
|
94
83
|
- - <
|
95
84
|
- !ruby/object:Gem::Version
|
@@ -97,7 +86,6 @@ dependencies:
|
|
97
86
|
- !ruby/object:Gem::Dependency
|
98
87
|
name: inifile
|
99
88
|
requirement: !ruby/object:Gem::Requirement
|
100
|
-
none: false
|
101
89
|
requirements:
|
102
90
|
- - ~>
|
103
91
|
- !ruby/object:Gem::Version
|
@@ -105,7 +93,6 @@ dependencies:
|
|
105
93
|
type: :runtime
|
106
94
|
prerelease: false
|
107
95
|
version_requirements: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
96
|
requirements:
|
110
97
|
- - ~>
|
111
98
|
- !ruby/object:Gem::Version
|
@@ -113,7 +100,6 @@ dependencies:
|
|
113
100
|
- !ruby/object:Gem::Dependency
|
114
101
|
name: more_core_extensions
|
115
102
|
requirement: !ruby/object:Gem::Requirement
|
116
|
-
none: false
|
117
103
|
requirements:
|
118
104
|
- - ~>
|
119
105
|
- !ruby/object:Gem::Version
|
@@ -121,7 +107,6 @@ dependencies:
|
|
121
107
|
type: :runtime
|
122
108
|
prerelease: false
|
123
109
|
version_requirements: !ruby/object:Gem::Requirement
|
124
|
-
none: false
|
125
110
|
requirements:
|
126
111
|
- - ~>
|
127
112
|
- !ruby/object:Gem::Version
|
@@ -129,7 +114,6 @@ dependencies:
|
|
129
114
|
- !ruby/object:Gem::Dependency
|
130
115
|
name: nokogiri
|
131
116
|
requirement: !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
117
|
requirements:
|
134
118
|
- - ! '>='
|
135
119
|
- !ruby/object:Gem::Version
|
@@ -137,7 +121,6 @@ dependencies:
|
|
137
121
|
type: :runtime
|
138
122
|
prerelease: false
|
139
123
|
version_requirements: !ruby/object:Gem::Requirement
|
140
|
-
none: false
|
141
124
|
requirements:
|
142
125
|
- - ! '>='
|
143
126
|
- !ruby/object:Gem::Version
|
@@ -170,12 +153,14 @@ files:
|
|
170
153
|
- lib/linux_admin.rb
|
171
154
|
- lib/linux_admin/command_result.rb
|
172
155
|
- lib/linux_admin/common.rb
|
156
|
+
- lib/linux_admin/deb.rb
|
173
157
|
- lib/linux_admin/disk.rb
|
174
158
|
- lib/linux_admin/distro.rb
|
175
159
|
- lib/linux_admin/exceptions.rb
|
176
160
|
- lib/linux_admin/fstab.rb
|
177
161
|
- lib/linux_admin/hosts.rb
|
178
162
|
- lib/linux_admin/logical_volume.rb
|
163
|
+
- lib/linux_admin/package.rb
|
179
164
|
- lib/linux_admin/partition.rb
|
180
165
|
- lib/linux_admin/physical_volume.rb
|
181
166
|
- lib/linux_admin/registration_system.rb
|
@@ -190,6 +175,7 @@ files:
|
|
190
175
|
- lib/linux_admin/yum.rb
|
191
176
|
- lib/linux_admin/yum/repo_file.rb
|
192
177
|
- linux_admin.gemspec
|
178
|
+
- spec/command_result_spec.rb
|
193
179
|
- spec/common_spec.rb
|
194
180
|
- spec/data/rhn/output_rhn-channel_list
|
195
181
|
- spec/data/rhn/systemid
|
@@ -200,15 +186,18 @@ files:
|
|
200
186
|
- spec/data/subscription_manager/output_list_installed_subscribed
|
201
187
|
- spec/data/subscription_manager/output_orgs
|
202
188
|
- spec/data/yum/first.repo
|
189
|
+
- spec/data/yum/output_repo_list
|
203
190
|
- spec/data/yum/output_repoquery_multiple
|
204
191
|
- spec/data/yum/output_repoquery_single
|
205
192
|
- spec/data/yum/second.repo
|
193
|
+
- spec/deb_spec.rb
|
206
194
|
- spec/disk_spec.rb
|
207
195
|
- spec/distro_spec.rb
|
208
196
|
- spec/fstab_spec.rb
|
209
197
|
- spec/hosts_spec.rb
|
210
198
|
- spec/linux_admin_spec.rb
|
211
199
|
- spec/logical_volume_spec.rb
|
200
|
+
- spec/package_spec.rb
|
212
201
|
- spec/partition_spec.rb
|
213
202
|
- spec/physical_volume_spec.rb
|
214
203
|
- spec/registration_system_spec.rb
|
@@ -223,29 +212,29 @@ files:
|
|
223
212
|
homepage: http://github.com/ManageIQ/linux_admin
|
224
213
|
licenses:
|
225
214
|
- MIT
|
215
|
+
metadata: {}
|
226
216
|
post_install_message:
|
227
217
|
rdoc_options: []
|
228
218
|
require_paths:
|
229
219
|
- lib
|
230
220
|
required_ruby_version: !ruby/object:Gem::Requirement
|
231
|
-
none: false
|
232
221
|
requirements:
|
233
222
|
- - ! '>='
|
234
223
|
- !ruby/object:Gem::Version
|
235
224
|
version: '0'
|
236
225
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
237
|
-
none: false
|
238
226
|
requirements:
|
239
227
|
- - ! '>='
|
240
228
|
- !ruby/object:Gem::Version
|
241
229
|
version: '0'
|
242
230
|
requirements: []
|
243
231
|
rubyforge_project:
|
244
|
-
rubygems_version: 1.
|
232
|
+
rubygems_version: 2.1.10
|
245
233
|
signing_key:
|
246
|
-
specification_version:
|
234
|
+
specification_version: 4
|
247
235
|
summary: LinuxAdmin is a module to simplify management of linux systems.
|
248
236
|
test_files:
|
237
|
+
- spec/command_result_spec.rb
|
249
238
|
- spec/common_spec.rb
|
250
239
|
- spec/data/rhn/output_rhn-channel_list
|
251
240
|
- spec/data/rhn/systemid
|
@@ -256,15 +245,18 @@ test_files:
|
|
256
245
|
- spec/data/subscription_manager/output_list_installed_subscribed
|
257
246
|
- spec/data/subscription_manager/output_orgs
|
258
247
|
- spec/data/yum/first.repo
|
248
|
+
- spec/data/yum/output_repo_list
|
259
249
|
- spec/data/yum/output_repoquery_multiple
|
260
250
|
- spec/data/yum/output_repoquery_single
|
261
251
|
- spec/data/yum/second.repo
|
252
|
+
- spec/deb_spec.rb
|
262
253
|
- spec/disk_spec.rb
|
263
254
|
- spec/distro_spec.rb
|
264
255
|
- spec/fstab_spec.rb
|
265
256
|
- spec/hosts_spec.rb
|
266
257
|
- spec/linux_admin_spec.rb
|
267
258
|
- spec/logical_volume_spec.rb
|
259
|
+
- spec/package_spec.rb
|
268
260
|
- spec/partition_spec.rb
|
269
261
|
- spec/physical_volume_spec.rb
|
270
262
|
- spec/registration_system_spec.rb
|