#!/usr/bin/env python

import sys
from optparse import OptionParser

from com.sixsq.slipstream.CommandBase import CommandBase
from com.sixsq.slipstream.Client import Client   
from com.sixsq.slipstream.ConfigHolder import ConfigHolder


class MainProgram(CommandBase):
    '''A command-line program to get key/value pairs from info sys restlet.'''
    
    def __init__(self, argv=None):
        super(MainProgram, self).__init__(argv)
        self.key = None

    def parse(self):
        usage = '''usage: %prog [options] <key>

<key>    Key from which to retrieve the value'''

        self.parser.usage = usage

        self.parser.add_option('--timeout', dest='timeout',
                               help='timeout in seconds for blocking call',
                               metavar='SECONDS',
                               default=60, type='int')

        self.addIgnoreAbortOption()
        
        self.parser.add_option('--noblock', dest='noBlock',
                               help='timeout in seconds for blocking call',
                               default=False, action='store_true')

        self.options, self.args = self.parser.parse_args()
        
        self._checkArgs()

        self.key = self.args[0]

    def _checkArgs(self):
        if len(self.args) < 1:
            self.parser.error('Missing key')
        if len(self.args) > 1:
            self.usageExitTooManyArguments()

    def doWork(self):
        configHolder = ConfigHolder(self.options)
        client = Client(configHolder)
        value = client.getRuntimeParameter(self.key)
        print value

if __name__ == "__main__":
    try:
        MainProgram()
    except KeyboardInterrupt:
        print '\n\nExecution interrupted by the user... goodbye!'
        sys.exit(-1)

