Releases: NrgXnat/container-service
3.4.3
2.1.0
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
2.0.0
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
Features
- Change name of Command Wrapper Output property
as-a-child-of-wraper-input
toas-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 stillwrapperInputName
.) - 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
- Command
- 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, theraw
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 fromAssessor
inputs, in the same way you can deriveSession
s fromScan
s. - CS-492 Save
override-entrypoint
property onContainer
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 forinputFiles
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
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
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
toas-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 stillwrapperInputName
.) - 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
- Command
- 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, theraw
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 fromAssessor
inputs, in the same way you can deriveSession
s fromScan
s. - CS-492 Save
override-entrypoint
property onContainer
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 forinputFiles
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
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
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
toas-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 stillwrapperInputName
.) - 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
- Command
- 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 fromAssessor
inputs, in the same way you can deriveSession
s fromScan
s. - CS-492 Save
override-entrypoint
property onContainer
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 forinputFiles
for now, but this may change in the future.
2.0.0-RC3
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.