docs: def extend(self, source, new_image_name, s2i_args=None):
          """
          extend this s2i-enabled image using provided source, raises ConuException if
          `s2i build` fails
  
          :param source: str, source used to extend the image, can be path or url
          :param new_image_name: str, name of the new, extended image
          :param s2i_args: list of str, additional options and arguments provided to `s2i build`
          :return: S2Image instance
          """
          s2i_args = s2i_args or []
          c = self._s2i_command(["build"] + s2i_args + [source, self.get_full_name()])
          if new_image_name:
              c.append(new_image_name)
          try:
              run_cmd(c)
          except subprocess.CalledProcessError as ex:
              raise ConuException("s2i build failed: %s" % ex)
          return S2IDockerImage(new_image_name)