oxidized 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ed89ca2526da5f8b5ce7d70ca01defd3f25a7496
4
- data.tar.gz: 1251b2a7d1b49ba9c8205b609b666c118cb28256
3
+ metadata.gz: c94960c6cdf5ebe4dc6910df211a29a55e3e3ecd
4
+ data.tar.gz: 9f8a27d266ac4e52519017bce1502df6b87fe802
5
5
  SHA512:
6
- metadata.gz: 2b7d1efbce64744b04a37b6dc9c8ba3614879d9f6ff119021afac2d4c6a0ad7411a47c2efe1ee4bb1ad22e777c2122146a89b9873adbe5a90eeb8b5994d7c3c2
7
- data.tar.gz: 5e9d0c55b77cb7e8306c150067e6408d1dfdd8bc10451fc8c75c56d46cf719a32b474d7cbb6cab7b5f4e9119cfc58ae040a5b93d720e92a0333eba40196ed71b
6
+ metadata.gz: 1e005677f0702e5538645a4489ec4e123dad5ffc88386dc9186053e0db6f08c0321db0df1e945b84d5bb57cecf92c750a25eb3d1b82970496c8fa423f70be083
7
+ data.tar.gz: 16b8495f91c14040ca26c7f5028250a23ffa54aa7268ea5420ced503ef9fd4027ec46e959801854f44ca03f4cee64fdbd2fa787dca4a6decc69e8e9833a24931
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/oxidized.svg)](http://badge.fury.io/rb/oxidized)
4
4
 
5
- Oxidized is a network device configuration backup tool. It's a RANCID replacment!
5
+ Oxidized is a network device configuration backup tool. It's a RANCID replacement!
6
6
 
7
7
  * automatically adds/removes threads to meet configured retrieval interval
8
8
  * restful API to move node immediately to head-of-queue (GET/POST /node/next/[NODE])
@@ -0,0 +1,12 @@
1
+ #For debian 8 put it in /lib/systemd/system/
2
+ #and call it with systemctl start oxidized.service
3
+
4
+ [Unit]
5
+ Description=Oxidized - Network Device Configuration Backup Tool
6
+
7
+ [Service]
8
+ ExecStart=/usr/local/bin/oxidized
9
+ User=root
10
+
11
+ [Install]
12
+ WantedBy=multi-user.target
@@ -24,7 +24,7 @@ module Oxidized
24
24
  @ssh = Net::SSH.start @node.ip, @node.auth[:username],
25
25
  :password => @node.auth[:password], :timeout => CFG.timeout,
26
26
  :paranoid => secure,
27
- :auth_methods => %w(none publickey password),
27
+ :auth_methods => %w(none publickey password keyboard-interactive),
28
28
  :number_of_password_prompts => 0
29
29
  unless @exec
30
30
  shell_open @ssh
@@ -25,13 +25,28 @@ class IronWare < Oxidized::Model
25
25
  end
26
26
 
27
27
  cmd 'show version' do |cfg|
28
- cfg.gsub! /(^((.*)system uptime(.*))$)/, '' #remove unwanted line system uptime
28
+ cfg.gsub! /(^((.*)[Ss]ystem uptime(.*))$)/, '' #remove unwanted line system uptime
29
+ cfg.gsub! /uptime is .*/,''
30
+
29
31
  comment cfg
30
32
  end
31
33
 
32
34
  cmd 'show chassis' do |cfg|
33
- cfg.gsub! "\xFF", '' # ugly hack - avoids JSON.dump utf-8 breakage on 1.9..
35
+ cfg.gsub! /\xFF/n, '' # ugly hack - avoids JSON.dump utf-8 breakage on 1.9..
34
36
  cfg.gsub! /(^((.*)Current temp(.*))$)/, '' #remove unwanted lines current temperature
37
+ cfg.gsub! /Speed = [A-Z]{3} \(\d{2}\%\)/, '' #remove unwanted lines Speed Fans
38
+ cfg.gsub! /current speed is [A-Z]{3} \(\d{2}\%\)/, ''
39
+ cfg.gsub! /Fan controlled temperature: \d{2}\.\d deg-C/, 'Fan controlled temperature: XX.X d deg-C'
40
+ if cfg.include? "TEMPERATURE"
41
+ sc = StringScanner.new cfg
42
+ out = ''
43
+ temps = ''
44
+ out << sc.scan_until(/.*TEMPERATURE/)
45
+ temps << sc.scan_until(/.*Fans/)
46
+ out << sc.rest
47
+ cfg = out
48
+ end
49
+
35
50
  comment cfg
36
51
  end
37
52
 
@@ -148,6 +148,35 @@ module Oxidized
148
148
  end
149
149
  end
150
150
  end
151
+
152
+ public
153
+
154
+ def version node, group
155
+ with_lock do
156
+ i = find_node_index node
157
+ output = self[i].output.new
158
+ raise Oxidized::NotSupported unless output.respond_to? :fetch
159
+ output.version node, group
160
+ end
161
+ end
162
+
163
+ def get_version node, group, oid
164
+ with_lock do
165
+ i = find_node_index node
166
+ output = self[i].output.new
167
+ raise Oxidized::NotSupported unless output.respond_to? :fetch
168
+ output.get_version node, group, oid
169
+ end
170
+ end
171
+
172
+ def get_diff node, group, oid1, oid2
173
+ with_lock do
174
+ i = find_node_index node
175
+ output = self[i].output.new
176
+ raise Oxidized::NotSupported unless output.respond_to? :fetch
177
+ output.get_diff node, group, oid1, oid2
178
+ end
179
+ end
151
180
 
152
181
  end
153
182
  end
@@ -61,6 +61,81 @@ class Git < Output
61
61
  'node not found'
62
62
  end
63
63
  end
64
+
65
+ #give a hash of all oid revision for the givin node, and the date of the commit
66
+ def version node, group
67
+ begin
68
+ repo = @cfg.repo
69
+ if group
70
+ repo = File.join File.dirname(repo), group + '.git'
71
+ end
72
+ repo = Rugged::Repository.new repo
73
+ walker = Rugged::Walker.new(repo)
74
+ walker.sorting(Rugged::SORT_DATE)
75
+ walker.push(repo.head.target)
76
+ i = -1
77
+ tab = []
78
+ walker.each do |commit|
79
+ if commit.diff(paths: [node]).size > 0
80
+ hash = {}
81
+ hash[:date] = commit.time.to_s
82
+ hash[:oid] = commit.oid
83
+ tab[i += 1] = hash
84
+ end
85
+ end
86
+ walker.reset
87
+ tab
88
+ rescue
89
+ 'node not found'
90
+ end
91
+ end
92
+
93
+ #give the blob of a specific revision
94
+ def get_version node, group, oid
95
+ begin
96
+ repo = @cfg.repo
97
+ if group && group != ''
98
+ repo = File.join File.dirname(repo), group + '.git'
99
+ end
100
+ repo = Rugged::Repository.new repo
101
+ repo.blob_at(oid,node).content
102
+ rescue
103
+ 'version not found'
104
+ end
105
+ end
106
+
107
+ #give a hash with the patch of a diff between 2 revision and the stats (added and deleted lines)
108
+ def get_diff node, group, oid1, oid2
109
+ begin
110
+ repo = @cfg.repo
111
+ diff_commits = nil
112
+ if group && group != ''
113
+ repo = File.join File.dirname(repo), group + '.git'
114
+ end
115
+ repo = Rugged::Repository.new repo
116
+ commit = repo.lookup(oid1)
117
+ #if the second revision is precised
118
+ if oid2
119
+ commit_old = repo.lookup(oid2)
120
+ diff = repo.diff(commit_old, commit)
121
+ diff.each do |patch|
122
+ if /#{node}\s+/.match(patch.to_s.lines.first)
123
+ diff_commits = {:patch => patch.to_s, :stat => patch.stat}
124
+ break
125
+ end
126
+ end
127
+ #else gives the diffs between the first oid and his first parrent
128
+ else
129
+ stat = commit.parents[0].diff(commit).stat
130
+ stat = [stat[1],stat[2]]
131
+ patch = commit.parents[0].diff(commit).patch
132
+ diff_commits = {:patch => patch, :stat => stat}
133
+ end
134
+ diff_commits
135
+ rescue
136
+ 'no diffs'
137
+ end
138
+ end
64
139
 
65
140
  private
66
141
 
@@ -104,8 +179,10 @@ class Git < Output
104
179
  :parents => repo.empty? ? [] : [repo.head.target].compact,
105
180
  :update_ref => 'HEAD',
106
181
  )
182
+
107
183
  index.write
184
+ true
108
185
  end
109
186
  end
110
187
  end
111
- end
188
+ end
@@ -37,8 +37,10 @@ module Oxidized
37
37
  msg = "update #{node.name}"
38
38
  msg += " from #{node.from}" if node.from
39
39
  msg += " with message '#{node.msg}'" if node.msg
40
- node.output.new.store node.name, job.config,
40
+ if node.output.new.store node.name, job.config,
41
41
  :msg => msg, :user => node.user, :group => node.group
42
+ Log.info "Configuration updated for #{node.group}/#{node.name}"
43
+ end
42
44
  node.reset
43
45
  else
44
46
  msg = "#{node.name} status #{job.status}"
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'oxidized'
3
- s.version = '0.7.1'
3
+ s.version = '0.7.2'
4
4
  s.licenses = %w( Apache-2.0 )
5
5
  s.platform = Gem::Platform::RUBY
6
6
  s.authors = [ 'Saku Ytti', 'Samer Abdel-Hafez' ]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oxidized
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saku Ytti
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-26 00:00:00.000000000 Z
12
+ date: 2015-06-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: asetus
@@ -90,6 +90,7 @@ files:
90
90
  - bin/oxidized
91
91
  - extra/nagios_check_failing_nodes.rb
92
92
  - extra/oxidized.init
93
+ - extra/oxidized.service
93
94
  - extra/oxidized.supervisord
94
95
  - extra/oxidized.upstart
95
96
  - extra/rest_client.rb
@@ -173,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
174
  version: '0'
174
175
  requirements: []
175
176
  rubyforge_project: oxidized
176
- rubygems_version: 2.2.2
177
+ rubygems_version: 2.4.5
177
178
  signing_key:
178
179
  specification_version: 4
179
180
  summary: feeble attempt at rancid