topologygenerator 0.0.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.
Files changed (67) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/CODE_OF_CONDUCT.md +49 -0
  6. data/Gemfile +10 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +35 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/lib/behaviors/serialize_behavior.rb +14 -0
  13. data/lib/builders_examples/pdm_builders/PhaseI/Flow_concrete_builder.rb +82 -0
  14. data/lib/builders_examples/pdm_builders/PhaseI/Host_concrete_builder.rb +24 -0
  15. data/lib/builders_examples/pdm_builders/PhaseI/Link_concrete_builder.rb +150 -0
  16. data/lib/builders_examples/pdm_builders/PhaseI/Router_concrete_builder.rb +24 -0
  17. data/lib/builders_examples/pdm_builders/PhaseI/output_concrete_builder.rb +86 -0
  18. data/lib/builders_examples/pdm_builders/PhaseI/pdm_constants.rb +111 -0
  19. data/lib/builders_examples/pdm_builders/PhaseIWithPriorityQueues/Flow_concrete_builder.rb +82 -0
  20. data/lib/builders_examples/pdm_builders/PhaseIWithPriorityQueues/Host_concrete_builder.rb +335 -0
  21. data/lib/builders_examples/pdm_builders/PhaseIWithPriorityQueues/Link_concrete_builder.rb +25 -0
  22. data/lib/builders_examples/pdm_builders/PhaseIWithPriorityQueues/Router_concrete_builder.rb +449 -0
  23. data/lib/builders_examples/pdm_builders/PhaseIWithPriorityQueues/output_concrete_builder.rb +229 -0
  24. data/lib/builders_examples/ruby_builders/Flow_concrete_builder.rb +5 -0
  25. data/lib/builders_examples/ruby_builders/Host_concrete_builder.rb +5 -0
  26. data/lib/builders_examples/ruby_builders/Link_concrete_builder.rb +5 -0
  27. data/lib/builders_examples/ruby_builders/Router_concrete_builder.rb +5 -0
  28. data/lib/builders_examples/ruby_builders/output_concrete_builder.rb +78 -0
  29. data/lib/command_line/command_line_arguments.rb +59 -0
  30. data/lib/createTopology.rb +10 -0
  31. data/lib/flows_distributions/constant_distribution.rb +7 -0
  32. data/lib/flows_distributions/exponential_distribution.rb +7 -0
  33. data/lib/flows_distributions/normal_distribution.rb +8 -0
  34. data/lib/flows_distributions/pareto_distribution.rb +9 -0
  35. data/lib/flows_distributions/split_distribution.rb +8 -0
  36. data/lib/network_entities/abstracts/flow.rb +27 -0
  37. data/lib/network_entities/abstracts/network_element.rb +19 -0
  38. data/lib/network_entities/abstracts/path.rb +16 -0
  39. data/lib/network_entities/physical/host.rb +10 -0
  40. data/lib/network_entities/physical/link.rb +36 -0
  41. data/lib/network_entities/physical/router.rb +12 -0
  42. data/lib/network_entities/topology.rb +69 -0
  43. data/lib/network_topologies_examples/PhaseI_onlyLAr_1FelixTo1SWROD.rb +93 -0
  44. data/lib/network_topologies_examples/octopus_topology.rb +66 -0
  45. data/lib/network_topologies_examples/phase1_topology_mininet/tdaq +4 -0
  46. data/lib/network_topologies_examples/phase1_topology_mininet/tdaq.py +99 -0
  47. data/lib/network_topologies_examples/sofisticated_octopus_topology.rb +121 -0
  48. data/lib/network_topologies_examples/tdaq_network_topology.rb +76 -0
  49. data/lib/network_topologies_examples/tdaq_topology_example.rb +119 -0
  50. data/lib/network_topologies_examples/tree_topology.rb +102 -0
  51. data/lib/output/FlowDefinitions.cpp +109 -0
  52. data/lib/output/copy_files.sh +8 -0
  53. data/lib/output/flows_definition.scilabParams +30 -0
  54. data/lib/output/hosts_definition.scilabParams +5 -0
  55. data/lib/output/links_definition.scilabParams +48 -0
  56. data/lib/output/routers_definition.scilabParams +24 -0
  57. data/lib/output/ruby_network_topology.rb +76 -0
  58. data/lib/output/topology.pdm +5321 -0
  59. data/lib/output_builder.rb +39 -0
  60. data/lib/providers/apis/onos_topology_provider.rb +146 -0
  61. data/lib/providers/customs/custom_topology_provider.rb +14 -0
  62. data/lib/providers/interface_topology_provider.rb +11 -0
  63. data/lib/topologygenerator/version.rb +3 -0
  64. data/lib/topologygenerator.rb +34 -0
  65. data/lib/utils/custom_files_utils.rb +16 -0
  66. data/topologygenerator.gemspec +45 -0
  67. metadata +188 -0
@@ -0,0 +1,39 @@
1
+ require_relative 'utils/custom_files_utils.rb'
2
+
3
+ class OutputBuilder
4
+
5
+ attr_reader :topology_provider, :directory_concrete_builders, :output_directory
6
+
7
+ include CustomFileUtils
8
+
9
+ def initialize(topology_provider, directory_concrete_builders, output_directory)
10
+ validate_params topology_provider, directory_concrete_builders, output_directory
11
+
12
+ @topology_provider = topology_provider
13
+ @directory_concrete_builders = directory_concrete_builders
14
+ @output_directory = output_directory
15
+ end
16
+
17
+ def build_output
18
+ Dir["#{@directory_concrete_builders}/*.rb"].each { |file| require "./#{file}" }
19
+ self.class.send(:include,OutputConcreteBuilder)
20
+ validate_output_concrete_builder
21
+
22
+ initialize_concrete_builder @topology_provider, @directory_concrete_builders, @output_directory
23
+
24
+ build_output_content
25
+ end
26
+
27
+ def validate_output_concrete_builder
28
+ [:initialize_concrete_builder, :build_output_content].each do |method|
29
+ raise ArgumentError, "It was expected to load an OutputConcreteBuilder module from #{@directory_concrete_builders}/builders/output_files_format that implements the method #{method}, but the one provided does not has this method implemented" unless self.respond_to? method
30
+ end
31
+ end
32
+
33
+ def validate_params(topology_provider, directory_concrete_builders, output_directory)
34
+ raise ArgumentError, 'The topology provider given cannot be nil' unless topology_provider
35
+ raise ArgumentError, 'The template directory given cannot be nil' unless directory_concrete_builders
36
+ raise ArgumentError, "It was expected to find builders files in directory #{directory_concrete_builders}, but nothing was found." if Dir["#{directory_concrete_builders}/*.rb"].size == 0
37
+ raise ArgumentError, 'The output directory given cannot be nil' unless output_directory
38
+ end
39
+ end
@@ -0,0 +1,146 @@
1
+ require 'cgi'
2
+ require 'typhoeus'
3
+ require_relative "../interface_topology_provider.rb"
4
+ require_relative "../../network_entities/topology.rb"
5
+ require_relative '../../network_entities/abstracts/path.rb'
6
+
7
+ class OnosTopologyProvider < ITopologyProvider
8
+
9
+ attr_accessor :uri_resource
10
+
11
+ def initialize(new_uri_resource)
12
+ raise ArgumentError, 'No uri recieved as parameter' unless new_uri_resource
13
+ @uri_resource = new_uri_resource
14
+ @topology = Topology.new
15
+ end
16
+
17
+ def get_topology
18
+
19
+ return @topology.topology_elements if @topology.topology_elements.size != 0
20
+
21
+ add_routers
22
+ add_hosts
23
+ add_links
24
+
25
+ @topology.topology_elements
26
+ end
27
+
28
+ def get_from_api(resource)
29
+ Typhoeus.get "#{@uri_resource}#{resource}", userpwd:"onos:rocks"
30
+ end
31
+
32
+ =begin
33
+ This is the info that represents a router
34
+ {
35
+ "id"=>"of:0000000000000003",
36
+ "type"=>"SWITCH",
37
+ "available"=>true,
38
+ "role"=>"MASTER",
39
+ "mfr"=>"Nicira, Inc.",
40
+ "hw"=>"Open vSwitch",
41
+ "sw"=>"2.5.0",
42
+ "serial"=>"None",
43
+ "chassisId"=>"3",
44
+ "annotations"=>{
45
+ "managementAddress"=>"127.0.0.1",
46
+ "protocol"=>"OF_13",
47
+ "channelId"=>"127.0.0.1:59170"
48
+ }
49
+ }
50
+ =end
51
+ def add_routers
52
+ #Devices represents either hosts or routers. This function will make difference between them
53
+ devices_response = get_from_api 'devices'
54
+ graph_elements_info = (JSON.parse devices_response.body)['devices']
55
+ graph_elements_info.each do |element_info|
56
+ # To identify if a device is either a router or a host, we can ask for it flows. If the device has no flows,
57
+ # then it's a host
58
+ flows_response = get_from_api "flows/#{element_info['id']}"
59
+ @topology.add_router element_info['id'] if flows_response.code == 200
60
+ end
61
+ end
62
+
63
+ def add_hosts
64
+ hosts_response = get_from_api 'hosts'
65
+ hosts_info = (JSON.parse hosts_response.body)['hosts']
66
+ hosts_info.each_with_index do |host_info, index|
67
+
68
+ host = @topology.add_host host_info['id'] #host_info['mac']
69
+
70
+
71
+ @topology.add_link "Link#{index}host_to_router",
72
+ host,
73
+ 0,
74
+ host_info['location']['elementId'],
75
+ host_info['location']['port'].to_i
76
+
77
+ @topology.add_link "Link#{index}router_to_host",
78
+ host_info['location']['elementId'],
79
+ host_info['location']['port'].to_i,
80
+ host,
81
+ 0
82
+ end
83
+ end
84
+
85
+ =begin
86
+ links_between_routers_info is an array of elements of this kind
87
+ {
88
+ "src"=>{
89
+ "port"=>"2",
90
+ "device"=>"of:0000000000000001"
91
+ },
92
+ "dst"=>{
93
+ "port"=>"3",
94
+ "device"=>"of:0000000000000005"
95
+ },
96
+ "type"=>"DIRECT",
97
+ "state"=>"ACTIVE"
98
+ }
99
+ =end
100
+ def add_links
101
+ links_between_routers_response = get_from_api 'links'
102
+ links_between_routers_info = (JSON.parse links_between_routers_response.body)['links']
103
+
104
+ index_offset = @topology.links.size + 1
105
+ links_between_routers_info.each_with_index do |link_between_routers_info, index|
106
+ @topology.add_link "Link#{index+index_offset}",
107
+ link_between_routers_info['src']['device'],
108
+ link_between_routers_info['src']['port'].to_i,
109
+ link_between_routers_info['dst']['device'],
110
+ link_between_routers_info['dst']['port'].to_i
111
+ end
112
+ end
113
+
114
+ def get_path_between(source, destination)
115
+ raise Exception, "Source must be either from class Router or class Host to ask for a path" unless [Host, Router].include? source.class
116
+ raise Exception, "Destination must be either from class Router or class Host to ask for a path" unless [Host, Router].include? destination.class
117
+
118
+ paths_response = get_from_api "paths/#{CGI.escape(source.id)}/#{CGI.escape(destination.id)}"
119
+ links_info = (JSON.parse paths_response.body)['paths'].first['links']
120
+
121
+ path = Path.new(source,destination)
122
+
123
+ #If either the source or the destination are hosts, the path will return host instead of device
124
+ first_link = links_info.shift
125
+ last_link = links_info.pop
126
+
127
+ path.add_link (find_link first_link, 'host', 'device')
128
+
129
+ links_info.each do |link|
130
+ path.add_link (find_link link, 'device', 'device')
131
+ end
132
+ path.add_link (find_link last_link, 'device', 'host')
133
+
134
+ path
135
+ end
136
+
137
+ def find_link(link_representation_in_path, src_key, dst_key)
138
+ links_found = @topology.topology_elements.select { |elem|
139
+ (elem.is_a? Link) &&
140
+ (elem.src_element.id == link_representation_in_path['src'][src_key]) &&
141
+ (elem.dst_element.id == link_representation_in_path['dst'][dst_key]) }
142
+
143
+ raise "It was suppossed to find one link with the representation #{link_representation_in_path}, but #{links_found.size} were found" unless links_found.size == 1
144
+ links_found.first
145
+ end
146
+ end
@@ -0,0 +1,14 @@
1
+ require 'json'
2
+
3
+ class CustomTopologyProvider < ITopologyProvider
4
+ attr_reader :uri_resource
5
+
6
+ def initialize(new_uri_resource)
7
+ raise ArgumentError, 'No uri recieved as parameter' unless new_uri_resource
8
+ @topology = Topology.new
9
+
10
+ @uri_resource = new_uri_resource
11
+ require (Pathname.new @uri_resource).realpath.to_s
12
+ self.class.send(:include, NetworkTopology)
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ "Interface for topology providers"
2
+ class ITopologyProvider
3
+ "returns a list with the topology elements (nodes, routers, links)"
4
+ def get_topology
5
+ raise NotImplementedError, "ITopologyProvider: Implement this method in a child class"
6
+ end
7
+
8
+ def get_path_between(source, destination)
9
+ raise NotImplementedError, "ITopologyProvider: Implement this method in a child class"
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ class Topologygenerator
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,34 @@
1
+ require_relative "topologygenerator/version"
2
+ require_relative 'providers/apis/onos_topology_provider.rb'
3
+ require_relative 'providers/customs/custom_topology_provider.rb'
4
+ require_relative 'output_builder.rb'
5
+
6
+ "Main class that reads a topology from a source provider and writes it using a builder"
7
+ class Topologygenerator
8
+
9
+ def initialize(arguments)
10
+ validate arguments
11
+ @arguments = arguments
12
+
13
+ case @arguments.source
14
+ when 'ONOS'
15
+ @topology_provider = OnosTopologyProvider.new @arguments.uri_resource
16
+ when 'CUSTOM'
17
+ @topology_provider = CustomTopologyProvider.new @arguments.uri_resource
18
+ else
19
+ raise ArgumentError, "The source: #{@arguments.source} is not one of the expected"
20
+ end
21
+ end
22
+
23
+ def generate
24
+ output_builder = OutputBuilder.new @topology_provider, @arguments.directory_concrete_builders, @arguments.output_directory
25
+ output_builder.build_output
26
+ end
27
+
28
+ def validate(arguments)
29
+ raise ArgumentError, 'No arguments received' unless arguments
30
+ [:source,:directory_concrete_builders,:output_directory, :uri_resource].each do |argument_name|
31
+ raise ArgumentError, "It is mandatory that arguments has a #{argument_name}" unless arguments.respond_to? argument_name
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,16 @@
1
+ module CustomFileUtils
2
+ def create_empty_file(full_file_path)
3
+ dir = File.dirname(full_file_path)
4
+
5
+ FileUtils.mkdir_p(dir) unless File.directory?(dir)
6
+
7
+ File.new(full_file_path, 'w').close()
8
+ end
9
+
10
+ def write_file(path_to_file, file_content)
11
+ create_empty_file path_to_file
12
+ open(path_to_file, 'w') do |f|
13
+ f.puts file_content
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,45 @@
1
+ require 'byebug'
2
+
3
+ # coding: utf-8
4
+ lib = File.expand_path('../lib', __FILE__)
5
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
+ require 'topologygenerator/version'
7
+
8
+ Gem::Specification.new do |spec|
9
+ spec.name = "topologygenerator"
10
+ spec.version = Topologygenerator::VERSION
11
+ spec.authors = ["Andrés Laurito"]
12
+ spec.email = ["andy.laurito@gmail.com"]
13
+
14
+ spec.summary = %q{Build a topology from a source provider and writes it using a builder.}
15
+ spec.description = %q{The topologygenerator gem is a tool for building from a network topology a custom output.
16
+ This network topology can be obtained from a custom file written in ruby by the user, or
17
+ by a SDN controller specifying the API uri (actually ONOS is support, and we are working
18
+ for OpenDayLight support).
19
+ In case of the custom output, you have to write for each class defined in the network topology,
20
+ a module that describes how to build this class. The topologygenerator gem will then use this
21
+ module's defined to generate the output desired.
22
+ You can see examples of use in my public github webpage.
23
+ }
24
+ spec.homepage = "https://github.com/andyLaurito92"
25
+ spec.license = "MIT"
26
+
27
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
28
+ # delete this section to allow pushing this gem to any host.
29
+ #if spec.respond_to?(:metadata)
30
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
31
+ #else
32
+ # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
33
+ #end
34
+
35
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
36
+ spec.bindir = "exe"
37
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
38
+ spec.require_paths = ["lib"]
39
+
40
+ spec.add_development_dependency "bundler", "~> 1.11"
41
+ spec.add_development_dependency "rake", "~> 10.0"
42
+ spec.add_development_dependency "rspec", "~> 3.4"
43
+ spec.add_development_dependency "typhoeus"
44
+ spec.add_development_dependency 'commander'
45
+ end
metadata ADDED
@@ -0,0 +1,188 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: topologygenerator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Andrés Laurito
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-11-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.11'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.4'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: typhoeus
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: commander
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: "The topologygenerator gem is a tool for building from a network topology
84
+ a custom output. \n This network topology can be obtained
85
+ from a custom file written in ruby by the user, or \n by
86
+ a SDN controller specifying the API uri (actually ONOS is support, and we are working
87
+ \n for OpenDayLight support).\n In
88
+ case of the custom output, you have to write for each class defined in the network
89
+ topology, \n a module that describes how to build this
90
+ class. The topologygenerator gem will then use this \n module's
91
+ defined to generate the output desired.\n You can see examples
92
+ of use in my public github webpage.\n "
93
+ email:
94
+ - andy.laurito@gmail.com
95
+ executables: []
96
+ extensions: []
97
+ extra_rdoc_files: []
98
+ files:
99
+ - ".gitignore"
100
+ - ".rspec"
101
+ - ".travis.yml"
102
+ - CODE_OF_CONDUCT.md
103
+ - Gemfile
104
+ - LICENSE.txt
105
+ - README.md
106
+ - Rakefile
107
+ - bin/console
108
+ - bin/setup
109
+ - lib/behaviors/serialize_behavior.rb
110
+ - lib/builders_examples/pdm_builders/PhaseI/Flow_concrete_builder.rb
111
+ - lib/builders_examples/pdm_builders/PhaseI/Host_concrete_builder.rb
112
+ - lib/builders_examples/pdm_builders/PhaseI/Link_concrete_builder.rb
113
+ - lib/builders_examples/pdm_builders/PhaseI/Router_concrete_builder.rb
114
+ - lib/builders_examples/pdm_builders/PhaseI/output_concrete_builder.rb
115
+ - lib/builders_examples/pdm_builders/PhaseI/pdm_constants.rb
116
+ - lib/builders_examples/pdm_builders/PhaseIWithPriorityQueues/Flow_concrete_builder.rb
117
+ - lib/builders_examples/pdm_builders/PhaseIWithPriorityQueues/Host_concrete_builder.rb
118
+ - lib/builders_examples/pdm_builders/PhaseIWithPriorityQueues/Link_concrete_builder.rb
119
+ - lib/builders_examples/pdm_builders/PhaseIWithPriorityQueues/Router_concrete_builder.rb
120
+ - lib/builders_examples/pdm_builders/PhaseIWithPriorityQueues/output_concrete_builder.rb
121
+ - lib/builders_examples/ruby_builders/Flow_concrete_builder.rb
122
+ - lib/builders_examples/ruby_builders/Host_concrete_builder.rb
123
+ - lib/builders_examples/ruby_builders/Link_concrete_builder.rb
124
+ - lib/builders_examples/ruby_builders/Router_concrete_builder.rb
125
+ - lib/builders_examples/ruby_builders/output_concrete_builder.rb
126
+ - lib/command_line/command_line_arguments.rb
127
+ - lib/createTopology.rb
128
+ - lib/flows_distributions/constant_distribution.rb
129
+ - lib/flows_distributions/exponential_distribution.rb
130
+ - lib/flows_distributions/normal_distribution.rb
131
+ - lib/flows_distributions/pareto_distribution.rb
132
+ - lib/flows_distributions/split_distribution.rb
133
+ - lib/network_entities/abstracts/flow.rb
134
+ - lib/network_entities/abstracts/network_element.rb
135
+ - lib/network_entities/abstracts/path.rb
136
+ - lib/network_entities/physical/host.rb
137
+ - lib/network_entities/physical/link.rb
138
+ - lib/network_entities/physical/router.rb
139
+ - lib/network_entities/topology.rb
140
+ - lib/network_topologies_examples/PhaseI_onlyLAr_1FelixTo1SWROD.rb
141
+ - lib/network_topologies_examples/octopus_topology.rb
142
+ - lib/network_topologies_examples/phase1_topology_mininet/tdaq
143
+ - lib/network_topologies_examples/phase1_topology_mininet/tdaq.py
144
+ - lib/network_topologies_examples/sofisticated_octopus_topology.rb
145
+ - lib/network_topologies_examples/tdaq_network_topology.rb
146
+ - lib/network_topologies_examples/tdaq_topology_example.rb
147
+ - lib/network_topologies_examples/tree_topology.rb
148
+ - lib/output/FlowDefinitions.cpp
149
+ - lib/output/copy_files.sh
150
+ - lib/output/flows_definition.scilabParams
151
+ - lib/output/hosts_definition.scilabParams
152
+ - lib/output/links_definition.scilabParams
153
+ - lib/output/routers_definition.scilabParams
154
+ - lib/output/ruby_network_topology.rb
155
+ - lib/output/topology.pdm
156
+ - lib/output_builder.rb
157
+ - lib/providers/apis/onos_topology_provider.rb
158
+ - lib/providers/customs/custom_topology_provider.rb
159
+ - lib/providers/interface_topology_provider.rb
160
+ - lib/topologygenerator.rb
161
+ - lib/topologygenerator/version.rb
162
+ - lib/utils/custom_files_utils.rb
163
+ - topologygenerator.gemspec
164
+ homepage: https://github.com/andyLaurito92
165
+ licenses:
166
+ - MIT
167
+ metadata: {}
168
+ post_install_message:
169
+ rdoc_options: []
170
+ require_paths:
171
+ - lib
172
+ required_ruby_version: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
+ required_rubygems_version: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ requirements: []
183
+ rubyforge_project:
184
+ rubygems_version: 2.5.1
185
+ signing_key:
186
+ specification_version: 4
187
+ summary: Build a topology from a source provider and writes it using a builder.
188
+ test_files: []