Class: Docker2plantuml::DockerJsonParser
- Inherits:
-
Object
- Object
- Docker2plantuml::DockerJsonParser
- Defined in:
- lib/docker2plantuml/parser.rb
Instance Method Summary collapse
- #create_port_info(ports) ⇒ Object
-
#initialize(json) ⇒ DockerJsonParser
constructor
A new instance of DockerJsonParser.
- #parse ⇒ Object
- #parse_container(json) ⇒ Object
- #parse_container_name(json) ⇒ Object
- #parse_container_status(json) ⇒ Object
- #parse_network_and_port(json, container) ⇒ Object
- #parse_network_settings(json) ⇒ Object
- #parse_networks(json) ⇒ Object
- #parse_ports(json) ⇒ Object
Constructor Details
#initialize(json) ⇒ DockerJsonParser
Returns a new instance of DockerJsonParser.
5 6 7 |
# File 'lib/docker2plantuml/parser.rb', line 5 def initialize(json) @json_data = json end |
Instance Method Details
#create_port_info(ports) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/docker2plantuml/parser.rb', line 55 def create_port_info(ports) ret = ports .reject { |_container_port, host_port| host_port.nil? } .map do |c_port, h_port| h_port.map { |val| Docker2plantuml::PortInfo.new(c_port, val['HostPort']) } end ret = ret.inject([]) { |list, p| list + p } ret.concat( ports.select { |_container_port, host_port| host_port.nil? } .map { |container_port, _host_port| Docker2plantuml::PortInfo.new(container_port) } ) end |
#parse ⇒ Object
9 10 11 12 13 14 15 |
# File 'lib/docker2plantuml/parser.rb', line 9 def parse @json_data.map do |json| container = parse_container(json) parse_network_and_port(json, container) container end end |
#parse_container(json) ⇒ Object
17 18 19 20 21 22 |
# File 'lib/docker2plantuml/parser.rb', line 17 def parse_container(json) Docker2plantuml::DockerContainer.new( parse_container_name(json), parse_container_status(json) ) end |
#parse_container_name(json) ⇒ Object
24 25 26 27 |
# File 'lib/docker2plantuml/parser.rb', line 24 def parse_container_name(json) name = json['Name'] name.slice(1..-1) if name.start_with?('/') end |
#parse_container_status(json) ⇒ Object
29 30 31 |
# File 'lib/docker2plantuml/parser.rb', line 29 def parse_container_status(json) json['State']['Status'] end |
#parse_network_and_port(json, container) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/docker2plantuml/parser.rb', line 33 def parse_network_and_port(json, container) networks = parse_networks(json) return unless networks.is_a? String container.network_setting = Docker2plantuml::NetworkSetting.new(networks) container.port_info_list.concat(parse_ports(json)) end |
#parse_network_settings(json) ⇒ Object
46 47 48 |
# File 'lib/docker2plantuml/parser.rb', line 46 def parse_network_settings(json) json['NetworkSettings'] end |
#parse_networks(json) ⇒ Object
41 42 43 44 |
# File 'lib/docker2plantuml/parser.rb', line 41 def parse_networks(json) network_settings = parse_network_settings(json) network_settings['Networks'].map { |k, _v| k }.first end |
#parse_ports(json) ⇒ Object
50 51 52 53 |
# File 'lib/docker2plantuml/parser.rb', line 50 def parse_ports(json) network_settings = parse_network_settings(json) create_port_info(network_settings['Ports']) end |