Revision af6de846

b/kamaki/cli/__init__.py
32 32
# interpreted as representing official policies, either expressed
33 33
# or implied, of GRNET S.A.
34 34

  
35
from __future__ import print_function
35
#from __future__ import print_function
36 36

  
37 37
import logging
38 38

  
b/kamaki/cli/argument.py
33 33

  
34 34
from kamaki.cli.config import Config
35 35
from kamaki.cli.errors import CLISyntaxError
36
from argparse import ArgumentParser, ArgumentError
36 37

  
37 38
try:
38 39
    from progress.bar import IncrementalBar
......
277 278
    for name, arg in arguments.items():
278 279
        arg.value = getattr(parsed, name, arg.default)
279 280
    return parsed, unparsed
281

  
282

  
283
def init_parser(exe, arguments):
284
    parser = ArgumentParser(add_help=False)
285
    parser.prog = '%s <cmd_group> [<cmd_subbroup> ...] <cmd>' % exe
286
    update_arguments(parser, arguments)
287
    return parser
288

  
289

  
290
def update_arguments(parser, arguments):
291
    for name, argument in arguments.items():
292
        try:
293
            argument.update_parser(parser, name)
294
        except ArgumentError:
295
            pass
/dev/null
1
# Copyright 2012-2013 GRNET S.A. All rights reserved.
2
#
3
# Redistribution and use in source and binary forms, with or
4
# without modification, are permitted provided that the following
5
# conditions are met:
6
#
7
#   1. Redistributions of source code must retain the above
8
#      copyright notice, this list of conditions and the following
9
#      disclaimer.
10
#
11
#   2. Redistributions in binary form must reproduce the above
12
#      copyright notice, this list of conditions and the following
13
#      disclaimer in the documentation and/or other materials
14
#      provided with the distribution.
15
#
16
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
# POSSIBILITY OF SUCH DAMAGE.
28
#
29
# The views and conclusions contained in the software and
30
# documentation are those of the authors and should not be
31
# interpreted as representing official policies, either expressed
32
# or implied, of GRNET S.A.command
33

  
34
#from kamaki.clients.quotaholder import QuotaHolderClient
35
from kamaki.cli import command
36
from kamaki.cli.commands import _command_init
37

  
38

  
39
API_DESCRIPTION = dict(quotaholder='Quota Holder commands')
40

  
41

  
42
class _quotaholder_init(_command_init):
43
    def main(self):
44
        self.token = self.config.get('quotaholder', 'token')\
45
            or self.config.get('global', 'token')
46
        self.base_url = self.config.get('quotaholder', 'url')\
47
            or self.config.get('global', 'url')
48
        #self.client = QuotaHolderClient(self.base_url, self.token)
49
        print(self.__class__)
50

  
51
@command()
52
class quotaholder_test_specific(_quotaholder_init):
53
    """quotaholder test specific"""
54

  
55
    def main(self, specify):
56
        super(self.__class__, self).main()
57

  
58
@command()
59
class quotaholder_test_all(_quotaholder_init):
60
    """quotaholder test all"""
61

  
62
    def main(self):
63
        super(self.__class__, self).main()
64

  
65
@command()
66
class quotaholder_manage(_quotaholder_init):
67
    """quotaholder manage"""
68

  
69
    def main(self):
70
        super(self.__class__, self).main()
b/kamaki/cli/commands/test_cli.py
1
# Copyright 2012-2013 GRNET S.A. All rights reserved.
2
#
3
# Redistribution and use in source and binary forms, with or
4
# without modification, are permitted provided that the following
5
# conditions are met:
6
#
7
#   1. Redistributions of source code must retain the above
8
#      copyright notice, this list of conditions and the following
9
#      disclaimer.
10
#
11
#   2. Redistributions in binary form must reproduce the above
12
#      copyright notice, this list of conditions and the following
13
#      disclaimer in the documentation and/or other materials
14
#      provided with the distribution.
15
#
16
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
# POSSIBILITY OF SUCH DAMAGE.
28
#
29
# The views and conclusions contained in the software and
30
# documentation are those of the authors and should not be
31
# interpreted as representing official policies, either expressed
32
# or implied, of GRNET S.A.command
33

  
34
from kamaki.cli import command
35
from kamaki.cli.commands import _command_init
36
from kamaki.cli.command_tree import CommandTree
37

  
38

  
39
API_DESCRIPTION = dict(test='Test sample')
40

  
41
_commands = CommandTree('test', 'Test sample')
42

  
43

  
44
class _test_init(_command_init):
45
    def main(self, *args, **kwargs):
46
        print(self.__class__)
47

  
48

  
49
@command()
50
class test_cmd0(_test_init):
51
    """ test cmd"""
52

  
53
    def main(self, mant):
54
        super(self.__class__, self).main()
55

  
56
@command()
57
class test_cmd_all(_test_init):
58
    """test cmd all"""
59

  
60
    def main(self):
61
        super(self.__class__, self).main()
62

  
63
@command()
64
class test_cmd_some(_test_init):
65
    """test_cmd_some"""
66

  
67
    def main(self, opt='lala'):
68
        super(self.__class__, self).main()
b/kamaki/cli/new.py
1
# Copyright 2012-2013 GRNET S.A. All rights reserved.
2
#
3
# Redistribution and use in source and binary forms, with or
4
# without modification, are permitted provided that the following
5
# conditions are met:
6
#
7
#   1. Redistributions of source code must retain the above
8
#      copyright notice, this list of conditions and the following
9
#      disclaimer.
10
#
11
#   2. Redistributions in binary form must reproduce the above
12
#      copyright notice, this list of conditions and the following
13
#      disclaimer in the documentation and/or other materials
14
#      provided with the distribution.
15
#
16
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
# POSSIBILITY OF SUCH DAMAGE.
28
#
29
# The views and conclusions contained in the software and
30
# documentation are those of the authors and should not be
31
# interpreted as representing official policies, either expressed
32
# or implied, of GRNET S.A.command
33

  
34
from sys import argv
35
from os.path import basename
36
from kamaki.cli.argument import _arguments, parse_known_args, init_parser
37

  
38
_help = False
39
_debug = False
40
_verbose = False
41
_colors = False
42

  
43

  
44
def _init_session(arguments):
45
    global _help
46
    _help = arguments['help'].value
47
    global _debug
48
    _debug = arguments['debug'].value
49
    global _verbose
50
    _verbose = arguments['verbose'].value
51
    global _colors
52
    _colors = arguments['config'].get('global', 'colors')
53

  
54

  
55
def one_cmd():
56
    print('ONE COMMAND')
57

  
58

  
59
def interactive_shell():
60
    print('INTERACTIVE SHELL')
61

  
62

  
63
def main():
64
    exe = basename(argv[0])
65
    parser = init_parser(exe, _arguments)
66
    parsed, unparsed = parse_known_args(parser, _arguments)
67

  
68
    if _arguments['version'].value:
69
        exit(0)
70

  
71
    _init_session(_arguments)
72

  
73
    if unparsed:
74
        one_cmd()
75
    elif _help:
76
        parser.print_help()
77
    else:
78
        interactive_shell()
/dev/null
1
# Copyright 2012-2013 GRNET S.A. All rights reserved.
2
#
3
# Redistribution and use in source and binary forms, with or
4
# without modification, are permitted provided that the following
5
# conditions are met:
6
#
7
#   1. Redistributions of source code must retain the above
8
#      copyright notice, this list of conditions and the following
9
#      disclaimer.
10
#
11
#   2. Redistributions in binary form must reproduce the above
12
#      copyright notice, this list of conditions and the following
13
#      disclaimer in the documentation and/or other materials
14
#      provided with the distribution.
15
#
16
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
# POSSIBILITY OF SUCH DAMAGE.
28
#
29
# The views and conclusions contained in the software and
30
# documentation are those of the authors and should not be
31
# interpreted as representing official policies, either expressed
32
# or implied, of GRNET S.A.command
33

  
34
from kamaki.clients import Client
35

  
36

  
37
class QuotaHolderClient(Client):
38
    """Quota Holder client"""
39

  
40
    def test_quota(self):
41
        return self.get('')
b/setup.py
40 40

  
41 41

  
42 42
optional = ['ansicolors', 'progress']
43
required = ['snf-common>=0.10', 'argparse']
43
required = ['snf-common>=0.10']
44 44

  
45 45
setup(
46 46
    name='kamaki',
......
52 52
    packages=['kamaki', 'kamaki.clients', 'kamaki.clients.connection', 'kamaki.cli', 'kamaki.cli.commands'],
53 53
    include_package_data=True,
54 54
    entry_points={
55
        'console_scripts': ['kamaki = kamaki.cli:main']
55
        'console_scripts': ['kamaki = kamaki.cli:main', 'newmaki = kamaki.cli.new:main']
56 56
    },
57 57
    install_requires=required
58 58
)

Also available in: Unified diff