lib/vagrant-vcloud/command.rb in vagrant-vcloud-0.2.0 vs lib/vagrant-vcloud/command.rb in vagrant-vcloud-0.2.1

- old
+ new

@@ -85,95 +85,113 @@ if options[:all] == true # FIXME: this needs to be fixed to accomodate the bridged scenario # potentially showing only the assigned IPs in the VMs - vapp_edge_ip = cnx.get_vapp_edge_public_ip(vapp_id) - vapp_edge_rules = cnx.get_vapp_port_forwarding_rules(vapp_id) - edge_gateway_rules = cnx.get_edge_gateway_rules(cfg.vdc_edge_gateway, - cfg.vdc_id) + if !cfg.network_bridge.nil? - # Create a new table for the network information - network_table = Terminal::Table.new - network_table.title = 'Vagrant vCloud Director Network Map' + # Create a new table for the network information + network_table = Terminal::Table.new + network_table.title = 'Network Map' - network_table << ['VM Name', 'Destination NAT Mapping', 'Enabled'] - network_table << :separator + network_table << ['VM Name', 'IP Address', 'Connection'] + network_table << :separator - # Fetching Destination NAT Rules for each vApp/Edge/VM/Mapping - edge_gateway_rules.each do |edge_gateway_rule| - vapp_edge_rules.each do |vapp_edge_rule| + # ap vapp[:vms_hash] - # Only check DNAT and src/dst - if edge_gateway_rule[:rule_type] == 'DNAT' && - edge_gateway_rule[:original_ip] == cfg.vdc_edge_gateway_ip && - edge_gateway_rule[:translated_ip] == vapp_edge_ip + vapp[:vms_hash].each do |vm| + # ap vm - # Loop on every VM in the vApp - vapp[:vms_hash].each do |vm| - # Only Map valid vAppEdge scope to VM scope - vm_scope = vm[1][:vapp_scoped_local_id] - vapp_edge_scope = vapp_edge_rule[:vapp_scoped_local_id] + network_table << [vm[0], vm[1][:addresses][0], 'Direct'] + end + else - if vm_scope == vapp_edge_scope + vapp_edge_ip = cnx.get_vapp_edge_public_ip(vapp_id) + vapp_edge_rules = cnx.get_vapp_port_forwarding_rules(vapp_id) + edge_gateway_rules = cnx.get_edge_gateway_rules(cfg.vdc_edge_gateway, + cfg.vdc_id) - # Generate DNAT Mappings for the valid machines - # If rules don't match, you will not see them ! - network_table << [ - "#{vm[0]}", - "#{cfg.vdc_edge_gateway_ip}:" + - "#{vapp_edge_rule[:nat_external_port]}" + - " -> #{vapp_edge_ip}:" + - "#{vapp_edge_rule[:nat_external_port]}" + - " -> #{vm[1][:addresses][0]}:" + - "#{vapp_edge_rule[:nat_internal_port]}", - edge_gateway_rule[:is_enabled] - ] + # Create a new table for the network information + network_table = Terminal::Table.new + network_table.title = 'Vagrant vCloud Director Network Map' + + network_table << ['VM Name', 'Destination NAT Mapping', 'Enabled'] + network_table << :separator + + # Fetching Destination NAT Rules for each vApp/Edge/VM/Mapping + edge_gateway_rules.each do |edge_gateway_rule| + vapp_edge_rules.each do |vapp_edge_rule| + + # Only check DNAT and src/dst + if edge_gateway_rule[:rule_type] == 'DNAT' && + edge_gateway_rule[:original_ip] == cfg.vdc_edge_gateway_ip && + edge_gateway_rule[:translated_ip] == vapp_edge_ip + + # Loop on every VM in the vApp + vapp[:vms_hash].each do |vm| + # Only Map valid vAppEdge scope to VM scope + vm_scope = vm[1][:vapp_scoped_local_id] + vapp_edge_scope = vapp_edge_rule[:vapp_scoped_local_id] + + if vm_scope == vapp_edge_scope + + # Generate DNAT Mappings for the valid machines + # If rules don't match, you will not see them ! + network_table << [ + "#{vm[0]}", + "#{cfg.vdc_edge_gateway_ip}:" + + "#{vapp_edge_rule[:nat_external_port]}" + + " -> #{vapp_edge_ip}:" + + "#{vapp_edge_rule[:nat_external_port]}" + + " -> #{vm[1][:addresses][0]}:" + + "#{vapp_edge_rule[:nat_internal_port]}", + edge_gateway_rule[:is_enabled] + ] + end end end end end - end - # Fetching Source NAT Rules for the vApp - network_table << :separator - network_table << ['Network Name', 'Source NAT Mapping', 'Enabled'] - network_table << :separator + # Fetching Source NAT Rules for the vApp + network_table << :separator + network_table << ['Network Name', 'Source NAT Mapping', 'Enabled'] + network_table << :separator - edge_gateway_rules.each do |edge_gateway_rule| - # Only check SNAT and src/dst - if edge_gateway_rule[:rule_type] == 'SNAT' && - edge_gateway_rule[:original_ip] == vapp_edge_ip && - edge_gateway_rule[:translated_ip] == cfg.vdc_edge_gateway_ip + edge_gateway_rules.each do |edge_gateway_rule| + # Only check SNAT and src/dst + if edge_gateway_rule[:rule_type] == 'SNAT' && + edge_gateway_rule[:original_ip] == vapp_edge_ip && + edge_gateway_rule[:translated_ip] == cfg.vdc_edge_gateway_ip - network_table << [ - edge_gateway_rule[:interface_name], - "#{vapp_edge_ip} -> #{cfg.vdc_edge_gateway_ip}", - edge_gateway_rule[:is_enabled] - ] + network_table << [ + edge_gateway_rule[:interface_name], + "#{vapp_edge_ip} -> #{cfg.vdc_edge_gateway_ip}", + edge_gateway_rule[:is_enabled] + ] + end end - end - # Fetching Edge Gateway Firewall Rules - network_table << :separator - network_table << ['Rule# - Description', 'Firewall Rules', 'Enabled'] - network_table << :separator - edge_gateway_rules.each do |edge_gateway_rule| - # Only add firewall rules - if edge_gateway_rule[:rule_type] == 'Firewall' - network_table << [ - "#{edge_gateway_rule[:id]} - " + - "(#{edge_gateway_rule[:description]})", - "#{edge_gateway_rule[:policy]} " + - "SRC:#{edge_gateway_rule[:source_ip]}:" + - "#{edge_gateway_rule[:source_portrange]} to " + - "DST:#{edge_gateway_rule[:destination_ip]}:" + - "#{edge_gateway_rule[:destination_portrange]}", - "#{edge_gateway_rule[:is_enabled]}" - ] + # Fetching Edge Gateway Firewall Rules + network_table << :separator + network_table << ['Rule# - Description', 'Firewall Rules', 'Enabled'] + network_table << :separator + edge_gateway_rules.each do |edge_gateway_rule| + # Only add firewall rules + if edge_gateway_rule[:rule_type] == 'Firewall' + network_table << [ + "#{edge_gateway_rule[:id]} - " + + "(#{edge_gateway_rule[:description]})", + "#{edge_gateway_rule[:policy]} " + + "SRC:#{edge_gateway_rule[:source_ip]}:" + + "#{edge_gateway_rule[:source_portrange]} to " + + "DST:#{edge_gateway_rule[:destination_ip]}:" + + "#{edge_gateway_rule[:destination_portrange]}", + "#{edge_gateway_rule[:is_enabled]}" + ] + end end end - # Print the Network Table puts puts network_table end