issuekey,title,description,storypoint DURACLOUD-4,"Document logging framework","Store-client: Whenever used, creates a c:/ directory and several directories underneath it to store its log files. Sending logs to STDOUT by default and/or having a documented way to changes this would be good.",1 DURACLOUD-10,"Allow for simple updating of project version numbers","It should be easy/simple to update the version number of all parts of the baseline for each release.",3 DURACLOUD-19,"Bulk load: Verify successful DuraCloud ingest of 10TB of BHL content",NULL,16 DURACLOUD-21,"JPEG2K: Image conversion service","Service wrapper and service to perform conversion of images from TIFF to JPEG2K.",8 DURACLOUD-22,"JPEG2K: Image server service","Service wrapper and service to serve JPEG2K images.",5 DURACLOUD-23,"JPEG2K: Image viewer service","Service wrapper and service to display JPEG2K images.",3 DURACLOUD-25,"Messaging: Add support for all DuraStore methods","Add messaging support for all methods available through the DuraStore REST API. Define an appropriate topic heirarchy. Example Uses: - allows for a greater degree of replication filtering - allows for replication on update/delete - allows for creation of a provenance service ",3 DURACLOUD-28,"Replication: handle replication on update/delete ",NULL,3 DURACLOUD-29,"Replication: bulk from existing store to new/empty store ","Handles the replication of content from an existing store/space into a new store/space. This allows for starting up a new replicated store.",7 DURACLOUD-38,"Security: Add application security (basic auth)",NULL,13 DURACLOUD-39,"Indexing service for space/content properties/tags (Search) ","This includes listening for changes to spaces/content and making the calls to have the information included in the search engine index. Note that there needs to be a search engine started and available for this to work. Prior to working this task, a choice will need to be made as to the indexing tools used. The most likely candidates are AWS CloudSearch (http://aws.amazon.com/cloudsearch) and Apache Solr (http://lucene.apache.org/solr/. Various comparisons (http://harish11g.blogspot.in/2012/12/amazon-cloudsearch-vs-apache-solr.html) can be found to assist in this selection. This task does not include updates to the UI or REST API to support users querying the index. ",8 DURACLOUD-41,"Integrity: check on demand (rely on DuraCloud generated hashes) ","Should allow for after-ingest checksum validation. Test case: use to validate a replicated content store.",13 DURACLOUD-60,"Allow expected checksum value to be included when adding a content item","Update the DuraStore REST API call for storing a content item to allow for including an MD5 checksum value which is compared with the stored file's checksum to ensure that the file was received correctly.",2 DURACLOUD-61,"Handle files larger than 5GB","Amazon S3 limits files size to 5GB, but many of our customers will want to store files larger than this. DuraStore should facilitate this by handling the chunking of large files into smaller files during transfer. Files will need to be stitched back together on download as well. Ideally this will all be transparent to the user, even as far as multiple files appearing as one in the space listing (with the proper total file size.) ",3 DURACLOUD-62,"Enable Pax-logging","As the use of the OSGi container and PAX-tooling increases, it is important that the container enables the configuration of bundle-level logging. Resources: http://ekkescorner.wordpress.com/2009/09/03/osgi-logging-part-2-logservices-vs-classic-logger/ http://fedora-commons.org/jira/browse/FCREPO-630",2 DURACLOUD-63,"Production AMI continuous integration testing","A suite of automated tests should be created to run on a schedule that: - start instances of production AMIs - check the tabs/fields/buttons of duradmin - start/verify each service - verify content actions ",5 DURACLOUD-64,"Update the development AMI","Update the tomcat user in the development AMI to allow calling of apt-get via sudo with no password. Steps: - call 'visudo' - add this line to the end of the file: tomcat ALL=NOPASSWD:/usr/bin/apt-get Also, add any necessary SystemProperties for enabling servicesutil to initialize $bundle.home ",1 DURACLOUD-65,"Create utility for durastore & duraservice initialization",NULL,1 DURACLOUD-66,"Initialize servicesadmin $bundle.home at runtime","Currently $bundle.home is a buildtime configuration item. Since the deployment machine will likely have a different setup than any particular build machine, it would be useful to allow $bundle.home to be set at runtime. Note: this has been avoided in the past by building the deployed projects on the deployment machine. Solutions may potentially be: - initialize from REST call - initialize from ~/file baked into AMI - initialize from System property (most tempting)",1 DURACLOUD-68,"Integrate j2k viewer with duradmin content browse","Although the j2k viewer is currently enabled, it needs to be tied to the duradmin content browse in order to be useful for jpeg2000 content.",3 DURACLOUD-69,"Modularize project builds","In an attempt to isolate fundamental aspects of the baseline in terms of building and testing, this task is to create three top-level pom.xml that separate: -storage -services -infrastructure Bamboo builds should be created to run each.",1 DURACLOUD-70,"Cannot upload empty content","While testing Akubra-DuraCloud (vs duracloud trunk r438), I noticed that anytime I attempt to send an empty stream to ContentStore.addContent(..), it behaves as though the request succeeded (no exception is thrown), but the content item never actually gets created in S3. Here's what I've verified so far: 1) S3 supports uploading empty items (verified via S3Fox) 2) ContentStore supports listing, getting, and deleting empty items (tested after uploading an empty item into my test space using S3Fox) 3) Duradmin reports an error (400) when attempting to upload an empty file, but is able to successfully list, get, and delete empty files. ",1 DURACLOUD-71,"IA Filesystem Checksum Verifier","This utility needs to: - walk a directory of downloaded IA books - generate checksums for each file - read IA-manifest of provided checksums (_files.xml) - compare generated to provided checksums",1 DURACLOUD-72,"content browser: previous link takes the user to the first page.",NULL,1 DURACLOUD-74,"Create EMC accounts for each pilot partner","In order to allow our partners to use EMC storage during the pilot we need to: 1. Create an EMC account for each partner 2. Add the EMC credentials to the DuraStore initialization for each partner",1 DURACLOUD-75,"Large-file chunking in durastore","This feature should accept large streams coming in from the durastore-REST-API and chunk them into duracloud.",3 DURACLOUD-76,"Large-file stitching in durastore","This feature should accept requests for large streams coming in from the durastore-REST-API and stitch the duracloud-chunks into a single response stream.",3 DURACLOUD-80,"display thumbnails in content browser",NULL,1 DURACLOUD-81,"Update Rackspace Java library","A few issues have been resolved in the RackSpace Java library based on submitted support tickets. The most current library needs to be added, and RackspaceStorageProvider needs to be updated to account for the fixes.",1 DURACLOUD-82,"Large-file stitching as client-side utility",NULL,3 DURACLOUD-86,"Limit count of space items in space metadata","The current call to get space metadata performs a count of the number of items in a space. For S3, this requires getting a list of the entire set of content and counting the included items. When there is a large number of item in the space, this can take quite a while (around 4 minutes for 250,000 objects). Rather than performing this count every time the metadata is requested for a space, the count should be capped and a value returned which indicates that there is a large number of objects. As an example, if the cap for counting is 1000 items, a value of ""1000+"" could be returned when the cap is reached. Along with this cap, there needs to be a way to get the actual content count. This would likely work best as a client-side count, since the client would be able to update its display to indicate that the count is proceeding.",1 DURACLOUD-91,"Out of memory error on uploading large files through duradmin.","try uploading three files > 20 MB - tomcat should throw an OOM error.",2 DURACLOUD-93,"Convert to use SLF4J consistently for logging","There is currently a mix of log4j, commons-logging, and slf4j in the baseline. The log4j and commons-logging dependencies (including transitive dependencies) need to be pulled out in favor of SLF4J. A good reference point is Chris Wilper's completed task doing the same thing in the Fedora baseline: http://fedora-commons.org/jira/browse/FCREPO-630",3 DURACLOUD-94,"Conversion service cleanup not always happening","In the conversion service, if the call to add the converted file to storage fails, neither the converted file nor the original are removed from the work directory. This cleanup should occur regardless of whether conversion or upload succeed. Additionally, it would be a good idea to add a retry to the upload call.",1 DURACLOUD-95,"Service Jars should be kept out of the service work directory","In ServicesUtil, specifically ServiceInstallerImpl.explodeAndInstall(), when a service package Zip is unpacked, any jars which are found to already be deployed are being placed in the service's work directory. Instead the jar count should just be incremented (as is done already) and the jar ignored.",1 DURACLOUD-96,"Unable to add metadata to a content item when the metadata name includes a space","When attempting to add metadata to a content item, if the name of the metadata includes a space, the add fails. There is no failure message, but the metadata is not added to the content metadata list. This issue does not show up when adding metadata to a space. Update: This issue was resolved for Amazon, but in Rackspace a similar problem still exists. On rackspace, if metadata is added to a content item in which the metadata name includes a space, it appears to work properly, but on refresh, that item will disappear.",2 DURACLOUD-97,"Updating the MIME type of a content item to an invalid MIME value causes errors","If you update the MIME type of a content item to an invalid value (such as image*jpeg) an exception is thrown: java.lang.IllegalArgumentException: Error parsing media type 'image*jpg'. The item can then not be accessed via the REST API (and consequently the UI). There should be a validation check in DuraStore (and DurAdmin) to make sure that the value provided as a MIME type is acceptable.",1 DURACLOUD-98,"Progress bar for uploading content items in duradmin","right now, adding a content item ",1 DURACLOUD-101,"Create utility to sync to DuraCloud from the filesystem","This can be used to sync arbitrary file system directories with DuraCloud, storing new and updated files. One use case for this is direct backup of Fedora and DSpace file content to DuraCloud (archive to DuraCloud without needing to talk directly.) See http://fedora-commons.org/confluence/x/LwAIAQ for more detail",16 DURACLOUD-102,"Add option to set color space in Image Conversion service","NYPL images are in proRGB format and need to be converted to sRGB as part of the process of converting TIFF images to JP2. This task is to include the option to indicate the preferred target colorspace in the call to perform the image conversion. This option will need to be included as a config item when deploying the service.",2 DURACLOUD-103,"Ability for account-admin to add image/mark-up to duradmin home page","The goal of this feature is to allow for DurAdmin to include the branding of the organization using DuraCloud.",1 DURACLOUD-104,"Handle access control at the DuraCloud level rather than depending on storage providers","Access control as it exists in version 0.2 of DuraCloud is handled by using the ACL and other access mechanisms of the underlying storage providers to allow or disallow direct access to content items in those provider stores. As it has been decided that DuraCloud should always mediate content access, access control should be managed within DuraCloud. Having an Open space will allow anonymous read access to content through the DuraCloud interfaces, whereas having a Closed space will allow access only to authorized users.",2 DURACLOUD-106,"Security: Add application support for transport security (ssl/tls)","This issue is to enable the baseline to handle both http and https requests.",8 DURACLOUD-107,"Security: Update PP AMI",NULL,3 DURACLOUD-111,"Video Streaming Service - Amazon Impl","This service should expose video content through Amazon's Cloud-front streaming server.",8 DURACLOUD-114,"Multi-thread the Image Conversion Service ","Update the Image Conversion Service to be able to spin up a set of threads to handle the conversion process.",2 DURACLOUD-115,"Image Conversion Service should write output more frequently","The process for reporting image conversion results should be updated so that the output file is created and continually updated as the conversion activity progresses. This makes it is possible to review the results even while the service is running and makes results available even if the service does not complete properly.",2 DURACLOUD-118,"Stylize 'logout' button","With the addition of security on duradmin, a logout button has been added to the base-header.jsp. It needs to be properly formatted/stylized.",1 DURACLOUD-121,"Create view link for items when jp2000 service is not running.",NULL,1 DURACLOUD-122,"Display Generic filetype icon in contents view when jpg2000 service not available.",NULL,2 DURACLOUD-123,"Implement Browser side caching for space and item metadata",NULL,3 DURACLOUD-126,"Create content retrieval tool","This tool is the complement to the Sync Tool: A command line utility which would be used to pull content from a DuraCloud space to the local file system. Part of that activity is reconstituting any chunked files.",4 DURACLOUD-127,"Duraservice REST-API: shorten /duraservice/services to /duraservice",NULL,1 DURACLOUD-128,"Anonymous StoreClient","The ContentStoreManagerImpl needs to be updated to allow anonymous users to have read access to content. notes from skype: [12:26:26] Bill Branan: the primary store is queried so that a ContentStoreImpl can be created with a StorageProviderType and a storeId. we could pass in StorageProviderType.UNKNOWN and storeId as null. the addStoreIdQueryParameter() method would need to check for null before adding the query param. if it's null, the param is just not included, and durastore reads that as ""use the primary store"" [12:27:42] Andrew Woods: where is your entry point? [12:28:47] Bill Branan: a new public method on ContentStoreManagerImpl, getContentStoreAsAnonymous() or something",1 DURACLOUD-129,"Add refresh button to flush clientside cache",NULL,1 DURACLOUD-130,"Investigate sojo dependency","Hello Danny, I have noticed there have been a couple of build failures due to a new dependency of duradmin that apparently is not always available from its hosting maven repository, namely, net.sf.sojo:sojo-optional:jar:0.5.0. It looks like this is a transitive dependency that was pulled in recently through: net.sf.spring-json:spring-json:jar:1.3.0. Would you be able to do some testing to see if duradmin actually needs this dependency or not. If we do need it, then we can pull it into our own Duraspace maven repository. Since it probably is a runtime dependency with the AJAX tooling, could you remove it from your local maven repository, place an exclude element in your duradmin pom.xml, and run through the application to see if it is actually being used anywhere? ...and naturally double check you local repository to make sure it did not slip back in. Thanks, Andrew p.s. I am planning on putting up a new page/form in duradmin that allows for showing/adding/removing/updating security users. Once the initial page is in the baseline, could you go through and make it usable and presentable? We can talk at length later. ",1 DURACLOUD-131,"Update EMC libraries and re-introduce to baseline","The EMC storage provider is currently excluded from tests and use because of very inconsistent performance around the time that EMC was in the process of taking their storage service into production. They have, hopefully, addressed these problems. The client libraries for EMC need to be updated to the most recent version, our code needs to be updated to work with the latest libraries, and our the tests and use of the EMC provider needs to be re-enabled.",2 DURACLOUD-132,"Application Initialization tool","As the initialization process for DuraCloud becomes increasingly involved, tooling support would be helpful. This tool should: - read all configuration from a properties files for durastore, duraservice, duradmin, and security - initialize each of the three webapps - set security users on each of the three webapps",3 DURACLOUD-133,"REST-ful initialization of duradmin","Currently the only way to initialize duradmin is through the ui: duradmin/init.htm This improvement should allow initialization through an http call.",1 DURACLOUD-134,"Propagate duradmin security updates to durastore & duraservice","When updates to security users happens on the duradmin ui, those changes need to be pushed to durastore and duraservice.",1 DURACLOUD-135,"Handle XML in a consistent way throughout the DuraCloud baseline","DuraCloud currently uses XML in many places and there are serveral tools and methods used for validating and parsing the XML into an object model. The first step is to pull each bit of XML generation/parsing/validating code into its own class, passing back objects that can be used by the other parts of the code. This will make it easier to re-factor the XML handling into a standard method. We should consider which tool(s) provides the best set of features and use it consistently. We should also have a standard method for validation, Relax NG should be considered here.",5 DURACLOUD-140,"Error viewing files in DurAdmin space listing","To replicate: Add the attached file (which includes a + in the file name) to a space. View the space using DurAdmin. The request appears to fail to get metadata for the new file, so its link is removed and replaced with: Unable to complete request: status (200) If you click on the link before it disappears, everything appears as it should, the metadata is displayed, and the file can be viewed or downloaded. Note that this problem appears to occur when any of these characters show up in the contentID: +,"", #, %, & So a couple of questions here: - What's causing the failure when retrieving metadata? - Why does the link to the item disappear when the metadata can't be retrieved? As a side note, if you select a content item to view on the space page before the metadata for all content items has loaded, all content items in the list turn into error messages. The content page loads shortly after this, so things get back to normal, but it may appear to a user that they have done something wrong by clicking on a content link.",2 DURACLOUD-143,"Be able to embed J2K viewer in local hosted application","Users would like to view their JPEG2000 images in J2K image server, wrapped in their own UI/portal. Images and image server would be hosted from DuraCloud.",1 DURACLOUD-144,"Provide users of the Image Conversion service with feedback/status regarding the time that will be required to complete a conversion task",NULL,5 DURACLOUD-145,"Duraservice: messaging","This feature is analogous DURACLOUD-25, except it calls for applying publishing of messaging events across duraservice methods.",4 DURACLOUD-149,"ServicesAdmin: Clear registered services","This improvement should provide a RESTful means of clearing the ""registered services"" from servicesadmin's cache. This would facilitate bringing duraservice and servicesadmin back into sync.",3 DURACLOUD-150,"DurAdmin: Warning on overwrite","When using DurAdmin, users should be notified when adding a content item will overwrite an existing file.",1 DURACLOUD-152,"Disable unused projects","This issue should disable /duradavwebapp from the build and remove /sunstorageprovider",1 DURACLOUD-153,"UI Facelift",NULL,5 DURACLOUD-154,"Release AMI","This tracker item is a container for all items that should be included in the 0.4 AMI. * redirect / to /duradmin",3 DURACLOUD-155,"Project Version in batch scripts","This issue is a follow-on to DURCLOUD-10 which enabled true project version numbers in the DuraCloud baseline. This issue is to enable those version numbers to be ""sourced"" from a common .bat file (ala /resources/scripts/osgi/env.sh & /services/j2kservice/run-deps.sh)",1 DURACLOUD-156,"License Boiler Plates","Before going open-source. the baseline needs to be updated to include the proper licensing info.",1 DURACLOUD-157,"Refactor: StorageProviderFactory & TaskProviderFactory","In order to be able to leverage Spring for it IoC, AOP, etc, across these classes (and a chain of classes below them that follow a similar pattern) as well as to more easily unit test them by injecting mocks, this jira-item is to refactor these classes from being comprised of static methods and then use the Spring framework to inject them into their respective *Rest.java counterparts.",1 DURACLOUD-158,"Change Sync Tool default port","The default port for the Sync Tool is 8080, it should be 443 to allow it to be used by customers without having to set the port to 80 or 443.",1 DURACLOUD-159,"Provide a way to make use of Amazon's Reduced Redundancy Storage","Amazon's Reduced Redundancy Storage provides a lower cost cloud storage solution. We should add a task which will set content in a space to use this type of storage (and get it back to standard storage.) We could potentially also add a service to allow users to do this directly, but that should be in another tracker item.",2 DURACLOUD-160,"Create file-based credential store for unit tests","Replace the current unit-test-db with a file-based method for storing and retrieving storage provider credentials. This new method will need to be able to handle storage files which are and which are not encrypted. - Developers should be able to keep a local file (perhaps pointed to by maven settings) which includes all of the account credentials needed for testing. They should be able to choose to encrypt this file or not. Working with an unencrypted file is simpler for local development. Using an encrypted file will allow for more secure storage and for simpler sharing among developers. (The key needed to enc/dec could be stored in maven settings as it is now for the db.) - We may choose to pass an encryped credentials file into bamboo in order to be able to update the test accounts (and keys) without needing to rebuild the AMI. It seems likely that we can reuse the code in app-config to actually read the credentials file, assuming the same format as an app-config file. We should also be able to use the EncryptionUtil in common to handle the encryption/decryption (in combination with Commons-IO FileUtils.readFileToString()). There should be an assembly which provides an easy CLI to encrypt and decrypt a file.",3 DURACLOUD-161,"Transition to using S3 Reduced Redundancy Storage for all pilot S3 storage","Transition all current S3 objects to use RRS. Update the S3StorageProvider to use RRS as the default. One way to do this would be to add a task which sets a flag within the S3StorageProvider indicating the preferred storage setting for S3.",3 DURACLOUD-163,"Add config element for duraservice service-registry store credentials","This item should add a new config element to duraservice for the username/password needed to get services from the dcprod service-registry store. Currently these credentials are coming from the hijacked config elements: duraservice.service-compute.username duraservice.service-compute.password ",1 DURACLOUD-164,"500 response from durastore: Too many open files","After uploading some 1-GB files to the WGBH release-0.3 instance, durastore would only respond with a 500 exception. The tomcat log files (attached) indicate ""java.net.SocketException: Too many open files"" The lsof.out shows an excess of open socket connections to the instance itself. It may be related to the jets3t library (?).",3 DURACLOUD-167,"Error retrieving content stores","I'm getting this error when trying to access my spaces through the duradmin (accessing files through the durastore appears unaffected) An unexpected error occurred... Error retrieving content stores. Response code was 401, expected value was 200. Response Body: Apache Tomcat/6.0.18 - Error report

HTTP Status 401 - Bad credentials


type Status report

message Bad credentials

description This request requires HTTP authentication (Bad credentials).


Apache Tomcat/6.0.18

Error retrieving content stores. Response code was 401, expected value was 200. Response Body: Apache Tomcat/6.0.18 - Error report

HTTP Status 401 - Bad credentials


type Status report

message Bad credentials

description This request requires HTTP authentication (Bad credentials).


Apache Tomcat/6.0.18

",1 DURACLOUD-168,"sync tool writes log files into working directory","The sync tools writes a duracloud-common.log file into the current working directory (possibly only an issue on non-windows platforms), writing to the relative file path ""./c:/work/programs/duracloud/logs/duracloud-common.log"", which causes some errors in the log files: Caused by: org.duracloud.error.ContentStoreException: Error attempting to add content 'c:/work/programs/duracloud/logs/duracloud-common.log' in 'aapp-preservation' due to: Response code was 500, expected value was 201. Response body value: Error attempting to add content 'c:/work/programs/duracloud/logs/duracloud-common.log' in 'aapp-preservation' due to: Content c:/work/programs/duracloud/logs/duracloud-common.log was added to space aapp-preservation but the checksum, either provided or computed enroute, (c2e207b0a44d27e4337d16f93970f1e4) does not match the checksum computed by the storage provider (4f074bb6537ddb42a54f33b401bbd146). This content should be checked or retransmitted. org.duracloud.client.ContentStoreImpl.addContent(ContentStoreImpl.java:394) org.duracloud.chunk.writer.DuracloudContentWriter.addContent(DuracloudContentWriter.java:182) ... 11 more Caused by: org.duracloud.error.ContentStoreException: Response code was 500, expected value was 201. Response body value: Error attempting to add content 'c:/work/programs/duracloud/logs/duracloud-common.log' in 'aapp-preservation' due to: Content c:/work/programs/duracloud/logs/duracloud-common.log was added to space aapp-preservation but the checksum, either provided or computed enroute, (c2e207b0a44d27e4337d16f93970f1e4) does not match the checksum computed by the storage provider (4f074bb6537ddb42a54f33b401bbd146). This content should be checked or retransmitted. org.duracloud.client.ContentStoreImpl.checkResponse(ContentStoreImpl.java:512) org.duracloud.client.ContentStoreImpl.addContent(ContentStoreImpl.java:380) ... 12 more INFO 2010/06/24 16:43:01 [pool-2-thread-3] (SyncWorker.java:61) [retryOnFailure()] - Adding /Volumes/MLAMellonDigLib4/barcode101640/./c:/work/programs/duracloud/logs/duracloud-common.log back to the changed list, another attempt will be made to sync file. ==== md-20013004:barcode101640 chris_beer$ java -jar ~/Downloads/synctool-0.3-driver.jar -d . -f 2000 -h wgbh.duracloud.org -p 443 -s aapp-preservation -t 4 -u admin -w changeme -b .. Starting up the Sync Tool ..................... Startup Complete -------------------------------------- Sync Tool Configuration -------------------------------------- Sync Directories: /Volumes/MLAMellonDigLib4/barcode101640/. DuraStore Host: wgbh.duracloud.org DuraStore Port: 443 DuraStore Username: admin DuraCloud Space ID: aapp-preservation SyncTool Backup Directory: .. SyncTool Poll Frequency: 2000 SyncTool Threads: 4 SyncTool Max File Size: 1073741824 bytes SyncTool Syncing Deletes: false -------------------------------------- -------------------------------------- Sync Tool Help -------------------------------------- The following commands are available: x - Exits the Sync Tool c - Prints the Sync Tool configuration s - Prints the Sync Tool status l - Changes the log level to (may be any of DEBUG, INFO, WARN, ERROR) Location of logs: /Volumes/MLAMellonDigLib4/barcode101640/../logs -------------------------------------- s -------------------------------------- Sync Tool Status -------------------------------------- Start Time: 2010-06-24 16:23:07.929 Sync Queue Size: 1 Syncs In Process: 2 Successful Syncs: 30 Failed Syncs: 3 /Volumes/MLAMellonDigLib4/barcode101640/./c:/work/programs/duracloud/logs/duracloud-common.log /Volumes/MLAMellonDigLib4/barcode101640/./c:/work/programs/duracloud/logs/duracloud-common.log /Volumes/MLAMellonDigLib4/barcode101640/./c:/work/programs/duracloud/logs/duracloud-common.log -------------------------------------- quit md-20013004:barcode101640 chris_beer$ tail c\:/work/programs/duracloud/logs/duracloud-common.log /logs/duracloud-common.log back to the changed list, another attempt will be made to sync file. Caused by: org.duracloud.error.ContentStoreException: Error attempting to add content 'c:/work/programs/duracloud/logs/duracloud-common.log' in 'aapp-preservation' due to: Response code was 500, expected value was 201. Response body value: Error attempting to add content 'c:/work/programs/duracloud/logs/duracloud-common.log' in 'aapp-preservation' due to: Content c:/work/programs/duracloud/logs/duracloud-common.log was added to space aapp-preservation but the checksum, either provided or computed enroute, (c2e207b0a44d27e4337d16f93970f1e4) does not match the checksum computed by the storage provider (4f074bb6537ddb42a54f33b401bbd146). This content should be checked or retransmitted. org.duracloud.client.ContentStoreImpl.addContent(ContentStoreImpl.java:394) org.duracloud.chunk.writer.DuracloudContentWriter.addContent(DuracloudContentWriter.java:182) ... 11 more Caused by: org.duracloud.error.ContentStoreException: Response code was 500, expected value was 201. Response body value: Error attempting to add content 'c:/work/programs/duracloud/logs/duracloud-common.log' in 'aapp-preservation' due to: Content c:/work/programs/duracloud/logs/duracloud-common.log was added to space aapp-preservation but the checksum, either provided or computed enroute, (c2e207b0a44d27e4337d16f93970f1e4) does not match the checksum computed by the storage provider (4f074bb6537ddb42a54f33b401bbd146). This content should be checked or retransmitted. org.duracloud.client.ContentStoreImpl.checkResponse(ContentStoreImpl.java:512) org.duracloud.client.ContentStoreImpl.addContent(ContentStoreImpl.java:380) ... 12 more INFO 2010/06/24 16:43:01 [pool-2-thread-3] (SyncWorker.java:61) [retryOnFailure()] - Adding /Volumes/MLAMellonDigLib4/barcode101640/./c:/work/programs/duracloud/logs/duracloud-common.log back to the changed list, another attempt will be made to sync file. ",1 DURACLOUD-169,"non-interactive content transfer tool","as a complement to the sync tool, i'd love to see a non-interactive, one-off content transfer tool (akin to `scp` or `rsync`, either per-directory or per-file) that could be easily integrated into existing workflows, e.g.: $ java -jar duracloud-transfer.jar --file $i -h wgbh.duracloud.org -p 443 -s aapp-preservation -u admin -w changeme ==> transfers file $i into the aapp-preservation space ",1 DURACLOUD-174,"errors loading duradmin spaces","After syncing 500+ large files, I'm getting some weird intermittent errors in the duradmin when trying to verify the files are there.. The answer is probably ""don't do that"", but reporting it anyway.. For the url https://wgbh.duracloud.org/duradmin/contents.htm?spaceId=aapp-preservation 1) see attached screenshot 2) after refreshing from (1), I the attached stack trace 3) eventually, I get this application error: org.duracloud.duradmin.util.DataRetrievalException: org.duracloud.error.ContentStoreException: Error attempting to get space 'aapp-preservation' due to: Too many open files java.lang.RuntimeException: org.duracloud.duradmin.util.DataRetrievalException: org.duracloud.error.ContentStoreException: Error attempting to get space 'aapp-preservation' due to: Too many open files at org.duracloud.duradmin.contentstore.ContentItemList.getSpace(ContentItemList.java:54) at org.duracloud.duradmin.control.ContentsController.handle(ContentsController.java:71) at org.springframework.web.servlet.mvc.AbstractCommandController.handleRequestInternal(AbstractCommandController.java:84) at [...] ",1 DURACLOUD-175,"Break out OSGI tests into a new project","Move all of the existing service tests which spin up an OSGI container into a new project //services/osgi-test. These tests should run as normal when using ""mvn clean install"", but should be skipped when the -DskipIntTests or -PskipIntTests flags are used.",2 DURACLOUD-177,"DuraStore REST-API addition: spaceExists & contentExists","This issue is to add two additional methods to the durastore REST-api: - spaceExists(spaceId) - contentExists(spaceId, contentId)",2 DURACLOUD-178,"Trade out jets3t libraries under S3StorageProvider for Amazon-supported libraries","Use the Amazon libraries (http://aws.amazon.com/sdkforjava/) for connecting to S3. They will also be used for connecting to EC2.",4 DURACLOUD-179,"Set higher file handle limits in DuraCloud AMIs","WGBH has seen issues on their instance due to the tomcat process running out of file handles. To get around this the changes listed at the bottom of the AMI creation wiki page (https://wiki.duraspace.org/display/neworg/DuraCloud+AMI+Setup#DuraCloudAMISetup-AdditionalNotes) were added. These changes need to be included in the DuraCloud AMIs.",1 DURACLOUD-180,"Sync Tool run to completion","Add an option to the Sync Tool which would allow it to run until its work queue is empty, then exit. This would be useful for administrators who would like to use the Sync Tool as part of a cron job to sync all of the day's updates at one time rather than have the Sync Tool run continually.",1 DURACLOUD-181,"Sync Tool retry failed transfers","Update the Sync Tool to write failed transfers to a file in the backup directory, then add an option to retry those failed transfers on startup. This would need to be a one time retry (otherwise the risk of a loop is too high) which pulls the contents on the failed transfers file into the work queue, then clears that file; any new failures would be written to the file again.",2 DURACLOUD-182,"Sync Tool start from scratch option","Add an option to the Sync Tool which would clear out its status logs (or just ignore them) in order to start from scratch (attempt to sync all files) rather than restarting. This would remove the need to ever manually clear the backup directory unless wanting to remove log files.",1 DURACLOUD-185,"change icon to something more appropriate on deploy/undeploy service.","not sure if the lock/unlock icons used for open/closed spaces really applies to service deploy/undeploy (0.6) ",1 DURACLOUD-187,"After logging in, redirect the user to the requested URL",NULL,1 DURACLOUD-188,"provide next and previous links for navigating content items.",NULL,1 DURACLOUD-190,"Fix Duradmin UI integration tests.",NULL,1 DURACLOUD-191,"Update the Image Conversion service to make use of Amazon's Elastic MapReduce service","In order to handle processing the volume of data being presented by our pilot partners, DuraCloud needs to be able to distribute compute work onto multiple machines. It appears that the most standardized way of doing this distribution is to make use of Apache Hadoop. Since Amazon provides the Elastic MapReduce service, which makes use of Hadoop, it makes sense to investigate that as the initial step towards being able to take advantage of scalable processing in the cloud. We already have data to convert (NYPL tiff images) and an existing Image Conversion service, this task is to allow the image conversion to run via MapReduce.",16 DURACLOUD-192,"Full URL of streaming content","This improvement is to expose the full URL, including the streaming host server, of content that is streamed via the mediastreaming service. Various stream viewers provide the ability to paste in such a URL for testing.",1 DURACLOUD-193,"Navigating away from an upload in progress causes the upload to fail.","The quick fix is to provide a warning to the user. The better solution is probably to make the spaces,services,admin,and dashboard pages all driven off the same ""page"" and making the various sections (spaces,services,etc) addressable after the hashmark.",1 DURACLOUD-195,"The uploads dialog gets a little messy when you have >4 files that have been uploaded (close button sits over other stuff, can't see the bottom of the scroll bar, etc)","# The uploads dialog gets a little messy when you have >4 files that have been uploaded (close button sits over other stuff, can't see the bottom of the scroll bar, etc)",1 DURACLOUD-196,"Mark image files when the space is closed, indicating that the JP2 viewer is only available for open spaces","It would be really useful to have a notice box on image files when the space is closed, indicating that the JP2 viewer is only available for open spaces (then do viewing as if the JP2 service were not deployed).",1 DURACLOUD-197,"Make available services more explicit.","on the services tab, you have to click ""deploy a new service"" to view a list of other available services not currently running. it would be nice if that information was somehow presented on the immediate service page, as it wasn't immediately apparent that there were other services that could be run.",1 DURACLOUD-198,"DurAdmin: Add Content Item button is available prior to selecting a space","The ""Add Content Item"" button on the spaces tab of DurAdmin can be selected without choosing a space. The add content dialog box opens and allows you to interact as usual, but when you click the Add button nothing happens. The ""Add Content Item"" button should likely be grayed out until a space is selected.",1 DURACLOUD-200,"New StorageProvider: MS-Azure","This feature should create a StorageProvider implementation ala EMCStorageProvider.java RackspaceStorageProvider.java S3StorageProvider.java for MicroSoft's Azure storage offering. http://research.microsoft.com/azure ",13 DURACLOUD-202,"Server Health and Status Monitoring","This is a top-level feature that will span from the UI dashboard to the backend status. Exactly what functionality is expected in this feature needs further investigation. Examples may include: usage - storage requests, bandwidth consumption, uploads, downloads, etc storage breakdowns - by space, mimetype, storage provider, etc cost estimating see the following page for further ideas: https://wiki.duraspace.org/display/DSPINT/DurAdmin+Dashboard",13 DURACLOUD-204,"Persisting User Passwords","This improvement should persist system and user credentials to enable the same ones to be used across migrations to a new DuraCloud instance.",1 DURACLOUD-207,"Service configuration: Exclusion groups","The task is to update the service-config schemas to support the notion of exclusion groups during deployment and configuration of services. This allows the UI to dynamically display the appropriate input elements based on initial selections made by the user. See DURACLOUD-215",2 DURACLOUD-208,"Bulk Delete Space",NULL,1 DURACLOUD-209,"Bulk Delete Content",NULL,1 DURACLOUD-214,"Bulk Update Content Mime Type",NULL,1 DURACLOUD-215,"Service Exclusion Groups - UI Modifications","UI changes to support DURACLOUD-207",1 DURACLOUD-217,"Chrome & IE mis-behavior","On Wed, Aug 4, 2010 at 12:21 PM, Bryan Beecher wrote: OK, this is really weird. Chrome throws a tomcat error. IE hangs. Firefox works A-OK. I'll use Firefox. :-) -- bryan On Wed, Aug 4, 2010 at 12:18 PM, Bryan Beecher wrote: Hey, Carissa, I logged in, changed the password, and after hitting submit, got a page with this: {""user"":{""accountNonExpired"":true,""accountNonLocked"":true,""credentialsNonExpired"":true,""enabled"":true,""grantedAuthorities"":[""ROLE_ADMIN"",""ROLE_USER""],""password"":""[omitted]"",""username"":""admin""}} which contains the new password. However, whenever I navigate to the home page (URL below), I get a 500 response from tomcat, and a long stack trace (which I can send it if it helpful). If I cut-n-paste the URL into a different browser, I do get the login screen, but it just hangs when I try to authenticate. -- bryan",1 DURACLOUD-218,"Ability to view the actual number of items in a space when the count exceeds current limit (1000 now)",NULL,1 DURACLOUD-219,"In Service UI: Config : Exclusions - clarify relationship to a ""mode"" and the user configs that go with it.",NULL,1 DURACLOUD-220,"Service Report Dashboard","This task is to create a UI dashboard for displaying and downloading reports on service jobs. Information about both running services and completed services will need to be displayed. REST API calls should be available from which the service report information can be gathered. A UI will need to be created to be able to display the information in the reports. The reports will likely be in XML, so XSLT is an option for display.",5 DURACLOUD-221,"On session timeout, make sure javascript forces the user to login (instead of failing ungracefully)",NULL,1 DURACLOUD-222,"Service configuration: schema update for nested modes","This improvement is to update the service-types.xsd to define serviceType as its current sequence of config elements as well as a modeType that itself contains another modeType and the sequence of config elements.",1 DURACLOUD-223,"Service Report: backend utility for completed services","This feature provides the backend support for providing service summary details for services that have completed. 'Completed' is defined as either coming to a state of 'success' or 'failure', or in the case of services that just stay running (e.g. Image-Server) coming to the state 'started'. Service summaries should be collected as soon as the service completes and be persisted to a single file containing all services. This single report file will start fresh on a monthly basis.",5 DURACLOUD-224,"DurAdmin - enter key does not properly submit content detail edit","When editing the mime-type of a content item in DurAdmin (using the ""edit content item"" dialog), using the enter key to submit does not save the value which was input and returns the user to the main spaces view with no space selected. Using the Save button works just fine. Using the enter key should perform the same function as clicking Save.",1 DURACLOUD-225,"DurAdmin - next and previous buttons for content list are displayed even when not necessary","The recently added next and previous buttons to allow cycling through large sets of content items seem to show up even where are only a few content items in a space. Those buttons should only be available when there are more content items than can be displayed in the scroll window.",1 DURACLOUD-226,"DurAdmin - ""Login"" button on login screen does not respond to Enter key on Chrome","When using the Google Chrome browser and attempting to log in via DurAdmin, the Login button is not triggered by hitting the Enter key. Clicking on the Login button works fine. In Firefox and IE both clicking on the button and hitting the Enter key work fine.",1 DURACLOUD-228,"Cannot display Spaces in DuraAdmin UI","After logging into the DuraAdmin web app I can navigate to most tabs successfully, but when selecting the Spaces tab, I get a pop-up that says only ""error:undefined"". And the sync tool also exhibits a problem trying to access Spaces: Starting up the Sync Tool ...Exception in thread ""main"" java.lang.RuntimeException: Could not connect to space with ID 'synctest4'. at org.duracloud.sync.endpoint.DuraStoreSyncEndpoint.ensureSpaceExists(DuraStoreSyncEndpoint.java:82) at org.duracloud.sync.endpoint.DuraStoreSyncEndpoint.(DuraStoreSyncEndpoint.java:69) at org.duracloud.sync.endpoint.DuraStoreChunkSyncEndpoint.(DuraStoreChunkSyncEndpoint.java:33) at org.duracloud.sync.SyncTool.startSyncManager(SyncTool.java:89) at org.duracloud.sync.SyncTool.runSyncTool(SyncTool.java:185) at org.duracloud.sync.SyncTool.main(SyncTool.java:240) ",1 DURACLOUD-229,"Content does not complete if list size >= 1000","When the number of content items within a space exceeds 1000 and the ""maxResults"" parameter is set to 1000 or greater (1000 is the default), then ContentIterator.java eventually terminates early. This is because the underlying query to the storage provider is maxResults+1 to account for the possibility that the space metadata content object may be in the listing. Since the S3 client will only return a max of 1000 items regardless of the maxResults parameter, the call with 1001 effectively turns into a call for 1000 items. The logic in ContentIterator is terminating if the number of items in the listing returned is less than the maxResults parameter, which is the case when 1000 items are returned and one is removed (i.e. the space metadata object).",1 DURACLOUD-230,"Exception thrown on duradmin initialization","The attached stacktrace has begun appearing in the catalina.out log when running the app-config initialization tool. By downloading various revisions of the baseline, I was able to associate the origins of the stacktrace to svn r[47], on Aug 2nd. http://groups.google.com/group/duracloud-codewatch/browse_thread/thread/4dcd83462d243272?hl=en# I observe the stacktrace when running mvn clean install -DskipTests from the top of the baseline, followed by java -jar app-config/target/app-config-0.5.0-SNAPSHOT-driver.jar localhost.properties It is unclear to me if the mods to trunk/duradmin/src/main/webapp/WEB-INF/config/tiles.xml trunk/duradmin/src/main/webapp/WEB-INF/jsp/error.jsp cause the error, or just allow it to be visible in the catalina.out log. As a note, I also get the same result when running the following curl command: curl -d duradmin-init.xml -u un:pw http://localhost:8080/duradmin/init",1 DURACLOUD-231,"Allow users to select S3 storage class","As of release 0.6: - All content added to S3 is set to the reduced redundancy storage class - There are tasks available which will transition all content in a given space to a particular storage class (either standard or reduced redundancy) This task is to: - Provide a way for the user to select which storage class they would prefer to be set when new content is added. This selection would be for all content in an account. Later tasks will need to handle: - Provide selection of storage class at the space level - Provide a way for users to transition their existing content to their preferred storage class. This will likely be a service which leverages the existing tasks.",3 DURACLOUD-232,"REST-API: Create top-level exception barrier","This improvement is to create a top-level exception barrier for the durastore and duraservice REST-APIs. Currently, unexpected exceptions appear in the client response as either a stacktrace or a tomcat html error document.",1 DURACLOUD-233,"Add support for CloudFront invalidation","Since the media streaming service was created, Amazon has added a feature called Invalidation, which provides an API call to remove content from CloudFront. The media streaming service should be updated to make use of this call when stopping the service, so content will no longer be available for streaming when the service has been turned off.",1 DURACLOUD-235,"Metadata name prefix mismatch between durastore & duradmin","The duradmin metadata prefix is an extension of the durastore metadata prefix durastore: x-dura-meta- duradmin: x-dura-meta-ext- Therefore, metadata that is created through the durastore REST-API may not contain the full prefix that duradmin is expecting. These two prefixes need to be made consistent, and the logic should probably be pushed down from duradmin into storeclient.",3 DURACLOUD-237,"Test Infrastructure: mocking integration tests","This improvement is to allow developers to run the test suites more often by reducing the amount of time it takes to run a build. There are many integration tests that unnecessarily go all the way to the underlying storageproviders. These tests should be revisited with an eye towards mocking out the network calls where they are overly redundant.",8 DURACLOUD-238,"Test Infrastructure: reinstate bamboo",NULL,1 DURACLOUD-239,"DurAdmin: Uploaded file can be displayed in the wrong space","When uploading a file, when the upload completes, the content Id of the uploaded file is added to the list of items in the currently viewed space, even if that is not the space where the item has been stored. Clicking on the content Id then brings up a ""get item failed: error"" dialog. Clicking on the either space (the one being viewed or the one where the upload landed) allows them to refresh and show the correct listing.",1 DURACLOUD-240,"DurAdmin: Images in closed spaces should be displayed as if no J2K service exists","Re: DURACLOUD-196, when a space is closed, the View link still attempts to open it in a J2K viewer. Along with the current notice (and link to open the space), the images should act like the J2K service is not deployed until the space is opened. ",1 DURACLOUD-249,"Fedora Integration: Basic-Auth for externally referenced datastreams","This feature is the DuraCloud marker for the Fedora issue: https://jira.duraspace.org/browse/FCREPO-748",1 DURACLOUD-252,"Fixity Service: Amazon Elastic Map Reduce version",NULL,8 DURACLOUD-254,"Bit Integrity Service: update UI based on new service-config schema",NULL,4 DURACLOUD-255,"Incorrect redirects from http to https","Saw this while testing with Poster: When performing a PUT to add a new content item, if everything is right, except you use http rather than https in the URL you end up with a 404 response. Using httpfox, I can see that what happens is that a 301 is sent back and the original request is forwarded to the https address, but as a GET rather than a PUT. So the 404 is the result of attempting a GET on a content item which does not exist. It would appear that the HTTP verb is lost in the redirect.",2 DURACLOUD-256,"On some machines, not able to login to Duradmin","Brian Beecher and Andrew have seen occasional problems logging in. The symptom: user tries logging in with correct credentials - no failure, no success. Brian is using Chrome - doesn't see the problem in ""In cognito"" mode. Seems to be a caching issue.",1 DURACLOUD-257,"Use Amazon java client for Cloudfront","DURACLOUD-178 transitioned the majority of the interactions over to using the Amazon-provided java client. Unfortunately, when that work was done, that client did not yet support Cloudfront, so access to Cloudfront continued to be through Jets3t. Once the Amazon library is updated to include Cloudfront, this task is to complete the transition and remove Jets3t from the S3StorageProvider dependencies.",1 DURACLOUD-259,"Create 0.7 AMI","This production AMI should 1. contain removal of $BUNDLE_HOME/container & /work & /attic on shutdown in the /etc/init.d/duraspace script 2. update /etc/apache2/httpd.conf to include the following line: RewriteLock /var/lock/apache2/apache-rewrite.lock {new} RewriteMap local-ip-map prg:/etc/apache2/bin/local-ip.sh {already present} 3. touch: /var/lock/apache2/apache-rewrite.lock",2 DURACLOUD-260,"Login failure on some browsers/environments","Firefox 3.6.10 Chrome 6.0.472.62 Opera 10.62-6438 Occasionally on Firefox and Chrome the first time a username/password is provided and the 'enter' key hit, the fields just clear. But immediately re-inserting the values has always succeeded.",1 DURACLOUD-261,"Allow storeclient to handle redirects","Currently, if the storeclient is initialized to use port 80 to connect to durastore, it will fail when making calls because the responses are 301s which redirect to port 443. This task is to allow the storeclient to retry using the redirect path rather than failing. This update would likely benefit the serviceclient as well.",2 DURACLOUD-265,"Ensure integrity of input content to hadoop services","This improvement is to revisit the hadoop services: - fixity - bulk image conversion - replication on demand and ensure the content pulled from S3 is valid with respect to its stored MD5 value.",3 DURACLOUD-266,"Notification on service completion.","This task is to provide a notification to the user running a service when that service completes. The notification should include (a link to) the final output report, if one was generated by the service. Original description: Bryan Beecher suggested that adding some sort of pop-up, email message, or other indicator might be a good idea once the fixity service has finished the job that it is running. It isn't clear how to tell when it is finished beyond polling the Services page.",5 DURACLOUD-267,"Add a UI to the retrieval utility",NULL,5 DURACLOUD-270,"UI Pagination after ""delete all""","The scenario is revealed when wanting to clear the entire contents of a space or the first few hundred items. 1. have a space with many items (+1000, this is commonly the case with the log output from hadoop jobs) 2. select the space and select the check-box that marks all of the items shown on the current page 3. select ""Delete Selected Content Items"" 4. notice all items are deleted 5. select the ""next"" button 6. notice the next page of items is not displayed 7. refresh space (by hitting the space name) and notice the next page of items displays",1 DURACLOUD-271,"UI Message when creating space that already exists","When creating a space that already exists, the following pop-up displays the error: ""error: space is undefined"" Normally I can determine that the error must relate to the fact that the space already exists. But sometimes in creating a new space, the action fails and the space is not listed on the left-hand side listing of spaces. But despite the failure, the space is actually created (although not shown). So trying to create it again shows the ""error: space is undefined"" message which does not make it very easy to determine the actual error. The suggestion is to render a more specific error message.",1 DURACLOUD-272,"Metadata add button label is removed on focus","When adding metadata to either a space or content, the add metadata button label (""+"") is removed as soon as the button gets focus. This follows the [name] and [value] text being removed from the metadata text fields, but it should not happen on the button.",1 DURACLOUD-274,"Handle filenames which include spaces","This issue is to review the current set of DuraCloud services and utilities (including the sync and retrieval tools) to determine which ones do not currently support working with content items which include a space ("" "") character in their content IDs. After the list is identified, each service and utility should be updated to handle this case.",3 DURACLOUD-275,"DuraAdmin - View images in closed space in the J2K Viewer","Remove the notice that the space needs to be open in order to view the image in the J2K viewer. Change the link to view closed images in J2K viewer. Also change viewer url param from http to https. Make sure to release with issue DURACLOUD-138",1 DURACLOUD-276,"Update sync tool command line flags to match retrieval tool flags","The following flags need to be updated in the sync tool to match the retrieval tool: 1. password: change to -p 2. port: change to -r 3. backup (work) directory: change to -w 4. sync (content) directory: change to -c 5. sync deletes: change to -d 6. exit on completion: change to -x 7. add: store id: -i",1 DURACLOUD-277,"Update retrieval tool to skip space dir creation on single space retrieval","It is not necessary for the retrieval tool to create a directory for the space being retrieved when retrieval is only for a single space. This task is to update the retrieval tool such that when only one space is being retrieved, the files go directly into the content directory. When multiple spaces are retrieved, space directories are created, as is the case currently.",1 DURACLOUD-278,"Selecting a single space for deletion displays ""delete multiple spaces?"" warning","In DurAdmin, if you select a single space for deletion, on the far right you'll see a ""Multiple spaces selected"" message. After clicking ""Delete Selected Spaces"", you'll also get a warning that says ""Are you sure you want to delete multiple spaces?"". Obviously, this is a little confusing, as it causes you to have to double check that you aren't accidentally about to delete multiple spaces.",1 DURACLOUD-279,"Bulk Image Transformation failures","The Bulk Image Transformation service has failed in numerous tests which has been over a set of TIFF images files supplied by Rhodes. This set includes 317 images, ranging in size from 2.35 MB to 265.42 MB. The primary test case has been converting to JP2 format using the source color space. The service has failed when running with 1 instance of each instance size. The service has also failed in a test running an xlarge instance with only 2 mappers. Watching the memory consumption on a small instance while the service is running shows that a significant amount of memory is consumed by the mogrify step (which is run using a bash script to call ImageMagick) - all swap space was consumed, and less than 10% of memory remained available. Testing has indicated that the size of images being transformed likely plays a role in the failures. Moving the two largest Rhodes files to another space (all of the rest of the tiffs being under 115 MB) allowed the transformation to complete successfully using 3 xlarge instances. Running the conversion over the same set with only 1 instance (regardless of size) still failed, however. The attached file shows the list of tiff files which were successfully transformed in these tests, as well as the files on which the tests failed. The large instance was run with two mappers, and the x-large instance with 4 mappers.",5 DURACLOUD-281,"Duraservice: Resolve spaces for all providers","This improvement is to have ServiceManager.java resolve the spaces for all providers when a service config object specifies a ""ALL_STORE_SPACES"" mode.",1 DURACLOUD-282,"Bit Integrity Service: update service config for provider spaces","This improvement is to change the Bit Integrity Service to leverage the 'mode' schema element to specify the need for resolving spaces for all providers.",3 DURACLOUD-283,"Duplicate on Upload: ensure metadata is included","This improvement should ensure that content that is replicated via the ""Duplicate on Ingest"" service should also duplicate the user-supplied metadata.",1 DURACLOUD-284,"Integrate Droid for Mimetype detection",NULL,2 DURACLOUD-285,"Bottleneck in hadoop processing","Two runs of the Bulk Bit Integrity service over the same 1TB set of BHL content took approximately the same amount of time (a few minutes over 8 hours.) The problem is that the first run used 10 small instances and the second run used 10 x-large instances. The x-large instance should have completed the task much faster, not only because they have higher bandwidth and compute capacities, but also because they are set to use 8 mappers per instance rather than the small instance setting of 2. This task is to discover and fix the bottleneck which is not allowing the x-large instances to run at full capacity.",3 DURACLOUD-286,"Allow system services to be deployed along with services which depend on them","This task will remove the system services (imagemagick, webapp util) from the list of deploy-able services and instead have them be deployed as needed when dependent services are deployed. Likely this will mean bundling the jars for these services into the services for which they are a dependency, and updating them to start when they are deployed into OSGI.",2 DURACLOUD-287,"Odd characters seemingly replace copyright symbol -- UTF8 issue?","At the bottom of the DurAdmin UI it says, ""�2010 DuraSpace.org"".",1 DURACLOUD-288,"MS-AZURE Space item count is off by one","The number of items listed in an empty AZURE space is -1. The number of items listed in an AZURE space with one content item is 0. etc...",1 DURACLOUD-289,"Retrieval Tool to retrieve list of specific files","I think the retrieval tool is missing an option where you can retrieve specific file(s) from a specific space. So, in the DSpace use case, when doing a partial restore, you may wish to retrieve only a portion of the files from the space (rather than having to pull down all of them). I would like to be able to request specific files by name (or by a comma separated list of names). A regular expression could also work, but a list of exact names would seemingly meet the needs for DSpace. So, for DSpace, the AIP files stored in DuraCloud will have very specific names, similar to: COLLECTION@123456789-10.zip ITEM@123456789-11.zip Generally the AIP name is a specific format: @.zip So, if a DSpace install wanted to restore just a particular object (or small set of objects), it might be nice if they can request *just* those objects by name (rather than having to pull down their entire space). I just know this is a specific case that's currently missing -- we either need a simple solution from the Retrieval tool, or we need a DSpace-specific tool to support partial content restores (where a user only wants to restore a particular set of items or a single collection).",2 DURACLOUD-291,"Create 64-bit dev AMI",NULL,2 DURACLOUD-293,"Improve performance for retrieve content metadata in AzureStorageProvider","Move the generation of content checksum from getContentMetadata to addContent. Also waiting for feedback from the Azure team to find out why they do not provide the md5 in the eTag.",1 DURACLOUD-294,"Create 0.7.1 release","AMI: ami-24788f4d Docs and artifacts have been created and pushed to dcprod and atlas per: https://wiki.duraspace.org/display/DSPINT/Release-Related+Scripts",1 DURACLOUD-295,"When using the previous and next buttons in the DuraCloud Administrator interface, the ""Space Detail"" section on the right disappears.","When navigating through the list of content items for a space using the previous and next buttons in the DuraCloud Administrator interface, the ""Space Detail"" section on the right disappears and only reappears once you re-select the space or click on an individual item.",1 DURACLOUD-298,"Bit Integrity Service: split into two services","The clean of the Bit Integrity service should include: - remove 'salt' from UI - split the service into two services: -- Bit Integrity Tools (generate & compare) -- Bit Integrity (verify)",1 DURACLOUD-299,"Cross-Service Clean up","The clean should include: 1. change order of services to be logical (or possibly alphabetical) 2. change name of services in UI to have the same prefix if they are variations on the same service - example: Bit Integrity Service - Bulk ",1 DURACLOUD-301,"Provide a clear visual cue in DurAdmin to indicate which storage provider is currently selected","It has been observed that, when using DurAdmin, it can be easy to forget which storage provider is selected and perform an action on the wrong provider. This task is to provide a visual cue to help distinguish between providers. One potential way to do this would be for each storage provider to correspond with a different color, and that color be displayed prominently (perhaps even as the spaces area background) when that provider is selected.",4 DURACLOUD-302,"Remove ""Location"" selection on service deployment via DurAdmin","Being able to select an alternate deployment location when deploying a service is a feature to come down the road, but in the meantime, the UI should not display this option when none of the services use it.",1 DURACLOUD-303,"Simplify deployment of bulk services","Items to simplify for bulk services (Duplicate on Demand, Bulk Image Conversion, Bulk Bit Integrity Checker): 1. Use a default setting for number and type of instances. The number and type will depend on the service and will require testing to determine a reasonable default. (10 large instances should work for Bulk Bit Integrity, testing by the pilot partners should help narrow in on good defaults for Duplicate on Demand and Bulk Image Conversion) ",3 DURACLOUD-304,"Update Image Transformer service deployment options","These changes apply to both the Image Transformer and Bulk Image Transformer services: - Clarify the ""Destination Color Space"" such that it is not confused with a DuraCloud space - Move file name prefix/suffix options directly under source space",1 DURACLOUD-305,"Azure Storage Provider - list space contents contains truncated contentId","The name attribute returned from IBlobContainer.listBlobs sometimes truncates the contentId. Instead parse the contentId from the uri attribute until Azure4J fixes this issue - https://sourceforge.net/tracker/?func=detail&aid=3116592&group_id=266876&atid=1135911 http://www.windowsazure4j.org/learn/java_docs/org/soyatec/windowsazure/blob/IBlobProperties.html",3 DURACLOUD-306,"Bit Integrity Service: simplify user options","This improvement should update the Bit Integrity Service in the following ways: - create a default space for output - create auto-generated output name - provide checkbox for providing input listing name - add a checkbox for ""I do not have an input listing"", which cause an input listing to be generated from metadata ",3 DURACLOUD-307,"Bulk Bit Integrity Service: simplify user options","This improvement should include the following updates to the Bulk Bit Integrity Service: - remove config option from ui/xml: ""destination space"" - have service output automatically right to the space ""x-service-out"", with the content prefix ""bitintegrity-bulk/"" - remove config option from ui/xml: ""working space"" - have service automatically set working space to ""x-service-work"" ",2 DURACLOUD-309,"Audit log service","This task is to capture and make available to users audit logs which list the activities that have occurred in DuraCloud. There will likely need to be a separate set of logs for storage and services. Once messaging support has been completed on storage and services, a new service could be created to listen to the messages being sent and store write those to log files which are stored in the user's storage area.",3 DURACLOUD-310,"Audit logging: Storage","This task is to capture all of the audit information relating to storage events for all users in a single location. This listener will be running at all times for all users and storing the results within DuraCloud storage. ",5 DURACLOUD-311,"sync tool syncing .ds_store files from mac","The sync tool syncs .ds_store files and other peripheral files that are autogenerated by a mac in a folder but that are not actually content that needs to be synced to DuraCloud. Would be nice if the tool knew to automatically ignore these types of files.",2 DURACLOUD-312,ServiceInfo.clone(),"The clone() method needs to be implemented in order for ""deployedServices"" within ServiceManager.java not to have their SystemConfig data member become null after deployment when it is currently going out of scope.",1 DURACLOUD-313,"Security initialization","This improvement should disallow updates to the root user security credentials via the REST API.",2 DURACLOUD-314,"Bulk Bit Integrity Service: error allocating memory","This issue is to resolve the bug recorded at the following link: https://wiki.duraspace.org/display/duracloudpilot/Reported+Issues From Bryan Beecher (ICPSR) on 12/3 The hadoop logs are attached. A brief scan of the logs indicates that the hadoop servers are running out of memory. ",3 DURACLOUD-315,"Storage Usage Report Service","Provide a way to generate a report with at least the following information: - Number of files for each space - Total size of files stored in each space - Average file size for each space - File types (mimetypes) represented in each space - Total number of files (all spaces) - Total size of all files (all spaces) - Average size of file (all spaces) - File types (mimetypes) represented (all spaces) - All of the above information for each storage provider in use These reports should be available for download and should be stored within DuraCloud so that they can be referenced periodically. At some point we may want to provide a way to schedule the running of such reports (monthly). This would seem to be a good fit for a service which gathers the needed information, formats it, and stores it in an output space. A REST-api should be exposed for client access to the reports. This feature was suggested by Markus Wust (NCSU) during a pilot partner meeting on Dec 13, 2010. He was also interested in seeing how the information included in these reports relates to storage costs.",13 DURACLOUD-318,"Bit Integrity Service: Incorrect report when item on list does not exist","From David Arjanik (Columbia) on 12/15 Was unable to successfully complete Use Case 4: Preservation Monitoring Test. Here's an excerpt from my notes regarding 2.c of the use case test plan: c. Service Test 1 i. Using the initial listing from Test0 above, create a new listing file with some MD5s altered some entire line items removed some new line items Arjanik: Done. Altered checksums of first three lines, deleted the next three lines, and added two lines at the end for files not in the DuraCloud instance. Uploaded to ""admin"" as usecase4-service-test-1.md5 ii. Run fixity service with this altered listing as input as in the previous test Arjanik: Reconfigured service to run against this new md5 file. Report ran successfully, generating files fingerprints-service-test-1.csv and integrity-report-service-test-1.csv (names I specified in the reconfiguration). iii. Verify that erroneous entries were identified in the generated report Arjanik: Downloaded fingerprints-service-test-1.csv and integrity-report-service-test-1.csv. Arjanik: Checked integrity-report-service-test-1.csv. This file is attached. Only one line of report data: | space-id | content-id | 0:admin/usecase4-service-test-1.md5 | 1:admin/fingerprints-service-test-1.csv | status | | Invalid manifest file: newspace | README.txt | Error: metadata is null | for: newspace/README.txt | Arjanik: Deleted the new md5 file and the generated report files for this service test from the ""admin"" space to try again. Reconfigured and re-deployed the service. Downloaded the results. Same results. Edited the md5 file and replaced fictitious space ""newspace"" with ""usecase3"". Deleted the old report files and re-deployed the service. Downloaded the reports. Renamed the integrity report to integrity-report-service-test-1-2nd-try.csv and attached. Results are basically the same as before. Opened the fingerprints file. The new lines were correctly identified as referring to files that didn't exist in DuraCloud. The six files that I've attached: PERFECT MATCH TEST usecase4.md5 - this is the input file listing correct space contents and correct md5 checksums fingerprints.csv - this is the md5 checksum file generated by the Bit Integrity Checker integrity-report.csv - this is the diff report generated by Bit Integrity Checker This test was successful. ERRORS TEST: - The checksums of the first three files in the list were changed - The next three files were removed from the list. - The last two lines refer to files that are not in our DuraCloud instance. fingerprints-12-15-2010.csv - this file appears to use incorrect formatting in the last two lines, the lines with files that don't exist in the instance. integrity-report-12-15-2010.csv - this is the malformed integrity report. Service Configuration: Service Mode: Verify the integrity of a list of items Get integrity information from...: The storage provider Salt: empty Store: AMAZON_S3 (0) Space with input listing: admin Input listing name: usecase4-service-test-1.md5 Output space: admin Output listing name: fingerprints-12-15-2010.csv Output report name: integrity-report-12-15-2010.csv ------------------- ",1 DURACLOUD-319,"Duplicate on Demand: Service failing","Duplicate on Demand service failed on 12/7 Service Configuration: Source Space - synctest4 Copy to this store - RACKSPACE (1) Copy to this space - replicants Store results file in this space - replicate-out Working Space - tmp2 Number of Server Instances - 1 Type of Server Instance - Large Instance Service Final Status: Job Ended - 2010-12-07 at 04:13:29 PM UTC Service Status - Job Complete serviceId - replication-on-demand-service-0.7.1 serviceStatus - STARTED Job State - FAILED Job Started - 2010-12-07 at 03:14:37 PM UTC Job ID - j-9PDVC8SADTPQ Additional Statistics: - Run at icpsr.duracloud.org - synctest4 (source) space has: 74993 items (it is a closed space) - tmp2 (work) space has: 84 log files (all generated by one run of the service) - job id j-9PDVC8SADTPQ ran for: 57 minutes before failing - MapReduce job failed after 57 minutes - 2 files were successfully duplicated - In logs: /steps/1/stderr shows 10 task attempts which were all killed after not responding in 10 minutes",2 DURACLOUD-320,"Duradmin upload failures for multiple large files","When uploading multiple files through duradmin, failures frequently occur causing the content to not land in durastore. scenario: 1. select a ~100-MB file 2. upload it five times in a row through duradmin using different content-ids, and not waiting for one to complete before uploading them all 3. verify all five files successfully upload The scenario above consistently fails.",1 DURACLOUD-323,"Bulk Bit Integrity Service: add comparison","The bulk bit integrity service should contain the following updates: - add optional config option that takes a user-specified input listing that is used to verify MD5s after the hadoop servers have generated a new listing. -- if no listing is provided, the service should compare against MD5s stored in storageprovider metadata -- this post processing should be implemented as a PostJobWorker",3 DURACLOUD-324,"reverse upload history order in the upload window","It would be nice to reverse the order of the upload history in the upload window, so that more recent and/or in-progress uploads appear at the top instead of the bottom of the popup window. Sort of what the Firefox download window does. Putting the recent ones at the bottom requires the user to scroll down to see the progress bars of the recent uploads.",1 DURACLOUD-325,"Image Viewer Flyout no longer works","In the past, a content item that had an 'image/*' mimetype would present a link on the image thumbnail (if djatoka service was running) or on the canned picture icon. This link would display a ""flyout"" image viewer. Now, clicking on the thumbnail or picture icon has no effect.",1 DURACLOUD-326,"DurAdmin incorrectly displaying 0 for space size","When using DurAdmin to display spaces which are larger than 1000 items, the space size is often mis-reported as being 0, even though there is a listing of items in the space. Also, clicking on the space no longer refreshes the item listing or metadata of a space (this is also true for content items.)",1 DURACLOUD-327,"DurAdmin: Delete button mis-aligned","Hovering over a multi-line content item displays a delete button which is half-way between the current item and the next item in the list. The delete button should be displayed completely within the boundary of the content item which it will delete.",1 DURACLOUD-329,"Video streaming in duradmin:spaces","This item is to address the issue of duradmin not showing the streaming video when clicking on a content item in a space on which the MediaStreamer has been enabled. Scenario: # create two spaces: 'video' & 'tmp' # add the mp4 file attached to this jira item to the space 'video' # deploy the MediaStreamer server using 'video' as source and 'tmp' as destination # wait until service deployment is complete # click on the mp4 item in the 'video' space # ! the video should be shown in the right-hand column at this point ! Note: If you go directly to https:///durastore/tmp/singleplayer.html the streaming video will be available.",1 DURACLOUD-331,"NullPointerException with Duplicate-on-change service on 'delete content'","This item is to address the issue of a NPE being thrown when the Duplicate-On-Change service is running and an item is deleted. Monitoring the duracloud-servicesadmin.log will show that upon the above action, an NPE is thrown in: org.duracloud.services.replication.Replicator.replicateContent(Replicator.java:127) The service does successfully remove the item from the secondary store, and remains alive in the OSGi container; however, this case should probably be guarded against.",3 DURACLOUD-332,"Duplicate on Change: space access is not propagated","This item is to address the issue of the Duplicate-on-demand service not updating access state on the secondary provider when a space at the primary provider is changed from open to closed, or vice versa. Scenario: # deploy the duplicate-on-demand service # create a space in the primary store # verify that the space was also created in the secondary store # verify that both spaces have the same access state # toggle the access state of the primary space # boom!, notice the access state of the secondary space did not change",1 DURACLOUD-333,"Changing space access removes the space metadata","When changing the access level of a space the space metadata is removed. Create a space Add space metadata Change the space access Refresh the space Notice the space metadata is gone",1 DURACLOUD-335,"Media streamer: files not getting set with proper permissions","On occasion, when starting the media streamer service, one or several of the files to be streamed is not set to have the proper permissions for streaming. Thus far, this issue has always been resolved by restarting the media streamer. It seems likely that the missing permission is due to a failed call to S3, so a retry would likely fix the problem.",1 DURACLOUD-338,"Chunker Tool: error pushing files in sub-directories on Windows","When running the chunker tool on Windows, if the content directory includes sub-directories with files, the tool will attempt to send each file to DuraCloud with a name ""sub-dir-name\file-name"", which causes an error because the ""\"" character cannot be part of a content ID. This does not show up on Linux/Mac systems because the ""/"" is used instead. This task is to update the chunker tool to replace ""\"" characters with ""/"" characters in all generated content IDs.",1 DURACLOUD-339,"DurAdmin: Errors on space filter","When attempting to filter by name in a space (used the x-service-work dir as an example, need this features to get logs for a specific bulk run), I tend to get ""next page failed: error"" and ""Get Space failed: error"" pop-ups. The filter works and loads the list of filtered content items correctly, so the errors seem unnecessary. It appears that a new attempts is made to get the content listing on every change to the filter box, so each letter I type creates a new call. My guess is that just adding a ""Filter"" button beside the text box, and only making the call when the button is pressed would fix the issue.",1 DURACLOUD-341,"Duplication on Demand destination space","When configuring the Duplication on Demand service, if you leave the destination space name blank, the service should automatically create the destination space with the source space's name. Carissa ran the service leaving the destination space blank (assuming this would occur) and the service ran to completion... service status read: ""complete"" but no duplicated content was to be found.",1 DURACLOUD-342,"Bulk Image Transformer output to be standard CSV format","Currently the output for the Bulk Image Transformer is in a modified CSV format, similar to: name1=value1, name2=value2, name3=value3, ... This task is to update the output to be in standard CSV format: value1, value2, value3 The first line in the file should a header which indicates the names of the values to follow: name1, name2, name3 The Bulk Bit Integrity service produces this format by allowing the hadoop reducer to produce all of the value lines, then using a post processor to insert the name line at the top.",2 DURACLOUD-344,"Consistency of service output destinations and names","This improvement is to ensure that all report-like outputs from services are created in the x-service-out space. Also, the outputs should have a consistent naming convention: / where = all lowercase with '-' between words if necessary",4 DURACLOUD-346,"Refactor integration tests that regularly fail","This task is to determine the integration tests that regularly fail due to ""eventual consistency"" effects or other issues related to the underlying storage provider implementations. Eventually these tests should either be refactored to be more resistant to underlying storage issues, or should be refactored into unit tests that do not require network connectivity. However, this refactoring work will be addressed in a separate task. https://jira.duraspace.org/browse/DURACLOUD-237",5 DURACLOUD-347,"Hashed user credentials","This improvement is to change from the current pattern of storing user credentials in-memory as plain text to, storing the hash of the credentials in-memory and having authN perform the same hashing (SHA256?). See Spring Security for adding a ""password-encoder"" to authentication providers in both 2.x and 3.x versions.",5 DURACLOUD-348,"Bulk service status message","This improvement is to more accurately display the service status state of bulk services. Currently, bulk image conversion and bulk bit integrity checking are processed in two steps: 1. hadoop processing 2. post processing on duracloud instance The service status shows conflicting messages. The ""Job State"" is ""COMPLETE"" when the hadoop step is done, but the ""service status"" shows ""Post Job Processing"" for bit integrity, and nothing for image conversion. More accurate and consistent status messages need to be put in place across the services.",2 DURACLOUD-349,"Bit Integrity Service: iterating over http stream","This issue is to change the ListingIterator found in HashFinderWorkload.java to iterate over a cached file inputstream rather than the content inputstream from an http GET. Although in most scenarios this is not an issue, when the content stream is large (30,000+ lines) the http stream sometimes breaks, causing the iteration to stop.",1 DURACLOUD-351,"Allow build-time specification of dependency osgi bundle version","This improvement is to allow services built within a particular version of the baseline (say 1.4.0) to specify compatibility with dependency DuraCloud-osgi bundles from another version (say 1.3.0).",1 DURACLOUD-352,"Bit Integrity Service: Support comparison for space manifests of up to 1 million items","This improvement is to ensure that spaces that contain up to 1 million items can successfully perform a bit-integrity manifest verification.",2 DURACLOUD-353,"Bulk Bit Integrity Service: shutdown of post-processor","This item is to address the issue of shutting down not only the Bulk Bit Integrity Service on ""undeploy"", but also shutting down the post-processor. To reproduce this error, start the BBIS over a space containing more than 1000 items. Once the ""Job State"" indicates ""COMPLETE"", but while the ""Service Status"" still indicates ""Post Job Processing..."", undeploy the service. Undeploy fails due to the inability to remove the fixityservice OSGi bundle from the services container, as it is still processing. At this point, the BBIS remains in duraservice, but is no longer available via servicesadmin.",2 DURACLOUD-354,"Bulk Image Conversion: failure due to Hadoop AMI upgrade","This item is to address the breakage caused by amazon elasticmapreduce changing their default AMI for hadoop jobs. This effects the bulk image conversion service which is faulting in the bootstrap script due to a missing dependency in the apt-get initialization. ",1 DURACLOUD-355,"Media Streamer: Allow streaming of multiple spaces","This task is to allow the user to select multiple spaces for the media streaming service to stream.",2 DURACLOUD-356,"Synctool: selective sync-ing","This improvement should allow the user to selectively sync specific files based on subdirectories, prefixes, and/or suffixes using the synctool.",3 DURACLOUD-357,"Media Streamer: Stream files added to a space","This task is to set up a listener for new files which are added to spaces on which streaming is already enabled, and enable those files for streaming as well.",4 DURACLOUD-358,"Revisit build from source","It appears that an oc4j dependency used by pax-construct is no longer available in a public m2 repository. This task should revisit pax to see if an upgrade is in order and to ensure that the build works from scratch.",5 DURACLOUD-364,"Single Use Access URLs","This task is to allow for the creation of single use access URLs. The user would need to specify the file which they would like to provide access to, then DuraCloud would provide a link by which that file can be accessed a single time. After the URL is used once, it no longer allows access to the file.",5 DURACLOUD-365,"service reports contain another differentiator","Service reports that appear in the service-output space need to have an additional differentiator so that services that are run multiple times in one day do not overwrite one another.",4 DURACLOUD-369,"Bulk Bit Integrity Service: post-processing in hadoop","This improvement is to change the bulk bit integrity service to run its MD5 metadata collection post-processor in hadoop instead of with a single process on the main duracloud instance. This enables the service to run within hours instead of days for spaces exceeding 50,000 items.",3 DURACLOUD-370,"Notification/Email utility","This feature is to expose a utility for sending emails. It should consist of both a general interface project and a corresponding implementation project.",2 DURACLOUD-371,"Remove interim bulk-bit-integrity manifests","This improvement is to remove from the service output space the interim manifests that the bulk-bit-integrity service creates once the final report has been created. These manifests are: bit-integrity-metadata-results.csv bit-integrity-results.csv",3 DURACLOUD-374,"Service Report: backend utility for currently running services","Provide a way to generate a report containing: - details from running services The details should include at least the following information: - tbd The reports should also be available for retrieval through a REST-api",5 DURACLOUD-375,"Storage Report Dashboard","This task is to create a UI dashboard for displaying and downloading reports on storage. REST API calls should be available from which the storage report information can be gathered. A UI will need to be created to be able to display the information in the reports. The reports will likely be in XML, so XSLT is an option for display.",5 DURACLOUD-376,"Limit time that can be spent spinning on a mapper task within hadoop","Currently, the service code which runs in hadoop kicks off a thread to ensure that the mapper has enough time to complete. These threads are not time limited, so if the mapper process hangs, the hadoop job could potentially live forever. This task is to revisit these threads for each of the bulk jobs to set a limit for the amount of time the threads give to a mapper activity.",2 DURACLOUD-377,"Remove user management from Duradmin","This task is to remove the user-management capabilities (""Adminstration"" tab) from Duradmin, since this functionality is being moved up the the account-management-app.",1 DURACLOUD-379,"Run-away service monitor","This task is to create a script/application that monitors DuraCloud accounts for long-running bulk services and sends an email alert upon detection.",1 DURACLOUD-380,"Azure Storage Provider - adding content and specifying a checksum","When a checksum is provided upon adding content to Azure, ChecksumInputStream was incorrectly trying to calculate the checksum from the provided stream. The provided checksum should be used instead of calculating it from the stream.",1 DURACLOUD-381,"DuraCloud instance losing initialization information","1. Restart a Duracloud instance via the Amazon Management Console 2. Wait 5 minutes 3. Run app-config to initialize the instance 4. Check the instance, everything looks good 5. Wait between 7-10 min, check again - this time none of the users that were in the init are in Duradmin or Duraservice After all of these steps, if you log in to DurAdmin as root, you will see on the Admin tab that no users are listed, and going to the Services tab brings up a ""get available services failed: error"" dialog. You will also not be able to log in to DurAdmin as any user besides root. Interestingly, everything seems normal on the Spaces tab, and rest calls to durastore work fine. As a secondary issue, if on step 2 you don't wait 5 minutes, but go ahead when each of duradmin/durastore/duraservice are available (less than 2 min after restart), then in a short amount of time after you init, (less than 2 min) the durastore and duraservice init go away. But in this case all of the users are still present.",5 DURACLOUD-382,"Create Example ServiceClient","This task is to create a sample ServiceClient analogous to the Sample StoreClient.",1 DURACLOUD-383,"Bit Integrity Service: support retries of interrupted content downloads","This task is to add retries to the bit-integrity-service when a content item that is downloaded to calculate its MD5 does not match the expected MD5 from metadata.",1 DURACLOUD-384,"Bit Integrity Service: Pass into comparison phase content-id of csv input","The comparison phase of an 'all-in-one-for-space' run of the bit-integrity-service tries to guess the content-id of the input csv files. With date/timestamps appended to the content-ids, this becomes difficult. Therefore, the input content-ids should be passed into the comparison phase.",1 DURACLOUD-385,"Image Viewing URL Stability","This task is to investigate the stability of image viewing URLs across upgrades of DuraCloud instances. As each DuraCloud instance has an allocated static I.P. address, the behavior is unexpected. If there are specific uses cases for demonstrating this issue, please add them as comments below.",2 DURACLOUD-387,"Error on large space delete","This item is to resolve issues seen when trying to delete a large space On the RackSpace storage provider: In the bhl.duracloud.org instance, there is a space ""master-rack"" that initially contained ~26,000 items. Deleting single items or a page of 200 items succeeded; however, when trying to delete the entire space a pop-up pops after a few minutes indicating that the operation failed. After one attempt, the number of items dropped to: 25,295 After another attempt, before failing the number of items dropped to: 24,727 In looking at the logs on the instance, it appears that two different types of errors were occurring, both of which were coming from RackSpace: - Could not connect to Rackspace due to error: Read timed out - Object was not found reportofscientif03scotrich/reportofscientif03scotrich_metasource.xml (other content-items also reported as unfound) See attached catalina.out for details. On the S3 storage provider: In the bill.duracloud.org instance, there was a space ""num-files-test-work-3"" that initially contained 36,845 items Clicking on ""Delete Space"" in DurAdmin started it spinning for about 5 minutes, it then came back with a dialog saying ""Failed to Delete Space"". Checking on the space size after the dialog popped up showed it at ~31,000 items However, even with DurAdmin out of the loop, the size of the space continued to drop and the space was eventually deleted, after about 35 minutes There were no errors in the logs indicating a failure.",5 DURACLOUD-389,"Service Registry Naming","This update is needed to support creating a service-config.xml document that is named the same as the allowable service registry name. The old convention was: duracloud-0.9.0-service-repo The new convention is: duracloud-0-9-0-service-repo ",1 DURACLOUD-390,"Security over UserDetailsService.getUsers()","This improvement is to add method security over UserDetailsService.getUsers() to limit access to this call to ROLE_ADMIN.",1 DURACLOUD-392,"Create installation package for release","Such an installation package should include: - documentation - the three wars (duradmin, duraservice, durastore) - zip of service registry - zip of osgi container",1 DURACLOUD-394,"Page load latency","The Duradmin pages are built using jQuery. When the browser loads, the scripts pull data while building the page, creating a perceptible delay in rendering. A recommended solution may be to pull some of the jQuery back and not try to build the screen using as much scripting. Browser versions and usage scenarios need to be added to this jira item.",2 DURACLOUD-397,"Metadata editor allows for blank values","Metadata editing via DurAdmin (using both the regular editor and the ""Edit Metadata"" dialog) allows you to add empty name/value pairs to the metadata list. Metadata names should be required. Although the UI appears to allow empty metadata name/values, if the name is empty, the metadata does not persist.",1 DURACLOUD-398,"UI shortcuts which are not useful should be disabled","Holding shift + one of the arrow keys does odd things to the display. These shortcuts should be disabled.",1 DURACLOUD-399,"Allow user to select which spaces to include when running Duplicate on Change","This task is to provide the option for users to select a list of spaces when configuring the Duplicate on Change service, then only perform duplications for items in those spaces. One reason for this feature is to allow users to choose to not duplicate x-service-out and x-service-work spaces.",3 DURACLOUD-400,"DuraStore REST API: text/plain response from getSpaces","Just an inconsistency I noticed while looking at the REST API. This particular method gives a response Content-Type header of ""text/plain"". Most other methods that return XML declare their Content-Type as text/xml. For example: https://demo.duracloud.org/durastore/spaces?storeID=0 ...gives text/plain, but: https://demo.duracloud.org/durastore/cwilper-test?storeID=0 ...gives text/xml.",1 DURACLOUD-401,"Use application/xml as response Content-Type for XML-returning REST API methods","Most of the REST API methods that return XML today use text/xml, but application/xml is a actually a better choice due to character encoding issues: According to the specification of the text/* media types (RFC2046), if a charset parameter is not specified in the declaration of mime type (at the end of the Content-Type value, ala ""text/xml; charset=utf-8"", it must be assumed that the body is encoded in US-ASCII. The ""encoding"" declared in the XML declaration is supposed to be ignored. Here are a couple online posts that further explain the problem: * http://annevankesteren.nl/2005/03/text-xml * http://www.grauw.nl/blog/entry/489 It's clearly the intent that DuraCloud REST API methods that return XML are encoded in UTF-8 (because the xml declaration says so), but according to the standards, because text/xml is used instead of application/xml, and the Content-Type is not declared with a ""charset=utf-8"" MIME parameter, the xml declaration is supposed to be ignored by clients and they should assume US-ASCII.",1 DURACLOUD-402,"Allow for local service repository","It is currently required that the service repository for a DuraCloud instance be hosted on another DuraCloud instance. This task is to allow the service repository to be hosted within the same instance. This will both simplify the deployment of stand-alone DuraCloud instances (for users of the open source platform) and lead the way toward allowing multiple service repositories to be associated with a single instance.",1 DURACLOUD-403,"Improve binary installation package","In the 0.9 release the first binary installation package was created. This allows system admins to deploy an instance of DuraCloud without needing to build from source. This was a good first step, but there are a few pieces which could make the process smoother: - Include wars with names that do not include version. When the jars are dropped into tomcat with the release version included in the file name, they are not deployed to the expected context path (i.e. rather than a context path of /durastore it is instead /durastore-. The installation package zip file includes the version number, this should be sufficient. - Include the app-config jar, as this is needed to configure the instance. - Include an example properties file to be used with app-config.jar for instance initialization. - Include a default/example logback.xml file which can be used within the service bundle home. - Update included run.bat file to properly pick up environment variables in a Windows environment - Allow for the use of a local service repository (handled by DURACLOUD-402) - Update the included readme.txt file to have complete instructions for standing up a DuraCloud instance using the files provided with the installation package. Parts of this document can refer to the wiki for further explanation, but ideally, the entire process would be well enough defined in the readme such that the links to the wiki would be optional reading.",1 DURACLOUD-404,"Duraservice: clean re-initialization","Currently, when re-initializing duraservice, due to caching, some elements do not take on the new re-initialize values. This improvement is to determine and implement what is required to make duraservice re-initialization work as if it were being initialized from scratch.",1 DURACLOUD-406,"Service.xml: generate on build, not on test","This improvement is to have the services.xml service-repo manifest created during the mvn 'package' phase instead of during 'test'.",1 DURACLOUD-407,"Service.xml: generate various renditions","This feature is to have the services.xml service-repo manifest generated for each of the various DuraCloud account package types: - archiving / preservation - media access - professional - trial",1 DURACLOUD-408,"Host DuraCloud maven artifacts with Sonatype","This item includes the following tasks: - open ticket with sonatype for org.duracloud - check if deps are outside of central - check dep licenses - make sure our poms are of good quality (sonatype oss) The following plugin will be useful. mvn dependency:tree https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide ",5 DURACLOUD-409,"Failed to copy all files when running a large Duplicate-on-Demand service","A small percentage of files are not copied during the execution of a large Duplicate on Demand service execution. This can result in either a missing file or a zero length file in the target space. This has bug has been demonstrated repeatedly both between different providers and copies back to the same provider. However, it has only been observed in large file sets (circa 70,000).",16 DURACLOUD-410,"Use Amazon multi-part upload for large files","This task is to update the S3StorageProvider to make use of Amazon's multi-part upload option for S3 when content is large enough to require chunking. This would mean that rather than storing our chunked file parts (and associated manifest) in S3, we would use the multi-part tools to push up the pieces and assemble them again in S3. Since the MD5 for the entire chunked file is not available from S3, we will need to calculate it on transfer and store it as metadata.",5 DURACLOUD-416,"Implement a content cache to mitigate eventual consistency issues","In order to make the issues of eventual consistency an issue that does not concern the users of DuraCloud, DuraStore should be updated to provide a cache for the content which is stored. This could mean either storing the file locally first, then making the call to push it to the provider, or wrapping the stream in order to write the file locally while it is being stored at the provider. These local files would be used to fulfill GET requests that come in shortly after the file has been stored. The files in the cache would be removed once there is a greater degree of certainty that the file will be available on all following requests to the provider (perhaps just after a certain time period has elapsed.) Note that one benefit to storing the files locally prior to pushing them to the provider would be that we could know the file size and generate the checksum locally before making the provider request, meaning that we could ensure that the file reached DuraStore correctly before passing it along to the next location. This may also become useful for handling large files that we intend to pass to the provider using a multi-part upload.",5 DURACLOUD-420,"Create 1.0.0 AMI","Updates to the 1.0.0 AMI should include: - trim down apache rules to only expect j2k to be running on port 18080 - add UTF-8 support to tomcat connectors - add debug tomcat startup script ",1 DURACLOUD-423,"Filter display of service properties","This feature is to omit the rendering of service properties that have names prefixed with ""System "". These are service properties that are useful for monitoring and scripting, but are probably confusing for end-users of Duradmin.",1 DURACLOUD-424,"Service completion state must be accurate: non-bulk services","This improvement is to reflect the completion state of non-bulk services as ""success"" or ""failure"". Currently, the service state remains ""started"". Affected services: bit integrity checker bit integrity checker tools image transformer Additionally, the end-time of the service should be captured in the service properties.",3 DURACLOUD-425,"Service completion state must be accurate: bulk services ","This improvement is to reflect the completion state of bulk services as ""success"" or ""failure"". Currently, the service state remains ""started"". Affected services: bit integrity checker bulk image transformer bulk duplicate on demand Additionally, the end-time of the service should be captured in the service properties.",2 DURACLOUD-427,"WayBack Machine Service","For DuraCloud users that are storing web archive content (warcs), a WayBack machine for search and access would be valuable. This feature is to create such a service. reference: https://webarchive.jira.com/wiki/display/wayback/Wayback+Installation+and+Configuration+Guide",8 DURACLOUD-429,"iRODS/Chronopolis Storage Adapter","This feature is to add a new storage adapter to connect to iRODS/Chronopolis, ala S3, Rackspace, & Azure. The base code has already been provided by Mike Smorul.",3 DURACLOUD-430,"Bulk upload client tool with UI","This task is to create a client-side tool which provides a nice user interface for managing bulk upload tasks. This tool should provide a UI that allows files to be uploaded via the following methods: - file/directory selection dialog A progress bar should be provided which indicates the status of the upload, specifying which file is being uploaded and the progress of the transfer. It may make sense to use the SyncTool in the background to manage file transfers.",8 DURACLOUD-431,"Duradmin mimetype editor: 'application/atom+xml' regex","When attempting to set the mimetype of a content item to 'application/atom+xml', the error ""Invalid Mimetype"" is displayed. This prohibits the setting of the desired mimetype.",1 DURACLOUD-432,"file name collisions not detected in Google Chrome","When using DurAdmin with Google Chrome to upload a file, there is no file name collision detection or pop-up warning. The upload simply replaces the file. I am using Google Chrome on my mac os x. Note that the file name detection and pop-up did work on Firefox.",1 DURACLOUD-433,"Duradmin service status","When a service is deployed via duradmin, an entry is created detailing the: - service - hostname - status The 'status' is apparently populated when the service is deployed and never updated as the actual service status changes through the course of processing. This improvement is to keep the status info in the UI entry up-to-date by pulling the content from the ""Service Status"" property instead of from the Deployment.status The current/accurate status info is also displayed on the right hand side, under the service details.",1 DURACLOUD-435,"Reinit should clear the cached StorageProviders","Upon reinit the cached StorageProviders should be cleared in order to specify different stores",1 DURACLOUD-436,"Service registry name and service.xml dependency","This improvement is to decouple the dependency on the content-id of the service.xml file of a service registry from the space-id of the registry itself. Currently, the content-id is required to be identical to the space-id with the addition of the '.xml' extension. The service.xml content-id should be allowed to be any name.",2 DURACLOUD-438,"Add service-result to completed service properties","This improvement is to add a new service property across all services that have a completion (success or failure) that notes the content-id of the service result file. This property should be set upon service completion.",1 DURACLOUD-439,"Enforce space id rules for services","Enforce space id rules when entering a space name for Duplicate on Demand and any other service",1 DURACLOUD-440,"Handle all unicode characters for storing and retrieving content","This task is to ensure that a content item can be added and retrieved from both DuraStore and DurAdmin using any characters that can be expressed via unicode. Generally, it seems like it's possible to add content items with any unicode content ID, but the problems come in when attempting to access/update/delete those items. These problems are not consistent between DuraStore and DurAdmin. Occationally DuraStore allows for retrieving files that DurAdmin does not. A few Ascii content IDs which currently fail this test are below. This list is not exhaustive, just a examples. test#item - duradmin cannot load content - error when accessing via durastore test%item - duradmin cannot load content - bad request response from durastore test&item - duradmin cannot load content - works fine in durastore test+item - duradmin cannot even bring up metadata - works fine in durastore Of course, content IDs with non-ascii characters also have problems: 1. blankHélènåJör.txt 2. blankπ × { } © 佈 б ' ' —.txt #1 seems to be only a problem in DurAdmin, the file can be retrieved and deleted via DuraStore with no problem. #2 is a problem for both DurAdmin and DuraStore, the file cannot be retrieved or deleted via either. ",5 DURACLOUD-441,"ServiceManager and ServiceManager Client to share Interface","This improvement is for the following two classes to implement the same interface: org.duracloud.client.ServicesManager.java org.duracloud.duraservice.mgmt.ServiceManager.java",1 DURACLOUD-442,"Change ""metadata"" to ""properties""","This task is to transition away from the use of the term ""metadata"" in regard to name-value pairs that can be associated with DuraCloud spaces and content. Instead, the term ""properties"" will be used. The work involved will be in transitioning between the two terms throughout the baseline.",2 DURACLOUD-443,"Service Report: create schema and serializer for ServiceReport.getCompletedServicesReportList()","This task is to create a schema and serializer for the list of content-ids returned from ServiceReport.getCompletedServicesReportList(). The expected xml should look something like this: Service-Report-2011-06-27.xml ",1 DURACLOUD-444,"Cumulative storage report ","This task is to add an additional storage report that is a cumulative on-going report which is updated each time a new storage report completes. The information in this report will be an entry for each completed storage report that provides the top level report information. Mime type information would be left out, and other information in the detailed report may be excluded as well. The goal of this report is to be able to create graphs that show the change in content stored over time. This report could work like the completed services report in that it could be cycled to start a new file monthly. Information should be included in the cumulative report that allows for the creation of links to the detailed reports as well as cross-links to the detailed report charts. This could just be the detailed report content ID.",3 DURACLOUD-445,"StorageProvider support for object copy/rename","This improvement is to provide the StorageProvider interface support to: 1. copy an object stored within DuraStore to another space within the same storage provider 2. rename an object stored within DuraStore to a new content-id within its existing space All three storage providers (Amazon, Rackspace, Azure) provider REST-API support for 'copy', but it appears that only the Amazon and Azure java clients expose this functionality. http://docs.rackspacecloud.com/files/api/v1/cf-devguide-20110629.pdf http://docs.amazonwebservices.com/AmazonS3/latest/API/ http://msdn.microsoft.com/en-us/library/dd894037.aspx ",4 DURACLOUD-446,"Service Reports: Comma-delimited content-ids","This bug is that service reports become invalid if a content-id contains a ',' since currently service reports are output as comma-delimited. A potential solution is to create tab-delimited service reports.",2 DURACLOUD-447,"Update DuraReport storage reporting XML to be generated using JAXB","The purpose of this task is to swap out the current XStream implementation of the DuraReport storage report generation to use JAXB. The main reason for this is to be able to provide an XML schema for the data that is being generated, so that the information can be more easily retrieved and used.",3 DURACLOUD-450,"Link Service Report in service properties display","This improvement is to add a link to the services ""Report"" property to display (possibly as a flyout?) a tabular form of the service results.",2 DURACLOUD-451,"UI: Use different icons for each service","The goal of this task is to include a different icon beside each service, both in the deployed services listing and the available services listing.",2 DURACLOUD-452,"UI: Remove the provider drop-down when there is only one provider","This task is to remove the storage provider drop-down when only one provider is enabled.",1 DURACLOUD-453,"UI: Use different icons for the content item Download and View links","This task is to replace the button icon for the content item View link, as it is currently the same as the download link. Perhaps a eye icon or something similar would work.",1 DURACLOUD-454,"UI: Adjust the service deployment box to remove scroll bars","This task is to re-adjust the pop-up dialog used for deploying services so that scrolling is not necessary and no scroll bars are displayed.",1 DURACLOUD-455,"UI: Display service status correctly","Currently, the table which lists all deployed services has a column called Status which always displays STARTED, regardless of the actual status of the services. This value is being read from ""deployment status"" which is meaningless. This task is to read in the actual status of each service from the service properties and display that in the table.",1 DURACLOUD-456,"UI: Administration tab always contains text: ""No users defined""","This task is to only display the ""No users defined"" text on the Administration tab when there are actually no users defined.",1 DURACLOUD-457,"Service Monitoring on reconfigure","This improvement is to ensure that a monitor thread is in place when a service is reconfigured. A service can be reconfigured while it is either still running, or after it has completed. Since a reconfigured service retains the same deployment-id, a service that is still running will continue to be monitored by the original monitoring thread. However, a service that is complete needs to have a new monitor thread started since the service is effectively restarted via a reconfiguration.",1 DURACLOUD-458,"Space Delete: Indicate to users when a space is in the process of being deleted","Currently, when deleting a space of reasonable size there is a dialog that spins for a while, then the space is removed from the spaces list. But if the list of spaces is refreshed, the ""deleted"" space shows up again. In the background a process is still running to delete the space, but there is no way for the user to know that this is happening. This task is to make it clear to users when a space is in the process of being deleted. ",2 DURACLOUD-460,"Provide informative error messages for special characters in space and content properties","Special characters included in metadata names or values which are added to spaces or content show up immediately in the list of metadata/tags, but when those special characters aren't valid http header values, the information is not actually added to the space or content item in the provider. This task is to to check for valid characters and pass back errors to users so they know the allowable characters.",3 DURACLOUD-462,"UI: Inform users that the characters '\', '?', and ';' cannot be part of a Content ID","Three characters are not allowed in content Ids: '\', '?', and ';', as noted in IdUtil and here: https://wiki.duraspace.org/display/DSPINT/Space+and+Content+Name+Restrictions. Errors are returned from DuraStore when trying to add an item with a content Id including '\' or '?' characters, but no useful information is presented to users in DurAdmin. No error is returned with the use of the ';' character, as the character doesn't get passed through to DuraStore. There should be a validator in DurAdmin to catch these characters, and users should be provided a useful error message indicating the problem.",1 DURACLOUD-464,"UI: XML files viewed in Chrome are appended with javascript code","When using DurAdmin via the Chrome browser, selecting a file of type XML, and choosing to View the file, the XML is rendered correctly, but is followed by a block of javascript code, starting with ""try{function lpshowmenudiv(id)"".",2 DURACLOUD-465,"Handle semicolon character","When content whose ID contains a semicolon (;) character is added on a DuraCloud instance, the characters after the semicolon are dropped. The file is available, but the ID is wrong.",2 DURACLOUD-466,"DuraCloud Constants","This task is to create a new maven project that simply holds constant values required across the other projects. Likely, these constants should be implemented as enums. Examples include: - DELIM = '\t' - ENCODING = ""UTF-8"" Other candidates include service constants (see: org.duracloud.services.ComputeService.java) and other common, constant, classes that have no other dependencies such as: org.duracloud.common.util.DateUtil.DateFormat.java",2 DURACLOUD-467,"UI: Using Enter key on Add Space selects Closed space access","Using the Enter key on the Add Space dialog to submit the request to add a space both selects the Closed access button and submits the request. The space is created correctly, but the access button indicates the default Open state before the Enter key is hit, then the space ends up with Closed access after it is created. Tested on: Windows 7; Firefox 5.0; Chrome 12.0.742.122",1 DURACLOUD-468,"UI: Add message to indicate when no other services are available to deploy","When all services are deployed, and you click on Available Services, there is no message that there are no services available",1 DURACLOUD-469,"UI: Display the selected service on the service configuration dialog","The name of the service which was selected needs to be displayed on the screen used to configure the service. Currently there is just text that reads ""Configure the Service"", which isn't very helpful.",1 DURACLOUD-471,"Document Installation Process","This task is to update the trunk/resources/readme.txt file to have complete instructions for standing up a DuraCloud instance using the files provided with the installation package. Parts of this document can refer to the wiki for further explanation, but ideally, the entire process would be well enough defined in the readme such that the links to the wiki would be optional reading. The initial outline of the process should be documented by one of the developers, then the detailed steps should be flushed out by someone who is not as familiar with the process.",2 DURACLOUD-474,"Service Errors with removal of expected spaces","This task is to analyse the exact impact of removing the spaces: x-service-out x-service-work before and during a run of each service. After the analysis, implement a strategy for allowing services to run successfully to completion. Resolutions could potentially include: - services exiting gracefully - services recreating the expected spaces - or potentially not allowing the spaces to be deleted in the first place",3 DURACLOUD-475,"Create consistent css styling for reporting","This improvement is to restyle the Dashboard Storage and Services tabs to have a consistent styling with the rest of the duradmin application.",3 DURACLOUD-478,"Facilitate integration: CDL Merritt ","This task is to support the conversations and integration of Merritt with DuraCloud. Likely the software development will all be on the CDL side, but some time and effort will be needed as support.",1 DURACLOUD-481,"CloudSync Service","This feature is to add a new CloudSync service. The service will likely be a webapp service (ala j2kservice). Note: CloudSync itself should probably by updated to take its working directory as an initialization argument.",2 DURACLOUD-482,"Re-Add DuraCloud favicon","This update is to re-add the DuraCloud favicon to the duradmin application. In release 1.0.0, its rendering was somehow dropped.",1 DURACLOUD-484,"DurAdmin support for object copy/rename","This feature is to add UI support for single content copy/rename operations.",3 DURACLOUD-485,"StoreClient/REST support for object copy/rename","This feature is to expose the StorageProvider.copyContent() method through the DuraStore REST API as well as update the storeclient. However, this feature should not be implemented until the patch submitted to Rackspace has been incorporated into the Rackspace java-client baseline. https://github.com/rackspace/java-cloudfiles/pull/18",3 DURACLOUD-486,"Duplicate on Change may not successfully duplicate all files","In testing completed by Harvard, the Duplicate on Change service was deployed, followed by running the sync tool to transfer 33,110 files into a single space. The Duplicate on Change service was configured to watch the primary Amazon provider and copy all files to Rackspace. After all files were uploaded and the Duplicate on Change service was given ample time to complete, only 33,045 files had been moved to the space in Rackspace. So 65 files (0.2%) were not duplicated. This task is to determine how this small set of files may have slipped through the cracks, and update the code such that: 1. No files are missed in future runs of the service. 2. An output report is generated which indicates all files that have been transferred and captures any errors that occur along the way. The log files from the harvard instance are attached to this issue for reference.",4 DURACLOUD-487,"Retrieval Tool: Add the ability to retrieve a space item list","This task is to add an option to the Retrieval Tool which will pull down the list of items in a given space (or list of spaces), rather than actually retrieving them. This list will be written to a file. There is an existing tool in duracloud-utils named the space-lister-tool which already provides this capability, so it may be useful to borrow code from that implementation. This should result in a single new command line option (--list-only perhaps) that, when included causes the space list to be stored in the content directory rather than files.",1 DURACLOUD-489,"Serve DurAdmin pages as XHTML","This task is to update DurAdmin to serve its pages as strict XHTML. The mime type used should be: application/xhtml+xml. The DOCTYPE header should also be specified as which is the recommendation for HTML5.",2 DURACLOUD-490,"1.1 Production AMI","This task is to create a new production AMI with the 1.1 tagged codebase. It should include: - /etc/init.d/tomcat: export CATALINA_OPTS=""-Xms512M -Xmx512M -XX:MaxPermSize=512M""",1 DURACLOUD-491,"Add version number to output of sync and retrieval tools","This task is to include a version number in the printed output of the sync and retrieval tools so that it's easy to determine which version is being used.",1 DURACLOUD-492,"StoreClient moveContent()","This feature is to add an additional method to the storeclient, namely, moveContent(). This method will simply call copyContent() followed by deleteContent().",1 DURACLOUD-493,"Duradmin login url","This issue shows up in the following scenario: - Launch an instance as root user from the Management Console - the login fails (as expected); but typing in the correct root username/password continues to fail - until manually removing the trailing portion of the URL: ""login?error=true"" It would be ideal if an incorrect login using the pattern as in the MC did not produce this URL in the browser.",1 DURACLOUD-495,"Move Duradmin to Dojo ",https://wiki.duraspace.org/display/DURACLOUDDEV/Notes+on+the+Way+Forward+for+Duradmin,5 DURACLOUD-496,"ContentStore Duplicate Across Providers","This feature is to provide users a way to copy a single item from one storage provider to another storage provider (or within the same storage provider). The implementation will likely be similar to the ContentStore.copyContent(), but will contain an optional source storeId. This effort should also include exposing the cross-provider copy functionality at the ContentRest level of Durastore. ",2 DURACLOUD-497,"Remove Image-Conversion Services (temporarily)","This task is to remove the two image conversion services: - bulk image conversion - non-bulk image conversion from the list of available services for the 1.1 release. These services will become available once again when a strategy has been developed to help users manage the error cases.",1 DURACLOUD-498,"SyncTool does not recognize chunked content","The issue here is seen in two scenarios: 1. Content that is chunked into DuraCloud during one run of the synctool is not recognized as existing in the space on a subsequent run of the synctool. 2. Content that is chunked into DuraCloud during one run of the synctool is not recognized as existing locally on a subsequent run of the synctool, and if the --sync-deletes flag is set, then the chunks are not deleted from the DuraCloud space.",2 DURACLOUD-499,"Update EasyMock library to version 3.0+","EasyMock has rolled the class extension project under the base project and deprecated EasyMock ClassExtension. This task is to update the top level pom to use EasyMock 3.0+ and refactor all tests which use org.easymock.classextension.EasyMock to use org.easymock.EasyMock instead.",1 DURACLOUD-500,"SyncTool does not delete empty subdirectories","The issue here can be seen in the following scenario: # create an empty DuraStore space # create a local directory with subdirectories, add files # run synctool ** verify space/directories are the same # delete a local file at the top-level or within a subdirectory (but if in a subdirectory, make sure more content remains in that subdirectory) # run synctool with '--sync-deletes' ** verify content is deleted from the space # here is the issue: delete local content in any of the following ways: ** from a subdirectory, leaving that subdirectory empty ** remove everything from the local directory # run synctool with '--sync-deletes' # Error: notice content is not deleted in space ",1 DURACLOUD-501,"Throw exception on space names which are too long","This item is to ensure that an error is thrown back to the user when a space to be created has a name which exceeds the maximum name limit. Currently the name is just truncated, and the truncated name isn't displayed until a refresh of the UI. See S3ProviderUtil line 133 for the spot where the S3StorageProvider likely does the truncation. All current active storage providers (S3, Rackspace, Azure) should be checked for this same behavior. Example of a space name that is too long (for S3): duracloud-1-1-0-snapshot-service-repo-trial-test ",1 DURACLOUD-502,"put psd files from charles on the wiki",NULL,1 DURACLOUD-503,"New service plan: All Services","This task is to add a new service plan: ""all"", that includes all services.",1 DURACLOUD-504,"OOM on Re-Initialization of Durareport","This issue is revealed when performing multiple re-initialization of a DuraCloud instance via the app-config or MC. It would appear that the report collection threads created during initialization are not properly shutdown on an immediate, subsequent re-initialization. After a few re-inits an OOM is seen.",1 DURACLOUD-505,"Deployed services list is not refreshing","Once a service has been deployed, the service information is not being displayed in the deployed services list.",1 DURACLOUD-506,"Add links on the dashboard which allow for downloading DuraCloud utilities","This task is to add a link or links to the DurAdmin dashboard which allow a user to easily download the DuraCloud utilities (sync tool, retrieval tool, etc). It would also be useful to have links pointing to the documentation for each of the utilities that can be downloaded. Update the existing ""Help"" link to open a new window with this page: https://wiki.duraspace.org/display/DURACLOUD/DuraCloud+Help+Center Add a tab on the Dashboard beside the Storage and Service report tabs called ""Tools"" with the content listed here: https://wiki.duraspace.org/display/DSPINT/DurAdmin+Tools+tab",1 DURACLOUD-508,"REST endpoint: isInitialized() across all webapps","This improvement is to add a new REST method to each of the four existing webapps: - durastore - duraservice - durareport - duradmin That authenticates against anonymous users and returns a response code of: - 200 = is initialized - 503 = is not initialized",2 DURACLOUD-509,"Add messaging support for content copy action","This task is to add messaging support to the new copyContent() method added to the StorageProvider interface. A new topic should be added to carry messages related to copy operations. Once the messages are being sent, the two services which are listeners, Duplicate on Change and Media Streamer, need to be updated to listen for copy operations and react appropriately.",1 DURACLOUD-510,"Long-running storage tasks","This task is to make it possible to run, track, modify, and stop long-running storage activities. Since these actions can take a long time, the user needs to be able to discover the current progress and also be able to cancel or change the task while it is in process. Also, these tasks usually need to be re-started in the event of an instance restart. Examples of these types of activities: - Multi-file delete - Multi-file copy (within and between providers) - Multi-file or multi-space property add/update/delete - Large space delete For activities which handle multiple content items, there should be a way to provide a known set of content IDs over which the action will occur. A follow-on task for this item will be to expose these capabilities through the UI.",8 DURACLOUD-511,"UI: Provide an understanable error message when users attempt to create a space with a reserved name","This task is to add validation to the space creation action in the UI which does not allow users to attempt to create a space with a reserved name. The list of reserved names can be found here: https://wiki.duraspace.org/display/DURACLOUDDEV/DuraCloud+Administration. Currently, when a user attempts to create a space named, for example, ""task"", a big error dialog with a 405 http response message is displayed.",1 DURACLOUD-512,"Distinguish service-failures from failed-service-results for Hadoop Services","This improvement is to have different informational messages (and underlying service properties) for when a service fails versus when the results of a service run contain failures. Examples of service failures are unrecoverable exceptions, OOM, failed hadoop startup, etc. Examples of result failures are bit integrity discrepancies, unsuccessful image conversions, unsuccessful duplications, etc.",3 DURACLOUD-513,"Distill failed items from a failed service run","This improvement is to extract out the failed items from the output report of unsuccessful service runs in order to make the errors more clear for the user. The implementation will likely require updates in the reporting UI as well as in the underlying service infrastructure. ",3 DURACLOUD-514,"Filter administrative content from storage reports","This improvement is to by default only expose the user content in the UI storage reports. The administrative content to be filter is currently found in the following spaces: - x-duracloud-admin - x-service-out - x-service-work The implementation may be done at the time of report statistics collection or in the UI, toggling admin spaces on/off. ",3 DURACLOUD-515,"Make parameters consistent among command line utilities","This task is to make command line options as uniform as possible among the current set of command line utilities: sync tool, retrieval tool, chunker, stitcher. There are currently several inconsistencies that need to be cleaned up: - Use -c for content directory (as used by sync and retrieval tools). Currently stitcher uses -d and chunker uses a compound -a option - The chunker should support -i (store-id) - The chunker should use -s (space-id) rather than including it as part of -a - The chunker should use -h (host) and -r (port) rather than -c",2 DURACLOUD-516,"Service output files to use .tsv extension and text/tab-separated-values mime type","This task is to update the service output files to have mime type of text/tab-separated-values and .tsv extension",2 DURACLOUD-517,"Undeploy service should have warning","This issue should address the apparent lack of an ""ok""/""cancel"" warning when undeploying a service. Currently, when the user selects ""Undeploy"", the service is simply undeployed without a warning notice.",1 DURACLOUD-518,"Service properties blank on deploy","This issue is to address the situation where a user deploys a service, and when it has successfully deployed, the ""Service Detail"" panel goes blank. The ""Service Detail"" panel should show the properties of the newly deployed service.",1 DURACLOUD-519,"Sync Tool should ensure configuration for subsequent runs is functionally equivalent before attempting to restart","When the Sync Tool starts up, it compares the current configuration with the previous configuration to determine if it can perform a restart. A restart allows the Sync Tool to not attempt to re-sync all of the files in the content directory. The problem is that the check to see if a restart is possible (in SyncTool.restartPossible()) only checks the list of content directories. It should actually compare host, spaceId, storeId, and syncDeletes values as well. If any of those values do not match, a clean start should occur.",1 DURACLOUD-520,"StorageProvider to support add-content-with-metadata","This improvement is to investigate and potentially implement an update to the StorageProvider.addContent() interface method or an addition of a parallel addContent() method that optionally takes object-properties along with the content-stream. As an example, the current ContentRest.addContent() method performs two calls to the StorageProvider: addContent() & setContentProperties(). The number of calls made to the underlying storage-provider could be cut in half if these two calls were combined. The AmazonS3Client interface, the Rackspace FilesClient, and the Azure IBlobContainer all support calls for including metadata along with the call for adding content.",3 DURACLOUD-521,"Media Streamer: set logging level down from WARN","This improvement is to set the log level of messages in the MediaStreamService to INFO or DEBUG from the current WARN. ",1 DURACLOUD-522,"StoreClient encryption support","This feature is to provide a means for users to encrypt/decrypt content stored and retrieved through the StoreClient. The StoreClient should have a constructor that optionally takes a symmetric or asymmetric encryption key.",3 DURACLOUD-523,"SDSC Storage Provider integration","This feature is to integrate the SDSC Cloud as another underlying StorageProvider.",3 DURACLOUD-525,"Auto-user application","This feature is to provide the ability to start a DuraCloud instance with a set list of services that will be run on a set schedule. The first example of such an auto-run/scheduled service is Bit-Integrity.",4 DURACLOUD-526,"UI - Copy multiple content item across storage providers","This feature is to expose the copy-content-across-storage-providers functionality within Duradmin. This needs to include the option to ""multi-select"" content items to be copied as well as only selecting a single item. Likely this will be an addition to the existing content copy UI element. The interface should optionally allow the user to indicate the destination storage-provider.",2 DURACLOUD-527,"Content manifest","This feature is to create and maintain a manifest (space-id, content-id, md5) of all content held in the primary storage provider. A listener should update the manifest whenever content is added or deleted from Durastore. The format of the manifest should be compatible with the expected input format of the bit-integrity service.",3 DURACLOUD-528,"Migrate SCM to Git","This task is to migrate the DuraCloud SCM from Subversion to Git.",5 DURACLOUD-532,"Rename spaces","This task is to make it possible for users to rename DuraCloud spaces. In order to do this, space names will need to no longer be directly tied to the bucket/container names of the underlying storage provider. One way to do this is for the name of a space to become a property of that space. A side benefit of this is that we should be able to remove many of the naming limitations we currently have on space names.",5 DURACLOUD-533,"Archive-It Integration","This feature is to provide an integration with Archive-It so that users with Archive-It content may seamlessly push their collection into DuraCloud.",5 DURACLOUD-534,"UI - Provide hierarchical content view","DurAdmin should be able to graphically display folder and file hierarchies in a similar fashion that is available on a local machine. Currently, the naming convention to indicate hierarchical files (ex. folder1/folder2/folder3/filename.txt) is not sufficient from a user perspective. It is expected that the interface will allow them to create ""sub-folders"" or spaces within spaces, etc. that will map to the local directories that the content was stored in. This task is to update the display of content items such that the user sees the commonly expected folder structure, which allows navigation down to files. This should look pretty similar to the display provided for content in S3 by the AWS console.",8 DURACLOUD-537,"Long-running content actions","This task is to add support in DuraStore for long-running actions that can be run over content. Some examples of these kinds of tasks are: multi-file delete, multi-file copy (within and between providers), and multi-file property add/update/delete. It may make sense to implement this feature using the existing tasks infrastructure.",5 DURACLOUD-541,"Integrate working version of CloudSync","This task is to pull in an updated version of CloudSync into the cloudsyncservice that does not have the issue of not being able to connect to a DuraCloud instance.",1 DURACLOUD-542,"Upload tool web deployment","This feature is to establish a means of deploying the UploadTool via Duradmin as a signed-applet, webstart app, or other.",3 DURACLOUD-544,"Automatically insert logo in x-duracloud-admin","When a DuraCloud instance is deployed, it should automatically include a logo in the x-duracloud-admin space, so that the logs don't get junked up. I have attached a possible logo to use for this purpose.",1 DURACLOUD-545,"Implement an automated performance testing framework","Assemble a framework for automated performance testing to fit into the DuraCloud software engineering process. This framework is to include tests and test data sets. It will be implemented incrementally in an agile fashion. The primary goal of performance testing is to ensure that DuraCloud meets its goals for scalability and reliability. It characterizes the performance of the system under various load scenarios. It is also a primary input for bottleneck analysis that can be used to improve system performance. Performance tests often overlap functional tests and are useful for ensuring that DuraCloud is functioning as documented. Performance testing is also used to help size and manage the operating infrastructure in order to avoid unnecessary costs. These costs are part of the information needed to set the price of our services.",5 DURACLOUD-546,"Update Sync Tool to take advantage of improvements due to the Upload Tool","The creation of the Upload Tool included several back-end changes to the Sync Tool. This task is to make improvements to the front-end of the Sync Tool to: - Display the progress of file transfers when printing status - Allow for individual files to be watched as well as directories",2 DURACLOUD-547,"Upload tool applet cannot be used at the same time on spaces of the same name on different providers","If you are using the upload tool via DurAdmin to perform an upload on Amazon in space ""test"", you cannot also perform an upload to a space with the same name in another provider - you are sent to the existing upload window.",1 DURACLOUD-548,"ACL: Create UI for managing ACL users/groups during space administration","This feature is to create a UI in duradmin for managing space-level ACLs. It will likely be a button in the righthand pane, similar to the ""edit"" button for space metadata. The functionality should enable Admins to add/remove 'users' and/or 'groups' to the space ACL with permissions of 'read' or 'write' (which implies read). A potentially attractive UI widget would be the one that renders two, side-by-side boxes containing usernames, and arrows allowing the moving of usernames from one box to the other. ",3 DURACLOUD-549,"ACL: Update StoreClient with setSpaceACL()","This feature should add the new method to the StoreClient: setSpaceACL() This method should take a spaceId and a map of 'usernames' and/or 'groupnames' and their associated privilege (read or write), and set the ACL for the given space. ",3 DURACLOUD-550,"ACL: Update DuraStore security to ACL rules","This feature should update the durastore spring security definitions to limit access as defined in: https://wiki.duraspace.org/display/DSPINT/Space+Level+ACLs+-+design",2 DURACLOUD-551,"Space and content list reload","Please add a refresh button to the space listing as well as to the content listing within a space. Currently a space is not reloaded after content items are added, and a user must either (a) reload their entire browser window or (b) click on the space tab and renavigate to the appropriate space to see the newly added content items.",1 DURACLOUD-553,"ACL: Update app-config and security-user bean to include 'group' details","This update is to modify app-config, SecurityUserBean, and security-users.xsd, as appropriate to support the inclusion of ACL 'groups' during instance initialization.",1 DURACLOUD-554,"ACL: Add ACLStorageProvider","This feature is to add a new StorageProvider wrapper implementation to facilitate filtering the spaces listed in a getSpaces() request. The primary objectives are to: - provide a way to only return spaces that are either 'open' or are accessible to the calling user - improve performance so that each request for the space listing does not require querying the properties of each space from the underlying storage provider. Below are some implementation suggestions: 1. in StorageProviderFactoryImpl.getStorageProvider() * wrap storageProvider with a new ACLStorageProvider() 2. ACLStorageProvider * overwrite: getSpaces() * cache spaces and space acl properties ",2 DURACLOUD-555,"ACL: Enable multi-map content/space properties","This feature is to enable multi-map header values throughout the application for content and space properties. The capability should be enabled for the entire stack: storageproviders, to REST, to StoreClient, to Duradmin.",2 DURACLOUD-556,"UI Copy Single Content Item Across Storage Providers",NULL,1 DURACLOUD-557,"ACL: Update duradmin UI to exclude tabs from USER role","This update is to not display the ""Services"" tab nor the reports tabs under ""Dashboard"" if the user who is logged into duradmin only has ROLE_USER. Rather, only users with ROLE_ADMIN should be able to see the services and reports tabs.",1 DURACLOUD-558,"ACL: Represent space access (open/closed) as an ACL","This improvement is to refactor the implementation of space access from the 'space-access' property to an ACL property (acl-group-public). In addition to cleaning up specialized logic for space access, handling space access as an ACL will allow a single call to the underlying storage providers to be made in determining access rights in Spring Security instead of a call for space access and a separate call for space ACLs. ",4 DURACLOUD-560,"UploadTool changes ACLs on upload","This bug is that when running the UploadTool, the existing ACLs of a space are replaced by a single ACL of {user=w}.",1 DURACLOUD-561,"Deprecate space-access methods","This improvement is to deprecate the setSpaceAccess and getSpaceAccess methods on the StorageProvider and ContentStore interfaces.",1 DURACLOUD-563,"Provide a REST call to allow administrators to retrieve a listing of all users and groups","In order to be able to create an ACL for a space, an administrative user needs to list all of the users and groups which should have access to the space. What makes this hard is that there's no way via the REST API for an administrator to get a list of the users and groups which are available. So while the ACL can be created currently, knowing how to fill it out is a challenge. This task is to add a call to the REST API which allows administrators to retrieve a listing of all users and groups, as well as which users are parts of which group.",3 DURACLOUD-565,"Sort permissions display","This task is to sort the listing of items in the Permissions section of the content item display in DurAdmin. Groups should be displayed above users, and both sets should be sorted alphabetically (A-Z). The ""public"" group, when added, should always be displayed at the top of the list.",1 DURACLOUD-566,"Handle space properties cache loading on instance initialization","Currently, the cache for space properties is loaded the first time a user attempts to access a storage provider. If this user is a non-admin user, and there are many spaces in the account, this action can take several minutes. This task is to transition to loading the cache when the instance is first initialized, rather than waiting for a user to access the instance, greatly lowering the likelihood that any user will have to wait while the cache is populated.",2 DURACLOUD-567,"Show only writable spaces in the copy content dropdown (in the copy dialog)",NULL,1 DURACLOUD-568,"Multi-space property editing: User should be alerted if they are trying to update one or more readonly spaces.","Suppose a user is looking at a list of four spaces and suppose he has write access to only three of them. Currently the set of editable tags and properties is gathered from all selected spaces regardless of whether the user has write access. Similarly if a user tries to add properties or tags to a selected space to which he has only read only access, the system won't handle it very beautifully. The ideal solution would be to disallow selection of unwritable spaces.",2 DURACLOUD-569,"Create Messaging over setSpaceACLs()","This improvement is to add messaging over the durastore calls to StorageProvider.setSpaceACLs(). The configuration for this is in: durastore/src/main/webapp/WEB-INF/config/aop-config.xml A new advisor (ala SpaceUpdateAdvice) will needed to be created as well.",1 DURACLOUD-570,"Copying content from Amazon to another provider produces unnecessary properties","When performing a content copy from Amazon to another provider, the resulting content item includes duplicate copies of ""default"" content properties, such as mimetype and checksum. This task is to filter out these properties when performing a copy.",2 DURACLOUD-573,"Add ""Help Desk"" link to footer","Please add the text ""Help Desk"" to the footer before the ""Contact Us"" link. It should link to: http://duracloud.kayako.com.",1 DURACLOUD-574,"Remove Duradmin's dependency on the Space Access APIs in storeclient","Remove the dependencies on space access by having duradmin use the acls instead. It is also necessary to make it clear to the user how to enable public access on a space if no public acl has been set. Additionally the public group should be highlighted in the UI to amplify its uniqueness. ",2 DURACLOUD-575,"Synctool: not re-syncing content deleted from DuraCloud","This issue is to fix the bug demonstrated in the following scenario: # run synctool pushing one or more files to a space ** observe success # delete one of the content items in DuraCloud newly pushed to the space # re-run the synctool ** observe deleted item is not re-uploaded The strategy to fix this issue is to introduce a new flag which instructs the sync tool to perform a ""clean start"" rather than a re-start, so that all files in all local directories are considered as part of the sync. This flag would essentially have the same effect as clearing the work directory prior to starting the sync tool. The flag should not be enabled by default.",1 DURACLOUD-577,"/init resource should be available to ROLE_USER","This item is to address the bug that only anonymous users can inspect durastore, duraservice, and durareport. ROLE_USER and ROLE_ADMIN should also be able to make such an inspection.",1 DURACLOUD-578,"Links into the djatoka viewer are broken in duradmin","Links into the djatoka viewer are broken in duradmin. For example the following url doesn't work: http://174.129.12.28/adore-djatoka-p18080/viewer.html?rft_id=http%3A%2F%2Fdanny.duracloud.org%3A80%2Fdurastore%2Fimage-transformer-dest%2FSunset.png%3FstoreID%3D0 But this one does: http://174.129.12.28/adore-djatoka-p18080/viewer.html?rft_id=https%3A%2F%2Fdanny.duracloud.org%2Fdurastore%2Fimage-transformer-dest%2FSunset.png%3FstoreID%3D0 The difference between the above urls: replace the durastore url protocol with https and remove the port and everything works. ",1 DURACLOUD-579,"Content image does not refresh after clicking ""Make space public"" button.","To reproduce: 1. Make sure image service is running. 2. In duradmin browse to an image content item in a non-public space. 3. Click the make space public button. 4. Notice: the image is not visible. 5. Also note that the warning message is not automatically removed as it should be. Also note that when making a space non-public, the button for making it public does not reappear. I think the panel should be refreshed and the image should be immediately available.",1 DURACLOUD-581,"January 2012 completed reports are not showing up in duradmin dashboard.","To reproduce, run a service to completion and then observe in the duradmin dashboard that it as well as another other service run after January 1st is not being displayed in the dashboard. ",1 DURACLOUD-582,"Sync tool: Create a file transfer log","This task is to update the sync tool such that it creates and updates a textual transfer log including all files which are added or updated in DuraCloud along with their checksum. This file would only include files which were successfully transferred to DuraCloud. Ideally the format of this file would follow the format expected by the bit integrity service, so that after doing a fresh transfer of a full dataset into DuraCloud this transfer log could be compared to the space via the bit integrity checker service.",2 DURACLOUD-583,"Verify that pointing multiple subdomains to a single instance does not cause issues","This task is to perform tests against a DuraCloud instance where multiple subdomains are pointed. One subdomain will be used to initialize the instance, while others will be used to access the UI and APIs. This is intended to simulate the interaction that users will have with the Community Cloud. Ideally, coming to DuraCloud through each of the different host values will show that: 1. The DuraCloud applications function correctly 2. The user is always shown only their host value via the UI. Note that the user interaction can be limited to User role actions.",1 DURACLOUD-584,"Ensure that client tools continue to function across minor outages","This task is to test the DuraCloud client tools (primarily Sync Tool and Retrieval Tool) and make updates that are necessary to allow the tools to continue to run even if the DuraCloud instance becomes unavailable for a short period of time. The period of time to be tested against should be the time that is required to upgrade a DuraCloud instance to a new version. This will allow DuraCloud users to keep their tools running even across an upgrade cycle. A likely strategy is: When a transfer fails, check to see if the instance is available before doing a retry, if its not, then wait for ~5 min and try again. When the instance becomes available again, resume file transfers. ",2 DURACLOUD-585,"Distinguish service-failures from failed-service-results for Non-Hadoop Services","Same as https://jira.duraspace.org/browse/DURACLOUD-512 but for non-hadoop services that operate on lists of items.",2 DURACLOUD-586,"When editing multiple space properties, it is possible for users to attempt to update read only spaces.","To reproduce this problem: 1. select a writeable spaceA and read-only spaceB (using the checkboxes) 2. click edit properties 3. add a tag or name value pair and save. 4. duradmin displays the error dialog (unauthorized action error) ",1 DURACLOUD-587,"When logged in as a non-admin, the multi-space delete button should not be visible.","To reproduce: 1. log in as a user 2. select a space or two using the checkboxes in the spaces list. 3. confirm that a delete button is visible.",1 DURACLOUD-588,"Verify the SDSC storage provider integration","This task is to ensure that the SDSC storage provider works as expected, that content can be stored and retrieved, and that everything looks as it should on the SDSC side. Tests should be conducted to verify that all DuraCloud APIs work as expected when executed against the SDSC provider. Tests should also be conducted to verify that the SDSC provider can handle storing and retrieving large amounts of content. This task requires both continuing the conversation with the SDSC folks as well as direct testing and validation.",3 DURACLOUD-589,"Set expiration policies for log spaces","This task is to use Amazon's management console for each of the current DuraCloud accounts to set an expiration policy on the x-service-work space to remove all content items with the ""logs"" prefix after 30 days.",1 DURACLOUD-590,"Create and test 64-bit AMI","This task is to: 1. Test the DuraCloud software on a 64-bit instance, to ensure that it works properly, and fix any problems that are discovered 2. Create a production 64-bit AMI as part of the release cycle",2 DURACLOUD-591,"Various DurAdmin updates","Update the following items in DurAdmin: - Remove the option to ""add one item"", change the ""add many items"" link to simply be ""add items"" - Update the image on the copy button to appear consistent with the other buttons (currently appears to be lower quality) - In the Content Detail panel, make content size number understandable (at least include a unit - ""bytes"") - In the Content Detail panel, set all buttons to be the same color (light gray perhaps)",1 DURACLOUD-592,"DurAdmin updates","Update the following items in DurAdmin: - Change ""Space ID"" and ""Content ID"" to ""Space Name"" and ""Content Name"" respectively - In the footer of every DurAdmin instance page, ensure that DuraCloud has the ""c"" capitalized. - In the footer of every DurAdmin instance page, the link to DuraCloud.org should come before DuraSpace.org - In the footer of every DurAdmin instance page, replace the current ""Help Desk"" link with a ""Help Center"" link which points to: https://wiki.duraspace.org/display/DURACLOUD/DuraCloud+Help+Center - The title of every DurAdmin instance page (that appears in the browser tab) should be DuraCloud: Login, DuraCloud: Spaces, etc. or something similar (not ""DurAdmin :: DurAdmin: Login"" or ""DurAdmin: Spaces"") - Change ""DuraCloud Administrator"" to just ""DuraCloud"" - Make the Dashboard tab available only to root users",1 DURACLOUD-593,"DurAdmin: restrict access to Administration tab","This task is to limit the Administration tab in DurAdmin to be viewable only by root users.",1 DURACLOUD-594,"Move storage reports onto spaces tab","This task is to break out the information in the storage reports and display it instead on the main Spaces tab. The space-specific charts should be included on the Space Detail page. The provider-specific charts should be displayed in the detail area that is currently shown as blank when selecting the Spaces tab. The top-level all-providers charts will no longer be displayed. Both the provider-specific and space-specific charts should still provide the option to view historical charts and data.",5 DURACLOUD-598,"when uploading jpg files with hashmark in file name, the mime-type is not accurately identified.","To reproduce: 1. Run the bulk uploader in duradmin. 2. Select a jpg with a # mark in the filename such as test#1.jpg. 3. Select a jpg with without a # mark in the filename such as test2.jpg. 4. Upload files. 5. Refresh space in duradmin 6. Verify that the mimetype for test2.jpg is image/jpeg (correct) 7. Verify test#1.jpg is application/octet-stream (less correct) ",1 DURACLOUD-599,"When uploading with bulk upload tool, if file is a jpg with hashmark in file name, the mime-type is not accurately identified.","To reproduce: 1. Run the bulk uploader in duradmin. 2. Select a jpg with a # mark in the filename such as test#1.jpg. 3. Select a jpg with without a # mark in the filename such as test2.jpg. 4. Upload files. 5. Refresh space in duradmin 6. Verify that the mimetype for test2.jpg is image/jpeg (correct) 7. Verify test#1.jpg is application/octet-stream (less correct) ",1 DURACLOUD-600,"Release 1.3.1","This task is to run the attached space-acl-tool over all production accounts to convert the space-access properties to space ACLs. Note that when running the utility in ""CONVERT"" mode, it simply creates the ACLs based on the space-access property. If you want to remove the legacy space-access properties, the utility must be run in ""REMOVE"" mode.",1 DURACLOUD-602,"In the copy item dialog, there is no validation for missing destination space info.","To reproduce: 1. as admin, remove write access to all spaces within storageProviderA. 2. as user, login, select a content item, click copy, and select storageProviderA. 3. Verify that the destination space drop down is empty. 4. click ok. 5. verify that the call is made despite the invalid data. Optimal solution: add default list item to the space select (""Select a destination space"") and display invalid form message when this item is selected.",1 DURACLOUD-603,"Make the image thumbnails in duradmin larger and improve the layout.","When viewing an image in a public space with the image server service running, make the thumbnail larger and center the layout.",1 DURACLOUD-604,"Provide visual feedback for slow loading thumbnails from the image server","Image thumbnails are generated on the fly and then cached by the djatoka image server. The latency in thumbnail generation can sometimes leave the user wondering what happened to the image. Providing a visual cue to show that something is happening, albeit slowly, would improve the experience.",1 DURACLOUD-605,"Retrieval Tool: Space error feedback","This improvement is to add user feedback in the case where the space(s) being retrieved is inaccessible. When a space does not exist or when the user does not have access to the target space, the retrievaltool output message is as follows: ========================================= Retrieval Tool processing complete, final status: -------------------------------------- Retrieval Tool 1.4.0-SNAPSHOT - Status -------------------------------------- Start Time: 2012-01-20 09:34:57.106 Current Time: 2012-01-20 09:35:17.108 Retrievals In Process: 0 Successful Retrievals: 0 No Change Needed: 0 Failed Retrievals: 0 -------------------------------------- ========================================= In order to help the user understand why the retrieval did not work, a more descriptive status message would be helpful.",1 DURACLOUD-608,"UI issues with prefix + refresh","Part 1: Following these steps: 1. Select a space which has more than 1000 items 2. Enter a prefix into the ""type prefix"" box, hit enter 3. Click the refresh button on the content item listing Causes a series of error dialogs to pop up, indicating a NullPointerException while DurAdmin is attempting to count the space size. The stack trace reported in the dialog is captured in the attached file. Part 2: Following the same steps as above, but selecting a space with less than 1000 items causes the ""Space Detail"" area of the screen to blink continually",1 DURACLOUD-611,"Service Report Link in Service Details","This bug can be seen when running a service that creates an output report (such as bit-integrity-tools: generate integrity details for space) in a storage provider other than the primary. For example, run the above service over a Rackspace space. Once the service is complete, select the link in the service details to show the results. Notice the report is not found due to the missing '?storeID=X' param.",1 DURACLOUD-612,"Create HP Storage Provider","This task is to create an HP Storage Provider. HP is still in its testing phase, so this will allow us to test the new provider more easily, and determine the extent to which it meets the expectations of the DuraCloud application. HP uses OpenStack, so the code required for this implementation should be minimal.",1 DURACLOUD-615,"Integrate with Shibboleth-based systems","This task is to make it possible for Duradmin to integrate with existing Shibboleth-based authentication and authorization systems. This is needed in order to satisfy the requirements of Internet2 and DfR. See discussions related to this issue here: https://wiki.duraspace.org/display/DFR/Shibboleth+Thread",3 DURACLOUD-616,"Space and content checkboxes are hard to click on","When trying to select a set of spaces to work on, I often select several spaces and then accidentally deselect them all accidentally by clicking a few pixels off of another checkbox. The solution here is to add padding to the checkbox element so that it is not necessary to be so precise with the mouse position.",1 DURACLOUD-617,"Eventual Consistency on Secondary StorageProviders: CreateSpace","This improvement is to increase the probability that the space creation method will work on secondary providers. Currently, the S3StorageProvider has a wait cycle in the createSpace() method that retries adding the space-metadata file until the bucket has been created and registered. A similar wait cycle should be added to the createSpace() method (or rather appropriate 'setSpaceProperties' method) of: - RackspaceStorageProvider - AzureStorageProvider",1 DURACLOUD-618,"Add Space Dialog","This task is to address the following bug: When selecting ""Add Space"", the flyout allows for entering the new space name. When hitting the ""enter"" key instead of the ""Add"" button, a pop-up with the following error is displayed: error: space is undefined ",1 DURACLOUD-619,"Exception on Space Delete","This task is to fix the bug that causes an exception to be thrown when deleting a space either in duradmin or via the REST api. With any storage-provider, when deleting a space in duradmin, a pop-up with the following message is displayed: failed to delete space! In looking at the tomcat log, an error is also shown when using the REST api. In both cases, however, the space is actually deleted.",1 DURACLOUD-620,"Duplicate on Change at Space-Level","This improvement is to update the Duplicate on Change service to allow configuration at the space-level. Namely, the service should be able to run on a subset of the total spaces of an account. It would be ideal if this improvement also allowed the spaces over which Dup-on-Change is configured to copy from the primary to any of the secondary providers.",5 DURACLOUD-621,"Display bit integrity results on each space","Services are being automated and users are no longer required to run the bit integrity service themselves, but they still need to know that their content is being verified. This task is to include on the UI, likely in the space details area, an indication of when the most recent successful bit integrity check was run over the content in that space. In the event that the most recent bit integrity check resulted in an error, we (DuraCloud staff) will need the opportunity to investigate the issue and correct it if possible before the issue is displayed to the user (this may also be done in an automated fashion.) If it turns out that the error requires user intervention, then it would be nice to be able to have that be indicated in some way on the UI, calling out specifically which files need to be addressed.",2 DURACLOUD-622,"Refactor RackspaceStorageProvider to OpenStackStorageProvider","This improvement is to refactor the RackspaceStorageProvider to OpenStackStorageProvider. Since we currently have three storage-providers that all expose an OpenStack API, the RackspaceStorageProvider (which is coded to the OpenStack API) should now be abstracted up as the base class of the three implementations: Rackspace, SDSC, and HP. Each of these inheriting classes should have their own names displayed in error and logging messages.",1 DURACLOUD-624,"Streaming URL for spaces streamed by the Media Streamer","Release 2.0 added the ability for users to select a button on a space and turn on media streaming for that space. This task is to ensure that the streaming URL provided by the Media Streamer service is added to the metadata of the space when it is being streamed, so that the user has access to it.",1 DURACLOUD-626,"Media Streamer: remove Viewer space","Since services will no longer be run directly by users, there is no longer a need for the Media Streamer service to produce the contents of the Viewer space. Those generated files are not used as part of the service, they are only provided as examples for how a user might integrate the media streamer service with their own website. This task is to: - Add a copy of the generated files (updated to be more generic) with some surrounding instructions to the DuraCloud documentation - Update the Media Streamer service to no longer generate these example files",1 DURACLOUD-627,"Sync and Retrieval Tool encryption support","After encryption support is added to the StoreClient, the Sync and Retrieval tools need to be updated to allow the user to choose to enable content encryption and to supply the necessary encryption key.",2 DURACLOUD-628,"Add user-id to content messaging","This improvement is to include the authenticated user-id of the user performing content actions over the durastore API. At the least, the user-id needs to be included on the ingest event message. This is in support of the DfR: Object Creation Service.",1 DURACLOUD-629,"Update Media Streamer Service to not Require Sources","This task is to remove the requirement of the media streamer service to have a source space.",1 DURACLOUD-630,"show content manifest head in space detail with link to full manifest","The purpose of this feature is to guide the user to the content manifest for the space as well as enable them to peek at the recent activity. The ""peek"" might be equivalent to head -10 audit-log.",2 DURACLOUD-633,"Snippet Generator for Streaming Content","It would be nice to have way to generate a snippet for streaming audio/video that can be embedded directly into any page. ",2 DURACLOUD-634,"Formatting on ""upload-tool"" space","The display on the Spaces tab causes any space named ""upload-tool"" to be formatted incorrectly. This is because the
that is created for the space on the page happens to match up with a css entry for #upload-tool (which is meant for a div in upload-tool.jsp). As it turns out, there are several space names which can cause odd UI behavior for the same reason, such as: ""spaces-list-view-resizer"", ""footer-content"", ""logo-ds"" (which is particularly strange looking), etc. There should be a strategy for making sure that these kinds of name collisions don't happen. The attached file shows how the display reacts to the ""upload-tool"" space.",1 DURACLOUD-635,"Media Streamer on/off button in the UI",NULL,2 DURACLOUD-636,"Executor Client","This task is to create a java client (similar to storeclient, serviceclient, and reportclient) to simplify interactions with the Executor REST API.",1 DURACLOUD-637,"Add manifest client","This task is to create a Java client for calling the manifest REST methods in DuraBoss.",1 DURACLOUD-638,"Consolidate DuraBoss Interfaces","This improvement is to refactor the Executor, ManifestGenerator, and Auditor interfaces to a common project that can be shared between DuraBoss and the various DuraBoss clients. Additionally, these interfaces should be implemented by the utilities themselves as well as the clients.",1 DURACLOUD-639,"Make charts zoomable","Space pie charts should be zoomable, displaying a larger graph in an overlay.",1 DURACLOUD-640,"Make Spaces pie charts navigable","Space slices in the cross spaces pie charts should be clickable. On click, the user should navigate to the same time slice but on the space detail history component.",2 DURACLOUD-643,"Executor: Media Streaming","This task is to implement the Media Streaming Handler in the Executor. Design notes can be found here: https://wiki.duraspace.org/display/DSPINT/DuraBoss+Design",3 DURACLOUD-644,"Executor: Bit Integrity Checking","This task is to complete the Bit Integrity Handler in the Executor. Design notes can be found here: https://wiki.duraspace.org/display/DSPINT/DuraBoss+Design",10 DURACLOUD-646,"Create Auditor Client","This task is to create a java client (similar to storeclient, serviceclient, and executorclient) to simplify interactions with the Auditor REST API.",1 DURACLOUD-647,"SystemUserCredential Across Webapps","This improvement is to create the SystemUserCredential in a similar was to how RootUserCredential is created, via a default username/password over-written by system properties. Once this is done, DuradminExecutorImpl.java should be evaluated for exchanging root-user with system-user.",1 DURACLOUD-648,"Merge common-notification into notification project","This task is to move the code which currently exists in the common-notificaton project into the notification project. An update should be made to inject AmazonNotificationFactory into EmailNotifier in DuraBoss, so no dependency on notification-amazon is required in the notification project. As part of this transition, the implementation classes should be pushed into the package org.duracloud.notification.impl.",1 DURACLOUD-650,"Newly uploaded content items do not show up on clicking the space.","To reproduce: 1. Open a space. 2. Upload content into a space. 3. Click on the space again in the space list. 4. Notice the newly uploaded content is not showing up.",1 DURACLOUD-652,"Add multiple tags at once to spaces and content","It should be possible to enter multiple tags at once. A tag should not contain spaces. Let us modify the UI so that you can enter a list of space or comma separated words that get entered as separate tags.",1 DURACLOUD-653,"Tag and Metadata deletes are not being serialized","Tag and Metadata deletes are not being serialized. If one deletes multiple tags/key value pairs in rapid succession, you'll notice that some items that were deleted reappear upon refresh. Solution: use deferreds to serialize calls.",2 DURACLOUD-655,"Deselecting all content items after having selected one or more does not cause the detail pane to show the space detail as it should.","To reproduce: 1. select a content item using the checkbox. 2. deselect it. 3. notice the space detail pane is not being displayed.",1 DURACLOUD-656,"The checkbox used to select all items in the content items list should be cleared when selecting another space","1. select a space. 2. select all content items. 3. select another space. 4. notice the ""select all"" check box is still checked.",1 DURACLOUD-657,"Refactor revision 914 so that it is not necessary to resolve the primary content store id on every call to get space and content detail info","Probable solution will involve caching the primary content store on the client.",1 DURACLOUD-658,"Manifest for empty space","Currently, when a new space is created, then a call to ask for the manifest is made, the response is a 404. Instead, the response should be a 200 and an empty manifest list should be returned. This could be resolved by creating the space audit log on space creation, rather than on the addition of the first content item.",1 DURACLOUD-660,"Chart Labels are off on panel resize","To reproduce: 1. Display a space 2. Make the Space Detail pane wider. 3. Note how the line graph labels are skewed. ",1 DURACLOUD-663,"Secondary Provider Audit Entry Sequencing","This issue is to resolve the bug occasionally seen in the content manifest when running dup-on-change. Sometimes ingest and delete messaging events lose sequence on the secondary provider. To create this scenario, an item must already exist in a space, then be deleted and immediately re-ingested. It is not a common production scenario. The attached audit log demonstrates such a case. Note, the actual content in both the primary and secondary stores were actually the same, but the secondary store does not show file-6.txt in its manifest: space-id content-id MD5 manitest file-0.txt b1946ac92492d2347c6235b4d2611184 manitest file-10.txt b1946ac92492d2347c6235b4d2611184 manitest file-1.txt b1946ac92492d2347c6235b4d2611184 manitest file-2.txt b1946ac92492d2347c6235b4d2611184 manitest file-3.txt b1946ac92492d2347c6235b4d2611184 manitest file-4.txt b1946ac92492d2347c6235b4d2611184 manitest file-5.txt b1946ac92492d2347c6235b4d2611184 manitest file-6.txt b1946ac92492d2347c6235b4d2611184 manitest file-9.txt b1946ac92492d2347c6235b4d2611184 ",2 DURACLOUD-665,"Exceptions being swallowed by javascript on space retrieval in Duradmin","See line 1080 of spaces-manager.js Notice only a 404 error is being handled. ",1 DURACLOUD-666,"Enable Duradmin to run separately on its own instance.","See attached error: There appears to a problem calling remotely into duraservice via duradmin.",2 DURACLOUD-667,"Storage pie charts in duradmin/spaces should display file size and count totals","Add ",1 DURACLOUD-668,"Update DuraBoss security-config.xml","This task is to update the security-config.xml file in DuraBoss to appropriately cover all parts of the DuraBoss REST API",1 DURACLOUD-669,"Update to the new Service Plans","Once the new set of service plans have been nailed down, this task is to make any updates that are necessary to make new plans available and remove unneeded plans.",1 DURACLOUD-672,"Logback Memory Leak","This improvement is to determine a way to allow logback in the DuraCloud webapps to - monitor for logback.xml updates without requiring application server cycling, and - not create memory leaks The memory leak can be seen by re-deploying the DuraCloud webapps and noticing that there are warnings in catalina.out and that the old processes are not destroyed. ",2 DURACLOUD-673,"SDSC as Primary Storage","This task is to determine the feasibility of using SDSC as a DuraCloud primary store. Beyond function feasibility, the performance differences of an EC2 to SDSC configuration should be compared to the standard EC2 to S3 configuration. As a side note, it would be interesting to explore SDSC's openness to supporting ""salted"" server-side checksums.",3 DURACLOUD-674,"Chronopolis REST Server Client","This feature is to create a java client for the Chronopolis REST Server. https://github.com/msmorul/chron-notifier Further details of the usage of the Chronopolis client can be found here: https://wiki.duraspace.org/display/CHRONO/DuraCloud+Chronopolis+Integration ",3 DURACLOUD-675,"Chronopolis Utility Integration","This feature is to leverage the Chronopolis REST client to integrate the business tier of requesting: - backups to Chronopolis - restores from Chronpolis - notifications on errors and completions - polling of in-process requests",5 DURACLOUD-676,"Chronopolis UI Updates","This feature is to integrate the ability to request backups and restores to/from Chronopolis into Duradmin. ",2 DURACLOUD-678,"Do not display blank ""Size"" property for spaces","The ""Size"" property for spaces (the number of bytes stored in that space) is always available for spaces in Rackspace, because this information is provided, but is never available for spaces in Amazon and some other providers. This task is to remove the ""Size"" property from the space display when it is empty.",1 DURACLOUD-680,"Buttons in Space and Content detail should wrap","Currently, when viewing DurAdmin on a small screen or window, buttons in the Space Detail and Content Detail areas can be unavailable. Since there is no horizontal scroll bar, it's not obvious that those additional buttons even exist. Looking at the attached screen shot, it is not obvious that there are View and Delete buttons which do not show up on the screen. This task is to allow these buttons to wrap, so that they will remain available even as the screen size diminishes.",1 DURACLOUD-685,"Label Storage Graph Axes","This improvement is to add labels to the two y-axes of the ""History"" ""Byte and File Counts Over Time"" storage graphs. Currently it is not exactly clear that the left-hand y-axis represents cumulative file size, and that the right-hand y-axis represents cumulative file counts.",1 DURACLOUD-686,"Item-level Bit-Integrity Timestamps","This improvement is to record the timestamp at the item-level for bit-integrity runs. This would allow for providing the ""green bar"" of bit-integrity health for each item. Likely, the timestamp would be persisted during the bit-integrity runs in each content line-item in the service-generated report.",1 DURACLOUD-688,"Bagit Manifest: Two Spaces","This improvement is to make sure that the ManifestGenerator for Bagit manifests delimits the checksum from the path with two spaces instead of the current single space character.",1 DURACLOUD-689,"Top-level Default Error Page","This improvement is to render a default error page at the apache level. For example, https://subdomain.duracloud.org/junk should display a more user-friendly page.",1 DURACLOUD-694,"DuraCloud 2.0 UI doesn't load when using Opera or Internet Explorer web browsers","When accessing DuraCloud from Opera or IE, the UI doesn't load properly and is ""unusable"" (i.e. you cannot do anything). Both browsers provide the same result. Here's a summary of what happens: 1. Visit http://[your-site].duracloud.org/ using the Opera or IE 2. Login -- this works fine 3. You are presented with a screen which shows no Spaces or content items. (I.e. it looks as though all your content has disappeared). At this point, there's nothing you can do except logout. This occurs on both Mac OSX and Windows 7 when using Opera, and on Windows 7 when using IE.",1 DURACLOUD-695,"Bulk Upload Applet Doesn't Work or Hangs on Multiple Browsers","From the last All Staff Retreat, I know this is a ""known"" issue. But, I wanted to track the scenarios that I've discovered thus far. The Bulk Upload Applet responds in the following ways when loaded in the following environments: * Mac OSX (10.6.8) + Firefox 11.0 - Initially, saw a ""permanent"" hang. I had to kill Firefox to continue. However, after restarting Firefox, on second attempt it loaded almost immediately. * Mac OSX + Chrome 18.0 - Temporary hang (1-2 mins), eventually loads properly. * Mac OSX + Safari 5.1.5 - Loads almost immediately. * Windows 7 + Chrome 18.0 - Loads in about 20-30 seconds * Windows 7 + Firefox 12.0 - Applet never seems to load & I always see a ""blank"" pop-up window (just includes Duracloud header/footer) UPDATE: Actually the issue was that the Java Plugin was disabled. See first comment below. Just as a note, Internet Explorer & Opera also likely should be tested once DURACLOUD-694 issue is resolved.",1 DURACLOUD-696,"Pie charts not visible on history line graph data point click","When an admin is logged in and looking at the space detail, the pie charts will display below the fold. In order to see them, the user scrolls down. However when the user clicks on a line chart data point, the pie graphs will be updated, but the user will not notice because they are not visible. It would be much better if the history line chart would scroll to the top of its container when the line chart is clicked.",1 DURACLOUD-697,"Allow admin to change custom logo by dragging and dropping it into place.","The current method of replacing /x-duracloud-admin/logo is not so user friendly.",2 DURACLOUD-698,"back and forward browser buttons do not work in the spaces manager in IE 9","To reproduce 1) click a couple of spaces. 2) then uses the browser back button. 3) notice it did not go back as expected.",1 DURACLOUD-701,"Space Names with '--'","Currently, when using either duradmin or the durastore REST API directly, creating a space which includes '--' behaves unexpectedly. For example, create a space named: 'test--x--space' It shows up in the space listing as expected. Then click the spaces tab, and it turns into: 'test-x-space' Likewise, when creating similarly named space via the durastore REST API. In both cases space shows up in the listing as well as in the AWS S3 Console as having a single '-'. It would appear as if the transformation of '--' into '-' is happening at the durastore level. This task is to allow durastore to permit space names with '--'. ",1 DURACLOUD-702,"UI: Space count causes bit integrity notice to be removed","On spaces with a large number of content items, there is an ajax call made to perform the count of items in the background. This number is updated in the space properties as the count continues, and is eventually set to indicate the final number. When a space has had a successful bit integrity run, a notice with a green background is displayed in the space properties, with a link to the results of the bit integrity run. In situations where both of these occur (a large number of items, and a successful bit integrity run), the completion of the item count causes the space properties to be reloaded, which removes the notice about the bit integrity run. This task is to ensure that the bit integrity notice persists through the item count update.",1 DURACLOUD-703,"Delete space button available to user","When logged in with ""user"" role, space delete button is available/visible. After clicking to delete space, an error pop-up window appears that states ""space delete failed."" Ideally, a person logged in with ""user"" role would be unable to delete the space, but would have an easy way to delete ALL the contents stored within a space. See attached screenshot for error pop-up window.",1 DURACLOUD-704,"Bit Integrity Tools service: Create report on empty space","Currently the Bit Integrity Tools service, when run over a space with 0 content items, indicates a link to a report, but does not actually generate the report. This task is to ensure that a report is generated, even when no content items are in the space.",1 DURACLOUD-706,"UI: Remove image preview","Currently the image preview section of the UI displays an icon (with mountains) when either the Image Server is not on, or when the space is not publicly viewable. This tends to prompt lots of user questions around why they cannot view an preview. This is especially an issue for multi-tenant accounts, where the user is not able to start the Image Server or make their space publicly viewable. This task is to remove the image preview area of the content item display.",1 DURACLOUD-707,"Secondary storage providers should be Read-only via the Rest Api","As the synchronization of content between storage providers becomes automated (DURACLOUD-642), it becomes unnecessary for users to edit content in their secondary provider. In order to maintain an assurance that content remains consistent between providers, the ability for users to make changes at their secondary storage provider should be removed. They would still be able to view and download all content, but no add/update/delete operations would be allowed. This task is to update the REST API to ensure that users with role user/admin/owner do not have write access to secondary stores.",3 DURACLOUD-708,"500 on Image Content Selection","This bug can be seen when quickly clicking between content items with image mimetypes ('image/*') within duradmin. A 500 error is presented to the user.",1 DURACLOUD-710,"UI: Space counting issues","This item covers two issues with the space count that occurs on the space properties of spaces with more than 1000 items: 1. The count now often starts at 0+. The count used to consistently start at 1000+ or 1999+. 2. When the count completes, it very often restarts and performs the count a second time, always ending with the same result.",1 DURACLOUD-712,"SyncTool: Better handle periods of time when the DuraCloud instance is unavailable","Update the sync tool to be better able to handle periods of time where the instance has become unavailable. This is particularly important to allow the SyncTool to continue to run normally across DuraCloud instance upgrades. A likely strategy is: When a transfer fails, check to see if the instance is available before doing a retry, if its not, then wait for ~5 min and try again. When the instance becomes available again, resume file transfers.",2 DURACLOUD-714,"UI: Display of content items names which include #. characters","If a content item with the name ""#.txt"" exists in a space, then when it is selected in the UI, the content detail will display for a moment, but will then act as if the spaces tab has been selected. It appears that both the hash and period characters need to be in the content ID, but other characters can be added and the behavior remains the same.",1 DURACLOUD-715,"SDSC Auth Endpoint","This improvement is to switch the authUrl found in SDSCStorageProvider from: ""https://cloud.sdsc.edu/auth/v1.0 to: https://duracloud.auth.cloud.sdsc.edu/auth/v1.0",1 DURACLOUD-716,"SyncTool --dryrun","This improvement is to create a ""dryrun"" flag on the synctool. This flag would tell the synctool to go through the steps of determining which files should be sync-ed up to DuraCloud (including deleted and modified content), but instead of actually performing the sync, just a report will be produced detailing which content would have been sync-ed.",3 DURACLOUD-717,"Synctool - Java7: SSLProtocolException","With Java7, the following exception is thrown when trying to use the Synctool in any standard configuration: Exception in thread ""main"" java.lang.RuntimeException: Could not create connection to DuraStore due to Error retrieving content stores. handshake alert: unrecognized_name The issue and workaround are posted here: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7127374",2 DURACLOUD-720,"Use /mnt on EC2 Instances","This improvement is to leverage /mnt on EC2 instances for temp files, at the least. /var/log/tomcat6 should link to /mnt An analysis should also be performed to determine if /home or the webapps should use /mnt as well.",1 DURACLOUD-721,"Limit Tomcat logs","This task is to update the log management settings for the Tomcat server on DuraCloud AMIs. These settings are contained in /etc/logrotate.d/tomcat6. Log rotation settings should be updated to rotate on size (perhaps 256M) rather than date, and limit the number of rotations which are kept (to perhaps 3). A full list of options for these settings can be found with ""man logrotate"".",1 DURACLOUD-723,"Sync and Retrieval Tool metadata support","This task is to update the Sync Tool and Retrieval Tool to be able to handle content tags and metadata. A DuraCloud space should be able to be pulled down to the local file system using the Retrieval Tool and pushed back up to a new DuraCloud space using the Sync Tool without suffering any loss of metadata.",3 DURACLOUD-724,"Initializing an instance to use locally stored services is not working","Performing an instance initialization by pointing to the local service repo (on the same host) no longer works. The issue is that the Executor in DuraBoss attempts to make calls to DuraService during initialization, but gets a 401 (unauthorized) error which halts the initialization process.",1 DURACLOUD-725,"Audit Log on Space Delete","This issue is that the audit log (i.e. x-duracloud-admin / audit/storage-audit-log--