phut 0.5.0 → 0.6.0
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 +4 -4
- data/CHANGELOG.md +6 -0
- data/features/dsl_vswitch.feature +17 -10
- data/features/step_definitions/phut_steps.rb +7 -0
- data/lib/phut/configuration.rb +2 -1
- data/lib/phut/open_vswitch.rb +6 -3
- data/lib/phut/syntax.rb +4 -0
- data/lib/phut/version.rb +1 -1
- data/phut.gemspec +6 -6
- metadata +14 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0ef918284af69d747340059b8a92a410fd291856
|
|
4
|
+
data.tar.gz: 4c2ae440238a04ba768123ed7091f9fb1fed9955
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 581acfd2cff43bc01d6cb4d2aff4a4b87bc018cb0e1b85f43cd2af7d3b8e6f669e58c18fe7ba3b919223da07908cb7c7e974490749dd3a2ab1dc2bb8da3474c7
|
|
7
|
+
data.tar.gz: 3df8308962938c722d63dcc1fb17b1a58727b390d3f346a4b3cf221644b77076ea18be7bdc2c3a0b60a18b687c2103d63561be9023d1f369e45918b3421f1031
|
data/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
## develop (unreleased)
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
## 0.6.0 (6/1/2015)
|
|
7
|
+
### Changes
|
|
8
|
+
* [#21](https://github.com/trema/phut/pull/21): Use IANA-assigned port number 6653.
|
|
9
|
+
* [#21](https://github.com/trema/phut/pull/21): Add `port` attribute to `vswitch` directive.
|
|
10
|
+
|
|
11
|
+
|
|
6
12
|
## 0.5.0 (4/22/2015)
|
|
7
13
|
### Misc
|
|
8
14
|
* Pio 0.20.0 (preliminary support of OpenFlow 1.3).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
@sudo
|
|
1
2
|
Feature: The vswitch DSL directive.
|
|
2
|
-
|
|
3
|
-
Scenario: phut run with "vswitch { dpid STRING }"
|
|
3
|
+
Scenario: vswitch { dpid STRING }
|
|
4
4
|
Given a file named "network.conf" with:
|
|
5
5
|
"""
|
|
6
6
|
vswitch { dpid '0xabc' }
|
|
@@ -8,8 +8,7 @@ Feature: The vswitch DSL directive.
|
|
|
8
8
|
When I do phut run "network.conf"
|
|
9
9
|
Then a vswitch named "0xabc" should be running
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
Scenario: phut run with "vswitch { dpid NUMBER }"
|
|
11
|
+
Scenario: vswitch { dpid NUMBER }
|
|
13
12
|
Given a file named "network.conf" with:
|
|
14
13
|
"""
|
|
15
14
|
vswitch { dpid 0xabc }
|
|
@@ -17,8 +16,7 @@ Feature: The vswitch DSL directive.
|
|
|
17
16
|
When I do phut run "network.conf"
|
|
18
17
|
Then a vswitch named "0xabc" should be running
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
Scenario: phut run with "vswitch { datapath_id STRING }"
|
|
19
|
+
Scenario: vswitch { datapath_id STRING }
|
|
22
20
|
Given a file named "network.conf" with:
|
|
23
21
|
"""
|
|
24
22
|
vswitch { datapath_id '0xabc' }
|
|
@@ -26,8 +24,7 @@ Feature: The vswitch DSL directive.
|
|
|
26
24
|
When I do phut run "network.conf"
|
|
27
25
|
Then a vswitch named "0xabc" should be running
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
Scenario: phut run with "vswitch { datapath_id NUMBER }"
|
|
27
|
+
Scenario: vswitch { datapath_id NUMBER }
|
|
31
28
|
Given a file named "network.conf" with:
|
|
32
29
|
"""
|
|
33
30
|
vswitch { datapath_id 0xabc }
|
|
@@ -35,8 +32,18 @@ Feature: The vswitch DSL directive.
|
|
|
35
32
|
When I do phut run "network.conf"
|
|
36
33
|
Then a vswitch named "0xabc" should be running
|
|
37
34
|
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
Scenario: vswitch { dpid ...; port NUMBER }
|
|
36
|
+
Given a file named "network.conf" with:
|
|
37
|
+
"""
|
|
38
|
+
vswitch {
|
|
39
|
+
datapath_id 0xabc
|
|
40
|
+
port 1234
|
|
41
|
+
}
|
|
42
|
+
"""
|
|
43
|
+
When I do phut run "network.conf"
|
|
44
|
+
Then a vswitch named "0xabc" (controller port = 1234) should be running
|
|
45
|
+
|
|
46
|
+
Scenario: vswitch(alias) { ... }
|
|
40
47
|
Given a file named "network.conf" with:
|
|
41
48
|
"""
|
|
42
49
|
vswitch('my_switch') { datapath_id '0xabc' }
|
|
@@ -10,6 +10,13 @@ Then(/^a vswitch named "(.*?)" should be running$/) do |name|
|
|
|
10
10
|
expect(system("sudo ovs-vsctl br-exists br#{name}")).to be_truthy
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
+
# rubocop:disable LineLength
|
|
14
|
+
Then(/^a vswitch named "([^"]*)" \(controller port = (\d+)\) should be running$/) do |name, port_number|
|
|
15
|
+
step %(a vswitch named "#{name}" should be running)
|
|
16
|
+
step %(the output should contain "ovs-vsctl set-controller br#{name} tcp:127.0.0.1:#{port_number}")
|
|
17
|
+
end
|
|
18
|
+
# rubocop:enable LineLength
|
|
19
|
+
|
|
13
20
|
Then(/^a vswitch named "(.*?)" should not be running$/) do |name|
|
|
14
21
|
expect(system("sudo ovs-vsctl br-exists br#{name}")).to be_falsey
|
|
15
22
|
end
|
data/lib/phut/configuration.rb
CHANGED
|
@@ -58,7 +58,8 @@ module Phut
|
|
|
58
58
|
|
|
59
59
|
def add_vswitch(name, attrs)
|
|
60
60
|
check_name_conflict name
|
|
61
|
-
@all[name] =
|
|
61
|
+
@all[name] =
|
|
62
|
+
OpenVswitch.new(attrs[:dpid], attrs[:port_number], name, @logger)
|
|
62
63
|
end
|
|
63
64
|
|
|
64
65
|
def add_vhost(name, attrs)
|
data/lib/phut/open_vswitch.rb
CHANGED
|
@@ -11,8 +11,10 @@ module Phut
|
|
|
11
11
|
alias_method :datapath_id, :dpid
|
|
12
12
|
attr_reader :network_devices
|
|
13
13
|
|
|
14
|
-
def initialize(dpid,
|
|
14
|
+
def initialize(dpid, port_number = 6653,
|
|
15
|
+
name = nil, logger = NullLogger.new)
|
|
15
16
|
@dpid = dpid
|
|
17
|
+
@port_number = port_number
|
|
16
18
|
@name = name
|
|
17
19
|
@network_devices = []
|
|
18
20
|
@logger = logger
|
|
@@ -37,8 +39,9 @@ module Phut
|
|
|
37
39
|
sh "sudo ovs-vsctl set bridge #{bridge_name}" \
|
|
38
40
|
" protocols=#{open_flow_protocol}" \
|
|
39
41
|
" other-config:datapath-id=#{dpid_zero_filled}"
|
|
40
|
-
sh "sudo ovs-vsctl set-controller #{bridge_name}
|
|
41
|
-
"
|
|
42
|
+
sh "sudo ovs-vsctl set-controller #{bridge_name} "\
|
|
43
|
+
"tcp:127.0.0.1:#{@port_number} "\
|
|
44
|
+
"-- set controller #{bridge_name} connection-mode=out-of-band"
|
|
42
45
|
sh "sudo ovs-vsctl set-fail-mode #{bridge_name} secure"
|
|
43
46
|
rescue
|
|
44
47
|
raise "Open vSwitch (dpid = #{@dpid}) is already running!"
|
data/lib/phut/syntax.rb
CHANGED
data/lib/phut/version.rb
CHANGED
data/phut.gemspec
CHANGED
|
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
|
|
|
6
6
|
gem.name = 'phut'
|
|
7
7
|
gem.version = Phut::VERSION
|
|
8
8
|
gem.summary = 'Virtual network in seconds.'
|
|
9
|
-
gem.description = 'A simple
|
|
9
|
+
gem.description = 'A simple network emulator '\
|
|
10
10
|
'with capabilities similar to mininet.'
|
|
11
11
|
|
|
12
12
|
gem.license = 'GPL3'
|
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |gem|
|
|
|
23
23
|
|
|
24
24
|
gem.required_ruby_version = '>= 2.0.0'
|
|
25
25
|
|
|
26
|
-
gem.add_dependency 'gli', '~> 2.13.
|
|
26
|
+
gem.add_dependency 'gli', '~> 2.13.1'
|
|
27
27
|
gem.add_dependency 'pio', '~> 0.20.0'
|
|
28
28
|
gem.add_dependency 'pry', '~> 0.10.1'
|
|
29
29
|
|
|
@@ -32,11 +32,11 @@ Gem::Specification.new do |gem|
|
|
|
32
32
|
gem.add_development_dependency 'yard', '~> 0.8.7.6'
|
|
33
33
|
|
|
34
34
|
# Development
|
|
35
|
-
gem.add_development_dependency 'byebug', '~>
|
|
35
|
+
gem.add_development_dependency 'byebug', '~> 5.0.0'
|
|
36
36
|
gem.add_development_dependency 'guard', '~> 2.12.5'
|
|
37
37
|
gem.add_development_dependency 'guard-bundler', '~> 2.1.0'
|
|
38
38
|
gem.add_development_dependency 'guard-cucumber', '~> 1.6.0'
|
|
39
|
-
gem.add_development_dependency 'guard-rspec', '~> 4.5.
|
|
39
|
+
gem.add_development_dependency 'guard-rspec', '~> 4.5.1'
|
|
40
40
|
gem.add_development_dependency 'guard-rubocop', '~> 1.2.0'
|
|
41
41
|
|
|
42
42
|
# Test
|
|
@@ -47,8 +47,8 @@ Gem::Specification.new do |gem|
|
|
|
47
47
|
gem.add_development_dependency 'flay', '~> 2.6.1'
|
|
48
48
|
gem.add_development_dependency 'flog', '~> 4.3.2'
|
|
49
49
|
gem.add_development_dependency 'rake'
|
|
50
|
-
gem.add_development_dependency 'reek', '~> 2.1
|
|
50
|
+
gem.add_development_dependency 'reek', '~> 2.2.1'
|
|
51
51
|
gem.add_development_dependency 'rspec', '~> 3.2.0'
|
|
52
52
|
gem.add_development_dependency 'rspec-given', '~> 3.7.0'
|
|
53
|
-
gem.add_development_dependency 'rubocop', '~> 0.
|
|
53
|
+
gem.add_development_dependency 'rubocop', '~> 0.31.0'
|
|
54
54
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: phut
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yasuhito Takamiya
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-06-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: gli
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ~>
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 2.13.
|
|
19
|
+
version: 2.13.1
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ~>
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 2.13.
|
|
26
|
+
version: 2.13.1
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: pio
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -86,14 +86,14 @@ dependencies:
|
|
|
86
86
|
requirements:
|
|
87
87
|
- - ~>
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version:
|
|
89
|
+
version: 5.0.0
|
|
90
90
|
type: :development
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - ~>
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version:
|
|
96
|
+
version: 5.0.0
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: guard
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -142,14 +142,14 @@ dependencies:
|
|
|
142
142
|
requirements:
|
|
143
143
|
- - ~>
|
|
144
144
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: 4.5.
|
|
145
|
+
version: 4.5.1
|
|
146
146
|
type: :development
|
|
147
147
|
prerelease: false
|
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
149
|
requirements:
|
|
150
150
|
- - ~>
|
|
151
151
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: 4.5.
|
|
152
|
+
version: 4.5.1
|
|
153
153
|
- !ruby/object:Gem::Dependency
|
|
154
154
|
name: guard-rubocop
|
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -268,14 +268,14 @@ dependencies:
|
|
|
268
268
|
requirements:
|
|
269
269
|
- - ~>
|
|
270
270
|
- !ruby/object:Gem::Version
|
|
271
|
-
version: 2.1
|
|
271
|
+
version: 2.2.1
|
|
272
272
|
type: :development
|
|
273
273
|
prerelease: false
|
|
274
274
|
version_requirements: !ruby/object:Gem::Requirement
|
|
275
275
|
requirements:
|
|
276
276
|
- - ~>
|
|
277
277
|
- !ruby/object:Gem::Version
|
|
278
|
-
version: 2.1
|
|
278
|
+
version: 2.2.1
|
|
279
279
|
- !ruby/object:Gem::Dependency
|
|
280
280
|
name: rspec
|
|
281
281
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -310,15 +310,15 @@ dependencies:
|
|
|
310
310
|
requirements:
|
|
311
311
|
- - ~>
|
|
312
312
|
- !ruby/object:Gem::Version
|
|
313
|
-
version: 0.
|
|
313
|
+
version: 0.31.0
|
|
314
314
|
type: :development
|
|
315
315
|
prerelease: false
|
|
316
316
|
version_requirements: !ruby/object:Gem::Requirement
|
|
317
317
|
requirements:
|
|
318
318
|
- - ~>
|
|
319
319
|
- !ruby/object:Gem::Version
|
|
320
|
-
version: 0.
|
|
321
|
-
description: A simple
|
|
320
|
+
version: 0.31.0
|
|
321
|
+
description: A simple network emulator with capabilities similar to mininet.
|
|
322
322
|
email:
|
|
323
323
|
- yasuhito@gmail.com
|
|
324
324
|
executables:
|
|
@@ -402,7 +402,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
402
402
|
version: '0'
|
|
403
403
|
requirements: []
|
|
404
404
|
rubyforge_project:
|
|
405
|
-
rubygems_version: 2.4.
|
|
405
|
+
rubygems_version: 2.4.7
|
|
406
406
|
signing_key:
|
|
407
407
|
specification_version: 4
|
|
408
408
|
summary: Virtual network in seconds.
|