abiquo-etk 0.4.25 → 0.4.29
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/Rakefile +1 -1
- data/VERSION +1 -1
- data/abiquo-etk.gemspec +5 -7
- data/abiquo-etk.spec +7 -1
- data/bin/abicli +5 -0
- data/bin/abiquo-check-16-install +1 -1
- data/bin/abiquo-initenv +136 -0
- data/lib/abicli/commands/instant-deploy.rb +72 -26
- data/lib/abicli/commands/set.rb +5 -1
- data/lib/abicli/commands/smoketest.rb +6 -6
- data/lib/abicli/commands/upload-template.rb +1 -1
- data/lib/abiquo-etk.rb +43 -23
- data/lib/checks/java.rb +3 -2
- metadata +7 -11
- data/bin/aetk-setup-rs +0 -36
- data/bin/aetk-setup-server +0 -77
- data/bin/aetk-setup-v2v +0 -33
data/Rakefile
CHANGED
|
@@ -6,7 +6,7 @@ begin
|
|
|
6
6
|
Jeweler::Tasks.new do |gem|
|
|
7
7
|
gem.name = "abiquo-etk"
|
|
8
8
|
gem.summary = %Q{Abiquo Elite Toolkit}
|
|
9
|
-
gem.description = %Q{Tools to troubleshoot your Abiquo installation}
|
|
9
|
+
gem.description = %Q{Tools to troubleshoot and manage your Abiquo installation}
|
|
10
10
|
gem.email = "srubio@abiquo.com"
|
|
11
11
|
gem.homepage = "http://github.com/abiquo/abiquo-etk"
|
|
12
12
|
gem.authors = ["Sergio Rubio"]
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.4.
|
|
1
|
+
0.4.29
|
data/abiquo-etk.gemspec
CHANGED
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{abiquo-etk}
|
|
8
|
-
s.version = "0.4.
|
|
8
|
+
s.version = "0.4.29"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Sergio Rubio"]
|
|
12
|
-
s.date = %q{2010-10-
|
|
13
|
-
s.description = %q{Tools to troubleshoot your Abiquo installation}
|
|
12
|
+
s.date = %q{2010-10-29}
|
|
13
|
+
s.description = %q{Tools to troubleshoot and manage your Abiquo installation}
|
|
14
14
|
s.email = %q{srubio@abiquo.com}
|
|
15
|
-
s.executables = ["abiquo-check-16-install", "
|
|
15
|
+
s.executables = ["abiquo-check-16-install", "abicli", "abiquo-initenv"]
|
|
16
16
|
s.extra_rdoc_files = [
|
|
17
17
|
"LICENSE",
|
|
18
18
|
"README.rdoc",
|
|
@@ -30,9 +30,7 @@ Gem::Specification.new do |s|
|
|
|
30
30
|
"abiquo-etk.spec",
|
|
31
31
|
"bin/abicli",
|
|
32
32
|
"bin/abiquo-check-16-install",
|
|
33
|
-
"bin/
|
|
34
|
-
"bin/aetk-setup-server",
|
|
35
|
-
"bin/aetk-setup-v2v",
|
|
33
|
+
"bin/abiquo-initenv",
|
|
36
34
|
"lib/abicli/commands/instant-deploy.rb",
|
|
37
35
|
"lib/abicli/commands/remote-services-settings.rb",
|
|
38
36
|
"lib/abicli/commands/server-settings.rb",
|
data/abiquo-etk.spec
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Summary: Abiquo Elite Toolkit
|
|
7
7
|
Name: rubygem-%{gemname}
|
|
8
|
-
Version: 0.4.
|
|
8
|
+
Version: 0.4.28
|
|
9
9
|
Release: 1%{?dist}
|
|
10
10
|
Group: Development/Languages
|
|
11
11
|
License: GPLv2+ or Ruby
|
|
@@ -57,6 +57,12 @@ rm -rf %{buildroot}
|
|
|
57
57
|
|
|
58
58
|
|
|
59
59
|
%changelog
|
|
60
|
+
* Fri Oct 29 2010 : Sergio Rubio <srubio@abiquo.com> - 0.4.28-1
|
|
61
|
+
- Updated to upstream 0.4.28
|
|
62
|
+
|
|
63
|
+
* Thu Oct 28 2010 : Sergio Rubio <srubio@abiquo.com> - 0.4.27-1
|
|
64
|
+
- Updated to upstream 0.4.27
|
|
65
|
+
|
|
60
66
|
* Thu Oct 25 2010 : Sergio Rubio <srubio@abiquo.com> - 0.4.22-1
|
|
61
67
|
- Updated to upstream 0.4.22
|
|
62
68
|
|
data/bin/abicli
CHANGED
|
@@ -34,6 +34,10 @@ def config_get_node(cf, path)
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def config_set_attribute(file, path, attrname, val, write_changes = false)
|
|
37
|
+
if not File.exist?(file)
|
|
38
|
+
AETK::Log.instance.error "config_set_attribute: file #{file} not found."
|
|
39
|
+
end
|
|
40
|
+
|
|
37
41
|
doc = Nokogiri::XML(File.new(file))
|
|
38
42
|
doc.root.xpath(path).first[attrname] = (val||'')
|
|
39
43
|
if write_changes
|
|
@@ -41,6 +45,7 @@ def config_set_attribute(file, path, attrname, val, write_changes = false)
|
|
|
41
45
|
f.puts doc.to_xml
|
|
42
46
|
end
|
|
43
47
|
end
|
|
48
|
+
|
|
44
49
|
return doc
|
|
45
50
|
end
|
|
46
51
|
|
data/bin/abiquo-check-16-install
CHANGED
|
@@ -72,7 +72,7 @@ class MyCLI
|
|
|
72
72
|
:long => "--debug",
|
|
73
73
|
:description => "Set the log level to debug",
|
|
74
74
|
#:required => true,
|
|
75
|
-
:proc => Proc.new { |l| Log.level = Logger::DEBUG }
|
|
75
|
+
:proc => Proc.new { |l| AETK::Log.instance.level = Logger::DEBUG }
|
|
76
76
|
|
|
77
77
|
option :print_configs,
|
|
78
78
|
:long => "--print-configs",
|
data/bin/abiquo-initenv
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'rubygems'
|
|
4
|
+
require 'abiquo-etk'
|
|
5
|
+
|
|
6
|
+
def create_schemas(user = 'root', password = '')
|
|
7
|
+
log = AETK::Log.instance
|
|
8
|
+
cmd = ''
|
|
9
|
+
if password.strip.chomp.empty?
|
|
10
|
+
cmd = "mysql -u #{user} "
|
|
11
|
+
else
|
|
12
|
+
cmd = "mysql -u #{user} -p#{password} "
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
if `#{cmd} -e 'show databases'|grep kinton`.strip.chomp.empty?
|
|
16
|
+
cib = false
|
|
17
|
+
if File.exist? '/etc/abiquo-release'
|
|
18
|
+
if File.readlines('/etc/abiquo-release').join =~ /cloud-in-a-box/
|
|
19
|
+
log.info 'Cloud in a Box profile found'
|
|
20
|
+
cib = true
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
if cib
|
|
24
|
+
out = `mysql -u root < /usr/share/doc/abiquo-16-pocsetup/cloud-in-a-box.sql`
|
|
25
|
+
if $?.exitstatus == 0
|
|
26
|
+
log.info 'cloud-in-a-box schema imported succesfully.'
|
|
27
|
+
else
|
|
28
|
+
log.error "Error importing cloud-in-a-box schema: #{out}"
|
|
29
|
+
end
|
|
30
|
+
else
|
|
31
|
+
out = `mysql -u root < /usr/share/doc/abiquo-server/database/kinton-schema.sql`
|
|
32
|
+
if $?.exitstatus == 0
|
|
33
|
+
log.info 'kinton-schema imported succesfully.'
|
|
34
|
+
else
|
|
35
|
+
log.error "Error importing kinton-schema: #{out}"
|
|
36
|
+
end
|
|
37
|
+
out = `mysql -u root < /usr/share/doc/abiquo-server/database/kinton-premium-schema.sql`
|
|
38
|
+
if $?.exitstatus == 0
|
|
39
|
+
log.info 'kinton-premium-schema imported succesfully.'
|
|
40
|
+
else
|
|
41
|
+
log.error "Error importing kinton-premium-schema: #{out}"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
else
|
|
45
|
+
log.warn 'kinton schema found. Skipping schema creation.'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def init_server_install
|
|
51
|
+
config_file ='/etc/sysconfig/abiquo-server'
|
|
52
|
+
log = AETK::Log.instance
|
|
53
|
+
|
|
54
|
+
log.info "Server install detected. Setting up the environment."
|
|
55
|
+
begin
|
|
56
|
+
if File.exist? config_file
|
|
57
|
+
@settings = abiquo_server_settings
|
|
58
|
+
else
|
|
59
|
+
log.error "Config file #{config_file} does not exist. Exit."
|
|
60
|
+
exit
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
log.info "Setting EventSink URL"
|
|
64
|
+
`abicli set event-sink-url http://#{@settings['abiquo_server_ip']}/server/EventSink`
|
|
65
|
+
|
|
66
|
+
log.info "Setting DB Properties"
|
|
67
|
+
`abicli set database-host #{@settings['abiquo_db_host']}`
|
|
68
|
+
`abicli set database-user root`
|
|
69
|
+
`abicli set database-password #{@settings['abiquo_db_password']}`
|
|
70
|
+
`abicli set mail-server 127.0.0.1`
|
|
71
|
+
|
|
72
|
+
log.info "Creating database schemas..."
|
|
73
|
+
create_schemas
|
|
74
|
+
rescue Exception => e
|
|
75
|
+
log.error "Unhandled exception: #{e.message}"
|
|
76
|
+
log.error "Unhandled exception: #{e.backtrace}"
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def init_remote_services_install
|
|
81
|
+
config_file ='/etc/sysconfig/abiquo-rs'
|
|
82
|
+
|
|
83
|
+
log = AETK::Log.instance
|
|
84
|
+
log.info "Remote Services install detected. Setting up the environment."
|
|
85
|
+
|
|
86
|
+
begin
|
|
87
|
+
@settings = {}
|
|
88
|
+
if File.exist? config_file
|
|
89
|
+
@settings = abiquo_rs_settings
|
|
90
|
+
else
|
|
91
|
+
log.error "Config file #{config_file} does not exist. Exit."
|
|
92
|
+
exit
|
|
93
|
+
end
|
|
94
|
+
repo = @settings['abiquo_nfs_repository']
|
|
95
|
+
if repo =~ /localhost|127.0.0.1/
|
|
96
|
+
if File.exist? '/etc/sysconfig/abiquo-server'
|
|
97
|
+
log.info "NFS Repository points to localhost, fixing..."
|
|
98
|
+
s = abiquo_server_settings
|
|
99
|
+
repo = s['abiquo_server_ip'] + ':/opt/vm_repository'
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
log.info "Setting nfs-repository to #{repo}"
|
|
103
|
+
`abicli set nfs-repository #{repo}`
|
|
104
|
+
log.info "Setting cifs-repository to #{repo}"
|
|
105
|
+
`abicli set cifs-repository //your-cifs-server-ip-here/opt/vm_repository`
|
|
106
|
+
|
|
107
|
+
rescue Exception => e
|
|
108
|
+
log.error "Unhandled exception: #{e.message}"
|
|
109
|
+
log.error "Unhandled exception: #{e.backtrace}"
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def init_v2v_install
|
|
114
|
+
config_file ='/etc/sysconfig/abiquo-server'
|
|
115
|
+
log = AETK::Log.instance
|
|
116
|
+
log.info "V2V install detected. Setting up the environment."
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def init_rs_plus_v2v_install
|
|
120
|
+
init_remote_services_install
|
|
121
|
+
init_v2v_install
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
AETK::Log.instance.info "Running abiquo-initenv..."
|
|
125
|
+
case AETK::System.detect_install_type
|
|
126
|
+
when :server
|
|
127
|
+
init_server_install
|
|
128
|
+
when :remote_services
|
|
129
|
+
init_remote_services_install
|
|
130
|
+
when :v2v
|
|
131
|
+
init_v2v_install
|
|
132
|
+
when :rs_plus_v2v
|
|
133
|
+
init_rs_plus_v2v_install
|
|
134
|
+
else
|
|
135
|
+
AETK::Log.instance.error "Couldn't detect install type. Skipping first setup."
|
|
136
|
+
end
|
|
@@ -16,6 +16,18 @@ if ARGV[0] == 'instant-deploy'
|
|
|
16
16
|
require 'uri'
|
|
17
17
|
require 'fileutils'
|
|
18
18
|
|
|
19
|
+
class SystemCommands
|
|
20
|
+
|
|
21
|
+
def self.kvm=(path)
|
|
22
|
+
@@kvm = path
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def self.kvm
|
|
26
|
+
@@kvm
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
19
31
|
class HTTPDownloader
|
|
20
32
|
def self.match?(uri)
|
|
21
33
|
# URI.parse barfs on '<drive letter>:\\files \on\ windows'
|
|
@@ -90,8 +102,18 @@ if ARGV[0] == 'instant-deploy'
|
|
|
90
102
|
|
|
91
103
|
option :tomcat_port,
|
|
92
104
|
:long => '--tomcat-port PORT',
|
|
93
|
-
:description => 'Forwarded Tomcat port (Default 8980',
|
|
105
|
+
:description => 'Forwarded Tomcat port (Default 8980)',
|
|
94
106
|
:default => '8980'
|
|
107
|
+
|
|
108
|
+
option :vnc,
|
|
109
|
+
:long => '--vnc',
|
|
110
|
+
:description => 'Use VNC instead of SDL/Graphical display',
|
|
111
|
+
:default => false
|
|
112
|
+
|
|
113
|
+
option :vnc_display,
|
|
114
|
+
:long => '--vnc-display DISP',
|
|
115
|
+
:description => 'Use VNC display DISP',
|
|
116
|
+
:default => 0
|
|
95
117
|
|
|
96
118
|
option :help,
|
|
97
119
|
:short => "-h",
|
|
@@ -103,28 +125,55 @@ if ARGV[0] == 'instant-deploy'
|
|
|
103
125
|
:exit => 0
|
|
104
126
|
end
|
|
105
127
|
|
|
106
|
-
def
|
|
128
|
+
def pfcheck_ubuntu
|
|
129
|
+
if (File.read('/etc/lsb-release') !~ /DISTRIB_ID=Ubuntu/)
|
|
130
|
+
$stderr.puts "\nUbuntu not found. Your distribution is not supported.\n\n"
|
|
131
|
+
exit
|
|
132
|
+
end
|
|
133
|
+
|
|
107
134
|
#
|
|
108
|
-
# Check if
|
|
135
|
+
# Check if KVM installed
|
|
109
136
|
#
|
|
110
|
-
if
|
|
111
|
-
$stderr.puts "\
|
|
137
|
+
if `which /usr/bin/kvm`.strip.chomp.empty?
|
|
138
|
+
$stderr.puts "\nKVM not found. Install it first:\n\n"
|
|
139
|
+
$stderr.puts "sudo apt-get install kvm\n\n"
|
|
112
140
|
exit
|
|
113
141
|
end
|
|
114
|
-
|
|
115
|
-
|
|
142
|
+
|
|
143
|
+
SystemCommands.kvm = '/usr/bin/kvm'
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def pfcheck_redhat
|
|
147
|
+
if File.read('/etc/redhat-release') !~ /^(FrameOS|CentOS)/
|
|
148
|
+
$stderr.puts "\nRHEL not found. Your distribution is not supported.\n\n"
|
|
116
149
|
exit
|
|
117
150
|
end
|
|
118
|
-
|
|
151
|
+
|
|
119
152
|
#
|
|
120
153
|
# Check if KVM installed
|
|
121
154
|
#
|
|
122
|
-
if `which /usr/
|
|
155
|
+
if `which /usr/libexec/qemu-kvm`.strip.chomp.empty?
|
|
123
156
|
$stderr.puts "\nKVM not found. Install it first:\n\n"
|
|
124
|
-
$stderr.puts "
|
|
157
|
+
$stderr.puts "yum install kvm\n\n"
|
|
125
158
|
exit
|
|
126
159
|
end
|
|
127
160
|
|
|
161
|
+
SystemCommands.kvm = '/usr/libexec/qemu-kvm'
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def preflight_check
|
|
165
|
+
#
|
|
166
|
+
# Check if this is Ubuntu
|
|
167
|
+
#
|
|
168
|
+
if File.exist?('/etc/lsb-release')
|
|
169
|
+
pfcheck_ubuntu
|
|
170
|
+
elsif File.exist?('/etc/redhat-release')
|
|
171
|
+
pfcheck_redhat
|
|
172
|
+
else
|
|
173
|
+
$stderr.puts "\nOnly Ubuntu and RHEL distributions are supported.\n\n"
|
|
174
|
+
exit
|
|
175
|
+
end
|
|
176
|
+
|
|
128
177
|
#
|
|
129
178
|
# Check if qemu-img installed
|
|
130
179
|
#
|
|
@@ -142,6 +191,10 @@ if ARGV[0] == 'instant-deploy'
|
|
|
142
191
|
mem = params[:mem]
|
|
143
192
|
tomcat_port = params[:tomcat_port]
|
|
144
193
|
ssh_port = params[:ssh_port]
|
|
194
|
+
graphics = ''
|
|
195
|
+
if params[:vnc]
|
|
196
|
+
graphics = "--vnc :#{params[:vnc_display]}"
|
|
197
|
+
end
|
|
145
198
|
# Create target directory
|
|
146
199
|
begin
|
|
147
200
|
FileUtils.mkdir(target_dir)
|
|
@@ -196,16 +249,19 @@ if ARGV[0] == 'instant-deploy'
|
|
|
196
249
|
f.puts "MEM=#{mem}"
|
|
197
250
|
f.puts "TAP=vtap0"
|
|
198
251
|
f.puts ""
|
|
199
|
-
f.puts "kvm
|
|
252
|
+
f.puts "#{SystemCommands.kvm} #{graphics} -m $MEM -drive file=#{File.basename(disk_file)} -net user,hostfwd=tcp:0.0.0.0:#{tomcat_port}-:80,hostfwd=tcp:0.0.0.0:#{ssh_port}-:22 -net nic -boot order=c > /dev/null"
|
|
200
253
|
f.puts ""
|
|
201
254
|
f.puts "#"
|
|
202
255
|
f.puts "# Comment the above line and uncomment this to use bridged networking."
|
|
203
256
|
f.puts "# You will need to have a working bridge setup in order to use this."
|
|
204
257
|
f.puts "# Update TAP variable above to fill your needs."
|
|
205
258
|
f.puts "#"
|
|
206
|
-
f.puts "#kvm
|
|
259
|
+
f.puts "#sudo #{SystemCommands.kvm} #{graphics} -m $MEM -drive file=#{File.basename(disk_file)} -net tap,ifname=$TAP -net nic -boot order=c > /dev/null 2>&1"
|
|
260
|
+
end
|
|
261
|
+
output = `#{SystemCommands.kvm} #{graphics} -m 1024 -drive file=#{disk_file} -net user,hostfwd=tcp:0.0.0.0:#{tomcat_port}-:80,hostfwd=tcp:0.0.0.0:#{ssh_port}-:22 -net nic -drive file=#{cdrom},media=cdrom -boot order=cd -boot once=d 2>&1 `
|
|
262
|
+
if $? != 0
|
|
263
|
+
puts "Error booting the VM: #{output}"
|
|
207
264
|
end
|
|
208
|
-
boot_vm :disk_file => disk_file, :cdrom => cdrom, :mem => mem, :tomcat_port => tomcat_port, :ssh_port => ssh_port
|
|
209
265
|
end
|
|
210
266
|
|
|
211
267
|
def distribution_version
|
|
@@ -214,18 +270,6 @@ if ARGV[0] == 'instant-deploy'
|
|
|
214
270
|
version
|
|
215
271
|
end
|
|
216
272
|
|
|
217
|
-
def boot_vm(params = {})
|
|
218
|
-
disk_file = params[:disk_file]
|
|
219
|
-
cdrom = params[:cdrom]
|
|
220
|
-
mem = params[:mem]
|
|
221
|
-
tomcat_port = params[:tomcat_port]
|
|
222
|
-
ssh_port = params[:ssh_port]
|
|
223
|
-
output = `kvm -m 1024 -drive file=#{disk_file} -net user,hostfwd=tcp:0.0.0.0:#{tomcat_port}-:8080,hostfwd=tcp:0.0.0.0:#{ssh_port}-:22 -net nic -drive file=#{cdrom},media=cdrom -boot order=cd -boot once=d 2>&1 `
|
|
224
|
-
if $? != 0
|
|
225
|
-
puts "Error booting the VM: #{output}"
|
|
226
|
-
end
|
|
227
|
-
end
|
|
228
|
-
|
|
229
273
|
target_dir = "abiquo-instant-deploy-#{Time.now.strftime "%s"}"
|
|
230
274
|
|
|
231
275
|
trap("INT") { puts "\n\nCleaning Environment..."; exit }
|
|
@@ -246,7 +290,9 @@ if ARGV[0] == 'instant-deploy'
|
|
|
246
290
|
puts "Building the cloud into #{target_dir.bold} directory..."
|
|
247
291
|
install_iso(:target_dir => target_dir, :iso_url => url, :mem => cli.config[:mem],
|
|
248
292
|
:tomcat_port => cli.config[:tomcat_port],
|
|
249
|
-
:ssh_port => cli.config[:ssh_port]
|
|
293
|
+
:ssh_port => cli.config[:ssh_port],
|
|
294
|
+
:vnc => cli.config[:vnc],
|
|
295
|
+
:vnc_display => cli.config[:vnc_display]
|
|
250
296
|
)
|
|
251
297
|
|
|
252
298
|
end
|
data/lib/abicli/commands/set.rb
CHANGED
|
@@ -156,7 +156,11 @@ if ARGV[0] == 'set'
|
|
|
156
156
|
exit 0
|
|
157
157
|
end
|
|
158
158
|
file = File.join(ABIQUO_BASE_DIR, "config/#{comp}.xml")
|
|
159
|
-
|
|
159
|
+
if not File.exist?(file)
|
|
160
|
+
AETK::Log.instance.error "File #{file} does not exist. Skip setting the property: #{path}"
|
|
161
|
+
else
|
|
162
|
+
config_set_node(file, path, val, true)
|
|
163
|
+
end
|
|
160
164
|
rescue NoMethodError => e
|
|
161
165
|
$stderr.puts e.message
|
|
162
166
|
$stderr.puts e.backtrace
|
|
@@ -24,7 +24,7 @@ if ARGV[0] == 'smoketest'
|
|
|
24
24
|
option :port,
|
|
25
25
|
:long => '--port PORT',
|
|
26
26
|
:description => 'API Server Port',
|
|
27
|
-
:default =>
|
|
27
|
+
:default => 80
|
|
28
28
|
|
|
29
29
|
option :dc_name,
|
|
30
30
|
:long => '--dc-name DCNAME',
|
|
@@ -69,11 +69,11 @@ if ARGV[0] == 'smoketest'
|
|
|
69
69
|
begin
|
|
70
70
|
puts "Creating Datacenter #{cli.config[:dc_name]} remote services..."
|
|
71
71
|
rs = dc.remoteServices
|
|
72
|
-
rs.create :type => 'VIRTUAL_FACTORY', :uri => 'http://localhost:
|
|
73
|
-
rs.create :type => 'STORAGE_SYSTEM_MONITOR', :uri => 'http://localhost:
|
|
74
|
-
rs.create :type => 'VIRTUAL_SYSTEM_MONITOR', :uri => 'http://localhost:
|
|
75
|
-
rs.create :type => 'NODE_COLLECTOR', :uri => 'http://localhost:
|
|
76
|
-
rs.create :type => 'APPLIANCE_MANAGER', :uri => 'http://localhost:
|
|
72
|
+
rs.create :type => 'VIRTUAL_FACTORY', :uri => 'http://localhost:80/virtualfactory'
|
|
73
|
+
rs.create :type => 'STORAGE_SYSTEM_MONITOR', :uri => 'http://localhost:80/ssm'
|
|
74
|
+
rs.create :type => 'VIRTUAL_SYSTEM_MONITOR', :uri => 'http://localhost:80/vsm'
|
|
75
|
+
rs.create :type => 'NODE_COLLECTOR', :uri => 'http://localhost:80/nodecollector'
|
|
76
|
+
rs.create :type => 'APPLIANCE_MANAGER', :uri => 'http://localhost:80/am'
|
|
77
77
|
rs.create :type => 'DHCP_SERVICE', :uri => 'http://localhost:7911'
|
|
78
78
|
rs.create :type => 'BPM_SERVICE', :uri => 'http://localhost:7911'
|
|
79
79
|
rescue Resourceful::UnsuccessfulHttpRequestError
|
|
@@ -194,7 +194,7 @@ if ARGV[0] == 'upload-template'
|
|
|
194
194
|
|
|
195
195
|
option :rs_url,
|
|
196
196
|
:long => '--rs-url URL',
|
|
197
|
-
:description => 'Remote Services URL (i.e. http://remote-services-ip
|
|
197
|
+
:description => 'Remote Services URL (i.e. http://remote-services-ip)'
|
|
198
198
|
|
|
199
199
|
option :debug,
|
|
200
200
|
:long => '--debug',
|
data/lib/abiquo-etk.rb
CHANGED
|
@@ -29,12 +29,6 @@ ABIQUO_NODECOLLECTOR_CONFIG = '/opt/abiquo/config/nodecollector.xml'
|
|
|
29
29
|
ABIQUO_AM_CONFIG = '/opt/abiquo/config/am.xml'
|
|
30
30
|
ABIQUO_BPMASYNC_CONFIG = '/opt/abiquo/config/bpm-async.xml'
|
|
31
31
|
|
|
32
|
-
#
|
|
33
|
-
# INIT
|
|
34
|
-
#
|
|
35
|
-
Log = Logger.new "check.log"
|
|
36
|
-
Log.level = Logger::INFO
|
|
37
|
-
|
|
38
32
|
def abiquo_edition
|
|
39
33
|
end
|
|
40
34
|
|
|
@@ -137,6 +131,15 @@ def abiquo_bpmasync_config
|
|
|
137
131
|
end
|
|
138
132
|
|
|
139
133
|
module AETK
|
|
134
|
+
|
|
135
|
+
class Log
|
|
136
|
+
|
|
137
|
+
def self.instance(file = '/var/log/abiquo-etk.log')
|
|
138
|
+
@@logger ||= Logger.new file
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
end
|
|
142
|
+
|
|
140
143
|
|
|
141
144
|
module OutputFormatters
|
|
142
145
|
|
|
@@ -147,23 +150,39 @@ module AETK
|
|
|
147
150
|
end
|
|
148
151
|
|
|
149
152
|
def detect_install_type
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
if RPMUtils.rpm_installed? 'abiquo-remote-services'
|
|
155
|
-
return :remote_services
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
if RPMUtils.rpm_installed? 'abiquo-v2v'
|
|
159
|
-
return :remote_v2v
|
|
160
|
-
end
|
|
153
|
+
AETK::System.detect_install_type
|
|
154
|
+
end
|
|
161
155
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
156
|
+
class System
|
|
157
|
+
def self.detect_install_type
|
|
158
|
+
found = ['bpm-async', 'am', 'server'].each do |dir|
|
|
159
|
+
break if not File.directory?(ABIQUO_BASE_DIR + "/tomcat/webapps/#{dir}")
|
|
160
|
+
end
|
|
161
|
+
return :monolithic if found
|
|
162
|
+
|
|
163
|
+
found = ['am', 'virtualfactory', 'bpm-async'].each do |dir|
|
|
164
|
+
break if not File.directory?(ABIQUO_BASE_DIR + "/tomcat/webapps/#{dir}")
|
|
165
|
+
end
|
|
166
|
+
return :rs_plus_v2v if found
|
|
167
|
+
|
|
168
|
+
found = ['am', 'virtualfactory'].each do |dir|
|
|
169
|
+
break if not File.directory?(ABIQUO_BASE_DIR + "/tomcat/webapps/#{dir}")
|
|
170
|
+
end
|
|
171
|
+
return :remote_services if found
|
|
172
|
+
|
|
173
|
+
found = ['server', 'api'].each do |dir|
|
|
174
|
+
break if not File.directory?(ABIQUO_BASE_DIR + "/tomcat/webapps/#{dir}")
|
|
175
|
+
end
|
|
176
|
+
return :server if found
|
|
177
|
+
|
|
178
|
+
found = ['bpm-async'].each do |dir|
|
|
179
|
+
break if not File.directory?(ABIQUO_BASE_DIR + "/tomcat/webapps/#{dir}")
|
|
180
|
+
end
|
|
181
|
+
return :v2v if found
|
|
166
182
|
|
|
183
|
+
return :unknown
|
|
184
|
+
|
|
185
|
+
end
|
|
167
186
|
end
|
|
168
187
|
|
|
169
188
|
|
|
@@ -174,9 +193,10 @@ module AETK
|
|
|
174
193
|
puts "Loading extra plugins...".yellow.bold
|
|
175
194
|
plugins.concat( Dir[extra_plugins_dir + '/*.rb'].sort )
|
|
176
195
|
end
|
|
177
|
-
|
|
196
|
+
log = Log.instance
|
|
197
|
+
if log.level == Logger::DEBUG
|
|
178
198
|
plugins.each do |p|
|
|
179
|
-
|
|
199
|
+
log.debug " #{File.basename(p,'.rb')}..."
|
|
180
200
|
end
|
|
181
201
|
end
|
|
182
202
|
plugins.each do |p|
|
data/lib/checks/java.rb
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
if abiquo_installed?
|
|
2
2
|
|
|
3
3
|
def java_ok?
|
|
4
|
+
log = AETK::Log.instance
|
|
4
5
|
if not File.exist? JAVA_BIN
|
|
5
|
-
|
|
6
|
+
log.error "Java binary not found in #{JAVA_BIN}"
|
|
6
7
|
return false
|
|
7
8
|
end
|
|
8
9
|
|
|
9
10
|
if `java -version 2>&1 | grep '64-Bit Server'`.empty?
|
|
10
|
-
|
|
11
|
+
log.error "Java 64-Bit runtime not found"
|
|
11
12
|
return false
|
|
12
13
|
end
|
|
13
14
|
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: abiquo-etk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 53
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 4
|
|
9
|
-
-
|
|
10
|
-
version: 0.4.
|
|
9
|
+
- 29
|
|
10
|
+
version: 0.4.29
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Sergio Rubio
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2010-10-
|
|
18
|
+
date: 2010-10-29 00:00:00 +02:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
@@ -78,14 +78,12 @@ dependencies:
|
|
|
78
78
|
version: "1.2"
|
|
79
79
|
type: :runtime
|
|
80
80
|
version_requirements: *id004
|
|
81
|
-
description: Tools to troubleshoot your Abiquo installation
|
|
81
|
+
description: Tools to troubleshoot and manage your Abiquo installation
|
|
82
82
|
email: srubio@abiquo.com
|
|
83
83
|
executables:
|
|
84
84
|
- abiquo-check-16-install
|
|
85
|
-
- aetk-setup-rs
|
|
86
|
-
- aetk-setup-v2v
|
|
87
85
|
- abicli
|
|
88
|
-
-
|
|
86
|
+
- abiquo-initenv
|
|
89
87
|
extensions: []
|
|
90
88
|
|
|
91
89
|
extra_rdoc_files:
|
|
@@ -104,9 +102,7 @@ files:
|
|
|
104
102
|
- abiquo-etk.spec
|
|
105
103
|
- bin/abicli
|
|
106
104
|
- bin/abiquo-check-16-install
|
|
107
|
-
- bin/
|
|
108
|
-
- bin/aetk-setup-server
|
|
109
|
-
- bin/aetk-setup-v2v
|
|
105
|
+
- bin/abiquo-initenv
|
|
110
106
|
- lib/abicli/commands/instant-deploy.rb
|
|
111
107
|
- lib/abicli/commands/remote-services-settings.rb
|
|
112
108
|
- lib/abicli/commands/server-settings.rb
|
data/bin/aetk-setup-rs
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
require 'logger'
|
|
3
|
-
require 'abiquo-etk'
|
|
4
|
-
|
|
5
|
-
CONFIG_FILE='/etc/sysconfig/abiquo-rs'
|
|
6
|
-
|
|
7
|
-
Log = Logger.new "/var/log/abiquo-etk.log"
|
|
8
|
-
Log.level = Logger::INFO
|
|
9
|
-
|
|
10
|
-
begin
|
|
11
|
-
@settings = {}
|
|
12
|
-
if File.exist? CONFIG_FILE
|
|
13
|
-
@settings = abiquo_rs_settings
|
|
14
|
-
else
|
|
15
|
-
Log.error "Config file #{CONFIG_FILE} does not exist. Exit."
|
|
16
|
-
exit
|
|
17
|
-
end
|
|
18
|
-
repo = @settings['abiquo_nfs_repository']
|
|
19
|
-
if repo =~ /localhost|127.0.0.1/
|
|
20
|
-
if File.exist? '/etc/sysconfig/abiquo-server'
|
|
21
|
-
Log.info "NFS Repository points to localhost, fixing..."
|
|
22
|
-
s = abiquo_server_settings
|
|
23
|
-
repo = s['abiquo_server_ip'] + ':/opt/vm_repository'
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
Log.info "Setting nfs-repository to #{repo}"
|
|
27
|
-
`abicli set nfs-repository #{repo}`
|
|
28
|
-
Log.info "Setting cifs-repository to #{repo}"
|
|
29
|
-
`abicli set cifs-repository //your-cifs-server-ip-here/opt/vm_repository`
|
|
30
|
-
|
|
31
|
-
rescue Exception => e
|
|
32
|
-
Log.error "Unhandled exception: #{e.message}"
|
|
33
|
-
Log.error "Unhandled exception: #{e.backtrace}"
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
|
data/bin/aetk-setup-server
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
require 'logger'
|
|
3
|
-
require 'abiquo-etk'
|
|
4
|
-
|
|
5
|
-
CONFIG_FILE='/etc/sysconfig/abiquo-server'
|
|
6
|
-
|
|
7
|
-
Log = Logger.new('/var/log/abiquo-etk.log')
|
|
8
|
-
Log.level = Logger::INFO
|
|
9
|
-
|
|
10
|
-
def create_schemas(user = 'root', password = '')
|
|
11
|
-
cmd = ''
|
|
12
|
-
if password.strip.chomp.empty?
|
|
13
|
-
cmd = "mysql -u #{user} "
|
|
14
|
-
else
|
|
15
|
-
cmd = "mysql -u #{user} -p#{password} "
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
if `#{cmd} -e 'show databases'|grep kinton`.strip.chomp.empty?
|
|
19
|
-
cib = false
|
|
20
|
-
if File.exist? '/etc/abiquo-release'
|
|
21
|
-
if File.readlines('/etc/abiquo-release').join =~ /cloud-in-a-box/
|
|
22
|
-
Log.info 'Cloud in a Box profile found'
|
|
23
|
-
cib = true
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
if cib
|
|
27
|
-
out = `mysql -u root < /usr/share/doc/abiquo-16-pocsetup/cloud-in-a-box.sql`
|
|
28
|
-
if $?.exitstatus == 0
|
|
29
|
-
Log.info 'cloud-in-a-box schema imported succesfully.'
|
|
30
|
-
else
|
|
31
|
-
Log.error "Error importing cloud-in-a-box schema: #{out}"
|
|
32
|
-
end
|
|
33
|
-
else
|
|
34
|
-
out = `mysql -u root < /usr/share/doc/abiquo-server/database/kinton-schema.sql`
|
|
35
|
-
if $?.exitstatus == 0
|
|
36
|
-
Log.info 'kinton-schema imported succesfully.'
|
|
37
|
-
else
|
|
38
|
-
Log.error "Error importing kinton-schema: #{out}"
|
|
39
|
-
end
|
|
40
|
-
out = `mysql -u root < /usr/share/doc/abiquo-server/database/kinton-premium-schema.sql`
|
|
41
|
-
if $?.exitstatus == 0
|
|
42
|
-
Log.info 'kinton-premium-schema imported succesfully.'
|
|
43
|
-
else
|
|
44
|
-
Log.error "Error importing kinton-premium-schema: #{out}"
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
else
|
|
48
|
-
Log.warn 'kinton schema found. Skipping schema creation.'
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
begin
|
|
54
|
-
if File.exist? CONFIG_FILE
|
|
55
|
-
@settings = abiquo_server_settings
|
|
56
|
-
else
|
|
57
|
-
Log.error "Config file #{CONFIG_FILE} does not exist. Exit."
|
|
58
|
-
exit
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
Log.info "Setting EventSink URL"
|
|
62
|
-
`abicli set event-sink-url http://#{@settings['abiquo_server_ip']}:8080/server/EventSink`
|
|
63
|
-
|
|
64
|
-
Log.info "Setting DB Properties"
|
|
65
|
-
`abicli set database-host #{@settings['abiquo_db_host']}`
|
|
66
|
-
`abicli set database-user root`
|
|
67
|
-
`abicli set database-password #{@settings['abiquo_db_password']}`
|
|
68
|
-
`abicli set mail-server 127.0.0.1`
|
|
69
|
-
|
|
70
|
-
Log.info "Creating database schemas..."
|
|
71
|
-
create_schemas
|
|
72
|
-
rescue Exception => e
|
|
73
|
-
Log.error "Unhandled exception: #{e.message}"
|
|
74
|
-
Log.error "Unhandled exception: #{e.backtrace}"
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
|
data/bin/aetk-setup-v2v
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
require 'logger'
|
|
3
|
-
|
|
4
|
-
CONFIG_FILE='/etc/sysconfig/abiquo-server'
|
|
5
|
-
|
|
6
|
-
Log = Logger.new('/var/log/abiquo-etk.log')
|
|
7
|
-
Log.level = Logger::INFO
|
|
8
|
-
|
|
9
|
-
begin
|
|
10
|
-
@settings = {}
|
|
11
|
-
if File.exist? CONFIG_FILE
|
|
12
|
-
File.read(CONFIG_FILE).each_line do |l|
|
|
13
|
-
next if l.strip.chomp.empty?
|
|
14
|
-
key,val = l.strip.chomp.split('=')
|
|
15
|
-
@settings[key.strip.chomp] = val.strip.chomp rescue ''
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
else
|
|
19
|
-
Log.error "Config file #{CONFIG_FILE} does not exist. Exit."
|
|
20
|
-
exit
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
Log.info "Setting db user/password in localhost bpm-async context.xml"
|
|
24
|
-
`sed -i 's/localhost/0\.0\.0\.0/' /opt/abiquo/tomcat/webapps/bpm-async/WEB-INF/classes/activemq.xml`
|
|
25
|
-
`abicli set database-host #{@settings['abiquo_db_host']}`
|
|
26
|
-
`abicli set database-user root`
|
|
27
|
-
`abicli set database-password #{@settings['abiquo_db_password']}`
|
|
28
|
-
rescue Exception => e
|
|
29
|
-
Log.error "Unhandled exception: #{e.message}"
|
|
30
|
-
Log.error "Unhandled exception: #{e.backtrace}"
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
|