예제 #1
0
파일: ibm.py 프로젝트: jbutler42/napalm
 def _commit_merge(self):
     cmd = self._bnc_cmd(self.filename_candidate, "merge",
                         "rollback-on-error")
     self._send_rpc(cmd)
     if self.error.getvalue():
         self.discard_config()
         raise MergeConfigException(self.error.getvalue())
예제 #2
0
 def load_merge_candidate(self, filename=None, config=None):
     try:
         self._load_and_test_config(filename=filename,
                                    config=config,
                                    overwrite=False)
         self.config_replace = False
     except CommandError as e:
         self.discard_config()
         raise MergeConfigException(e.message)
예제 #3
0
파일: iosxr.py 프로젝트: tehhobbit/napalm
    def load_merge_candidate(self, filename=None, config=None):
        self.pending_changes = True
        self.replace = False

        try:
            self.device.load_candidate_config(filename=filename, config=config)
        except InvalidInputError as e:
            self.pending_changes = False
            self.replace = False
            raise MergeConfigException(e.message)
예제 #4
0
 def commit_config(self):
     try:
         self.device.execute_command('execute backup config flash commit_with_napalm')
         self.device.commit()
         self.discard_config()
     except FailedCommit as e:
         if self.config_replace:
             raise ReplaceConfigException(e.message)
         else:
             raise MergeConfigException(e.message)
예제 #5
0
파일: fortios.py 프로젝트: ogarraux/napalm
    def load_merge_candidate(self, filename=None, config=None):
        self.config_replace = False

        self.device.candidate_config = FortiConfig('candidate')
        self.device.running_config = FortiConfig('running')

        self._load_config(filename, config)

        for block in self.device.candidate_config.get_block_names():
            try:
                self.device.load_config(path=block, empty_candidate=True)
            except CommandExecutionException as e:
                raise MergeConfigException(e.message)
예제 #6
0
    def _load_candidate(self, filename, config, overwrite):
        if filename is None:
            configuration = config
        else:
            with open(filename) as f:
                configuration = f.read()

        try:
            self.device.cu.load(configuration, format='text', overwrite=overwrite)
        except ConfigLoadError as e:
            if self.config_replace:
                raise ReplaceConfigException(e.message)
            else:
                raise MergeConfigException(e.message)
예제 #7
0
파일: nxos.py 프로젝트: bigzaqui/napalm
    def commit_config(self):
        if self.loaded:
            self.backup_file = 'config_' + str(datetime.now()).replace(' ', '_')
            install_config.save_config(self.device, self.backup_file)
            if self.replace:
                if install_config.rollback(self.device, self.fc.dst) is False:
                    raise ReplaceConfigException
            else:
                try:
                    self._commit_merge()
                except Exception as e:
                    raise MergeConfigException(str(e))

            self.changed = True
            self.loaded = False
        else:
            raise ReplaceConfigException('No config loaded.')
예제 #8
0
파일: eos.py 프로젝트: jbutler42/napalm
    def _load_config(self, filename=None, config=None, replace=True):
        if self.config_session is not None:
            raise SessionLockedException('Session is already in use by napalm')
        else:
            self.config_session = 'napalm_{}'.format(
                datetime.now().microsecond)

        commands = list()
        commands.append('configure session {}'.format(self.config_session))

        if replace:
            commands.append('rollback clean-config')

        if filename is not None:
            with open(filename, 'r') as f:
                lines = f.readlines()
        else:
            if isinstance(config, list):
                lines = config
            else:
                lines = config.splitlines()

        for line in lines:
            line = line.strip()
            if line == '':
                continue
            if line.startswith('!'):
                continue
            commands.append(line)

        try:
            self.device.run_commands(commands)
        except pyeapi.eapilib.CommandError as e:
            self.discard_config()

            if replace:
                raise ReplaceConfigException(e.message)
            else:
                raise MergeConfigException(e.message)