'Validate sections or individual parameters.
The GRR configuration file contains several sections, used by different
components. Many of these components don\'t care about other sections. This
method allows a component to declare in advance what sections and parameters
it cares about, and have these validated.
Args:
sections: A list of sections to validate. All parameters within the
section are validated.
parameters: A list of specific parameters (in the format section.name) to
validate.
Returns:
dict of {parameter: Exception}, where parameter is a section.name string.'

def Validate(self, sections=None, parameters=None):

    if isinstance(sections, basestring):
        sections = [sections]
    if (sections is None):
        sections = []
    if (parameters is None):
        parameters = []
    validation_errors = {}
    for section in sections:
        for descriptor in self.type_infos:
            if descriptor.name.startswith((section + '.')):
                try:
                    self.Get(descriptor.name)
                except (Error, ValueError) as e:
                    validation_errors[descriptor.name] = e
    for parameter in parameters:
        for descriptor in self.type_infos:
            if (parameter == descriptor.name):
                try:
                    self.Get(descriptor.name)
                except (Error, ValueError) as e:
                    validation_errors[descriptor.name] = e
    return validation_errors
