class Docker2plantuml::DockerJsonParser
Public Class Methods
new(json)
click to toggle source
# File lib/docker2plantuml/parser.rb, line 5 def initialize(json) @json_data = json end
Public Instance Methods
create_port_info(ports)
click to toggle source
# 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()
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/docker2plantuml/parser.rb, line 29 def parse_container_status(json) json['State']['Status'] end
parse_network_and_port(json, container)
click to toggle source
# 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)
click to toggle source
# File lib/docker2plantuml/parser.rb, line 46 def parse_network_settings(json) json['NetworkSettings'] end
parse_networks(json)
click to toggle source
# 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)
click to toggle source
# File lib/docker2plantuml/parser.rb, line 50 def parse_ports(json) network_settings = parse_network_settings(json) create_port_info(network_settings['Ports']) end