def config(self, config_text, plane):
        """Apply config."""
        NO_CONFIGURATION_CHANGE = re.compile("No configuration changes to commit")
        CONFIGURATION_FAILED = re.compile("show configuration failed")
        CONFIGURATION_INCONSITENCY = re.compile("No configuration commits for this SDR will be allowed until "
                                                "a 'clear configuration inconsistency' command is performed.")

        self.enter_plane(plane)

        nol = config_text.count('\n')
        config_lines = iter(config_text.splitlines())
        events = [self.prompt_re, self.syntax_error_re]
        transitions = [
            (self.prompt_re, [0], 0, partial(a_send_line, config_lines), 10),
            (self.syntax_error_re, [0], -1, CommandSyntaxError("Configuration syntax error."), 0)
        ]
        self.device.ctrl.send_command(self.config_cmd)
        fsm = FSM("CONFIG", self.device, events, transitions, timeout=10, max_transitions=nol + 5)
        fsm.run()

        events = [self.prompt_re, NO_CONFIGURATION_CHANGE, CONFIGURATION_FAILED]
        transitions = [
            (NO_CONFIGURATION_CHANGE, [0], -1, ConfigurationErrors("No configuration changes to commit."), 0),
            (CONFIGURATION_FAILED, [0], 2, a_capture_show_configuration_failed, 10),
            (CONFIGURATION_INCONSITENCY, [0], 2, a_configuration_inconsistency, 10),
            (self.prompt_re, [0], 1, partial(a_send_line, 'end'), 60),
            (self.prompt_re, [1], -1, None, 0)
        ]

        label = 'condoor-{}'.format(int(time.time()))
        self.device.ctrl.send_command(self.commit_cmd.format(label))
        fsm = FSM("COMMIT", self.device, events, transitions, timeout=120, max_transitions=5)
        fsm.run()
        self.exit_plane()
        return label