code: def rebuild(self, image, root_pass=None, authorized_keys=None, **kwargs):
          
          ret_pass = None
          if not root_pass:
              ret_pass = Instance.generate_root_password()
              root_pass = ret_pass
  
          authorized_keys = load_and_validate_keys(authorized_keys)
  
          params = {
               'image': image.id if issubclass(type(image), Base) else image,
               'root_pass': root_pass,
               'authorized_keys': authorized_keys,
           }
          params.update(kwargs)
  
          result = self._client.post('{}/rebuild'.format(Instance.api_endpoint), model=self, data=params)
  
          if not 'id' in result:
              raise UnexpectedResponseError('Unexpected response issuing rebuild!', json=result)
  
          # update ourself with the newly-returned information
          self._populate(result)
  
          if not ret_pass:
              return True
          else:
              return ret_pass
docs: Rebuilding an Instance deletes all existing Disks and Configs and deploys
          a new :any:`Image` to it.  This can be used to reset an existing
          Instance or to install an Image on an empty Instance.
  
          :param image: The Image to deploy to this Instance
          :type image: str or Image
          :param root_pass: The root password for the newly rebuilt Instance.  If
                            omitted, a password will be generated and returned.
          :type root_pass: str
          :param authorized_keys: The ssh public keys to install in the linode's
                                  /root/.ssh/authorized_keys file.  Each entry may
                                  be a single key, or a path to a file containing
                                  the key.
          :type authorized_keys: list or str
  
          :returns: The newly generated password, if one was not provided
                    (otherwise True)
          :rtype: str or bool