code: def process_components_config_section(config, components_config):
      
      for component_config in components_config:
          if 'id' not in component_config:
              raise Exception('The component %s was defined without an id.' %
                              component_config)
          component_id = component_config['id']
          if component_id not in config.components:
              config.components[component_id] = {}
              config.components[component_id]['enabled'] = False
              config.components[component_id]['config'] = {}
          if 'class' in component_config:
              class_config_x = component_config['class'].split('.')
              config.components[component_id]['class'] = class_config_x[-1]
              config.components[component_id]['module'] = '.'.join(
                  class_config_x[:-1])
          if 'enabled' in component_config:
              config.components[component_id]['enabled'] = bool(
                  component_config['enabled'])
docs: Processes the components section from a configuration data dict.
  
      :param config: The config reference of the object that will hold the
      configuration data from the config_data.
      :param components_config: Data section from a config data dict.