Exemplo n.º 1
0
        self.lock_config()

        try:
            self.config.rollback(identifier)
        except ValueError:
            exc = get_exception()
            self.raise_exc('Unable to rollback config: $s' % str(exc))

        diff = self.config.diff()
        if commit:
            self.commit_config(comment=comment)

        self.unlock_config()
        return diff

Netconf = register_transport('netconf')(Netconf)


class Cli(CliBase):

    CLI_PROMPTS_RE = [
        re.compile(r"[\r\n]?[\w+\-\.:\/\[\]]+(?:\([^\)]+\)){,3}(?:>|#) ?$"),
        re.compile(r"\[\w+\@[\w\-\.]+(?: [^\]])\] ?[>#\$] ?$")
    ]

    CLI_ERRORS_RE = [
        re.compile(r"unkown command")
    ]

    def connect(self, params, **kwargs):
        super(Cli, self).connect(params, **kwargs)
Exemplo n.º 2
0
    def _jsonify(self, data):
        for encoding in ("utf-8", "latin-1"):
            try:
                return json.dumps(data, encoding=encoding)
            # Old systems using old simplejson module does not support encoding keyword.
            except TypeError:
                try:
                    new_data = json_dict_bytes_to_unicode(data, encoding=encoding)
                except UnicodeDecodeError:
                    continue
                return json.dumps(new_data)
            except UnicodeDecodeError:
                continue
        self._error(msg='Invalid unicode encoding encountered')

Nxapi = register_transport('nxapi')(Nxapi)


class Cli(CliBase):

    CLI_PROMPTS_RE = [
        re.compile(r'[\r\n]?[a-zA-Z]{1}[a-zA-Z0-9-]*[>|#|%](?:\s*)$'),
        re.compile(r'[\r\n]?[a-zA-Z]{1}[a-zA-Z0-9-]*\(.+\)#(?:\s*)$')
    ]

    CLI_ERRORS_RE = [
        re.compile(r"% ?Error"),
        re.compile(r"^% \w+", re.M),
        re.compile(r"% ?Bad secret"),
        re.compile(r"invalid input", re.I),
        re.compile(r"(?:incomplete|ambiguous) command", re.I),
Exemplo n.º 3
0
Arquivo: eos.py Projeto: likewg/DevOps
        for index, cmd in enumerate(commands):
            if cmd.output == 'text':
                responses[index] = responses[index].get('output')

        return responses

    ### Config methods ###

    def get_config(self, include_defaults=False):
        cmd = 'show running-config'
        if include_defaults:
            cmd += ' all'
        return self.execute([cmd], output='text')[0]['output']

Eapi = register_transport('eapi')(Eapi)


class Cli(EosConfigMixin, CliBase):

    CLI_PROMPTS_RE = [
        re.compile(r"[\r\n]?[\w+\-\.:\/\[\]]+(?:\([^\)]+\)){,3}(?:>|#) ?$"),
        re.compile(r"\[\w+\@[\w\-\.]+(?: [^\]])\] ?[>#\$] ?$")
    ]

    CLI_ERRORS_RE = [
        re.compile(r"% ?Error"),
        re.compile(r"^% \w+", re.M),
        re.compile(r"% ?Bad secret"),
        re.compile(r"invalid input", re.I),
        re.compile(r"(?:incomplete|ambiguous) command", re.I),
Exemplo n.º 4
0
        cmds.extend(to_list(commands))
        cmds.append('end')
        cmds.append('commit')

        responses = self.execute(cmds)
        responses.pop(0)
        return responses


    def get_config(self, **kwargs):
        return self.execute(['show running-configuration'])


    def load_config(self, commands, **kwargs):
        return self.configure(commands)


    def commit_config(self, **kwargs):
        self.execute(['commit'])


    def abort_config(self, **kwargs):
        self.execute(['discard'])


    def save_config(self):
        self.execute(['copy running-config startup-config'])


Cli = register_transport('cli', default=True)(Cli)
Exemplo n.º 5
0
        # Found on 11.6.1
        re.compile(r"[\w-]+\@\([\w\-\.]+\)"),
    ]

    CLI_ERRORS_RE = [
        re.compile(r"connection timed out", re.I),
        re.compile(r"syntax error: unexpected argument", re.I)
    ]

    NET_PASSWD_RE = re.compile(r"[\r\n]?password: $", re.I)

    def connect(self, params, **kwargs):
        super(Cli, self).connect(params, kickstart=False, **kwargs)


Cli = register_transport('cli', default=True)(Cli)




from ansible.module_utils.basic import *
from ansible.module_utils.f5 import *
from ansible.module_utils.basic import get_exception
from ansible.module_utils.network import NetworkModule, NetworkError
from ansible.module_utils.netcli import CommandRunner
from ansible.module_utils.netcli import AddCommandError, FailedConditionsError
from ansible.module_utils.netcli import FailedConditionalError, AddConditionError
from ansible.module_utils.six import string_types


VALID_KEYS = ['command', 'output', 'prompt', 'response']
Exemplo n.º 6
0
        try:
            self.config.rollback(identifier)
        except ValueError:
            exc = get_exception()
            self.raise_exc('Unable to rollback config: $s' % str(exc))

        diff = self.config.diff()
        if commit:
            self.commit_config(comment=comment)

        self.unlock_config()
        return diff


Netconf = register_transport('netconf')(Netconf)


class Cli(CliBase):

    CLI_PROMPTS_RE = [
        re.compile(r"[\r\n]?[\w+\-\.:\/\[\]]+(?:\([^\)]+\)){,3}(?:>|#) ?$"),
        re.compile(r"\[\w+\@[\w\-\.]+(?: [^\]])\] ?[>#\$] ?$")
    ]

    CLI_ERRORS_RE = [re.compile(r"unkown command")]

    def connect(self, params, **kwargs):
        super(Cli, self).connect(params, **kwargs)
        if self.shell._matched_prompt.strip().endswith('%'):
            self.execute('cli')
Exemplo n.º 7
0
            try:
                return json.dumps(data, encoding=encoding)
            # Old systems using old simplejson module does not support encoding keyword.
            except TypeError:
                try:
                    new_data = json_dict_bytes_to_unicode(data,
                                                          encoding=encoding)
                except UnicodeDecodeError:
                    continue
                return json.dumps(new_data)
            except UnicodeDecodeError:
                continue
        self._error(msg='Invalid unicode encoding encountered')


Rest = register_transport('rest')(Rest)


class Cli(NetCli):
    CLI_PROMPTS_RE = None

    CLI_ERRORS_RE = None

    NET_PASSWD_RE = re.compile(r"[\r\n]?password: $", re.I)

    def configure(self, commands, **kwargs):
        cmds = ['configure terminal']
        cmds.extend(to_list(commands))

        responses = self.execute(cmds)
        return responses[1:]
Exemplo n.º 8
0
    def _jsonify(self, data):
        for encoding in ("utf-8", "latin-1"):
            try:
                return json.dumps(data, encoding=encoding)
            # Old systems using old simplejson module does not support encoding keyword.
            except TypeError:
                try:
                    new_data = json_dict_bytes_to_unicode(data, encoding=encoding)
                except UnicodeDecodeError:
                    continue
                return json.dumps(new_data)
            except UnicodeDecodeError:
                continue
        self._error(msg='Invalid unicode encoding encountered')

Rest = register_transport('rest')(Rest)


class Cli(CliBase):

    CLI_PROMPTS_RE = [
        re.compile(r"[\r\n]?[\w+\-\.:\/\[\]]+(?:\([^\)]+\)){,3}(?:>|#) ?$"),
        re.compile(r"\[\w+\@[\w\-\.]+(?: [^\]])\] ?[>#\$] ?$")
    ]

    CLI_ERRORS_RE = [
        re.compile(r"% ?Error"),
        re.compile(r"% ?Bad secret"),
        re.compile(r"invalid input", re.I),
        re.compile(r"(?:incomplete|ambiguous) command", re.I),
        re.compile(r"connection timed out", re.I),
Exemplo n.º 9
0
                             (ex.message))
            #print "failed to connect to %s" % (self.host)
            raise Exception(ex.message)

    def logoff(self, module):
        self.host = module.params['host']
        if self.enable_debug:
            print "\n***** LOGOFF *****"
        conn = httplib.HTTPConnection(self.host)
        #conn.request("POST", self.LOGOFF_URI, "", self.headers)
        conn.request("GET", self.urllogoff, "", headers=self.headers)

        self._connected = False

        response = conn.getresponse().read()
        return response

    def axapi_enabled_disabled(self, flag):
        '''
         The axapi uses 0/1 integer values for flags, rather than strings
         or booleans, so convert the given flag to a 0 or 1. For now, params
         are specified as strings only so thats what we check.
         '''
        if flag == 'enabled':
            return 1
        else:
            return 0


XAPI = register_transport('axapi')(XAPI)
Exemplo n.º 10
0
        responses = self.execute(cmds)
        return responses[1:]

    def get_config(self, include_defaults=False, **kwargs):
        cmd = 'show running-config'
        if include_defaults:
            cmd += ' all'
        return self.run_commands(cmd)[0]

    def load_config(self, commands, **kwargs):
        return self.configure(commands)

    def save_config(self):
        self.execute(['copy running-config startup-config'])

Cli = register_transport('cli', default=True)(Cli)


class Restconf(object):

    DEFAULT_HEADERS = {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    }

    def __init__(self):
        self.url = None

        self.url_args = ModuleStub(url_argument_spec(), self._error)

        self.token = None
Exemplo n.º 11
0
    def _jsonify(self, data):
        for encoding in ("utf-8", "latin-1"):
            try:
                return json.dumps(data, encoding=encoding)
            # Old systems using old simplejson module does not support encoding keyword.
            except TypeError:
                try:
                    new_data = json_dict_bytes_to_unicode(data, encoding=encoding)
                except UnicodeDecodeError:
                    continue
                return json.dumps(new_data)
            except UnicodeDecodeError:
                continue
        self._error(msg='Invalid unicode encoding encountered')
Rest = register_transport('rest')(Rest)


class Cli(NetCli):
    CLI_PROMPTS_RE = None

    CLI_ERRORS_RE = None

    NET_PASSWD_RE = re.compile(r"[\r\n]?password: $", re.I)
    def configure(self, commands, **kwargs):
        cmds = ['configure terminal']
        cmds.extend(to_list(commands))

        responses = self.execute(cmds)
        return responses[1:]
Exemplo n.º 12
0
        return responses[1:]

    def get_config(self, include_defaults=False, **kwargs):
        cmd = 'show running-config'
        if include_defaults:
            cmd += ' all'
        return self.run_commands(cmd)[0]

    def load_config(self, commands, **kwargs):
        return self.configure(commands)

    def save_config(self):
        self.execute(['copy running-config startup-config'])


Cli = register_transport('cli', default=True)(Cli)


class Restconf(object):

    DEFAULT_HEADERS = {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    }

    def __init__(self):
        self.url = None

        self.url_args = ModuleStub(url_argument_spec(), self._error)

        self.token = None
Exemplo n.º 13
0
    def _jsonify(self, data):
        for encoding in ("utf-8", "latin-1"):
            try:
                return json.dumps(data, encoding=encoding)
            # Old systems using old simplejson module does not support encoding keyword.
            except TypeError:
                try:
                    new_data = json_dict_bytes_to_unicode(data, encoding=encoding)
                except UnicodeDecodeError:
                    continue
                return json.dumps(new_data)
            except UnicodeDecodeError:
                continue
        self._error(msg='Invalid unicode encoding encountered')

Rest = register_transport('rest')(Rest)


class Cli(CliBase):

    CLI_PROMPTS_RE = [
        re.compile(r"[\r\n]?[\w+\-\.:\/\[\]]+(?:\([^\)]+\)){,3}(?:>|#) ?$"),
        re.compile(r"\[\w+\@[\w\-\.]+(?: [^\]])\] ?[>#\$] ?$")
    ]

    CLI_ERRORS_RE = [
        re.compile(r"(?:unknown|incomplete|ambiguous) command", re.I),
    ]

    NET_PASSWD_RE = re.compile(r"[\r\n]?password: $", re.I)