#!/usr/bin/python ''' Starts the targetcli CLI shell. This file is part of targetcli. Copyright (c) 2011 by RisingTide Systems LLC This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 (AGPLv3). This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Copyright (c) 2011 by RisingTide Systems LLC. All rights reserved. ''' from os import getuid from targetcli import UIRoot from rtslib import RTSLibError from configshell import ConfigShell class TargetCLI(ConfigShell): default_prefs = {'color_path': 'magenta', 'color_command': 'cyan', 'color_parameter': 'magenta', 'color_keyword': 'cyan', 'completions_in_columns': True, 'logfile': None, 'loglevel_console': 'info', 'loglevel_file': 'debug9', 'color_mode': True, 'prompt_length': 30, 'tree_max_depth': 0, 'tree_status_mode': True, 'tree_round_nodes': True, 'tree_show_root': True, 'auto_enable_tpgt': True, 'auto_add_mapped_luns': True, 'auto_cd_after_create': True, } def main(): ''' Start the targetcli shell. ''' if getuid() == 0: is_root = True else: is_root = False shell = TargetCLI('~/.targetcli') shell.con.epy_write(''' Welcome to the B{targetcli} shell:: Copyright (c) 2011 by RisingTide Systems LLC.\n For help on commands, type 'help'. ''') shell.con.display('') if not is_root: shell.con.display('You are not root, disabling privileged commands.') shell.con.display('') root_node = UIRoot(shell, as_root=is_root) try: root_node.refresh() except RTSLibError, error: shell.con.display(shell.con.render_text(str(error), 'red')) else: shell.run_interactive() if __name__ == "__main__": main()