topologygenerator 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []