rortel 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +43 -1
- data/lib/rortel.rb +2 -1
- data/lib/rortel/dms.rb +8 -3
- data/lib/rortel/expectical.rb +2 -2
- data/lib/rortel/msc.rb +26 -0
- data/spec/msc_spec.rb +52 -24
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -15,7 +15,49 @@ CLI lib for nortel networks devices
|
|
15
15
|
|
16
16
|
|
17
17
|
== INSTALL:
|
18
|
-
|
18
|
+
sudo gem install rortel
|
19
|
+
|
20
|
+
== Example:
|
21
|
+
require 'rubygems'
|
22
|
+
require 'rortel'
|
23
|
+
include Rortel
|
24
|
+
|
25
|
+
msc=Msc.new :ip=>'atcag2', :user=>'user', :password=>'pass'
|
26
|
+
web_patch_list=msc.get_web_patch_list 'MSCS0200.PPC4'
|
27
|
+
msc.login
|
28
|
+
msc.run "prsm;report dest cm"
|
29
|
+
patch_list=msc.parse_patch_list
|
30
|
+
missing_patch_list=web_patch_list-patch_list
|
31
|
+
time=Time.new
|
32
|
+
File.open("missing_patch_#{time.to_i}.txt",'w') do |f|
|
33
|
+
f.puts missing_patch_list
|
34
|
+
end
|
35
|
+
pacs=PacsHost.new :ip=>'rnd94', :user=>'davidrua', :password=>TestData::Password
|
36
|
+
pacs.login
|
37
|
+
pacs.enter_pacs
|
38
|
+
missing_patch_list.each do |patch_id|
|
39
|
+
pacs.download patch_id
|
40
|
+
end
|
41
|
+
pacs.logout
|
42
|
+
msc.connect_ftp_access('user','pass')
|
43
|
+
msc.setup_ftp_access do |f|
|
44
|
+
f.site('lrecl 128')
|
45
|
+
end
|
46
|
+
missing_patch_list.each do |patch_id|
|
47
|
+
patch_path='/home/ruan/sshfs/pacs_dir/'+patch_id.downcase+'.ptchppcp'
|
48
|
+
if File.exists? patch_path
|
49
|
+
msc.upload_patch patch_path
|
50
|
+
msc.run "listsf all"
|
51
|
+
msc.change_patch "apply", patch_id
|
52
|
+
msc.run "prsm;report prsu #{patch_id}"
|
53
|
+
msc.delete_patch(patch_id)
|
54
|
+
else
|
55
|
+
puts "patch file for #{patch_id} is not found in local disk"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
msc.upload_all_patch_in_dir '/home/ruan/sshfs/pacs_dir'
|
59
|
+
msc.disconnect_ftp_access
|
60
|
+
msc.logout
|
19
61
|
|
20
62
|
== LICENSE:
|
21
63
|
|
data/lib/rortel.rb
CHANGED
@@ -2,7 +2,7 @@ $:.unshift(File.dirname(__FILE__)) unless
|
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
3
|
|
4
4
|
module Rortel
|
5
|
-
VERSION = '0.1.
|
5
|
+
VERSION = '0.1.2'
|
6
6
|
end
|
7
7
|
|
8
8
|
require 'rortel/expectical'
|
@@ -13,4 +13,5 @@ require 'rortel/msc'
|
|
13
13
|
require 'rortel/unix'
|
14
14
|
require 'rortel/pls_host'
|
15
15
|
require 'rortel/pacs_host'
|
16
|
+
require 'rortel/typhoon'
|
16
17
|
require 'test_data'
|
data/lib/rortel/dms.rb
CHANGED
@@ -13,13 +13,18 @@ module Rortel
|
|
13
13
|
@prompt=/\r\n>/
|
14
14
|
#read(@r,@timeout, @prompt)
|
15
15
|
if @ip =~/atca/
|
16
|
-
|
16
|
+
@atca=true
|
17
|
+
#expect_times(/>/,3)
|
17
18
|
else
|
18
|
-
|
19
|
+
@atca=false
|
20
|
+
#expect_times(/>/,4)
|
19
21
|
end
|
22
|
+
expect_times("CHAR MODE",1)
|
23
|
+
expect_times(">",1)
|
24
|
+
|
20
25
|
#clear_read_buffer
|
26
|
+
@output=[]
|
21
27
|
run(@pw)
|
22
|
-
read(@r,@timeout, @prompt)
|
23
28
|
end
|
24
29
|
|
25
30
|
rescue Exception => ee
|
data/lib/rortel/expectical.rb
CHANGED
@@ -10,7 +10,7 @@ module Rortel
|
|
10
10
|
r.expect(prompt,timeout) do |rec|
|
11
11
|
if rec == nil then
|
12
12
|
@error.push("ERROR: Timeout talking to device")
|
13
|
-
|
13
|
+
close()
|
14
14
|
return rec
|
15
15
|
else
|
16
16
|
rec=rec.to_s
|
@@ -25,7 +25,7 @@ module Rortel
|
|
25
25
|
end
|
26
26
|
def run(cmd,prompt=@prompt)
|
27
27
|
begin
|
28
|
-
@w.print("#{cmd}\
|
28
|
+
@w.print("#{cmd}\r")
|
29
29
|
buffer = read(@r,@timeout,prompt)
|
30
30
|
rescue Exception => ee
|
31
31
|
@error.push("ERROR: Exception for host while executing #{cmd}: #{ee.to_s}")
|
data/lib/rortel/msc.rb
CHANGED
@@ -4,6 +4,8 @@ module Rortel
|
|
4
4
|
class Msc < Base
|
5
5
|
include Dms
|
6
6
|
include FtpAccess
|
7
|
+
attr_accessor :atca
|
8
|
+
attr_accessor :current_image
|
7
9
|
def parse_prsu_status
|
8
10
|
# 33
|
9
11
|
# 78
|
@@ -71,5 +73,29 @@ module Rortel
|
|
71
73
|
end
|
72
74
|
user_list
|
73
75
|
end
|
76
|
+
def get_image_list(type)
|
77
|
+
image_list=Array.new
|
78
|
+
run "diskut;itocci;lbf #{type}"
|
79
|
+
@output.last.each do |line|
|
80
|
+
# 1 0 0 5 0 0 5
|
81
|
+
# 0 07/08/2010 00:56:52 SD01IMAGE1 S100708005401_CM
|
82
|
+
|
83
|
+
m= /\d\d\/\d\d\/\d\d\d\d \d\d:\d\d:\d\d/.match(line)
|
84
|
+
image_list<<[line[25,20].strip, line[36,100].strip] if m
|
85
|
+
@current_image=image_list.last if line =~ /\*/
|
86
|
+
end
|
87
|
+
image_list
|
88
|
+
end
|
89
|
+
def set_image_list(type)
|
90
|
+
image_list=get_image_list(type)
|
91
|
+
image_list.each_with_index do |e,i|
|
92
|
+
puts "#{i} #{e}"
|
93
|
+
puts "select one"
|
94
|
+
end
|
95
|
+
selected=STDIN.gets.strip.to_i
|
96
|
+
puts "selected #{image_list[selected].last} on #{image_list[selected].first}"
|
97
|
+
run "lf #{image_list[selected].first}"
|
98
|
+
run "sa #{type} #{image_list[selected].last}"
|
99
|
+
end
|
74
100
|
end
|
75
101
|
end
|
data/spec/msc_spec.rb
CHANGED
@@ -7,12 +7,12 @@ module Rortel
|
|
7
7
|
context "starting up" do
|
8
8
|
|
9
9
|
it "should send the welcome message and the bye message on ATCA" do
|
10
|
-
msc=Msc.new :ip=>'
|
10
|
+
msc=Msc.new :ip=>'atcag2', :user=>'davidruan2', :password=>'davidruan2'
|
11
11
|
msc.login
|
12
12
|
msc.output.last.should =~ /Logged in on /m
|
13
13
|
msc.logout
|
14
14
|
msc.output.last.should =~ /Logged out on /m
|
15
|
-
|
15
|
+
msc.error.should be_empty
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should send the welcome message and the bye message on XA-Core" do
|
@@ -21,31 +21,58 @@ module Rortel
|
|
21
21
|
msc.output.last.should =~ /Logged in on /m
|
22
22
|
msc.logout
|
23
23
|
msc.output.last.should =~ /Logged out on /m
|
24
|
-
|
24
|
+
msc.error.should be_empty
|
25
25
|
end
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
it "should parse the report prsu patch status" do
|
30
|
-
msc=Msc.new :ip=>'atcag1', :user=>'davidruan2', :password=>'davidruan2'
|
26
|
+
|
27
|
+
it "should get/set the image list on ATCA" do
|
28
|
+
msc=Msc.new :ip=>'atcag2', :user=>'davidruan1', :password=>'davidruan1'
|
31
29
|
msc.login
|
32
30
|
msc.output.last.should =~ /Logged in on /m
|
33
|
-
msc.
|
34
|
-
msc.
|
31
|
+
msc.get_image_list('cm').should_not be_empty
|
32
|
+
msc.current_image.should_not be_empty
|
33
|
+
msc.set_image_list('cm')
|
34
|
+
msc.get_image_list('cm').should_not be_empty
|
35
|
+
msc.current_image.should_not be_empty
|
35
36
|
msc.logout
|
36
|
-
msc.output.last.should =~ /Logged out on /m
|
37
37
|
end
|
38
38
|
|
39
|
-
it "should
|
40
|
-
msc=Msc.new :ip=>'
|
39
|
+
it "should get the image list on XA-Core" do
|
40
|
+
msc=Msc.new :ip=>'gsmr', :user=>'davidruan1', :password=>'davidruan1'
|
41
41
|
msc.login
|
42
42
|
msc.output.last.should =~ /Logged in on /m
|
43
|
-
msc.
|
44
|
-
msc.
|
45
|
-
msc.
|
43
|
+
msc.get_image_list('xa').should_not be_empty
|
44
|
+
msc.current_image.should_not be_empty
|
45
|
+
msc.get_image_list('ms').should_not be_empty
|
46
|
+
msc.current_image.should_not be_empty
|
47
|
+
msc.logout
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
context "patching" do
|
53
|
+
before :each do
|
54
|
+
@msc=Msc.new :ip=>'atcag1', :user=>'davidruan2', :password=>'davidruan2'
|
55
|
+
@msc.login
|
56
|
+
@msc.output.last.should =~ /Logged in on /m
|
57
|
+
end
|
46
58
|
|
47
|
-
|
48
|
-
msc.
|
59
|
+
after :each do
|
60
|
+
@msc.logout
|
61
|
+
@msc.output.last.should =~ /Logged out on /m
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should parse the report prsu patch status" do
|
65
|
+
@msc.run "prsm;report prsu rud03p9c"
|
66
|
+
@msc.parse_prsu_status.should_not be_empty
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should remove the patch and apply the patch" do
|
70
|
+
@msc.change_patch "remove", "rud03p9c"
|
71
|
+
@msc.run "prsm;report prsu rud03p9c"
|
72
|
+
@msc.parse_prsu_status.should == "R"
|
73
|
+
|
74
|
+
@msc.connect_ftp_access('admin','admin')
|
75
|
+
@msc.setup_ftp_access do |f|
|
49
76
|
remote_file_list=f.nlst
|
50
77
|
begin
|
51
78
|
f.delete 'RUD03P9C$PATCH' if remote_file_list.include? 'RUD03P9C$PATCH'
|
@@ -54,13 +81,14 @@ module Rortel
|
|
54
81
|
end
|
55
82
|
f.site('lrecl 128')
|
56
83
|
end
|
57
|
-
msc.upload_patch '/home/ruan/sshfs/rud03p9c.ptchppcp'
|
58
|
-
msc.disconnect_ftp_access
|
59
|
-
msc.run "listsf all"
|
60
|
-
msc.change_patch "apply","rud03p9c"
|
61
|
-
msc.run "prsm;report prsu rud03p9c"
|
62
|
-
msc.parse_prsu_status.should == "A"
|
84
|
+
@msc.upload_patch '/home/ruan/sshfs/rud03p9c.ptchppcp'
|
85
|
+
@msc.disconnect_ftp_access
|
86
|
+
@msc.run "listsf all"
|
87
|
+
@msc.change_patch "apply","rud03p9c"
|
88
|
+
@msc.run "prsm;report prsu rud03p9c"
|
89
|
+
@msc.parse_prsu_status.should == "A"
|
63
90
|
end
|
91
|
+
|
64
92
|
end
|
65
93
|
end
|
66
94
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rortel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Ruan
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-08-03 00:00:00 +08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|