sos 0.1.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.
- checksums.yaml +7 -0
- data/bin/sos +5 -0
- data/lib/sos.rb +101 -0
- data/lib/sos/openstack.rb +28 -0
- data/lib/sos/services.rb +61 -0
- metadata +50 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 64b648104b60bf1378fdc920e03d4a0a8e09a300
|
4
|
+
data.tar.gz: 288228ed48ff2d5360413ebe84b405471844d6a4
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3af67b2e6ade113668399680dbf08723ffd5f78c4cafd9035b4abca9744139051c2f9f5d68d2fee8b400fef40946c66a282556149cf012142d3c045b02bc40c5
|
7
|
+
data.tar.gz: 8eda5473276ec4f183f1c439a227d9f39c1dee0acb44e5a941a08c035b600b42d9cccf619521ceb2e2366ce2fe64869759ae684cad89b83759bd39502815307b
|
data/bin/sos
ADDED
data/lib/sos.rb
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
=begin header
|
2
|
+
* Name: os
|
3
|
+
* Description: OpenStack services and logs tool for Red Hat OSes familly
|
4
|
+
* URL: https://github.com/gildub/os
|
5
|
+
* Date: 29 Nov 2013
|
6
|
+
* Author: Gilles Dubreuil <gilles@redhat.com>
|
7
|
+
* License: Copyright 2011, 2013 Gilles Dubreuil
|
8
|
+
=end
|
9
|
+
|
10
|
+
=begin rdoc
|
11
|
+
=end
|
12
|
+
|
13
|
+
require 'os/service'
|
14
|
+
require 'os/openstack'
|
15
|
+
|
16
|
+
SYNTAX =
|
17
|
+
%s{Usage:
|
18
|
+
os [-fr] clean [<SERVICE>] ... [<SERVICE>]
|
19
|
+
os [-fr] list
|
20
|
+
os [-fr] logs [<SERVICE>] ... [<SERVICE>]
|
21
|
+
os [-fr] restart [<SERVICE>] ... [<SERVICE>]
|
22
|
+
os [-fr] start [<SERVICE>] ... [<SERVICE>]
|
23
|
+
os [-fr] satus [<SERVICE>] ... [<SERVICE>]
|
24
|
+
os [-fr] stop [<SERVICE>] ... [<SERVICE>]
|
25
|
+
os help
|
26
|
+
|
27
|
+
Options:
|
28
|
+
-r, --runlevel <RUNLEVEL> Change run-level, default is 3
|
29
|
+
-h, --help This help
|
30
|
+
|
31
|
+
Commands:
|
32
|
+
clean
|
33
|
+
list List available OpenStack services
|
34
|
+
logs Runs "tail -f"
|
35
|
+
restart Runs "service restart"
|
36
|
+
start Runs "service start"
|
37
|
+
status Runs "service status"
|
38
|
+
stop Runs "service stop"
|
39
|
+
|
40
|
+
<SERVICE> Openstack service
|
41
|
+
}
|
42
|
+
|
43
|
+
class Syntax
|
44
|
+
def initialize(line)
|
45
|
+
@command = ""
|
46
|
+
@options = {
|
47
|
+
:runlevel => 3,
|
48
|
+
:filter => '/neutron|openstack/',
|
49
|
+
:all => false }
|
50
|
+
@arguments = []
|
51
|
+
|
52
|
+
until line.empty?
|
53
|
+
case line[0]
|
54
|
+
when '-a', '--all'
|
55
|
+
@options[:all] = true
|
56
|
+
when '-f', '--filter'
|
57
|
+
line.shift
|
58
|
+
@options[:filter] = line[0]
|
59
|
+
when '-r', '--run_level'
|
60
|
+
line.shift
|
61
|
+
@options[:runlevel] = line[0].to_i
|
62
|
+
when /status/i, /start/i, /stop/i, /restart/i, /logs/i, /list/i, 'test'
|
63
|
+
@command << line[0]
|
64
|
+
line.shift
|
65
|
+
@arguments = line
|
66
|
+
break
|
67
|
+
else
|
68
|
+
self.usage
|
69
|
+
end
|
70
|
+
line.shift
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def run
|
75
|
+
@services = Services.new(@options[:filter], @options[:runlevel], OpenStack::LOGS)
|
76
|
+
|
77
|
+
case @command
|
78
|
+
when /status/i, /start/i, /stop/i, /restart/i
|
79
|
+
@services.enabled.each do |service|
|
80
|
+
system("service #{service.name} #{@command}")
|
81
|
+
end
|
82
|
+
when /logs/i
|
83
|
+
logs = ''
|
84
|
+
@services.enabled.each do |service|
|
85
|
+
logs << service.logs.join(' ') + ' '
|
86
|
+
end
|
87
|
+
exec("tail -f #{logs}") if logs
|
88
|
+
when /list/i
|
89
|
+
@services.enabled.each do |service|
|
90
|
+
puts service.name
|
91
|
+
end
|
92
|
+
when 'test'
|
93
|
+
p self
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def usage
|
98
|
+
puts SYNTAX
|
99
|
+
exit
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module OpenStack
|
2
|
+
VarLog = '/var/log/'
|
3
|
+
|
4
|
+
LOGS = {
|
5
|
+
'neutron-server' => ["#{VarLog}/neutron/server.log"],
|
6
|
+
'neutron-dhcp-agent' => ["#{VarLog}/neutron/dhcp-agent.log"],
|
7
|
+
'neutron-l3-agent' => ["#{VarLog}/neutron/l3-agent.log"],
|
8
|
+
'openstack-ceilometer-api' => ["#{VarLog}/ceilometer/api.log"],
|
9
|
+
'openstack-ceilometer-central' => ["#{VarLog}/ceilometer/central.log"],
|
10
|
+
'openstack-ceilometer-collector' => ["#{VarLog}/ceilometer/collector.log"],
|
11
|
+
'openstack-cinder-api' => ["#{VarLog}/cinder/api.log"],
|
12
|
+
'openstack-cinder-scheduler' => ["#{VarLog}/cinder/api.log"],
|
13
|
+
'openstack-cinder-volume' => ["#{VarLog}/cinder/api.log"],
|
14
|
+
'openstack-glance-api' => ["#{VarLog}/glance/api.log"],
|
15
|
+
'openstack-glance-registry' => ["#{VarLog}/glance/registry.log"],
|
16
|
+
'openstack-heat-api' => ["#{VarLog}/heat/heat-api.log"],
|
17
|
+
'openstack-heat-engine' => ["#{VarLog}/heat/heat-engine.log"],
|
18
|
+
'openstack-heat-manage' => ["#{VarLog}/heat/heat-manage.log"],
|
19
|
+
'openstack-keystone' => ["#{VarLog}/keystone/keystone.log"],
|
20
|
+
'openstack-nova-api' => ["#{VarLog}/nova/api.log"],
|
21
|
+
'openstack-nova-cert' => ["#{VarLog}/nova/cert.log"],
|
22
|
+
'openstack-nova-conductor' => ["#{VarLog}/nova/conductor.log"],
|
23
|
+
'openstack-nova-console' => ["#{VarLog}/nova/console.log"],
|
24
|
+
'openstack-nova-consoleauth' => ["#{VarLog}/nova/consoleauth.log"],
|
25
|
+
'openstack-nova-novncproxy' => [""],
|
26
|
+
'openstack-nova-scheduler' => ["#{VarLog}/nova/scheduler.log"],
|
27
|
+
}
|
28
|
+
end
|
data/lib/sos/services.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
class Service
|
2
|
+
attr_reader :name, :state, :logs
|
3
|
+
|
4
|
+
def initialize(name, state, logs)
|
5
|
+
@name = name
|
6
|
+
if state =~ /on/i
|
7
|
+
@state = true
|
8
|
+
else
|
9
|
+
@state = false
|
10
|
+
end
|
11
|
+
@logs = logs
|
12
|
+
end
|
13
|
+
|
14
|
+
def has?(filter)
|
15
|
+
true if @name =~ /#{filter}/
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_s
|
19
|
+
@name + ':' + @state
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class Services
|
24
|
+
def initialize(filter, run_level, logs)
|
25
|
+
@services = []
|
26
|
+
|
27
|
+
list = %x{chkconfig --list | awk '#{filter} {print $1":"$#{run_level+2}}'}
|
28
|
+
list.each { |line|
|
29
|
+
line_tab = line.chop.split(':')
|
30
|
+
name = line_tab[0]
|
31
|
+
state = line_tab[2]
|
32
|
+
@services << Service.new(name, state, logs[name])
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def get_by_name(filters)
|
37
|
+
list = []
|
38
|
+
filters.each { |filter|
|
39
|
+
@services.each { |service|
|
40
|
+
list << service.name if @service.has?(filter)
|
41
|
+
}
|
42
|
+
}
|
43
|
+
list
|
44
|
+
end
|
45
|
+
|
46
|
+
def get_by_name_all
|
47
|
+
list = []
|
48
|
+
@services.each { |service|
|
49
|
+
list << service.name
|
50
|
+
}
|
51
|
+
list
|
52
|
+
end
|
53
|
+
|
54
|
+
def enabled
|
55
|
+
list = []
|
56
|
+
@services.each { |service|
|
57
|
+
list << service if service.state
|
58
|
+
}
|
59
|
+
list
|
60
|
+
end
|
61
|
+
end
|
metadata
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sos
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gilles Dubreuil
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-12-04 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Easy manipulation of OpenStack services and view corresponding log files
|
14
|
+
for a specific host. Allows grouping part or all services at once.
|
15
|
+
email:
|
16
|
+
- gilles@redhat.com
|
17
|
+
executables:
|
18
|
+
- sos
|
19
|
+
extensions: []
|
20
|
+
extra_rdoc_files: []
|
21
|
+
files:
|
22
|
+
- lib/sos.rb
|
23
|
+
- lib/sos/services.rb
|
24
|
+
- lib/sos/openstack.rb
|
25
|
+
- bin/sos
|
26
|
+
homepage: https://github.com/gildub/sos
|
27
|
+
licenses:
|
28
|
+
- GNU GPLv3
|
29
|
+
metadata: {}
|
30
|
+
post_install_message:
|
31
|
+
rdoc_options: []
|
32
|
+
require_paths:
|
33
|
+
- lib
|
34
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
requirements: []
|
45
|
+
rubyforge_project:
|
46
|
+
rubygems_version: 2.0.14
|
47
|
+
signing_key:
|
48
|
+
specification_version: 4
|
49
|
+
summary: Service for OpenStack is a services and logs tool for Red Hat OS
|
50
|
+
test_files: []
|