Skip to content
This repository has been archived by the owner on Mar 5, 2021. It is now read-only.

Releases: NrgXnat/container-service

2.1.0

21 Jan 19:48
Compare
Choose a tag to compare

Along with several bug fixes, this release focuses on permissions updates required for compatibility with XNAT 1.7.6. These updates break backward compatibility with previous versions of XNAT (<1.7.6). Users of XNAT 1.7.5.x should use Container Service 2.0.1.

Bugfixes

  • CS-440 Fixed an issue which caused guest users to see authentication dialog on public projects.
  • CS-572: Change command listing permissions to require only project-read permissions. Viewing the "Run containers" action is still restricted by item "canEdit" permissions, although this does need to be modified since, for example, a custom user group ought to be able to read an MR session and write a QC assessor by launching a container on the read-only session.
  • CS-584: Fixed bug which kept external and derived input replacement-key values from propagating to the command line.

Updates

  • CS-585: Updated permissions model and h2 database parameters (in unit tests) to align with XNAT 1.7.6 requirements

2.0.1

06 Feb 21:40
Compare
Choose a tag to compare

Bugfixes

  • CS-554 Prevent illegal characters from being used in command input names.
  • XNAT-5876 Prevent Container Service from overwriting bugfix for character handling in core XNAT

2.0.0

05 Feb 02:23
Compare
Choose a tag to compare

Version 2.0.0 of the Container Service plugin is the first version to require XNAT 1.7.5 or above. If you are using XNAT 1.7.3 up to 1.7.4.1, please use the 1.6.0 release of this plugin.

Features

  • CS-29 Enable output handlers to have type "Assessor". If a command output points to an assessor XML, the output handler can now upload that XML and create the assessor object in XNAT.
  • CS-542 Add "container-user" to Docker Server settings. This allows you to specify the user within the container as whom the command should be run. If you specify nothing, the process within the container is run as root or whatever user settings are defined on the image (which is unchanged from the current behavior).
  • CS-543 Add support for setting container user as "containerUser=username" in prefs-init.ini config file. This value is only used when no other server settings exist in the database, such as initial deployment.
  • CS-545 Project owners can now view project-specific Container History tables in the Project Settings UI.
  • CS-547 Replacement keys in Setup and Wrapup command line strings are now resolved with parent container input values.
  • CS-549 Refactor the container launch API output to support complex parent-child-grandchild relationships between inputs, then adjust the UI to use the new API.

Bugfixes

  • XNAT-5785 Ouputs that contain directories now maintain directory in resource. (Previous behavior would dump contents of directory into resource.)
  • CS-515 Adds a version checker to warn users if plugin is not installed on a compatible version of XNAT.
  • CS-541 Use Path Translation setting when creating mounts for setup and wrapup commands.
  • CS-544 Project level setup and wrapup command statuses now appear in project level history table.
  • CS-546 Fixed Assessor as Command Input functionality.
  • CS-550 Fixed rendering of long elements in container history table.
  • CS-554 Prevent illegal characters from being used in command input names.
  • CS-557 Fix element display for command table headers in Admin UI.
  • CS-558 Fix labeling bug in bulk launcher from project data listing.

1.6.0

29 Oct 18:50
Compare
Choose a tag to compare

Features

  • Change name of Command Wrapper Output property as-a-child-of-wraper-input to as-a-child-of. This is to support CS-80 and allow uploading outputs to other outputs. (Note that the title of the database column has not changed, and is still wrapperInputName.)
  • CS-80 Allow command wrapper output handlers to create new objects as children of objects created by previous output handlers. The previous behavior allowed outputs to be handled only by wrapper inputs.
  • CS-457 Add label field to command wrapper. This will be used to represent the command wrapper in the "Run Container" menu going forward.
  • CS-458 GET /commands/available includes command and wrapper labels
  • Manually refresh resource catalog when uploading resources. (We used to rely on the Catalog Service to do this, but it doesn't anymore.)
  • CS-407 Add docker host setting to translate mount paths. If xnat sees a path at /data/xnat/x/y/z but your docker host sees the same path at /my/path/x/y/z, you can include these path prefixes in your docker server settings. If you're using REST, set the properties "path-translation-xnat-prefix" and "path-translation-docker-prefix" respectively. If you're using the Plugin Settings UI, the fields will be there.
  • CS-494 Add docker host setting for whether to check on server startup if all the images referenced by commands are present, and pull them if not.
  • CS-502 When a container is launched with the project-specific launch APIs (/xapi/projects/{project}/.../launch), that project is now saved as a property on the container.
  • CS-503 Add APIs to get containers by project.
  • CS-513 Increase length of several fields:
    • Command
      • Description
      • Command-line
    • Command Input
      • Description
      • Default value
    • Command Wrapper
      • Description
    • Command Wrapper Derived Input
      • Description
      • Default value
    • Command Wrapper External Input
      • Description
      • Default value
    • Container
      • Command-line
  • Include a container's database ID in the LaunchReport returned after launch.
  • Add a new container status: "Finalizing". This is set when the container has finished and container service begins its finalization process (uploading outputs and logs). When finalization is finished, the status is set to "Complete" as before.
  • CS-535 Add command and wrapper input property sensitive. This boolean property, when set to true, will cause the value to be masked out in the container history UI and REST API. (The value is still present in the database and may be printed to logs.) In addition, if any inputs on a command / wrapper are marked as sensitive, the raw type inputs—i.e. those input values that were sent by the user and saved before any processing—will not be shown in the UI or API. The reason being that 1. if sensitive information exists, it may be leaked by raw inputs; 2. we have no way for the user to tell us anything about the raw inputs, including their potential sensitivity; thus 3. we can't guarantee any of their values are not sensitive.
  • Add another rest endpoint for /commands/available that takes project in path instead of query: /projects/{project}/commands/available?xsiType={whatever} instead of /commands/available?project={project}&xsiType={whatever}.

Bugfixes

  • CS-488 Allow wrappers to derive Session inputs from Assessor inputs, in the same way you can derive Sessions from Scans.
  • CS-492 Save override-entrypoint property on Container entity. (It was being used properly to make the docker container, but not saved in database.)
  • CS-510 Enable fetching logs from a running service.
  • History UI now fetches logs by container database id, not container docker id (or service id).
  • CS-520 Can get containers by service ID. This applies to the internal ContainerService.get(String id) as well as REST /xapi/containers/{id}.
  • Prevent generating duplicate ContainerEntityHistory items (and audit table entries) by improving equality check.
  • CS-409 Derived input values now sent to the launch UI as ID or name or value, rather than URI. Conversely, derived input values can be interpreted as URIs or IDs or names, whereas before each type of derived input had its own special undocumented requirement for an input value to be interpreted.
  • CS-531 CommandWrapperEntity derivedInputs, externalInputs, and outputHandlers and CommandEntity inputs, outputs, wrappers, and mounts sorted by primary table id.

Other

  • CS-537 References to the dummy TransportService removed, as it was a placeholder for functionality implemented elsewhere.
  • CS-480 Deprecate Container.ContainerMount.inputFiles. Having a list of input files for a mount is nice during command resolution, but it doesn't make much sense to store that list. As of now no new containers will have anything in their mounts' inputFiles. Old containers will still report their values for inputFiles for now, but this may change in the future.
  • Remove the constant log entries for event polling. We get it. You're checking for events.

2.0.0-RC4

04 Oct 14:17
ce8bcfb
Compare
Choose a tag to compare
2.0.0-RC4 Pre-release
Pre-release

This is a release candidate version for 2.0.0. It has all the changes of the most recent 1.6.0 release candidate (see the 1.6.0-RC1 changelog for details), plus changes that depend on XNAT 1.7.5 and break backwards compatibility with older XNAT versions.

Features

  • CS-29 Enable output handlers to have type "Assessor". If a command output points to an assessor XML, the output handler can now upload that XML and create the assessor object in XNAT.

Bugfixes

  • XNAT-5785 Ouputs that contain directories now maintain directory in resource. (Previous behavior would dump contents of directory into resource.)

1.6.0-RC1

04 Oct 14:07
2bb4764
Compare
Choose a tag to compare
1.6.0-RC1 Pre-release
Pre-release

This is a release candidate for version 1.6.0 (née 1.5.2).

Features

  • Change name of Command Wrapper Output property as-a-child-of-wraper-input to as-a-child-of. This is to support CS-80 and allow uploading outputs to other outputs. (Note that the title of the database column has not changed, and is still wrapperInputName.)
  • CS-80 Allow command wrapper output handlers to create new objects as children of objects created by previous output handlers. The previous behavior allowed outputs to be handled only by wrapper inputs.
  • CS-457 Add label field to command wrapper. This will be used to represent the command wrapper in the "Run Container" menu going forward.
  • CS-458 GET /commands/available includes command and wrapper labels
  • Manually refresh resource catalog when uploading resources. (We used to rely on the Catalog Service to do this, but it doesn't anymore.)
  • CS-407 Add docker host setting to translate mount paths. If xnat sees a path at /data/xnat/x/y/z but your docker host sees the same path at /my/path/x/y/z, you can include these path prefixes in your docker server settings. If you're using REST, set the properties "path-translation-xnat-prefix" and "path-translation-docker-prefix" respectively. If you're using the Plugin Settings UI, the fields will be there.
  • CS-494 Add docker host setting for whether to check on server startup if all the images referenced by commands are present, and pull them if not.
  • CS-502 When a container is launched with the project-specific launch APIs (/xapi/projects/{project}/.../launch), that project is now saved as a property on the container.
  • CS-503 Add APIs to get containers by project.
  • CS-513 Increase length of several fields:
    • Command
      • Description
      • Command-line
    • Command Input
      • Description
      • Default value
    • Command Wrapper
      • Description
    • Command Wrapper Derived Input
      • Description
      • Default value
    • Command Wrapper External Input
      • Description
      • Default value
    • Container
      • Command-line
  • Include a container's database ID in the LaunchReport returned after launch.
  • Add a new container status: "Finalizing". This is set when the container has finished and container service begins its finalization process (uploading outputs and logs). When finalization is finished, the status is set to "Complete" as before.
  • CS-535 Add command and wrapper input property sensitive. This boolean property, when set to true, will cause the value to be masked out in the container history UI and REST API. (The value is still present in the database and may be printed to logs.) In addition, if any inputs on a command / wrapper are marked as sensitive, the raw type inputs—i.e. those input values that were sent by the user and saved before any processing—will not be shown in the UI or API. The reason being that 1. if sensitive information exists, it may be leaked by raw inputs; 2. we have no way for the user to tell us anything about the raw inputs, including their potential sensitivity; thus 3. we can't guarantee any of their values are not sensitive.

Bugfixes

  • CS-488 Allow wrappers to derive Session inputs from Assessor inputs, in the same way you can derive Sessions from Scans.
  • CS-492 Save override-entrypoint property on Container entity. (It was being used properly to make the docker container, but not saved in database.)
  • CS-510 Enable fetching logs from a running service.
  • History UI now fetches logs by container database id, not container docker id (or service id).
  • CS-520 Can get containers by service ID. This applies to the internal ContainerService.get(String id) as well as REST /xapi/containers/{id}.
  • Prevent generating duplicate ContainerEntityHistory items (and audit table entries) by improving equality check.

Other

  • CS-480 Deprecate Container.ContainerMount.inputFiles. Having a list of input files for a mount is nice during command resolution, but it doesn't make much sense to store that list. As of now no new containers will have anything in their mounts' inputFiles. Old containers will still report their values for inputFiles for now, but this may change in the future.
  • Remove the constant log entries for event polling. We get it. You're checking for events.

MICCAI 2018 Demo

21 Sep 19:52
Compare
Choose a tag to compare
MICCAI 2018 Demo Pre-release
Pre-release

This release is not for general consumption. It was used for an XNAT demonstration site at the MICCAI 2018 conference.

This version is compatible with XNAT 1.7.5 (still in development) + the event service code which will probably be in XNAT 1.7.6. It contains the current code the will go into the container service version 1.5.2 + CS 2.0.0 + extra code to integrate with the new event service.

1.5.2-RC2

04 Sep 19:43
72399b0
Compare
Choose a tag to compare
1.5.2-RC2 Pre-release
Pre-release

This is another release candidate for version 1.5.2. When released, 1.5.2 will be compatible with all XNAT versions from 1.7.3 to at least 1.7.5.

Features

  • Change name of Command Wrapper Output property as-a-child-of-wraper-input to as-a-child-of. This is to support CS-80 and allow uploading outputs to other outputs. (Note that the title of the database column has not changed, and is still wrapperInputName.)
  • CS-80 Allow command wrapper output handlers to create new objects as children of objects created by previous output handlers. The previous behavior allowed outputs to be handled only by wrapper inputs.
  • CS-457 Add label field to command wrapper. This will be used to represent the command wrapper in the "Run Container" menu going forward.
  • CS-458 GET /commands/available includes command and wrapper labels
  • Manually refresh resource catalog when uploading resources. (We used to rely on the Catalog Service to do this, but it doesn't anymore.)
  • CS-407 Add docker host setting to translate mount paths. If xnat sees a path at /data/xnat/x/y/z but your docker host sees the same path at /my/path/x/y/z, you can include these path prefixes in your docker server settings. If you're using REST, set the properties "path-translation-xnat-prefix" and "path-translation-docker-prefix" respectively. If you're using the Plugin Settings UI, the fields will be there.
  • CS-494 Add docker host setting for whether to check on server startup if all the images referenced by commands are present, and pull them if not.
  • CS-502 When a container is launched with the project-specific launch APIs (/xapi/projects/{project}/.../launch), that project is now saved as a property on the container.
  • CS-503 Add APIs to get containers by project.
  • CS-513 Increase length of several fields:
    • Command
      • Description
      • Command-line
    • Command Input
      • Description
      • Default value
    • Command Wrapper
      • Description
    • Command Wrapper Derived Input
      • Description
      • Default value
    • Command Wrapper External Input
      • Description
      • Default value
    • Container
      • Command-line
  • Include a container's database ID in the LaunchReport returned after launch.
  • Add a new container status: "Finalizing". This is set when the container has finished and container service begins its finalization process (uploading outputs and logs). When finalization is finished, the status is set to "Complete" as before.

Bugfixes

  • CS-488 Allow wrappers to derive Session inputs from Assessor inputs, in the same way you can derive Sessions from Scans.
  • CS-492 Save override-entrypoint property on Container entity. (It was being used properly to make the docker container, but not saved in database.)
  • CS-510 Enable fetching logs from a running service.
  • History UI now fetches logs by container database id, not container docker id (or service id).
  • CS-520 Can get containers by service ID. This applies to the internal ContainerService.get(String id) as well as REST /xapi/containers/{id}.
  • Prevent generating duplicate ContainerEntityHistory items (and audit table entries) by improving equality check.

Other

  • CS-480 Deprecate Container.ContainerMount.inputFiles. Having a list of input files for a mount is nice during command resolution, but it doesn't make much sense to store that list. As of now no new containers will have anything in their mounts' inputFiles. Old containers will still report their values for inputFiles for now, but this may change in the future.

2.0.0-RC3

20 Aug 16:08
8eabf21
Compare
Choose a tag to compare
2.0.0-RC3 Pre-release
Pre-release

This version has several additional fixes over 2.0.0-RC3. Most crucially, it changes the URI of created assessors from the form /experiments/{assessorId} to /experiments/{sessionId}/assessors/{assessorId}. This is to work around an XNAT 1.7.5 bug (or bad feature?) which prevented assessor resource uploads.

2.0.0-RC2

02 Aug 13:14
302e430
Compare
Choose a tag to compare
2.0.0-RC2 Pre-release
Pre-release

Features

  • Change name of Command Wrapper Output property as-a-child-of-wraper-input to as-a-child-of. This is to support CS-80 and allow uploading outputs to other outputs. (Note that the title of the database column has not changed, and is still wrapperInputName.)
  • CS-80 Allow command wrapper output handlers to create new objects as children of objects created by previous output handlers. The previous behavior allowed outputs to be handled only by wrapper inputs.
  • CS-457 Add label field to command wrapper. This will be used to represent the command wrapper in the "Run Container" menu going forward.
  • CS-458 GET /commands/available includes command and wrapper labels
  • CS-29 Enable output handlers to have type "Assessor". If a command output points to an assessor XML, the output handler can now upload that XML and create the assessor object in XNAT.
  • Manually refresh resource catalog when uploading resources. (We used to rely on the Catalog Service to do this, but it doesn't anymore.)
  • CS-407 Add docker host setting to translate mount paths. If xnat sees a path at /data/xnat/x/y/z but your docker host sees the same path at /my/path/x/y/z, you can include these path prefixes in your docker server settings. If you're using REST, set the properties "path-translation-xnat-prefix" and "path-translation-docker-prefix" respectively. If you're using the Plugin Settings UI, the fields will be there.
  • CS-494 Add docker host setting for whether to check on server startup if all the images referenced by commands are present, and pull them if not.
  • CS-502 When a container is launched with the project-specific launch APIs (/xapi/projects/{project}/.../launch), that project is now saved as a property on the container.
  • CS-503 Add APIs to get containers by project.

Bugfixes

  • CS-488 Allow wrappers to derive Session inputs from Assessor inputs, in the same way you can derive Sessions from Scans.
  • CS-492 Save override-entrypoint property on Container entity. (It was being used properly to make the docker container, but not saved in database.)
  • CS-500 When swarm mode is on, do not use non-null exit status as a way to determine is container is finished. That exit code has a bad default value of 0. See moby/moby#37577.

Other

  • CS-480 Deprecate Container.ContainerMount.inputFiles. Having a list of input files for a mount is nice during command resolution, but it doesn't make much sense to store that list. As of now no new containers will have anything in their mounts' inputFiles. Old containers will still report their values for inputFiles for now, but this may change in the future.