Exemple #1
0
    def delete(self, resource, **kwargs):
        db = self.application.db
        try:
            identifier = int(resource.identifier)
        except ValueError:
            raise exceptions.NotFound()

        try:
            db.remove_user(id=identifier)
            self.log.info("Removed user with id {}".format(identifier))
        except db_exceptions.NotFound:
            raise exceptions.NotFound()
        except db_exceptions.UnsupportedOperation:
            raise exceptions.Unable()
Exemple #2
0
    def delete(self, resource, **kwargs):
        """Stop the container."""
        identifier = resource.identifier
        container_manager = self.application.container_manager
        container = yield container_manager.find_container(url_id=identifier)

        if not container:
            raise exceptions.NotFound()

        try:
            yield self.application.reverse_proxy.unregister(container.urlpath)
        except Exception:
            # If we can't remove the reverse proxy, we cannot do much more
            # than log the problem and keep going, because we want to stop
            # the container regardless.
            self.log.exception(
                "Could not remove reverse proxy for id {}".format(identifier))

        try:
            yield container_manager.stop_and_remove_container(
                container.docker_id)
        except Exception:
            self.log.exception(
                "Could not stop and remove container for id {}".format(
                    identifier))
Exemple #3
0
    def delete(self, resource, **kwargs):
        db = self.application.db

        try:
            db.revoke_access_by_id(resource.identifier)
        except db_exceptions.NotFound:
            raise exceptions.NotFound()
    def retrieve(self, resource, **kwargs):
        """Return the representation of the running container."""
        container_manager = self.application.container_manager
        container = yield container_manager.find_container(
            url_id=resource.identifier, user_name=self.current_user.name)

        if container is None:
            self.log.warning("Could not find container for id {}".format(
                resource.identifier))
            raise exceptions.NotFound()

        return resource.fill(
            dict(
                name=container.name,
                image_name=container.image_name,
                mapping_id=container.mapping_id,
            ))
Exemple #5
0
    def create(self, resource, **kwargs):
        db = self.application.db

        acc_user = db.get_user(id=int(resource.user_id))
        if acc_user is None:
            raise BadRepresentation()

        volume = (resource.volume_source + ":" + resource.volume_target + ":" +
                  resource.volume_mode)
        if resource.volume_target == "" or resource.volume_source == "":
            volume = None

        try:
            id = db.grant_access(
                resource.image_name,
                acc_user.name,
                resource.allow_home,
                True,
                volume,
            )
        except db_exceptions.NotFound:
            raise exceptions.NotFound()

        resource.identifier = id