예제 #1
0
def cli(env, identifier):
    """Detail firewall."""

    mgr = SoftLayer.FirewallManager(env.client)

    firewall_type, firewall_id = firewall.parse_id(identifier)
    _firewall = mgr.get_instance(firewall_id)

    table = formatting.KeyValueTable(['name', 'value'])
    table.align['name'] = 'r'
    table.align['value'] = 'l'

    table.add_row(['id', _firewall.get('id')])
    table.add_row(['primaryIpAddress', _firewall.get('primaryIpAddress')])
    table.add_row(
        ['datacenter',
         utils.lookup(_firewall, 'datacenter', 'longName')])
    table.add_row(
        ['networkVlan',
         utils.lookup(_firewall, 'networkVlan', 'name')])
    table.add_row(
        ['networkVlaniD',
         utils.lookup(_firewall, 'networkVlan', 'id')])

    if firewall_type == 'vlan':
        rules = mgr.get_dedicated_fwl_rules(firewall_id)
    else:
        rules = mgr.get_standard_fwl_rules(firewall_id)
    table.add_row(['rules', get_rules_table(rules)])
    env.fout(table)
예제 #2
0
def cli(env, identifier):
    """Detail firewall."""

    mgr = SoftLayer.FirewallManager(env.client)

    firewall_type, firewall_id = firewall.parse_id(identifier)
    if firewall_type == 'vlan':
        rules = mgr.get_dedicated_fwl_rules(firewall_id)
    else:
        rules = mgr.get_standard_fwl_rules(firewall_id)

    env.fout(get_rules_table(rules))
예제 #3
0
def cli(env, identifier):
    """Detail firewall."""

    mgr = SoftLayer.FirewallManager(env.client)

    firewall_type, firewall_id = firewall.parse_id(identifier)
    if firewall_type == 'vlan':
        rules = mgr.get_dedicated_fwl_rules(firewall_id)
    else:
        rules = mgr.get_standard_fwl_rules(firewall_id)

    env.fout(get_rules_table(rules))
예제 #4
0
def cli(env, identifier):
    """List firewalls."""

    mgr = SoftLayer.FirewallManager(env.client)
    firewall_type, firewall_id = firewall.parse_id(identifier)

    if any([env.skip_confirmations,
            formatting.confirm("This action will cancel a firewall from your"
                               "account. Continue?")]):
        if firewall_type in ['vs', 'server']:
            mgr.cancel_firewall(firewall_id, dedicated=False)
        elif firewall_type == 'vlan':
            mgr.cancel_firewall(firewall_id, dedicated=True)
        return 'Firewall with id %s is being cancelled!' % identifier
    else:
        raise exceptions.CLIAbort('Aborted.')
예제 #5
0
def cli(env, identifier):
    """List firewalls."""

    mgr = SoftLayer.FirewallManager(env.client)
    firewall_type, firewall_id = firewall.parse_id(identifier)

    if any([
            env.skip_confirmations,
            formatting.confirm("This action will cancel a firewall from your"
                               "account. Continue?")
    ]):
        if firewall_type in ['cci', 'server']:
            mgr.cancel_firewall(firewall_id, dedicated=False)
        elif firewall_type == 'vlan':
            mgr.cancel_firewall(firewall_id, dedicated=True)
        return 'Firewall with id %s is being cancelled!' % identifier
    else:
        raise exceptions.CLIAbort('Aborted.')
예제 #6
0
def cli(env, identifier):
    """Cancels a firewall."""

    mgr = SoftLayer.FirewallManager(env.client)
    firewall_type, firewall_id = firewall.parse_id(identifier)

    if not (env.skip_confirmations or
            formatting.confirm("This action will cancel a firewall from your "
                               "account. Continue?")):
        raise exceptions.CLIAbort('Aborted.')

    if firewall_type in ['vs', 'server']:
        mgr.cancel_firewall(firewall_id, dedicated=False)
    elif firewall_type == 'vlan':
        mgr.cancel_firewall(firewall_id, dedicated=True)
    else:
        raise exceptions.CLIAbort('Unknown firewall type: %s' % firewall_type)

    env.fout('Firewall with id %s is being cancelled!' % identifier)
예제 #7
0
def cli(env, identifier):
    """Cancels a firewall."""

    mgr = SoftLayer.FirewallManager(env.client)
    firewall_type, firewall_id = firewall.parse_id(identifier)

    if not (env.skip_confirmations or formatting.confirm(
            "This action will cancel a firewall from your "
            "account. Continue?")):
        raise exceptions.CLIAbort('Aborted.')

    if firewall_type in ['vs', 'server']:
        mgr.cancel_firewall(firewall_id, dedicated=False)
    elif firewall_type == 'vlan':
        mgr.cancel_firewall(firewall_id, dedicated=True)
    else:
        raise exceptions.CLIAbort('Unknown firewall type: %s' % firewall_type)

    env.fout('Firewall with id %s is being cancelled!' % identifier)
예제 #8
0
def cli(env, identifier):
    """Edit firewall rules."""

    mgr = SoftLayer.FirewallManager(env.client)

    firewall_type, firewall_id = firewall.parse_id(identifier)
    if firewall_type == 'vlan':
        orig_rules = mgr.get_dedicated_fwl_rules(firewall_id)
    else:
        orig_rules = mgr.get_standard_fwl_rules(firewall_id)
    # open an editor for the user to enter their rules
    edited_rules = open_editor(rules=orig_rules)
    env.out(edited_rules)
    if formatting.confirm("Would you like to submit the rules. "
                          "Continue?"):
        while True:
            try:
                rules = parse_rules(edited_rules)
                if firewall_type == 'vlan':
                    rules = mgr.edit_dedicated_fwl_rules(firewall_id,
                                                         rules)
                else:
                    rules = mgr.edit_standard_fwl_rules(firewall_id,
                                                        rules)
                break
            except (SoftLayer.SoftLayerError, ValueError) as error:
                env.out("Unexpected error({%s})" % (error))
                if formatting.confirm("Would you like to continue editing "
                                      "the rules. Continue?"):
                    edited_rules = open_editor(content=edited_rules)
                    env.out(edited_rules)
                    if formatting.confirm("Would you like to submit the "
                                          "rules. Continue?"):
                        continue
                    else:
                        raise exceptions.CLIAbort('Aborted.')
                else:
                    raise exceptions.CLIAbort('Aborted.')
                env.fout('Firewall updated!')
    else:
        raise exceptions.CLIAbort('Aborted.')
예제 #9
0
def cli(env, identifier):
    """Edit firewall rules."""

    mgr = SoftLayer.FirewallManager(env.client)

    firewall_type, firewall_id = firewall.parse_id(identifier)
    if firewall_type == 'vlan':
        orig_rules = mgr.get_dedicated_fwl_rules(firewall_id)
    else:
        orig_rules = mgr.get_standard_fwl_rules(firewall_id)
    # open an editor for the user to enter their rules
    edited_rules = open_editor(rules=orig_rules)
    env.out(edited_rules)
    if formatting.confirm("Would you like to submit the rules. " "Continue?"):
        while True:
            try:
                rules = parse_rules(edited_rules)
                if firewall_type == 'vlan':
                    rules = mgr.edit_dedicated_fwl_rules(firewall_id, rules)
                else:
                    rules = mgr.edit_standard_fwl_rules(firewall_id, rules)
                break
            except (SoftLayer.SoftLayerError, ValueError) as error:
                env.out("Unexpected error({%s})" % (error))
                if formatting.confirm("Would you like to continue editing "
                                      "the rules. Continue?"):
                    edited_rules = open_editor(content=edited_rules)
                    env.out(edited_rules)
                    if formatting.confirm("Would you like to submit the "
                                          "rules. Continue?"):
                        continue
                    else:
                        raise exceptions.CLIAbort('Aborted.')
                else:
                    raise exceptions.CLIAbort('Aborted.')
                env.fout('Firewall updated!')
    else:
        raise exceptions.CLIAbort('Aborted.')
예제 #10
0
 def __init__(self, path, fw):
     self.client = SoftLayer.Client()
     self.fw = SoftLayer.FirewallManager(self.client)
     self.path = path
     self.fw_type, self.fw_id = firewall.parse_id(fw)
예제 #11
0
def cli(env, identifier, credentials):
    """Detail firewall.

    EXAMPLES:

        slcli firewall detail vs:12345

        slcli firewall detail --credentials true multiVlan:456789
    """

    mgr = SoftLayer.FirewallManager(env.client)

    firewall_type, firewall_id = firewall.parse_id(identifier)

    if firewall_type in ('vs', 'server', 'vlan', 'multiVlan'):

        if firewall_type == 'vlan':
            _firewall = mgr.get_instance(firewall_id)

            table = formatting.KeyValueTable(['name', 'value'])
            table.align['name'] = 'r'
            table.align['value'] = 'l'

            table.add_row(['id', _firewall.get('id')])
            table.add_row(
                ['primaryIpAddress',
                 _firewall.get('primaryIpAddress')])
            table.add_row([
                'datacenter',
                utils.lookup(_firewall, 'datacenter', 'longName')
            ])
            table.add_row([
                'networkVlan',
                utils.lookup(_firewall, 'networkVlan', 'name')
            ])
            table.add_row([
                'networkVlaniD',
                utils.lookup(_firewall, 'networkVlan', 'id')
            ])

            rules = mgr.get_dedicated_fwl_rules(firewall_id)
            table.add_row(['rules', get_rules_table(rules)])

        if firewall_type == 'multiVlan':
            _firewall = mgr.get_instance(firewall_id)

            table = formatting.KeyValueTable(['name', 'value'])
            table.align['name'] = 'r'
            table.align['value'] = 'l'

            table.add_row(
                ['name',
                 utils.lookup(_firewall, 'networkGateway', 'name')])
            table.add_row([
                'datacenter',
                utils.lookup(_firewall, 'datacenter', 'longName')
            ])
            table.add_row([
                'public ip',
                utils.lookup(_firewall, 'networkGateway', 'publicIpAddress',
                             'ipAddress')
            ])
            table.add_row([
                'private ip',
                utils.lookup(_firewall, 'networkGateway', 'privateIpAddress',
                             'ipAddress')
            ])
            table.add_row([
                'public  ipv6',
                utils.lookup(_firewall, 'networkGateway', 'publicIpv6Address',
                             'ipAddress')
            ])
            table.add_row([
                'public vlan',
                utils.lookup(_firewall, 'networkGateway', 'publicVlan',
                             'vlanNumber')
            ])
            table.add_row([
                'private vlan',
                utils.lookup(_firewall, 'networkGateway', 'privateVlan',
                             'vlanNumber')
            ])
            table.add_row(['type', _firewall.get('firewallType')])

            if credentials:
                table.add_row([
                    'fortiGate username',
                    utils.lookup(_firewall, 'managementCredentials',
                                 'username')
                ])
                table.add_row([
                    'fortiGate password',
                    utils.lookup(_firewall, 'managementCredentials',
                                 'password')
                ])

            rules = mgr.get_dedicated_fwl_rules(firewall_id)
            if len(rules) != 0:
                table.add_row(['rules', get_rules_table(rules)])
            else:
                table.add_row(['rules', '-'])

        if firewall_type == 'vs' or firewall_type == 'server':
            rules = mgr.get_standard_fwl_rules(firewall_id)
            table = get_rules_table(rules)

        env.fout(table)

    else:
        click.secho(
            'Invalid firewall type %s: firewall type should be either vlan, multiVlan, vs or server.'
            % firewall_type,
            fg='red')
        return