docs: def _auto_install(self):
          """
          Automatically detects images and installs them in the manifest if they
          are not there already
          """
          template = Template(template=self.manifest)
          sections = template.sections()
          images = self.d_client.images.list(filters={'label': 'vent'})
          add_sections = []
          status = (True, None)
          for image in images:
              ignore = False
              if ('Labels' in image.attrs['Config'] and
                  'vent.section' in image.attrs['Config']['Labels'] and
                      not image.attrs['Config']['Labels']['vent.section'] in sections[1]):
                  section = image.attrs['Config']['Labels']['vent.section']
                  section_str = image.attrs['Config']['Labels']['vent.section'].split(
                      ':')
                  template.add_section(section)
                  if 'vent.name' in image.attrs['Config']['Labels']:
                      template.set_option(section,
                                          'name',
                                          image.attrs['Config']['Labels']['vent.name'])
                  if 'vent.repo' in image.attrs['Config']['Labels']:
                      template.set_option(section,
                                          'repo',
                                          image.attrs['Config']['Labels']['vent.repo'])
                      git_path = join(self.path_dirs.plugins_dir,
                                      '/'.join(section_str[:2]))
                      # TODO clone it down
                      template.set_option(section, 'path', join(
                          git_path, section_str[-3][1:]))
                      # get template settings
                      # TODO account for template files not named vent.template
                      v_template = Template(template=join(
                          git_path, section_str[-3][1:], 'vent.template'))
                      tool_sections = v_template.sections()
                      if tool_sections[0]:
                          for s in tool_sections[1]:
                              section_dict = {}
                              options = v_template.options(s)
                              if options[0]:
                                  for option in options[1]:
                                      option_name = option
                                      if option == 'name':
                                          # get link name
                                          template.set_option(section,
                                                              'link_name',
                                                              v_template.option(s, option)[1])
                                          option_name = 'link_name'
                                      opt_val = v_template.option(s, option)[1]
                                      section_dict[option_name] = opt_val
                              if section_dict:
                                  template.set_option(section, s,
                                                      json.dumps(section_dict))
                  if ('vent.type' in image.attrs['Config']['Labels'] and
                          image.attrs['Config']['Labels']['vent.type'] == 'repository'):
                      template.set_option(
                          section, 'namespace', '/'.join(section_str[:2]))
                      template.set_option(section, 'branch', section_str[-2])
                      template.set_option(section, 'version', section_str[-1])
                      template.set_option(section, 'last_updated', str(
                          datetime.utcnow()) + ' UTC')
                      if image.attrs['RepoTags']:
                          template.set_option(
                              section, 'image_name', image.attrs['RepoTags'][0])
                      else:
                          # image with none tag is outdated, don't add it
                          ignore = True
                      template.set_option(section, 'type', 'repository')
                  if 'vent.groups' in image.attrs['Config']['Labels']:
                      template.set_option(section,
                                          'groups',
                                          image.attrs['Config']['Labels']['vent.groups'])
                  template.set_option(section, 'built', 'yes')
                  template.set_option(section, 'image_id',
                                      image.attrs['Id'].split(':')[1][:12])
                  template.set_option(section, 'running', 'no')
                  # check if image is running as a container
                  containers = self.d_client.containers.list(
                      filters={'label': 'vent'})
                  for container in containers:
                      if container.attrs['Image'] == image.attrs['Id']:
                          template.set_option(section, 'running', 'yes')
                  if not ignore:
                      add_sections.append(section)
                      template.write_config()
          # TODO this check will always be true, need to actually validate the above logic
          if status[0]:
              status = (True, add_sections)
          return status