diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a77d911b5..0f3f876d7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ on: push: branches: - - master + - main - develop pull_request: @@ -30,7 +30,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: github branch run: | if [ "${{ github.event.release.target_commitish }}" != "" ]; then @@ -39,7 +39,7 @@ jobs: BRANCH=${GITHUB_REF##*/} fi echo "GITHUB_BRANCH=${BRANCH}" >> $GITHUB_ENV - if [ "$BRANCH" == "master" ]; then + if [ "$BRANCH" == "main" ]; then echo "CLOWDER_VERSION=$(awk '/version = / { print $4 }' project/Build.scala | sed 's/"//g')" >> $GITHUB_ENV elif [ "$BRANCH" == "develop" ]; then echo "CLOWDER_VERSION=develop" >> $GITHUB_ENV @@ -51,12 +51,12 @@ jobs: distribution: 'zulu' java-version: 8 - name: Cache SBT ivy cache - uses: actions/cache@v1 + uses: actions/cache@v3 with: path: ~/.ivy2/cache key: ${{ runner.os }}-sbt-ivy-cache-${{ hashFiles('project/Build.scala') }} - name: Cache SBT - uses: actions/cache@v1 + uses: actions/cache@v3 with: path: ~/.sbt key: ${{ runner.os }}-sbt-${{ hashFiles('project/Build.scala') }} @@ -85,7 +85,7 @@ jobs: ports: - 27017:27017 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: github branch run: | if [ "${{ github.event.release.target_commitish }}" != "" ]; then @@ -94,7 +94,7 @@ jobs: BRANCH=${GITHUB_REF##*/} fi echo "GITHUB_BRANCH=${BRANCH}" >> $GITHUB_ENV - if [ "$BRANCH" == "master" ]; then + if [ "$BRANCH" == "main" ]; then echo "CLOWDER_VERSION=$(awk '/version = / { print $4 }' project/Build.scala | sed 's/"//g')" >> $GITHUB_ENV elif [ "$BRANCH" == "develop" ]; then echo "CLOWDER_VERSION=develop" >> $GITHUB_ENV @@ -130,7 +130,7 @@ jobs: runs-on: ubuntu-latest needs: build steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: github branch run: | if [ "${{ github.event.release.target_commitish }}" != "" ]; then @@ -139,7 +139,7 @@ jobs: BRANCH=${GITHUB_REF##*/} fi echo "GITHUB_BRANCH=${BRANCH}" >> $GITHUB_ENV - if [ "$BRANCH" == "master" ]; then + if [ "$BRANCH" == "main" ]; then echo "CLOWDER_VERSION=$(awk '/version = / { print $4 }' project/Build.scala | sed 's/"//g')" >> $GITHUB_ENV elif [ "$BRANCH" == "develop" ]; then echo "CLOWDER_VERSION=develop" >> $GITHUB_ENV @@ -177,13 +177,13 @@ jobs: done rm ${ZIPFILE} zip -r ${ZIPFILE} ${DIR} - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: clowder.zip path: target/universal/clowder-*.zip - name: Upload files to a GitHub release if: github.event_name == 'release' && github.event.action == 'created' - uses: svenstaro/upload-release-action@1.1.0 + uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} tag: ${{ github.ref }} @@ -207,7 +207,7 @@ jobs: runs-on: ubuntu-latest needs: build steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: github branch run: | if [ "${{ github.event.release.target_commitish }}" != "" ]; then @@ -216,7 +216,7 @@ jobs: BRANCH=${GITHUB_REF##*/} fi echo "GITHUB_BRANCH=${BRANCH}" >> $GITHUB_ENV - if [ "$BRANCH" == "master" ]; then + if [ "$BRANCH" == "main" ]; then echo "CLOWDER_VERSION=$(awk '/version = / { print $4 }' project/Build.scala | sed 's/"//g')" >> $GITHUB_ENV elif [ "$BRANCH" == "develop" ]; then echo "CLOWDER_VERSION=develop" >> $GITHUB_ENV @@ -237,10 +237,10 @@ jobs: with: path: ~/.sbt key: ${{ runner.os }}-sbt-${{ hashFiles('project/Build.scala') }} - - name: Set up Python 3.7 - uses: actions/setup-python@v1 + - name: Set up Python 3.11 + uses: actions/setup-python@v5 with: - python-version: 3.7 + python-version: 3.11 - name: sbt doc run: ./sbt doc env: @@ -248,7 +248,7 @@ jobs: VERSION: ${{ env.CLOWDER_VERSION }} BUILDNUMBER: ${{ github.run_number }} GITSHA1: ${{ github.sha }} - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: ScalaDoc path: target/scala-*/api/ @@ -266,7 +266,7 @@ jobs: cd doc/src/sphinx/ python -m pip install -r requirements.txt make html epub - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: HTML Documentation path: doc/src/sphinx/_build/html @@ -279,13 +279,13 @@ jobs: key: ${{ secrets.SCP_KEY }} files: "doc/src/sphinx/_build/html/*" target: "CATS/${{ env.CLOWDER_VERSION }}/documentation/sphinx" - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: EPUB Documentation path: doc/src/sphinx/_build/epub/Clowder.epub - name: Upload files to a GitHub release if: github.event_name == 'release' && github.event.action == 'created' - uses: svenstaro/upload-release-action@1.1.0 + uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} tag: ${{ github.ref }} diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 7702ae180..5e1053543 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -5,7 +5,7 @@ name: Docker # and would not set the right version flags. # This will run when: -# - when new code is pushed to master/develop to push the tags +# - when new code is pushed to main/develop to push the tags # latest and develop # - when a pull request is created and updated to make sure the # Dockerfile is still valid. @@ -16,14 +16,14 @@ name: Docker on: push: branches: - - master + - main - develop pull_request: -# Certain actions will only run when this is the master repo. +# Certain actions will only run when this is the main repo. env: - MASTER_REPO: clowder-framework/clowder + MAIN_REPO: clowder-framework/clowder DOCKERHUB_ORG: clowder jobs: @@ -64,7 +64,7 @@ jobs: PLATFORM: "linux/amd64" steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # calculate some variables that are used later - name: variable setup @@ -77,7 +77,7 @@ jobs: BRANCH=${GITHUB_REF##*/} fi - if [ "$BRANCH" == "master" ]; then + if [ "$BRANCH" == "main" ]; then version="$(awk '/version = / { print $4 }' project/Build.scala | sed 's/"//g')" tags="latest" oldversion="" @@ -115,11 +115,11 @@ jobs: # setup docker build - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Inspect Builder run: | @@ -132,13 +132,13 @@ jobs: # login to registries - name: Login to DockerHub if: env.dockerhub != '' - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} @@ -147,7 +147,7 @@ jobs: # build the clowder docker images - name: Build and push ${{ matrix.IMAGE }}-build if: matrix.IMAGE == 'clowder' - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v6 with: push: true context: ${{ matrix.FOLDER }} @@ -164,7 +164,7 @@ jobs: - name: Build and push ${{ matrix.IMAGE }}-runtime if: matrix.IMAGE == 'clowder' - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v6 with: push: true context: ${{ matrix.FOLDER }} @@ -182,7 +182,7 @@ jobs: # build the other docker images - name: Build and push ${{ matrix.IMAGE }} if: matrix.IMAGE != 'clowder' - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v6 with: push: true context: ${{ matrix.FOLDER }} @@ -198,10 +198,10 @@ jobs: # update README at DockerHub - name: Docker Hub Description - if: env.dockerhub != '' && matrix.README != '' && github.event_name == 'push' && github.repository == env.MASTER_REPO && env.BRANCH == 'master' - uses: peter-evans/dockerhub-description@v2 - env: - DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} - DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} - DOCKERHUB_REPOSITORY: ${{ env.DOCKERHUB_ORG }}/${{ matrix.IMAGE }} - README_FILEPATH: ${{ matrix.README }} + if: env.dockerhub != '' && matrix.README != '' && github.event_name == 'push' && github.repository == env.MAIN_REPO && env.BRANCH == 'main' + uses: peter-evans/dockerhub-description@v4 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + repository: ${{ env.DOCKERHUB_ORG }}/${{ matrix.IMAGE }} + readme-filepath : ${{ matrix.README }} diff --git a/.github/workflows/swagger.yml b/.github/workflows/swagger.yml index b55dfb26f..ad68e05e5 100644 --- a/.github/workflows/swagger.yml +++ b/.github/workflows/swagger.yml @@ -1,14 +1,14 @@ name: swagger # This will run when: -# - when new code is pushed to master/develop to make sure the +# - when new code is pushed to main/develop to make sure the # code does compile. # - when a pull request is created and updated to make sure the # code does compile. on: push: branches: - - master + - main - develop pull_request: @@ -20,7 +20,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: openapi-lint uses: mbowman100/swagger-validator-action@master diff --git a/CHANGELOG.md b/CHANGELOG.md index 37eb95678..e5b170fca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [Unreleased] + +### Fixed +- Removed refrences to repo.typesafe.com from sbt-launch.jar and build.scala + +### Removed +- Removed iRods integration and dependencies. The iRods file storage service and plugin have been completely removed from the codebase. Users who were using iRods for file storage will need to configure an alternative storage backend (filesystem, MongoDB GridFS, or AWS S3). + ## 1.22.1 - 2023-11-10 ### Fixed diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3a2fd3f99..0187dc6d2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,7 +5,7 @@ below. By participating in this project, you agree to abide by the [code of cond Before your code can be accepted, you will have to sign a [CLA](https://clowderframework.org/pdf/Clowder-CLA.pdf) and mail it to lmarini@illinois.edu. -Most of the core development happens on [NCSA Bitbucket][bitbucket]. The `master` and `develop` branches are pushed to +Most of the core development happens on [NCSA Bitbucket][bitbucket]. The `` and `develop` branches are pushed to [GitHub][github] nightly. We encourage contributors to create an account on [NCSA Bitbucket][bitbucket] and make pull requests there. We also accept diff --git a/Dockerfile b/Dockerfile index 3ef75036b..4e03e13dc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # ---------------------------------------------------------------------- # BUILD CLOWDER DIST # ---------------------------------------------------------------------- -FROM openjdk:8-jdk-bullseye as clowder-build +FROM openjdk:8-jdk-bullseye AS clowder-build ARG BRANCH="unknown" ARG VERSION="unknown" @@ -40,7 +40,7 @@ RUN rm -rf target/universal/clowder-*.zip clowder clowder-* \ # ---------------------------------------------------------------------- # BUILD CLOWDER # ---------------------------------------------------------------------- -FROM openjdk:8-jre-bullseye as clowder-runtime +FROM openjdk:8-jre-bullseye AS clowder-runtime # environemnt variables ARG BRANCH="unknown" diff --git a/INSTALL.md b/INSTALL.md index ae9c8ba33..dc1c5e0ab 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -85,7 +85,7 @@ Next we install the script that will install or update clowder. cat > /home/browndog/update-clowder.sh << EOF #!/bin/bash -# CATS-WWW (master) is the main branch for this server +# CATS-WWW () is the main branch for this server # CATS-WWW1 (develop) if you want the latest version clowder_BRANCH=${clowder_BRANCH:-"CATS-WWW1"} diff --git a/app/services/irods/IRODSByteStorageService.scala b/app/services/irods/IRODSByteStorageService.scala deleted file mode 100644 index e36952a86..000000000 --- a/app/services/irods/IRODSByteStorageService.scala +++ /dev/null @@ -1,198 +0,0 @@ -package services.irods - -import java.io._ -import java.security.{DigestInputStream, MessageDigest} - -import models.UUID -import org.apache.commons.codec.binary.Hex -import org.apache.commons.io.input.CountingInputStream -import org.irods.jargon.core.exception.JargonException -import org.irods.jargon.core.pub.io.IRODSFile -import play.api.{Logger, Play} -import play.api.Play._ -import services.ByteStorageService - -/** - * Helper to store data on disk. - * - */ -class IRODSByteStorageService extends ByteStorageService { - /** - * Save the bytes to IRODS - */ - def save(inputStream: InputStream, prefix: String, length: Long): Option[(String, Long)] = { - current.plugin[IRODSPlugin] match { - case None => { - Logger.error("No IRODSPlugin") - None - } - case Some(ipg) => { - var depth = Play.current.configuration.getInt("irods.depth").getOrElse(2) - - var relativePath = "" - var idstr = UUID.generate().stringify - // id seems to be same at the start but more variable at the end - while (depth > 0 && idstr.length > 4) { - depth -= 1 - if (relativePath == "") { - relativePath = idstr.takeRight(2) - } else { - relativePath += java.io.File.separatorChar + idstr.takeRight(2) - } - idstr = idstr.dropRight(2) - } - - // need to use whole id again, to make sure it is unique - relativePath += java.io.File.separatorChar + idstr - - // combine all pieces - val filePath = makePath(ipg.userhome, prefix, relativePath) - - // make sure the connection is open - if (!ipg.conn) { - ipg.openIRODSConnection() - } - - try { - // create folder structure - val file = ipg.getFileFactory().instanceIRODSFile(filePath) - if (!file.getParentFile.isDirectory && !file.getParentFile.mkdirs()) { - return None - } - - // fill a buffer Array - val cis = new CountingInputStream(inputStream) - val fos = ipg.getFileFactory().instanceIRODSFileOutputStream(file) - val buffer = new Array[Byte](16384) - var count: Int = -1 - while ( { - count = cis.read(buffer); count > 0 - }) { - fos.write(buffer, 0, count) - } - fos.close() - - val length = cis.getByteCount - - // finished - Some(relativePath, length) - } catch { - case e: JargonException => { - Logger.error("Could not save file " + filePath) - None - } - case e: IOException => { - Logger.error("Could not save file " + filePath) - None - } - } finally { - ipg.closeIRODSConnection() - } - } - } - } - - /** - * Get the bytes from IRODS - */ - def load(id: String, prefix: String): Option[InputStream] = { - current.plugin[IRODSPlugin] match { - case None => { - Logger.error("No IRODSPlugin") - None - } - case Some(ipg) => { - // combine all pieces - val filePath = makePath(ipg.userhome, prefix, id) - - // find actual file and delete it - if (!ipg.conn) { - ipg.openIRODSConnection() - } - try { - val file = ipg.getFileFactory().instanceIRODSFile(filePath) - val is = ipg.getFileFactory().instanceIRODSFileInputStream(file) - - // HACK with an intermediary buffer - works, no errors - // I could not pass the InputStream is directly to Some(InputStream, String, String, Long) because, - // I think the is.close does not propagate from File > downloads > Enumerator through the chain - // to the IRODSFileInputStream. Closing the stream here works. - val buffer = new ByteArrayOutputStream() - var count: Int = -1 - val data = new Array[Byte](16384) - - while ({count = is.read(data, 0, data.length); count > 0}) { - buffer.write(data, 0, count) - } - is.close() - - Some(new ByteArrayInputStream(buffer.toByteArray)) - } catch { - case e: JargonException => { - Logger.error("Could not retrieve file " + filePath) - None - } - case e: IOException => { - Logger.error("Could not retrieve file " + filePath) - None - } - } finally { - ipg.closeIRODSConnection() - } - } - } - } - - /** - * Delete actual bytes from IRODS - */ - def delete(id: String, prefix: String): Boolean = { - current.plugin[IRODSPlugin] match { - case None => { - Logger.error("No IRODSPlugin") - false - } - case Some(ipg) => { - // combine all pieces - val filePath = makePath(ipg.userhome, prefix, id) - - // find actual file and delete it - if (!ipg.conn) { - ipg.openIRODSConnection() - } - try { - val file = ipg.getFileFactory().instanceIRODSFile(filePath) - if (file.exists()) file.deleteWithForceOption() else true - } catch { - case e: JargonException => { - Logger.error("Could not delete file " + filePath) - false - } - case e: IOException => { - Logger.error("Could not delete file " + filePath) - false - } - } finally { - ipg.closeIRODSConnection() - } - } - } - } - - def makePath(root: String, prefix: String, relativePath: String) = { - // create absolute path - var filePath = if (root.last != IRODSFile.PATH_SEPARATOR_CHAR) { - root + IRODSFile.PATH_SEPARATOR - } else { - root - } - - // add the prefix - if (prefix != "") { - filePath += prefix + IRODSFile.PATH_SEPARATOR - } - - // finally create full path - filePath + relativePath - } -} diff --git a/app/services/irods/IRODSPlugin.scala b/app/services/irods/IRODSPlugin.scala deleted file mode 100644 index 4a4921009..000000000 --- a/app/services/irods/IRODSPlugin.scala +++ /dev/null @@ -1,93 +0,0 @@ -package services.irods - -import play.api.{ Play, Plugin, Logger, Application } -import org.irods.jargon.core.connection.IRODSAccount -import org.irods.jargon.core.pub.IRODSFileSystem -import org.irods.jargon.core.pub.io.IRODSFileFactory -import org.irods.jargon.core.exception.JargonException - -/** - * A concrete storage based on the iRODS file storage system. There are 7 - * required parameters to establish a connection to iRODS including a - * host, port, username, password, user home, zone, and default storage resource - * name. - * - * Setup iRODS connection using Jargon. - * - * @date 2014-08-18 - * - */ -class IRODSPlugin(app: Application) extends Plugin { - - var userhome: String = _ - - var account: IRODSAccount = _ - var irodsFileSystem: IRODSFileSystem = _ - var irodsFileFactory: IRODSFileFactory = _ - private var _conn: Boolean = false - - override def onStart() { - Logger.info("Starting iRODS Plugin.") - openIRODSConnection() - Logger.info("irods: Connected. " + conn) - } - - override def onStop() { - // close connection - closeIRODSConnection() - Logger.info("iRODSPlugin has stopped.") - } - - //Is the plugin enabled? - override def enabled = true - - - def openIRODSConnection() = { - lazy val configuration = Play.current.configuration - // you can now access the application.conf settings - - // seven required fields (similar to .irodsEnv file used in icommands client) - val host = configuration.getString("irods.host").getOrElse("") - val port = configuration.getInt("irods.port").getOrElse(0) - val username = configuration.getString("irods.username").getOrElse("") - val password = configuration.getString("irods.password").getOrElse("") - val zone = configuration.getString("irods.zone").getOrElse("") - val defaultStorageResource = configuration.getString("irods.defaultStorageResource").getOrElse("") - userhome = configuration.getString("irods.userhome").getOrElse("") - - val usercurrent = configuration.getString("irods.usercurrent").getOrElse("") - - try { - account = IRODSAccount.instance(host, port, username, password, userhome, zone, defaultStorageResource) - irodsFileSystem = IRODSFileSystem.instance() // RODSFileSystem shared object, initialized - Logger.debug("irods: Connecting to " + account.toString()) - - // the actual connection, For a given account creates an IRODSFileFactory that can return iRODS file objects for this particular connection. - irodsFileFactory = irodsFileSystem.getIRODSFileFactory(account) - - _conn = true - } catch { - case je: org.irods.jargon.core.exception.JargonException => Logger.error("irods: Error connecting to iRODS server. " + je.toString); _conn = false - case t: Throwable => Logger.error("irods: Unknown error connecting to iRODS server: " + t.toString); _conn = false - } - } - - def closeIRODSConnection() = { - Logger.info("irods: Closing connection.") - irodsFileSystem.closeAndEatExceptions() - _conn = false - } - - // Close the session that is connected to the particular iRODS server with the given account. - def closeIRODSAccountConnection() = { - Logger.info("irods: Closing account connection.") - irodsFileSystem.closeAndEatExceptions(account) - _conn = false - } - - //getters - def getFileFactory(): IRODSFileFactory = { return irodsFileFactory } - def conn = _conn - // setter - def conn_= (value:Boolean):Unit = _conn = value -} \ No newline at end of file diff --git a/conf/application.conf b/conf/application.conf index 2aad1f5df..c63dc009d 100644 --- a/conf/application.conf +++ b/conf/application.conf @@ -324,30 +324,6 @@ filesystem.sourcepaths=[ "/home/globus", ] -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# IRODSPlugin Plugin -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# To use the IRODS filesystem uncomment the following line -#service.byteStorage=services.irods.IRODSByteStorageService -# -# iRODS server host name -irods.host=localhost -# iRODS server port number -irods.port=1247 -# Account name -irods.username=anonymous -# Account password -## if irods.username=anonymous use "" for password (irods.password="") -irods.password="" -# Default storage resource name -irods.defaultStorageResource= demoResc -# iRODS zone -irods.zone=tempZone -# Home directory in iRODS -irods.userhome=/tempZone/home/public -# Current directory in iRODS -irods.usercurrent=/tempZone/home/public - # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Elasticsearch # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/src/sphinx/_static/logo_full.png b/doc/src/sphinx/_static/logo_full.png deleted file mode 100644 index 0ecf1c841..000000000 Binary files a/doc/src/sphinx/_static/logo_full.png and /dev/null differ diff --git a/doc/src/sphinx/develop/architecture.rst b/doc/src/sphinx/develop/architecture.rst index 3e36c8cc2..cb856f5b6 100644 --- a/doc/src/sphinx/develop/architecture.rst +++ b/doc/src/sphinx/develop/architecture.rst @@ -9,7 +9,7 @@ provided for external clients to communicate with the system. These clients can cases as well as headless scripts for system to system communication. A service layer abstracts backend services so that individual deployments can be customized based on available resources. -For example a user might want to store raw files on the file system, MongoDB GridFS, iRods or AWS S3 buckets. +For example a user might want to store raw files on the file system, MongoDB GridFS, or AWS S3 buckets. When new data is added to the system, whether it is via the web interface or through the RESTful API, preprocessing is off-loaded to extraction services in charge of extracting appropriate data and metadata. The extraction services attempt diff --git a/doc/src/sphinx/develop/previewers.rst b/doc/src/sphinx/develop/previewers.rst index b9dc3da31..71da64895 100644 --- a/doc/src/sphinx/develop/previewers.rst +++ b/doc/src/sphinx/develop/previewers.rst @@ -12,4 +12,4 @@ Previewer can work together with extractors and external services. Here is a list of previewer embedded with the core -`source `_. +`source `_. diff --git a/doc/src/sphinx/index.rst b/doc/src/sphinx/index.rst index 25dc21225..7b067518f 100644 --- a/doc/src/sphinx/index.rst +++ b/doc/src/sphinx/index.rst @@ -25,7 +25,7 @@ be customized and deployed on your own cloud. `NCSA Opensource `_. A copy of the source code can also be found on `GitHub `_. - * We are always looking for `contributions `_. + * We are always looking for `contributions `_. ******** Contents diff --git a/project/Build.scala b/project/Build.scala index 585a8137b..05d5ae99c 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -18,7 +18,7 @@ object ApplicationBuild extends Build { def appVersion: String = { gitBranchName match { - case "master" => getVersion + case "" => getVersion case _ => s"${getVersion}-develop" } } @@ -118,9 +118,6 @@ object ApplicationBuild extends Build { // Testing framework "org.scalatestplus" % "play_2.10" % "1.0.0" % "test", - // iRods filestorage - "org.irods.jargon" % "jargon-core" % "3.3.3-beta1", - // jsonp return from /api "org.julienrf" %% "play-jsonp-filter" % "1.1", @@ -153,13 +150,18 @@ object ApplicationBuild extends Build { routesImport += "models._", routesImport += "Binders._", templatesImport += "org.bson.types.ObjectId", - resolvers += Resolver.url("sbt-plugin-releases", url("http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/"))(Resolver.ivyStylePatterns), - resolvers += Resolver.url("sbt-plugin-snapshots", url("http://repo.scala-sbt.org/scalasbt/sbt-plugin-snapshots/"))(Resolver.ivyStylePatterns), + resolvers := Seq( + "Typesafe Releases Repository" at "https://repo.lightbend.com/typesafe/releases/", + "Typesafe repository" at "https://repo.lightbend.com/typesafe/releases/" + ) ++ resolvers.value.filterNot(r => r.name == "Typesafe Releases Repository" || r.name == "Typesafe repository"), + resolvers += Resolver.url("sbt-plugin-releases", url("https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/"))(Resolver.ivyStylePatterns), + resolvers += Resolver.url("sbt-plugin-snapshots", url("https://repo.scala-sbt.org/scalasbt/sbt-plugin-snapshots/"))(Resolver.ivyStylePatterns), resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots", - resolvers += "Aduna" at "http://maven-us.nuxeo.org/nexus/content/repositories/public/", + resolvers += "Aduna" at "https://maven-us.nuxeo.org/nexus/content/repositories/public/", //resolvers += "Forth" at "http://139.91.183.63/repository", - resolvers += "NCSA" at "https://opensource.ncsa.illinois.edu/nexus/content/repositories/thirdparty", - resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/", + //resolvers += "NCSA" at "https://opensource.ncsa.illinois.edu/nexus/content/repositories/thirdparty", + resolvers += "Maven Central" at "https://repo1.maven.org/maven2/", + // add custom folder to the classpath, use this to add/modify clowder: // custom/public/stylesheets/themes - for custom themes diff --git a/project/plugins.sbt b/project/plugins.sbt index 92dfe0fd5..b178cd7a7 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -2,7 +2,7 @@ logLevel := Level.Warn // The Typesafe repository -resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/" +resolvers += "Typesafe repository" at "https://repo.lightbend.com/typesafe/releases/" // Use the Play sbt plugin for Play projects addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.6") diff --git a/public/swagger.yml b/public/swagger.yml index 221e16ff2..f9338cd80 100644 --- a/public/swagger.yml +++ b/public/swagger.yml @@ -16,7 +16,7 @@ info: url: https://clowder.ncsa.illinois.edu/clowder/email license: name: The University of Illinois/NCSA Open Source License (NCSA) - url: https://github.com/clowder-framework/clowder/blob/master/LICENSE + url: https://github.com/clowder-framework/clowder/blob//LICENSE ################################################################################ # Servers # diff --git a/release.sh b/release.sh index ec6c83ba8..e80f404dc 100755 --- a/release.sh +++ b/release.sh @@ -4,7 +4,7 @@ set -e # can use the following to push to isda-registry for testing: -# BRANCH="master" SERVER=isda-registry.ncsa.illinois.edu/ ./release.sh +# BRANCH="" SERVER=isda-registry.ncsa.illinois.edu/ ./release.sh # use DEBUG=echo ./release.sh to print all commands DEBUG=${DEBUG:-""} @@ -19,7 +19,7 @@ BRANCH=${BRANCH:-"$(git rev-parse --abbrev-ref HEAD)"} BRANCH=${BRANCH} VERSION=${TMPVERSION} DEBUG=${DEBUG} $(dirname $0)/docker.sh # find out the version -if [ "${BRANCH}" = "master" ]; then +if [ "${BRANCH}" = "" ]; then VERSION=${VERSION:-""} if [ "${VERSION}" = "" ]; then TMPVERSION=$(awk '/version = / { print $4 }' $(dirname $0)/project/Build.scala | sed 's/"//g') diff --git a/sbt-launch.jar b/sbt-launch.jar index 0d9dd94c5..8779d859b 100644 Binary files a/sbt-launch.jar and b/sbt-launch.jar differ