code: def install(self, release_id):
          
          release_path = os.path.join(self._releases, release_id)
          if not self._runner.exists(release_path):
              self._runner.run("mkdir -p '{0}'".format(release_path))
  
          # The artifact can optionally be renamed when being uploaded to
          # remote server. Useful for when we need a consistent name for
          # each deploy on the remote server but the local artifact includes
          # version numbers or something.
          if self._remote_name is not None:
              destination = os.path.join(release_path, self._remote_name)
          else:
              destination = release_path
  
          return self._runner.put(self._local_file, destination, mirror_local_mode=True)
docs: Install the local artifact into the remote release directory, optionally
          with a different name than the artifact had locally.
  
          If the directory for the given release ID does not exist on the remote
          system, it will be created. The directory will be created according to
          the standard Tunic directory structure (see :doc:`design`).
  
          :param str release_id: Timestamp-based identifier for this deployment.
          :param int retries: Max number of times to retry downloads after a failure
          :param float retry_delay: Number of seconds between download retries
          :return: The results of the ``put`` command using Fabric. This return
              value is an iterable of the paths of all files uploaded on the remote
              server.