コード例 #1
0
    def __print_domain_info_usage(self, model_path_tokens):
        """
        Prints out the usage for the domainInfo section of a model
        :param model_path_tokens: A Python list of path elements built from model path
        :return:
        """

        _method_name = '__print_domain_info_usage'
        self._logger.finest('1 model_path_tokens={0}',
                            str(model_path_tokens),
                            class_name=_class_name,
                            method_name=_method_name)

        model_path = validation_utils.format_message(
            'WLSDPLY-05103', '%s:' % model_path_tokens[0])

        # Print 'Path: <model_section>' label and field
        validation_utils.print_indent(model_path, 0)
        validation_utils.print_blank_lines()

        attr_infos = self._alias_helper.get_model_domain_info_attribute_names_and_types(
        )
        _print_attr_infos(attr_infos, 1)

        return
コード例 #2
0
def _print_attr_infos(attr_infos, indent_level):
    """
    Prints out the attribute names and data types

    :param attr_infos: A Python dict containing the attribute names and data types
    :param indent_level: The level to indent by, before printing output
    :return:
    """

    if attr_infos:
        maxlen = 0
        for key in attr_infos:
            if len(key) > maxlen:
                maxlen = len(key)
        formatted_string = '%-' + str(maxlen) + 's\t%s'
        # Print 'Valid Attributes are :-' area label
        validation_utils.print_indent(
            validation_utils.format_message('WLSDPLY-05109'), indent_level)
        attr_list = attr_infos.keys()
        attr_list.sort()
        for attr_name in attr_list:
            msg = formatted_string % (attr_name, attr_infos[attr_name])
            validation_utils.print_indent(msg, indent_level + 1)

        validation_utils.print_blank_lines()
    return
コード例 #3
0
    def __print_model_section_usage(self, model_path_tokens,
                                    valid_section_folder_keys, control_option):
        """
        Prints out the usage for a section of a model, when more than just the section_name[:[/}} is provided

        :param model_path_tokens: A Python list of path elements built from model path
        :param valid_section_folder_keys: A list of valid folder names for the model section the
        usage is being printed for
        :param control_option: A command-line switch that controls what is output to STDOUT
        :return:
        """

        _method_name = '__print_model_section_usage'

        self._logger.finest('1 model_path_tokens={0}, control_option={1}',
                            str(model_path_tokens),
                            self.ControlOptions.from_value(control_option),
                            class_name=_class_name,
                            method_name=_method_name)
        self._logger.finest('1 valid_section_folder_keys={0}',
                            str(valid_section_folder_keys),
                            class_name=_class_name,
                            method_name=_method_name)

        self.__validate_section_folder_path(model_path_tokens,
                                            valid_section_folder_keys)

        validation_location = LocationContext()

        model_path = validation_utils.format_message(
            'WLSDPLY-05103',
            '%s:/%s' % (model_path_tokens[0], '/'.join(model_path_tokens[1:])))

        # Print 'Path: <model_section>' header
        validation_utils.print_indent(model_path, 0)
        validation_utils.print_blank_lines()

        # Populate the location context using model_path_tokens[1:]
        for folder_key in model_path_tokens[1:]:
            validation_location.append_location(folder_key)
            name_token = self._alias_helper.get_name_token(validation_location)
            if name_token is not None:
                validation_location.add_name_token(name_token,
                                                   '%s-0' % folder_key)

            self._logger.finest('2 validation_location={0}',
                                validation_location,
                                class_name=_class_name,
                                method_name=_method_name)

        # Print the attributes associated with location context
        self.__print_attributes_usage(validation_location, 1)

        if control_option != self.ControlOptions.ATTRIBUTES_ONLY:
            # Print the folders associated with location context
            self.__print_folders_usage(validation_location, control_option, 1)

        self._logger.exiting(class_name=_class_name, method_name=_method_name)
        return
コード例 #4
0
    def __print_folders_usage(self, validation_location, control_option,
                              indent_level):
        """
        Prints out the usage for the folders in a model location

        :param validation_location: An object containing data about the model location being worked on
        :param control_option: A command-line switch that controls what is output to STDOUT
        :param indent_level: The level to indent by, before printing output
        :return:
        """

        _method_name = '__print_folders_usage'

        valid_subfolder_keys = self._alias_helper.get_model_subfolder_names(
            validation_location)
        self._logger.finest(
            '3 aliases.get_model_subfolder_names(validation_location) returned: {0}',
            str(valid_subfolder_keys),
            class_name=_class_name,
            method_name=_method_name)

        if not valid_subfolder_keys:
            return

        validation_utils.print_indent(
            validation_utils.format_message('WLSDPLY-05105'), indent_level)
        valid_subfolder_keys.sort()

        for key in valid_subfolder_keys:
            validation_location.append_location(key)
            name_token = self._alias_helper.get_name_token(validation_location)
            if name_token is not None:
                validation_location.add_name_token(name_token, '%s-0' % key)

            self._logger.finest('3 validation_location={0}',
                                validation_location,
                                class_name=_class_name,
                                method_name=_method_name)

            validation_utils.print_indent(key, indent_level + 1)

            if control_option != self.ControlOptions.FOLDERS_ONLY:
                self.__print_attributes_usage(validation_location,
                                              indent_level + 2)

            if control_option == self.ControlOptions.RECURSIVE:
                # Call this __print_folders_usage() function recursively
                self.__print_folders_usage(validation_location, control_option,
                                           indent_level + 2)

            validation_location.pop_location()

        return
コード例 #5
0
def _print_results_category_details(category_messages, indent_level):
    """

    :param category_messages:
    :param indent_level:
    :return:
    """
    for i in range(len(category_messages)):
        messages = category_messages[i]
        validation_utils.print_indent(
            ExceptionHelper.getMessage(messages['resource_id'], list(messages['args'])), indent_level + 2
        )

    return
コード例 #6
0
    def print_details(self):
        """

        :return:
        """

        results_summary = self.__get_summary()

        message_count = results_summary['infos_count']
        if message_count > 0:
            indent_level = 0
            validation_utils.print_blank_lines()
            validation_utils.print_indent('%s: %d' % (validation_utils.format_message('WLSDPLY-05201'),
                                                      message_count), indent_level + 1)
            for validation_result in self._validation_result_dict.values():
                _print_results_category_details(validation_result.get_infos_messages(), indent_level)

        message_count = results_summary['warnings_count']
        if message_count > 0:
            indent_level = 0
            validation_utils.print_blank_lines()
            validation_utils.print_indent('%s: %d' % (validation_utils.format_message('WLSDPLY-05202'),
                                                      message_count), indent_level + 1)
            for validation_result in self._validation_result_dict.values():
                _print_results_category_details(validation_result.get_warnings_messages(), indent_level)

        message_count = results_summary['errors_count']
        if message_count > 0:
            indent_level = 0
            validation_utils.print_blank_lines()
            validation_utils.print_indent('%s: %d' % (validation_utils.format_message('WLSDPLY-05203'),
                                                      message_count), indent_level + 1)
            for validation_result in self._validation_result_dict.values():
                _print_results_category_details(validation_result.get_errors_messages(), indent_level)
コード例 #7
0
    def __print_top_level_usage(self, top_level_key, valid_section_folder_keys,
                                control_option):
        """
        Prints out the usage for a section of a model, when just the section_name[:[/}} is provided

        :param top_level_key: The name of one of the model sections
        :param valid_section_folder_keys: Python list of the valid model section names
        :param control_option: A command-line switch that controls what is output to STDOUT
        :return:
        """

        _method_name = '__print_top_level_usage'

        self._logger.finest('1 top_level_key={0}',
                            top_level_key,
                            class_name=_class_name,
                            method_name=_method_name)

        location_path = '%s:' % top_level_key
        self._logger.finest('1 location_path={0}',
                            location_path,
                            class_name=_class_name,
                            method_name=_method_name)

        model_section = validation_utils.format_message(
            'WLSDPLY-05104', location_path)

        # Print 'Section: <model_section>' label and field
        validation_utils.print_indent(model_section, 0)

        if control_option == self.ControlOptions.ATTRIBUTES_ONLY:
            # Doing an ATTRIBUTES_ONLY on a top level key is a no-op
            return

        validation_location = LocationContext()

        if control_option == self.ControlOptions.FOLDERS_ONLY:
            validation_utils.print_blank_lines()
            validation_utils.print_indent(
                validation_utils.format_message('WLSDPLY-05105'), 1)
            valid_section_folder_keys.sort()

        for section_folder_key in valid_section_folder_keys:
            if control_option == self.ControlOptions.FOLDERS_ONLY:
                validation_utils.print_indent(section_folder_key, 2)

            elif control_option == self.ControlOptions.RECURSIVE:
                validation_location.append_location(section_folder_key)

                name_token = self._alias_helper.get_name_token(
                    validation_location)
                if name_token is not None:
                    validation_location.add_name_token(
                        name_token, '%s-0' % section_folder_key)

                self._logger.finest('1 validation_location={0}',
                                    validation_location,
                                    class_name=_class_name,
                                    method_name=_method_name)

                location_path = '%s:%s' % (
                    top_level_key, validation_location.get_folder_path())
                model_path = validation_utils.format_message(
                    'WLSDPLY-05103', location_path)

                validation_utils.print_blank_lines()
                validation_utils.print_indent(model_path, 0)
                validation_utils.print_blank_lines()

                self.__print_folders_usage(validation_location, control_option,
                                           1)
                validation_location.pop_location()
        return
コード例 #8
0
    def __print_top_level_usage(self, top_level_key, valid_section_folder_keys, control_option):
        """
        Prints out the usage for a section of a model, when just the section_name[:[/}} is provided

        :param top_level_key: The name of one of the model sections
        :param valid_section_folder_keys: Python list of the valid model section names
        :param control_option: A command-line switch that controls what is output to STDOUT
        :return:
        """

        _method_name = '__print_top_level_usage'

        self._logger.finest('1 top_level_key={0}', top_level_key,
                            class_name=_class_name, method_name=_method_name)

        location_path = '%s:' % top_level_key
        self._logger.finest('1 location_path={0}', location_path,
                            class_name=_class_name, method_name=_method_name)

        model_section = validation_utils.format_message('WLSDPLY-05104', location_path)

        # Print 'Section: <model_section>' label and field
        validation_utils.print_indent(model_section, 0)
        validation_utils.print_blank_lines()

        validation_location = LocationContext()

        # topology level has attributes, use empty location
        if top_level_key == model_constants.TOPOLOGY:
            self.__print_attributes_usage(validation_location, 1)

        # domainInfo level has attributes, use special location
        if top_level_key == model_constants.DOMAIN_INFO:
            info_location = LocationContext().append_location("DomainInfo")
            self.__print_attributes_usage(info_location, 1)

        if control_option == self.ControlOptions.FOLDERS_ONLY:
            validation_utils.print_indent(validation_utils.format_message('WLSDPLY-05105'), 1)
            valid_section_folder_keys.sort()

        for section_folder_key in valid_section_folder_keys:
            if control_option == self.ControlOptions.FOLDERS_ONLY:
                validation_utils.print_indent(section_folder_key, 2)

            elif control_option == self.ControlOptions.RECURSIVE:
                validation_location.append_location(section_folder_key)

                name_token = self._alias_helper.get_name_token(validation_location)
                if name_token is not None:
                    validation_location.add_name_token(name_token, '%s-0' % section_folder_key)

                self._logger.finest('1 validation_location={0}', validation_location,
                                    class_name=_class_name, method_name=_method_name)

                location_path = '%s:%s' % (top_level_key, validation_location.get_folder_path())
                model_path = validation_utils.format_message('WLSDPLY-05103', location_path)

                validation_utils.print_blank_lines()
                validation_utils.print_indent(model_path, 0)
                validation_utils.print_blank_lines()

                self.__print_folders_usage(validation_location, control_option, 1)
                validation_location.pop_location()
        return