1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
"""List firewalls."""
# :license: MIT, see LICENSE for more details.
import click
import SoftLayer
from SoftLayer.CLI import environment
from SoftLayer.CLI import formatting
from SoftLayer import utils
@click.command(cls=SoftLayer.CLI.command.SLCommand, )
@environment.pass_env
def cli(env):
"""List firewalls."""
mgr = SoftLayer.FirewallManager(env.client)
table = formatting.Table(['firewall id',
'type',
'features',
'server/vlan id'], title='Single Server Firewalls')
fwvlans = mgr.get_firewalls()
dedicated_firewalls = [firewall for firewall in fwvlans
if firewall['dedicatedFirewallFlag']]
for vlan in dedicated_firewalls:
features = []
if vlan['highAvailabilityFirewallFlag']:
features.append('HA')
if features:
feature_list = formatting.listing(features, separator=',')
else:
feature_list = formatting.blank()
table.add_row([
'vlan:%s' % vlan['networkVlanFirewall']['id'],
'VLAN - dedicated',
feature_list,
vlan['id']
])
shared_vlan = [firewall for firewall in fwvlans
if not firewall['dedicatedFirewallFlag']]
for vlan in shared_vlan:
vs_firewalls = [guest
for guest in vlan['firewallGuestNetworkComponents']
if has_firewall_component(guest)]
for firewall in vs_firewalls:
table.add_row([
'vs:%s' % firewall['id'],
'Virtual Server - standard',
'-',
firewall['guestNetworkComponent']['guest']['id']
])
server_firewalls = [server
for server in vlan['firewallNetworkComponents']
if has_firewall_component(server)]
for firewall in server_firewalls:
table.add_row([
'server:%s' % firewall['id'],
'Server - standard',
'-',
utils.lookup(firewall,
'networkComponent',
'downlinkComponent',
'hardwareId')
])
table_gatewalls = formatting.Table(['Id',
'firewall',
'type',
'Hostname',
'Location',
'Public Ip',
'Private Ip',
'Associated vlan',
'status'], title='Multi Vlan Firewall')
fw_gatewwalls = mgr.get_firewalls_gatewalls()
for gatewalls in fw_gatewwalls:
table_gatewalls.add_row([gatewalls['networkFirewall']['id'], gatewalls.get('name'),
gatewalls['networkFirewall']['firewallType'],
gatewalls['members'][0]['hardware']['hostname'],
gatewalls['networkFirewall']['datacenter']['name'],
gatewalls['publicIpAddress']['ipAddress'],
gatewalls['privateIpAddress']['ipAddress'],
len(gatewalls['insideVlans']), gatewalls['status']['keyName']])
env.fout(table)
env.fout(table_gatewalls)
def has_firewall_component(server):
"""Helper to determine whether or not a server has a firewall.
:param dict server: A dictionary representing a server
:returns: True if the Server has a firewall.
"""
if server['status'] != 'no_edit':
return True
return False
|