summaryrefslogtreecommitdiffstats
path: root/cobbler/cobbler.py
blob: fb9b27344caa1c96c762b6a237a207a72ab11a3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
"""
Command line interface for cobbler, a network provisioning configuration
library.  Consult 'man cobbler' for general info.  This class serves
as a good reference on how to drive the API (api.py).

Copyright 2006, Red Hat, Inc
Michael DeHaan <mdehaan@redhat.com>

This software may be freely redistributed under the terms of the GNU
general public license.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
"""

import sys
import api
import os
import os.path
import traceback
import optparse
import commands
from cexceptions import *

from rhpl.translate import _, N_, textdomain, utf8
I18N_DOMAIN = "cobbler"

####################################################

class BootCLI:

    def __init__(self):
        textdomain(I18N_DOMAIN)
        self.api = api.BootAPI()
        self.loader = commands.FunctionLoader()
        climods = self.api.get_modules_in_category("cli")
        for mod in climods:
            for fn in mod.cli_functions(self.api):
                self.loader.add_func(fn)
      
    def run(self,args):
        return self.loader.run(args)

####################################################

def main():
    """
    CLI entry point
    """
    exitcode = 0
    try:
        # FIXME: redo locking code?
        return BootCLI().run(sys.argv)
    except CX, exc:
        print str(exc)[1:-1]  # remove framing air quotes
    except Exception, exc2:
        if str(type(exc2)).find("CX") == -1:
            traceback.print_exc()
        else:
            print str(exc2)[1:-1]  # remove framing air quotes
        return 1
    return 1


if __name__ == "__main__":
    sys.exit(main())