class ProvisionArgsParser(object):

    def __init__(self, *args, **kwargs):
        if '-config' in sys.argv[1:] or '--configfile' in sys.argv[1:]:
            self.parser = ProvisionConfigParser()
        else:
            self.parser = ProvisionCommandLineParser()

    def parse_args(self):
        self.args = self.parser.parse_args()

        if self.valid_hostname() and self.valid_credentials() \
            and self.check_db_supported(self.args.get('db_config').get('db_system')):
                if self.valid_git_repo():
                    return self.args, self.client

        return None

    def check_db_supported(self, db_system):

        if db_system != 'postgres' and db_system != 'mysql':
            message = '\ndb_system should be one of "postgres" or "mysql"'
            self.parser.error(message)

        return True

    def valid_hostname(self):
        try:
            socket.gethostbyname(self.args.get('server'))
            return True
        except socket.gaierror, e:
            message = '\nThe hostname %s is not a valid host \n' % (self.args.get('server'))
            self.parser.error(message)
 def __init__(self, *args, **kwargs):
     if '-config' in sys.argv[1:] or '--configfile' in sys.argv[1:]:
         self.parser = ProvisionConfigParser()
     else:
         self.parser = ProvisionCommandLineParser()