def parse_multi_parameter_cli(self, cli):
     '''Override the default implementation in case the CLI does not match asa_gen_template due to optional
     parameter
     '''
     result = SimpleType.parse_multi_parameter_cli(self, cli)
     if not result:
         result = SimpleType.parse_multi_parameter_cli(self, cli,
                                                       alternate_asa_gen_template = ' '.join(self.asa_gen_template.split()[:3]))
     return result
Beispiel #2
0
 def parse_multi_parameter_cli(self, cli):
     '''Override the default implementation in case the CLI does not match asa_gen_template due to optional
     parameter
     '''
     result = SimpleType.parse_multi_parameter_cli(self, cli)
     if not result:
         result = SimpleType.parse_multi_parameter_cli(
             self,
             cli,
             alternate_asa_gen_template=' '.join(
                 self.asa_gen_template.split()[:3]))
     return result
    def parse_multi_parameter_cli(self, cli):
        # Take care of the mandatory parameters
        result = SimpleType.parse_multi_parameter_cli(self, cli, alternate_asa_gen_template = self.asa_gen_template)

        'Take care of the optional parameters'
        tokens = cli.split()

        # The number of tokens must greater than 2, i.e. 'ipv6 address prefix or default'
        assert len(tokens) > 2

        if ' at ' in cli:
            colon_index_list = [a for a,b in enumerate(tokens) if ':' in b]
            d1 = self.get_date_without_year(' '.join(tokens[5:colon_index_list[0]+1]))
            d2 = self.get_date_without_year(' '.join(tokens[(colon_index_list[0] + 1):colon_index_list[1]+1]))

            result[(Type.PARAM, 'valid_lifetime_in_date', '')] = {'state': State.NOCHANGE, 'value': d1}
            result[(Type.PARAM, 'prefered_lifetime_in_date', '')] = {'state': State.NOCHANGE, 'value': d2}
        elif len(tokens) > 5 and (tokens[4].isdigit() or tokens[4] == 'infinite') and \
            (tokens[5].isdigit() or tokens[5] == 'infinite'):
            s1 = 'valid_lifetime_in_seconds' if tokens[5].isdigit() else 'valid_lifetime_never_expire'
            s2 = 'prefered_lifetime_in_seconds' if tokens[5].isdigit() else 'prefered_lifetime_never_expire'
            result[(Type.PARAM, s1, '')] = {'state': State.NOCHANGE, 'value': tokens[4]}
            result[(Type.PARAM, s2, '')] = {'state': State.NOCHANGE, 'value': tokens[5]}
        if 'no-advertise' in cli:
            result[(Type.PARAM, 'no_advertise', '')] = {'state': State.NOCHANGE, 'value': 'enable'}
        else:
            if 'off-link' in cli:
                result[(Type.PARAM, 'off-link', '')] = {'state': State.NOCHANGE, 'value': 'enable'}
            if 'no-autoconfig' in cli:
                result[(Type.PARAM, 'no-autoconfig', '')] = {'state': State.NOCHANGE, 'value': 'enable'}
        return result
Beispiel #4
0
    def parse_multi_parameter_cli(self, cli):
        # Take care of the mandatory parameters
        result = SimpleType.parse_multi_parameter_cli(
            self, cli, alternate_asa_gen_template=self.asa_gen_template)

        'Take care of the optional parameters'
        tokens = cli.split()

        # The number of tokens must greater than 2, i.e. 'ipv6 address prefix or default'
        assert len(tokens) > 2

        if ' at ' in cli:
            colon_index_list = [a for a, b in enumerate(tokens) if ':' in b]
            d1 = self.get_date_without_year(' '.join(
                tokens[5:colon_index_list[0] + 1]))
            d2 = self.get_date_without_year(' '.join(
                tokens[(colon_index_list[0] + 1):colon_index_list[1] + 1]))

            result[(Type.PARAM, 'valid_lifetime_in_date', '')] = {
                'state': State.NOCHANGE,
                'value': d1
            }
            result[(Type.PARAM, 'prefered_lifetime_in_date', '')] = {
                'state': State.NOCHANGE,
                'value': d2
            }
        elif len(tokens) > 5 and (tokens[4].isdigit() or tokens[4] == 'infinite') and \
            (tokens[5].isdigit() or tokens[5] == 'infinite'):
            s1 = 'valid_lifetime_in_seconds' if tokens[5].isdigit(
            ) else 'valid_lifetime_never_expire'
            s2 = 'prefered_lifetime_in_seconds' if tokens[5].isdigit(
            ) else 'prefered_lifetime_never_expire'
            result[(Type.PARAM, s1, '')] = {
                'state': State.NOCHANGE,
                'value': tokens[4]
            }
            result[(Type.PARAM, s2, '')] = {
                'state': State.NOCHANGE,
                'value': tokens[5]
            }
        if 'no-advertise' in cli:
            result[(Type.PARAM, 'no_advertise', '')] = {
                'state': State.NOCHANGE,
                'value': 'enable'
            }
        else:
            if 'off-link' in cli:
                result[(Type.PARAM, 'off-link', '')] = {
                    'state': State.NOCHANGE,
                    'value': 'enable'
                }
            if 'no-autoconfig' in cli:
                result[(Type.PARAM, 'no-autoconfig', '')] = {
                    'state': State.NOCHANGE,
                    'value': 'enable'
                }
        return result
 def parse_multi_parameter_cli(self, cli):
     result = SimpleType.parse_multi_parameter_cli(self, cli, alternate_asa_gen_template = self.asa_gen_template)
     tokens = cli.split()
     if len(tokens) == 3:
         return result # no optional parameter
     result[(Type.PARAM, 'peer_mac', '')] = {'state': State.NOCHANGE, 'value': ''}
     option = tokens[3:]
     if 'mac' in option: # e.g. "peer ip 10.10.10.10 mac 1234.5678.9abc"
         result[Type.PARAM, 'peer_mac', '']['value'] = option[1]
     return result
    def parse_multi_parameter_cli(self, cli):
        # Take care of the mandatory parameters
        result = SimpleType.parse_multi_parameter_cli(self, cli, alternate_asa_gen_template = self.asa_gen_template)

        'Take care of the optional parameters'
        tokens = cli.split()

        # The number of tokens must greater than 2, i.e. 'ipv6 address x:x:x:x::x/prefix eui-64'
        assert len(tokens) > 2

        if len(tokens) == 4:
            result[(Type.PARAM, 'eui64', '')] = {'state': State.NOCHANGE, 'value': ''}
            result[Type.PARAM, 'eui64', '']['value'] = 'enable'
        return result
Beispiel #7
0
 def parse_multi_parameter_cli(self, cli):
     result = SimpleType.parse_multi_parameter_cli(
         self, cli, alternate_asa_gen_template=self.asa_gen_template)
     tokens = cli.split()
     if len(tokens) == 3:
         return result  # no optional parameter
     result[(Type.PARAM, 'peer_mac', '')] = {
         'state': State.NOCHANGE,
         'value': ''
     }
     option = tokens[3:]
     if 'mac' in option:  # e.g. "peer ip 10.10.10.10 mac 1234.5678.9abc"
         result[Type.PARAM, 'peer_mac', '']['value'] = option[1]
     return result
Beispiel #8
0
    def parse_multi_parameter_cli(self, cli):
        # Take care of the mandatory parameters
        result = SimpleType.parse_multi_parameter_cli(
            self, cli, alternate_asa_gen_template=self.asa_gen_template)

        'Take care of the optional parameters'
        tokens = cli.split()

        # The number of tokens must greater than 2, i.e. 'ipv6 address x:x:x:x::x/prefix eui-64'
        assert len(tokens) > 2

        if len(tokens) == 4:
            result[(Type.PARAM, 'eui64', '')] = {
                'state': State.NOCHANGE,
                'value': ''
            }
            result[Type.PARAM, 'eui64', '']['value'] = 'enable'
        return result
Beispiel #9
0
    def parse_multi_parameter_cli(self, cli):
        """
        Override the default implementation in case the CLI does not match asa_gen_template due to optional parameter
        """
        # Take care of the mandatory parameters
        result = SimpleType.parse_multi_parameter_cli(self, cli, alternate_asa_gen_template=self.asa_gen_template)

        "Take care of the optional parameters"
        tokens = cli.split()

        # The number of mandatory parameters is 3, i.e. 'ntp server 1.1.1.1'
        if len(tokens) == 3:
            return result  # no optional parameter

        for name in ["key", "prefer"]:
            result[(Type.PARAM, name, "")] = {"state": State.NOCHANGE, "value": ""}

        option = tokens[3:]
        if "key" in option:  # e.g. "ntp server 1.1.1.1 key 11
            result[Type.PARAM, "key", ""]["value"] = option[1]
        if "prefer" in option:  # e.g. "ntp server 1.1.1.1 prefer
            result[Type.PARAM, "prefer", ""]["value"] = "enable"
        return result