Beispiel #1
0
    def do_ls(self, args):
        """ lists resources """
        logger.info("CMD: ls %s" % args)
        try:
            if args:
                if args.startswith('/'):
                    temp_context = self.__get_context_for_path(
                        args[1:], self._context)
                else:
                    temp_context = self.__get_context_for_path(
                        args, curr_context)
            else:
                temp_context = curr_context

            if temp_context:

                sub_context = list(temp_context.keys())

                # Remove actions from here and print it separately
                actions_dict = None
                if ACTIONS_KEY in temp_context:
                    actions_dict = temp_context[ACTIONS_KEY]
                    sub_context.remove(ACTIONS_KEY)

                if ID_KEY in temp_context and BULK_KEY in temp_context:
                    # Print ids if 'bulk' is present
                    sub_context.remove(ID_KEY)
                    try:
                        cookie = self.__get_cookie()
                        response = ViPRConnection.submitHttpRequest(
                            'GET', curr_path + "/bulk", cookie)
                        if response:
                            self.__print_bulk_response(response.text)
                    except Exception as e:
                        print(str(e))
                        logger.error(str(e))
                elif ID_KEY in temp_context and ACTIONS_KEY in temp_context and 'GET' in temp_context[
                        ACTIONS_KEY]:
                    # Print ids if 'GET' is present
                    sub_context.remove(ID_KEY)
                    try:
                        cookie = self.__get_cookie()
                        response = ViPRConnection.submitHttpRequest(
                            'GET', curr_path, cookie)
                        if response:
                            self.__print_get_all_response(response.text)
                    except Exception as e:
                        print(str(e))
                        logger.error(str(e))

                print('  '.join(sub_context))

                # Print actions
                if actions_dict:
                    print('\nActions:-')
                    print('  '.join(actions_dict.keys()))
            else:
                print('Wrong path')
        except Exception as e:
            print(str(e))
    def do_ll(self, args):
        """ List resources in detail """
        logger.info("CMD: ll %s" % args)
        try:
            if args:
                if args.startswith('/'):
                    temp_context = self.__get_context_for_path(args[1:], self._context)
                else:
                    temp_context = self.__get_context_for_path(args, curr_context)
            else:
                temp_context = curr_context

            if temp_context:
                sub_context = list(temp_context.keys())

                # Remove actions from here and print it separately
                actions_dict = None
                if ACTIONS_KEY in temp_context:
                    actions_dict = temp_context[ACTIONS_KEY]
                    sub_context.remove(ACTIONS_KEY)

                if ID_KEY in temp_context and BULK_KEY in temp_context:
                    # Print ids if 'bulk' is present
                    sub_context.remove(ID_KEY)
                    try:
                        cookie = self.__get_cookie()
                        # TODO: check if bulk exists
                        response = ViPRConnection.submitHttpRequest('GET', curr_path+"/bulk", cookie)
                        if response:
                            detail_response = ViPRConnection.submitHttpRequest('POST', curr_path+"/bulk", cookie, payload=response.text)
                            if detail_response:
                                self.__print_ll_response(detail_response.text)
                    except Exception as e:
                        print(str(e))
                        logger.error(str(e))

                elif ID_KEY in temp_context and ACTIONS_KEY in temp_context and 'GET' in temp_context[ACTIONS_KEY]:
                    # Print ids if 'GET' is present
                    sub_context.remove(ID_KEY)
                    try:
                        cookie = self.__get_cookie()
                        response = ViPRConnection.submitHttpRequest('GET', curr_path, cookie)
                        if response:
                            self.__print_ll_response(response.text)
                    except Exception as e:
                        print(str(e))
                        logger.error(str(e))

                print('  '.join(sub_context))

                if actions_dict:
                    print('\nActions:-')
                    print('  '.join(actions_dict.keys()))
            else:
                print('Wrong path')
        except Exception as e:
            print(str(e))
            logger.error(str(e))
    def do_POST(self, args):
        """ Create resource """
        logger.info("CMD: POST %s" % args)
        global execute_action
        try:
            if ACTIONS_KEY not in curr_context:
                print('POST is not available')
                return

            actions_dict = curr_context[ACTIONS_KEY]
            # this is used when any default action is called
            if execute_action:
                curr_action = execute_action
            else:
                curr_action = 'POST'

            if 'help' == args:
                if actions_dict[curr_action]:
                    CommonUtil.print_query_params(actions_dict[curr_action].query_params)
                    CommonUtil.print_attributes(actions_dict[curr_action].method_name)
                return

            post_payload, query_str, content_type = self.__process_args(args, actions_dict[curr_action])
            cookie = self.__get_cookie()
            if execute_action:
                post_url = curr_path + '/' + execute_action
            else:
                post_url = curr_path

            response = ViPRConnection.submitHttpRequest('POST', post_url+query_str, cookie, payload=post_payload, contentType=content_type)
            if response:
                self.__print_response(response.text)
        except Exception as e:
            print(str(e))
            logger.error(str(e))
    def do_GET(self, args):
        """ GET resource """
        logger.info("CMD: GET %s" % args)
        try:
            if ACTIONS_KEY not in curr_context:
                print('GET is not available')
                return

            actions_dict = curr_context[ACTIONS_KEY]
            if 'help' == args:
                if actions_dict['GET']:
                    CommonUtil.print_query_params(actions_dict['GET'].query_params)
                return

            cookie = self.__get_cookie()
            args_dict = self.__convert_args_to_dict(args)
            query_str = ''
            if actions_dict['GET'] and actions_dict['GET'].query_params:
                query_str = self.__process_return_query_params(args_dict, actions_dict['GET'].query_params)
            accept_type = args_dict[RESPONSE_TYPE_KEY] if RESPONSE_TYPE_KEY in args_dict else ''
            response = ViPRConnection.submitHttpRequest('GET', curr_path+query_str, cookie, xml=True if accept_type == RESPONSE_TYPE_XML else False)
            if response:
                self.__print_response(response.text, accept_type)
        except Exception as e:
            print(str(e))
            logger.error(str(e))
Beispiel #5
0
    def do_PUT(self, args):
        """ Update resource """
        logger.info("CMD: PUT %s" % args)
        try:
            if ACTIONS_KEY not in curr_context:
                print('PUT is not available')
                return

            actions_dict = curr_context[ACTIONS_KEY]
            if 'help' == args:
                if actions_dict['PUT']:
                    CommonUtil.print_query_params(
                        actions_dict['PUT'].query_params)
                    CommonUtil.print_attributes(
                        actions_dict['PUT'].method_name)
                return

            put_payload, query_str, content_type = self.__process_args(
                args, actions_dict['PUT'])
            cookie = self.__get_cookie()
            response = ViPRConnection.submitHttpRequest(
                'PUT',
                curr_path + query_str,
                cookie,
                payload=put_payload,
                contentType=content_type)
            if response:
                self.__print_response(response.text)
        except Exception as e:
            print(str(e))
            logger.error(str(e))
Beispiel #6
0
    def do_GET(self, args):
        """ GET resource """
        logger.info("CMD: GET %s" % args)
        try:
            if ACTIONS_KEY not in curr_context:
                print('GET is not available')
                return

            actions_dict = curr_context[ACTIONS_KEY]
            if 'help' == args:
                if actions_dict['GET']:
                    CommonUtil.print_query_params(
                        actions_dict['GET'].query_params)
                return

            cookie = self.__get_cookie()
            args_dict = self.__convert_args_to_dict(args)
            query_str = ''
            if actions_dict['GET'] and actions_dict['GET'].query_params:
                query_str = self.__process_return_query_params(
                    args_dict, actions_dict['GET'].query_params)
            accept_type = args_dict[
                RESPONSE_TYPE_KEY] if RESPONSE_TYPE_KEY in args_dict else ''
            response = ViPRConnection.submitHttpRequest(
                'GET',
                curr_path + query_str,
                cookie,
                xml=True if accept_type == RESPONSE_TYPE_XML else False)
            if response:
                self.__print_response(response.text, accept_type)
        except Exception as e:
            print(str(e))
            logger.error(str(e))
 def __get_id_by_key(self, key, search_name, search_context):
     try:
         search_paths = CommonUtil.get_search_path_by_key(key, search_context)
         cookie = self.__get_cookie()
         # search for this name in all search paths
         for path in search_paths:
             response = ViPRConnection.submitHttpRequest('GET', path+"?name="+search_name, cookie)
             if response:
                 search_json = json.loads(response.text)
                 if search_json and search_json["resource"]:
                     return search_json["resource"][0]["id"]
     except Exception:
         raise Exception("Name: %s not found" % search_name)
Beispiel #8
0
 def __get_id_by_key(self, key, search_name, search_context):
     try:
         search_paths = CommonUtil.get_search_path_by_key(
             key, search_context)
         cookie = self.__get_cookie()
         # search for this name in all search paths
         for path in search_paths:
             response = ViPRConnection.submitHttpRequest(
                 'GET', path + "?name=" + search_name, cookie)
             if response:
                 search_json = json.loads(response.text)
                 if search_json and search_json["resource"]:
                     return search_json["resource"][0]["id"]
     except Exception:
         raise Exception("Name: %s not found" % search_name)
Beispiel #9
0
    def do_POST(self, args):
        """ Create resource """
        logger.info("CMD: POST %s" % args)
        global execute_action
        try:
            if ACTIONS_KEY not in curr_context:
                print('POST is not available')
                return

            actions_dict = curr_context[ACTIONS_KEY]
            # this is used when any default action is called
            if execute_action:
                curr_action = execute_action
            else:
                curr_action = 'POST'

            if 'help' == args:
                if actions_dict[curr_action]:
                    CommonUtil.print_query_params(
                        actions_dict[curr_action].query_params)
                    CommonUtil.print_attributes(
                        actions_dict[curr_action].method_name)
                return

            post_payload, query_str, content_type = self.__process_args(
                args, actions_dict[curr_action])
            cookie = self.__get_cookie()
            if execute_action:
                post_url = curr_path + '/' + execute_action
            else:
                post_url = curr_path

            response = ViPRConnection.submitHttpRequest(
                'POST',
                post_url + query_str,
                cookie,
                payload=post_payload,
                contentType=content_type)
            if response:
                self.__print_response(response.text)
        except Exception as e:
            print(str(e))
            logger.error(str(e))
    def do_PUT(self, args):
        """ Update resource """
        logger.info("CMD: PUT %s" % args)
        try:
            if ACTIONS_KEY not in curr_context:
                print('PUT is not available')
                return

            actions_dict = curr_context[ACTIONS_KEY]
            if 'help' == args:
                if actions_dict['PUT']:
                    CommonUtil.print_query_params(actions_dict['PUT'].query_params)
                    CommonUtil.print_attributes(actions_dict['PUT'].method_name)
                return

            put_payload, query_str, content_type = self.__process_args(args, actions_dict['PUT'])
            cookie = self.__get_cookie()
            response = ViPRConnection.submitHttpRequest('PUT', curr_path+query_str, cookie, payload=put_payload, contentType=content_type)
            if response:
                self.__print_response(response.text)
        except Exception as e:
            print(str(e))
            logger.error(str(e))
Beispiel #11
0
            print("python ViPRCommand -u name -p password")
            sys.exit()
        user = sys.argv[2]
        pswd = sys.argv[4]
        print("Connecting to ViPR: %s" % ConfigUtil.VIPR_HOST)
    else:
        print("Connecting to ViPR: %s" % ConfigUtil.VIPR_HOST)
        user = input("login as: ")
        pswd = getpass.getpass()

    # Login user
    cookie = login(user, pswd)
    logger.info("Logged in as user %s" % user)

    # Get ViPR version - used to name pickle file
    response = ViPRConnection.submitHttpRequest('GET', VERSION_URI, cookie)
    version_json = json.loads(response.text)
    vipr_version = version_json["target_version"]
    logger.info("ViPR Version: %s" % vipr_version)

    # pickle file name format:  {vipr_version}-context.pickle
    pickle_file_name = Constants.PICKLE_FILE_NAME.format(vipr_version)
    pickle_dir_path = CommonUtil.get_file_dir_location('pickles')
    pickle_file_path = os.path.join(pickle_dir_path, pickle_file_name)
    logger.info("Pickle file: %s" % pickle_file_name)

    # Check if this pickle version is available
    if not os.path.exists(pickle_file_path):
        logger.info("Pickle file not found, so creating")
        # Create directory if it doesn't exist
        descriptors_dir_path = CommonUtil.get_file_dir_location('descriptors')
        user = sys.argv[2]
        pswd = sys.argv[4]
        print("Connecting to ViPR: %s" % ConfigUtil.VIPR_HOST)
    else:
        print("Connecting to ViPR: %s" % ConfigUtil.VIPR_HOST)
        try: input = raw_input
        except NameError: pass
        user = input("login as: ")
        pswd = getpass.getpass()

    # Login user
    cookie = login(user, pswd)
    logger.info("Logged in as user %s" % user)

    # Get ViPR version - used to name pickle file
    response = ViPRConnection.submitHttpRequest('GET', VERSION_URI, cookie)
    version_json = json.loads(response.text)
    vipr_version = version_json["target_version"]
    logger.info("ViPR Version: %s" % vipr_version)

    # pickle file name format:  {vipr_version}-context.pickle
    pickle_file_name = Constants.PICKLE_FILE_NAME.format(vipr_version)
    pickle_dir_path = CommonUtil.get_file_dir_location('pickles')
    pickle_file_path = os.path.join(pickle_dir_path, pickle_file_name)
    logger.info("Pickle file: %s" % pickle_file_name)

    # Check if this pickle version is available
    if not os.path.exists(pickle_file_path):
        logger.info("Pickle file not found, so creating")
        # Create directory if it doesn't exist
        descriptors_dir_path = CommonUtil.get_file_dir_location('descriptors')