Copy disabled (too large)
Download .txt
Showing preview only (20,225K chars total). Download the full file to get everything.
Repository: curoverse/arvados
Branch: main
Commit: a4bf6884f81c
Files: 3341
Total size: 18.6 MB
Directory structure:
gitextract_zydnvh49/
├── .gitignore
├── .licenseignore
├── AUTHORS
├── CITATION.cff
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── COPYING
├── Makefile
├── README.md
├── SECURITY.md
├── agpl-3.0.txt
├── apache-2.0.txt
├── build/
│ ├── README
│ ├── build_docker_image.py
│ ├── check-copyright-notices
│ ├── create-plot-data-from-log.sh
│ ├── docker/
│ │ └── python-venv.Dockerfile
│ ├── go-python-package-scripts/
│ │ ├── postinst
│ │ └── prerm
│ ├── package-testing/
│ │ ├── common-test-packages.sh
│ │ ├── deb-common-test-packages.sh
│ │ ├── rpm-common-test-packages.sh
│ │ ├── test-package-arvados-api-server.sh
│ │ ├── test-package-arvados-client.sh
│ │ ├── test-package-arvados-docker-cleaner.sh
│ │ ├── test-package-python3-arvados-cwl-runner.sh
│ │ ├── test-package-python3-arvados-python-client.sh
│ │ ├── test-package-python3-crunchstat-summary.sh
│ │ └── test-package-python3-python-arvados-fuse.sh
│ ├── pypkg_info.py
│ ├── rails-package-scripts/
│ │ ├── README.md
│ │ ├── arvados-api-server.sh
│ │ ├── postinst.sh
│ │ ├── postrm.sh
│ │ └── prerm.sh
│ ├── requirements.build-packages.txt
│ ├── requirements.build.txt
│ ├── requirements.tests.txt
│ ├── run-build-packages-all-targets.sh
│ ├── run-build-packages-one-target.sh
│ ├── run-build-packages-python-and-ruby.sh
│ ├── run-build-packages.sh
│ ├── run-build-test-packages-one-target.sh
│ ├── run-library.sh
│ ├── run-tests.sh
│ └── version-at-commit.sh
├── cc-by-sa-3.0.txt
├── cmd/
│ └── arvados-server/
│ ├── arvados-controller.service
│ ├── arvados-dispatch-cloud.service
│ ├── arvados-dispatch-lsf.service
│ ├── arvados-health.service
│ ├── arvados-ws.service
│ ├── cmd.go
│ ├── crunch-dispatch-slurm.service
│ ├── keep-balance.service
│ ├── keep-web.service
│ ├── keepproxy.service
│ └── keepstore.service
├── contrib/
│ ├── R-sdk/
│ │ ├── .Rbuildignore
│ │ ├── .gitignore
│ │ ├── ArvadosR.Rproj
│ │ ├── DESCRIPTION
│ │ ├── Makefile
│ │ ├── NAMESPACE
│ │ ├── R/
│ │ │ ├── ArvadosFile.R
│ │ │ ├── ArvadosR.R
│ │ │ ├── Collection.R
│ │ │ ├── CollectionTree.R
│ │ │ ├── HttpParser.R
│ │ │ ├── HttpRequest.R
│ │ │ ├── RESTService.R
│ │ │ ├── Subcollection.R
│ │ │ ├── util.R
│ │ │ └── zzz.R
│ │ ├── README.md
│ │ ├── arvados-v1-discovery.json
│ │ ├── generateApi.R
│ │ ├── install_deps.R
│ │ ├── run_test.R
│ │ └── tests/
│ │ ├── testthat/
│ │ │ ├── fakes/
│ │ │ │ ├── FakeArvados.R
│ │ │ │ ├── FakeHttpParser.R
│ │ │ │ ├── FakeHttpRequest.R
│ │ │ │ └── FakeRESTService.R
│ │ │ ├── test-ArvadosFile.R
│ │ │ ├── test-Collection.R
│ │ │ ├── test-CollectionTree.R
│ │ │ ├── test-HttpParser.R
│ │ │ ├── test-HttpRequest.R
│ │ │ ├── test-RESTService.R
│ │ │ ├── test-Subcollection.R
│ │ │ └── test-util.R
│ │ └── testthat.R
│ ├── README.md
│ ├── arvados-bootstrap/
│ │ ├── LICENSE-2.0.txt
│ │ ├── README.md
│ │ ├── pyproject.toml
│ │ └── src/
│ │ └── arv_bootstrap/
│ │ ├── __init__.py
│ │ ├── export_import.py
│ │ ├── federation_migrate.py
│ │ ├── seed.py
│ │ └── stubapi.py
│ ├── arvbash/
│ │ └── arvbash.sh
│ └── java-sdk-v2/
│ ├── .gitignore
│ ├── .licenseignore
│ ├── COPYING
│ ├── README.md
│ ├── agpl-3.0.txt
│ ├── apache-2.0.txt
│ ├── build.gradle
│ ├── gradle.properties
│ ├── settings.gradle
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── arvados/
│ │ │ └── client/
│ │ │ ├── api/
│ │ │ │ ├── client/
│ │ │ │ │ ├── BaseApiClient.java
│ │ │ │ │ ├── BaseStandardApiClient.java
│ │ │ │ │ ├── CollectionsApiClient.java
│ │ │ │ │ ├── ConfigApiClient.java
│ │ │ │ │ ├── CountingFileRequestBody.java
│ │ │ │ │ ├── CountingRequestBody.java
│ │ │ │ │ ├── CountingStreamRequestBody.java
│ │ │ │ │ ├── GroupsApiClient.java
│ │ │ │ │ ├── KeepWebApiClient.java
│ │ │ │ │ ├── LinksApiClient.java
│ │ │ │ │ ├── ProgressListener.java
│ │ │ │ │ ├── UsersApiClient.java
│ │ │ │ │ └── factory/
│ │ │ │ │ └── OkHttpClientFactory.java
│ │ │ │ └── model/
│ │ │ │ ├── ApiError.java
│ │ │ │ ├── ArvadosConfig.java
│ │ │ │ ├── Collection.java
│ │ │ │ ├── CollectionList.java
│ │ │ │ ├── CollectionReplaceFiles.java
│ │ │ │ ├── Group.java
│ │ │ │ ├── GroupList.java
│ │ │ │ ├── Item.java
│ │ │ │ ├── ItemList.java
│ │ │ │ ├── KeepService.java
│ │ │ │ ├── KeepServiceList.java
│ │ │ │ ├── Link.java
│ │ │ │ ├── LinkList.java
│ │ │ │ ├── RuntimeConstraints.java
│ │ │ │ ├── User.java
│ │ │ │ ├── UserList.java
│ │ │ │ └── argument/
│ │ │ │ ├── Argument.java
│ │ │ │ ├── ContentsGroup.java
│ │ │ │ ├── Filter.java
│ │ │ │ ├── ListArgument.java
│ │ │ │ └── UntrashGroup.java
│ │ │ ├── common/
│ │ │ │ ├── Characters.java
│ │ │ │ ├── Headers.java
│ │ │ │ └── Patterns.java
│ │ │ ├── config/
│ │ │ │ ├── ConfigProvider.java
│ │ │ │ ├── ExternalConfigProvider.java
│ │ │ │ ├── FileConfigProvider.java
│ │ │ │ └── WebDAVConfigFetcher.java
│ │ │ ├── exception/
│ │ │ │ ├── ArvadosApiException.java
│ │ │ │ └── ArvadosClientException.java
│ │ │ ├── facade/
│ │ │ │ └── ArvadosFacade.java
│ │ │ ├── logic/
│ │ │ │ ├── collection/
│ │ │ │ │ ├── CollectionFactory.java
│ │ │ │ │ ├── FileToken.java
│ │ │ │ │ ├── ManifestDecoder.java
│ │ │ │ │ ├── ManifestFactory.java
│ │ │ │ │ └── ManifestStream.java
│ │ │ │ └── keep/
│ │ │ │ ├── FileDownloader.java
│ │ │ │ ├── FileUploader.java
│ │ │ │ ├── KeepLocator.java
│ │ │ │ └── exception/
│ │ │ │ ├── DownloadFolderAlreadyExistsException.java
│ │ │ │ └── FileAlreadyExistsException.java
│ │ │ └── utils/
│ │ │ ├── FileMerge.java
│ │ │ └── FileSplit.java
│ │ └── resources/
│ │ └── reference.conf
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── arvados/
│ │ └── client/
│ │ ├── api/
│ │ │ └── client/
│ │ │ ├── BaseStandardApiClientTest.java
│ │ │ ├── CollectionsApiClientTest.java
│ │ │ ├── GroupsApiClientTest.java
│ │ │ ├── KeepWebApiClientTest.java
│ │ │ ├── LinkApiClientTest.java
│ │ │ ├── UsersApiClientTest.java
│ │ │ └── factory/
│ │ │ └── OkHttpClientFactoryTest.java
│ │ ├── config/
│ │ │ ├── ExternalConfigProviderTest.java
│ │ │ └── WebDAVConfigFetcherTest.java
│ │ ├── facade/
│ │ │ ├── ArvadosFacadeIntegrationTest.java
│ │ │ └── ArvadosFacadeTest.java
│ │ ├── junit/
│ │ │ └── categories/
│ │ │ └── IntegrationTests.java
│ │ ├── logic/
│ │ │ ├── collection/
│ │ │ │ ├── FileTokenTest.java
│ │ │ │ ├── ManifestDecoderTest.java
│ │ │ │ ├── ManifestFactoryTest.java
│ │ │ │ └── ManifestStreamTest.java
│ │ │ └── keep/
│ │ │ ├── FileDownloaderTest.java
│ │ │ └── KeepLocatorTest.java
│ │ ├── test/
│ │ │ └── utils/
│ │ │ ├── ApiClientTestUtils.java
│ │ │ ├── ArvadosClientIntegrationTest.java
│ │ │ ├── ArvadosClientMockedWebServerTest.java
│ │ │ ├── ArvadosClientUnitTest.java
│ │ │ ├── FileTestUtils.java
│ │ │ └── RequestMethod.java
│ │ └── utils/
│ │ ├── FileMergeTest.java
│ │ └── FileSplitTest.java
│ └── resources/
│ ├── application.conf
│ ├── integration-tests-application.conf
│ ├── integration-tests-application.conf.example
│ ├── mockito-extensions/
│ │ └── org.mockito.plugins.MockMaker
│ ├── org/
│ │ └── arvados/
│ │ └── client/
│ │ └── api/
│ │ └── client/
│ │ ├── collections-create-manifest.json
│ │ ├── collections-create-simple.json
│ │ ├── collections-download-file.json
│ │ ├── collections-get.json
│ │ ├── collections-list.json
│ │ ├── groups-get.json
│ │ ├── groups-list.json
│ │ ├── keep-client-test-file.txt
│ │ ├── keep-client-upload-response.json
│ │ ├── keep-services-accessible-disk-only.json
│ │ ├── keep-services-accessible.json
│ │ ├── keep-services-get.json
│ │ ├── keep-services-list.json
│ │ ├── keep-services-not-accessible.json
│ │ ├── links-create.json
│ │ ├── links-get.json
│ │ ├── links-list.json
│ │ ├── users-create.json
│ │ ├── users-get.json
│ │ ├── users-list.json
│ │ └── users-system.json
│ └── selfsigned.keystore.jks
├── doc/
│ ├── Gemfile
│ ├── README.textile
│ ├── Rakefile
│ ├── _config.yml
│ ├── _includes/
│ │ ├── _admin_list_collections_without_property_py.liquid
│ │ ├── _admin_set_property_to_collections_under_project_py.liquid
│ │ ├── _admin_update_collection_property_py.liquid
│ │ ├── _assign_volume_uuid.liquid
│ │ ├── _branchname.liquid
│ │ ├── _container_glob_patterns.liquid
│ │ ├── _container_published_ports.liquid
│ │ ├── _container_runtime_constraints.liquid
│ │ ├── _container_scheduling_parameters.liquid
│ │ ├── _contrib_component.liquid
│ │ ├── _download_installer.liquid
│ │ ├── _example_sdk_go.liquid
│ │ ├── _google_analytics.liquid
│ │ ├── _hpc_max_gateway_tunnels.liquid
│ │ ├── _html_tags.liquid
│ │ ├── _install_ansible.liquid
│ │ ├── _install_ca_cert.liquid
│ │ ├── _install_compute_docker.liquid
│ │ ├── _install_compute_fuse.liquid
│ │ ├── _install_cuda.liquid
│ │ ├── _install_debian_key.liquid
│ │ ├── _install_docker_cleaner.liquid
│ │ ├── _install_packages.liquid
│ │ ├── _install_postgres_database.liquid
│ │ ├── _install_rails_command.liquid
│ │ ├── _install_ruby_and_bundler.liquid
│ │ ├── _matomo_analytics.liquid
│ │ ├── _metadata_vocabulary_example.liquid
│ │ ├── _mount_types.liquid
│ │ ├── _multi_host_install_custom_certificates.liquid
│ │ ├── _navbar_left.liquid
│ │ ├── _navbar_top.liquid
│ │ ├── _notebox_begin.liquid
│ │ ├── _notebox_begin_warning.liquid
│ │ ├── _notebox_end.liquid
│ │ ├── _restart_api.liquid
│ │ ├── _setup_debian_repo.liquid
│ │ ├── _setup_redhat_repo.liquid
│ │ ├── _singularity_mksquashfs_configuration.liquid
│ │ ├── _ssh_addkey.liquid
│ │ ├── _ssh_intro.liquid
│ │ ├── _ssl_config_multi.liquid
│ │ ├── _ssl_config_single.liquid
│ │ ├── _start_service.liquid
│ │ ├── _supportedlinux.liquid
│ │ ├── _tutorial_expectations.liquid
│ │ ├── _tutorial_expectations_workstation.liquid
│ │ ├── _tutorial_hello_cwl.liquid
│ │ ├── _webring.liquid
│ │ └── _what_is_cwl.liquid
│ ├── _layouts/
│ │ └── default.html.liquid
│ ├── admin/
│ │ ├── User account states.odg
│ │ ├── cloudtest.html.textile.liquid
│ │ ├── collection-managed-properties.html.textile.liquid
│ │ ├── collection-versioning.html.textile.liquid
│ │ ├── config-urls.html.textile.liquid
│ │ ├── config.html.textile.liquid
│ │ ├── controlling-container-reuse.html.textile.liquid
│ │ ├── diagnostics.html.textile.liquid
│ │ ├── dispatch.html.textile.liquid
│ │ ├── federation.html.textile.liquid
│ │ ├── group-management.html.textile.liquid
│ │ ├── health-checks.html.textile.liquid
│ │ ├── index.html.textile.liquid
│ │ ├── inspect.html.textile.liquid
│ │ ├── keep-balance.html.textile.liquid
│ │ ├── keep-faster-gc-s3.html.textile.liquid
│ │ ├── keep-measuring-deduplication.html.textile.liquid
│ │ ├── keep-recovering-data.html.textile.liquid
│ │ ├── link-accounts.html.textile.liquid
│ │ ├── logging.html.textile.liquid
│ │ ├── logs-table-management.html.textile.liquid
│ │ ├── maintenance-and-upgrading.html.textile.liquid
│ │ ├── management-token.html.textile.liquid
│ │ ├── memory-cpu-profiling.html.textile.liquid
│ │ ├── metadata-vocabulary.html.textile.liquid
│ │ ├── metrics.html.textile.liquid
│ │ ├── migrating-providers.html.textile.liquid
│ │ ├── reassign-ownership.html.textile.liquid
│ │ ├── restricting-upload-download.html.textile.liquid
│ │ ├── scoped-tokens.html.textile.liquid
│ │ ├── spot-instances.html.textile.liquid
│ │ ├── storage-classes.html.textile.liquid
│ │ ├── token-expiration-policy.html.textile.liquid
│ │ ├── upgrading.html.textile.liquid
│ │ ├── user-activity.html.textile.liquid
│ │ ├── user-management-cli.html.textile.liquid
│ │ └── user-management.html.textile.liquid
│ ├── api/
│ │ ├── dispatch.html.textile.liquid
│ │ ├── execution.html.textile.liquid
│ │ ├── index.html.textile.liquid
│ │ ├── keep-s3.html.textile.liquid
│ │ ├── keep-web-urls.html.textile.liquid
│ │ ├── keep-webdav.html.textile.liquid
│ │ ├── methods/
│ │ │ ├── api_client_authorizations.html.textile.liquid
│ │ │ ├── authorized_keys.html.textile.liquid
│ │ │ ├── collections.html.textile.liquid
│ │ │ ├── computed_permissions.html.textile.liquid
│ │ │ ├── container_requests.html.textile.liquid
│ │ │ ├── containers.html.textile.liquid
│ │ │ ├── credentials.html.textile.liquid
│ │ │ ├── groups.html.textile.liquid
│ │ │ ├── keep_services.html.textile.liquid
│ │ │ ├── links.html.textile.liquid
│ │ │ ├── logs.html.textile.liquid
│ │ │ ├── user_agreements.html.textile.liquid
│ │ │ ├── users.html.textile.liquid
│ │ │ ├── virtual_machines.html.textile.liquid
│ │ │ └── workflows.html.textile.liquid
│ │ ├── methods.html.textile.liquid
│ │ ├── permission-model.html.textile.liquid
│ │ ├── projects.html.textile.liquid
│ │ ├── properties.html.textile.liquid
│ │ ├── requests.html.textile.liquid
│ │ ├── resources.html.textile.liquid
│ │ └── tokens.html.textile.liquid
│ ├── architecture/
│ │ ├── Arvados_arch.odg
│ │ ├── Arvados_federation.odg
│ │ ├── dispatchcloud.html.textile.liquid
│ │ ├── federation.html.textile.liquid
│ │ ├── hpc.html.textile.liquid
│ │ ├── index.html.textile.liquid
│ │ ├── keep-clients.html.textile.liquid
│ │ ├── keep-components-overview.html.textile.liquid
│ │ ├── keep-data-lifecycle.html.textile.liquid
│ │ ├── manifest-format.html.textile.liquid
│ │ ├── singularity.html.textile.liquid
│ │ └── storage.html.textile.liquid
│ ├── css/
│ │ ├── R.css
│ │ ├── badges.css
│ │ ├── bootstrap-theme.css
│ │ ├── bootstrap.css
│ │ ├── button-override.css
│ │ ├── carousel-override.css
│ │ ├── code.css
│ │ ├── font-awesome.css
│ │ ├── images.css
│ │ ├── layout.css
│ │ └── nav-list.css
│ ├── development/
│ │ ├── CodingStandards.md
│ │ ├── DevelopmentProcess.md
│ │ ├── DistroVersions.md
│ │ ├── Prerequisites.md
│ │ ├── RunningTests.md
│ │ ├── UpdatingDependencies.md
│ │ ├── git.conf
│ │ ├── prepare-commit-msg.sh
│ │ └── release/
│ │ ├── Checklist.md
│ │ ├── FastqPipeline.md
│ │ ├── JavaSDK.md
│ │ ├── ManualTests.md
│ │ └── Zenodo.md
│ ├── examples/
│ │ └── config/
│ │ └── zzzzz.yml
│ ├── fonts/
│ │ └── FontAwesome.otf
│ ├── index.html.liquid
│ ├── install/
│ │ ├── arvbox.html.textile.liquid
│ │ ├── config.html.textile.liquid
│ │ ├── configure-azure-blob-storage.html.textile.liquid
│ │ ├── configure-fs-storage.html.textile.liquid
│ │ ├── configure-s3-object-storage.html.textile.liquid
│ │ ├── container-shell-access.html.textile.liquid
│ │ ├── crunch2/
│ │ │ ├── install-compute-node-docker.html.textile.liquid
│ │ │ └── install-compute-node-singularity.html.textile.liquid
│ │ ├── crunch2-cloud/
│ │ │ ├── install-compute-node.html.textile.liquid
│ │ │ └── install-dispatch-cloud.html.textile.liquid
│ │ ├── crunch2-lsf/
│ │ │ └── install-dispatch.html.textile.liquid
│ │ ├── crunch2-slurm/
│ │ │ ├── configure-slurm.html.textile.liquid
│ │ │ ├── install-dispatch.html.textile.liquid
│ │ │ └── install-test.html.textile.liquid
│ │ ├── diagnostics.html.textile.liquid
│ │ ├── index.html.textile.liquid
│ │ ├── install-api-server.html.textile.liquid
│ │ ├── install-docker.html.textile.liquid
│ │ ├── install-keep-balance.html.textile.liquid
│ │ ├── install-keep-web.html.textile.liquid
│ │ ├── install-keepproxy.html.textile.liquid
│ │ ├── install-keepstore.html.textile.liquid
│ │ ├── install-manual-prerequisites.html.textile.liquid
│ │ ├── install-multi-host.html.textile.liquid
│ │ ├── install-postgresql.html.textile.liquid
│ │ ├── install-shell-server.html.textile.liquid
│ │ ├── install-single-host.html.textile.liquid
│ │ ├── install-webshell.html.textile.liquid
│ │ ├── install-workbench2-app.html.textile.liquid
│ │ ├── install-ws.html.textile.liquid
│ │ ├── new_cluster_checklist_AWS.xlsx
│ │ ├── new_cluster_checklist_Azure.xlsx
│ │ ├── new_cluster_checklist_slurm.xlsx
│ │ ├── nginx.html.textile.liquid
│ │ ├── packages.html.textile.liquid
│ │ ├── proxy-chain.odg
│ │ ├── ruby.html.textile.liquid
│ │ ├── salt-multi-host.html.textile.liquid
│ │ ├── salt-single-host.html.textile.liquid
│ │ ├── setup-login.html.textile.liquid
│ │ └── workbench.html.textile.liquid
│ ├── js/
│ │ └── bootstrap.js
│ ├── pysdk_pdoc.py
│ ├── sdk/
│ │ ├── cli/
│ │ │ ├── index.html.textile.liquid
│ │ │ ├── install.html.textile.liquid
│ │ │ ├── reference.html.textile.liquid
│ │ │ └── subcommands.html.textile.liquid
│ │ ├── fuse/
│ │ │ ├── install.html.textile.liquid
│ │ │ └── options.html.textile.liquid
│ │ ├── go/
│ │ │ ├── example.html.textile.liquid
│ │ │ └── index.html.textile.liquid
│ │ ├── index.html.textile.liquid
│ │ ├── java-v2/
│ │ │ ├── example.html.textile.liquid
│ │ │ ├── index.html.textile.liquid
│ │ │ └── javadoc.html.textile.liquid
│ │ ├── python/
│ │ │ ├── api-client.html.textile.liquid
│ │ │ ├── arvados-cwl-runner.html.textile.liquid
│ │ │ ├── cookbook.html.textile.liquid
│ │ │ ├── events.html.textile.liquid
│ │ │ ├── python.html.textile.liquid
│ │ │ └── sdk-python.html.textile.liquid
│ │ └── ruby/
│ │ ├── example.html.textile.liquid
│ │ └── index.html.textile.liquid
│ ├── user/
│ │ ├── copying/
│ │ │ ├── LICENSE-2.0.html
│ │ │ ├── agpl-3.0.html
│ │ │ ├── by-sa-3.0.html
│ │ │ └── copying.html.textile.liquid
│ │ ├── cwl/
│ │ │ ├── arvados-vscode-training.html.md.liquid
│ │ │ ├── bwa-mem/
│ │ │ │ ├── bwa-mem-input-local.yml
│ │ │ │ ├── bwa-mem-input-mixed.yml
│ │ │ │ ├── bwa-mem-input-uuids.yml
│ │ │ │ ├── bwa-mem-input.yml
│ │ │ │ ├── bwa-mem-template.yml
│ │ │ │ └── bwa-mem.cwl
│ │ │ ├── costanalyzer.html.textile.liquid
│ │ │ ├── crunchstat-summary.html.textile.liquid
│ │ │ ├── cwl-extensions.html.textile.liquid
│ │ │ ├── cwl-run-options.html.textile.liquid
│ │ │ ├── cwl-runner.html.textile.liquid
│ │ │ ├── cwl-style.html.textile.liquid
│ │ │ ├── cwl-versions.html.textile.liquid
│ │ │ ├── federated/
│ │ │ │ ├── FileOnCluster.yml
│ │ │ │ ├── colors_to_select.txt
│ │ │ │ ├── extract.cwl
│ │ │ │ ├── extract.py
│ │ │ │ ├── feddemo.cwl
│ │ │ │ ├── items1.csv
│ │ │ │ ├── items2.csv
│ │ │ │ ├── items3.csv
│ │ │ │ ├── merge.cwl
│ │ │ │ ├── merge.py
│ │ │ │ └── shards.yml
│ │ │ ├── federated-workflow.odg
│ │ │ ├── federated-workflows.html.textile.liquid
│ │ │ └── rnaseq-cwl-training.html.textile.liquid
│ │ ├── debugging/
│ │ │ └── container-shell-access.html.textile.liquid
│ │ ├── getting_started/
│ │ │ ├── check-environment.html.textile.liquid
│ │ │ ├── community.html.textile.liquid
│ │ │ ├── setup-cli.html.textile.liquid
│ │ │ ├── ssh-access-unix.html.textile.liquid
│ │ │ ├── ssh-access-windows.html.textile.liquid
│ │ │ ├── vm-login-with-webshell.html.textile.liquid
│ │ │ └── workbench.html.textile.liquid
│ │ ├── index.html.textile.liquid
│ │ ├── reference/
│ │ │ ├── api-tokens.html.textile.liquid
│ │ │ └── cookbook.html.textile.liquid
│ │ ├── topics/
│ │ │ ├── arv-copy.html.textile.liquid
│ │ │ ├── arv-docker.html.textile.liquid
│ │ │ ├── arvados-sync-external-sources.html.textile.liquid
│ │ │ ├── collection-versioning.html.textile.liquid
│ │ │ ├── external-inputs.html.textile.liquid
│ │ │ ├── link-accounts.html.textile.liquid
│ │ │ ├── service-containers.html.textile.liquid
│ │ │ ├── storage-classes.html.textile.liquid
│ │ │ └── workbench-migration.html.textile.liquid
│ │ └── tutorials/
│ │ ├── tutorial-keep-collection-lifecycle.html.textile.liquid
│ │ ├── tutorial-keep-get.html.textile.liquid
│ │ ├── tutorial-keep-mount-gnu-linux.html.textile.liquid
│ │ ├── tutorial-keep-mount-os-x.html.textile.liquid
│ │ ├── tutorial-keep-mount-windows.html.textile.liquid
│ │ ├── tutorial-keep.html.textile.liquid
│ │ ├── tutorial-projects.html.textile.liquid
│ │ ├── tutorial-workflow-workbench.html.textile.liquid
│ │ ├── wgs-tutorial.html.textile.liquid
│ │ └── writing-cwl-workflow.html.textile.liquid
│ ├── zenweb-fix-body.rb
│ ├── zenweb-liquid.rb
│ └── zenweb-textile.rb
├── go.mod
├── go.sum
├── lib/
│ ├── boot/
│ │ ├── cert.go
│ │ ├── cmd.go
│ │ ├── example.sh
│ │ ├── helpers.go
│ │ ├── nginx.go
│ │ ├── passenger.go
│ │ ├── postgresql.go
│ │ ├── rails_db.go
│ │ ├── rails_db_test.go
│ │ ├── service.go
│ │ ├── supervisor.go
│ │ ├── supervisor_test.go
│ │ └── workbench2.go
│ ├── cli/
│ │ ├── external.go
│ │ ├── flags.go
│ │ ├── get.go
│ │ └── get_test.go
│ ├── cloud/
│ │ ├── azure/
│ │ │ ├── azure.go
│ │ │ └── azure_test.go
│ │ ├── cloudtest/
│ │ │ ├── cmd.go
│ │ │ ├── tester.go
│ │ │ └── tester_test.go
│ │ ├── ec2/
│ │ │ ├── ec2.go
│ │ │ └── ec2_test.go
│ │ ├── interfaces.go
│ │ ├── loopback/
│ │ │ ├── loopback.go
│ │ │ └── loopback_test.go
│ │ ├── price.go
│ │ └── price_test.go
│ ├── cmd/
│ │ ├── cmd.go
│ │ ├── cmd_test.go
│ │ └── parseflags.go
│ ├── cmdtest/
│ │ └── leakcheck.go
│ ├── config/
│ │ ├── cmd.go
│ │ ├── cmd_test.go
│ │ ├── config.default.yml
│ │ ├── default.go
│ │ ├── deprecated.go
│ │ ├── deprecated_keepstore.go
│ │ ├── deprecated_keepstore_test.go
│ │ ├── deprecated_test.go
│ │ ├── export.go
│ │ ├── export_test.go
│ │ ├── load.go
│ │ ├── load_test.go
│ │ └── uptodate_test.go
│ ├── controller/
│ │ ├── api/
│ │ │ └── routable.go
│ │ ├── auth_test.go
│ │ ├── cmd.go
│ │ ├── dblock/
│ │ │ ├── dblock.go
│ │ │ └── dblock_test.go
│ │ ├── fed_generic.go
│ │ ├── federation/
│ │ │ ├── collection_test.go
│ │ │ ├── conn.go
│ │ │ ├── federation_test.go
│ │ │ ├── generate.go
│ │ │ ├── generated.go
│ │ │ ├── generated_test.go
│ │ │ ├── group_test.go
│ │ │ ├── list.go
│ │ │ ├── list_test.go
│ │ │ ├── login_test.go
│ │ │ ├── logout_test.go
│ │ │ └── user_test.go
│ │ ├── federation.go
│ │ ├── federation_test.go
│ │ ├── handler.go
│ │ ├── handler_test.go
│ │ ├── integration_test.go
│ │ ├── localdb/
│ │ │ ├── authorized_key.go
│ │ │ ├── authorized_key_test.go
│ │ │ ├── collection.go
│ │ │ ├── collection_test.go
│ │ │ ├── conn.go
│ │ │ ├── container.go
│ │ │ ├── container_gateway.go
│ │ │ ├── container_gateway_test.go
│ │ │ ├── container_request.go
│ │ │ ├── container_request_test.go
│ │ │ ├── container_test.go
│ │ │ ├── docker_test.go
│ │ │ ├── group.go
│ │ │ ├── group_test.go
│ │ │ ├── link.go
│ │ │ ├── link_test.go
│ │ │ ├── localdb_test.go
│ │ │ ├── log_activity.go
│ │ │ ├── log_activity_test.go
│ │ │ ├── login.go
│ │ │ ├── login_docker_test/
│ │ │ │ ├── add_example_user.ldif
│ │ │ │ ├── run_controller.sh
│ │ │ │ ├── setup_pam_test.sh
│ │ │ │ ├── setup_suite.sh
│ │ │ │ ├── setup_suite_users.sh
│ │ │ │ ├── start_controller_container.sh
│ │ │ │ └── teardown_suite.sh
│ │ │ ├── login_docker_test.go
│ │ │ ├── login_ldap.go
│ │ │ ├── login_oidc.go
│ │ │ ├── login_oidc_test.go
│ │ │ ├── login_pam.go
│ │ │ ├── login_pam_static.go
│ │ │ ├── login_test.go
│ │ │ ├── login_testuser.go
│ │ │ ├── login_testuser_test.go
│ │ │ ├── logout.go
│ │ │ └── testdata/
│ │ │ ├── dsa.pub
│ │ │ ├── ecdsa-sk.pub
│ │ │ ├── ecdsa.pub
│ │ │ ├── ed25519-sk.pub
│ │ │ ├── ed25519.pub
│ │ │ ├── generate
│ │ │ └── rsa.pub
│ │ ├── proxy.go
│ │ ├── rails_restart_test.go
│ │ ├── railsproxy/
│ │ │ └── railsproxy.go
│ │ ├── router/
│ │ │ ├── checker_test.go
│ │ │ ├── error.go
│ │ │ ├── request.go
│ │ │ ├── request_test.go
│ │ │ ├── response.go
│ │ │ ├── router.go
│ │ │ └── router_test.go
│ │ ├── rpc/
│ │ │ ├── conn.go
│ │ │ └── conn_test.go
│ │ ├── semaphore.go
│ │ ├── server_test.go
│ │ └── trash.go
│ ├── crunchrun/
│ │ ├── background.go
│ │ ├── bufthenwrite.go
│ │ ├── cgroup.go
│ │ ├── cgroup_test.go
│ │ ├── container_gateway.go
│ │ ├── copier.go
│ │ ├── copier_test.go
│ │ ├── crunchrun.go
│ │ ├── crunchrun_test.go
│ │ ├── cuda.go
│ │ ├── docker.go
│ │ ├── docker_test.go
│ │ ├── executor.go
│ │ ├── executor_test.go
│ │ ├── integration_test.go
│ │ ├── logging.go
│ │ ├── logging_test.go
│ │ ├── logscanner.go
│ │ ├── logscanner_test.go
│ │ ├── singularity.go
│ │ ├── singularity_test.go
│ │ └── testdata/
│ │ └── fakestat/
│ │ ├── cgroup.procs
│ │ └── cgroupid/
│ │ ├── cgroup.procs
│ │ └── memory.stat
│ ├── crunchstat/
│ │ ├── command.go
│ │ ├── crunchstat.go
│ │ ├── crunchstat_test.go
│ │ └── testdata/
│ │ ├── debian10/
│ │ │ ├── proc/
│ │ │ │ ├── 3288/
│ │ │ │ │ ├── cgroup
│ │ │ │ │ ├── cpuset
│ │ │ │ │ └── net/
│ │ │ │ │ └── dev
│ │ │ │ ├── cpuinfo
│ │ │ │ ├── mounts
│ │ │ │ └── self/
│ │ │ │ └── smaps
│ │ │ └── sys/
│ │ │ └── fs/
│ │ │ └── cgroup/
│ │ │ └── user.slice/
│ │ │ ├── cpu.max
│ │ │ ├── io.stat
│ │ │ └── user-1000.slice/
│ │ │ └── session-7.scope/
│ │ │ ├── cpu.stat
│ │ │ ├── memory.current
│ │ │ ├── memory.stat
│ │ │ └── memory.swap.current
│ │ ├── debian11/
│ │ │ ├── proc/
│ │ │ │ ├── 4153022/
│ │ │ │ │ ├── cgroup
│ │ │ │ │ ├── cpuset
│ │ │ │ │ └── net/
│ │ │ │ │ └── dev
│ │ │ │ ├── cpuinfo
│ │ │ │ ├── mounts
│ │ │ │ └── self/
│ │ │ │ └── smaps
│ │ │ └── sys/
│ │ │ └── fs/
│ │ │ └── cgroup/
│ │ │ └── user.slice/
│ │ │ ├── cpu.max
│ │ │ ├── cpuset.cpus.effective
│ │ │ ├── io.stat
│ │ │ └── user-1000.slice/
│ │ │ └── session-5424.scope/
│ │ │ ├── cpu.stat
│ │ │ ├── memory.current
│ │ │ ├── memory.stat
│ │ │ └── memory.swap.current
│ │ ├── debian12/
│ │ │ ├── proc/
│ │ │ │ ├── 1115883/
│ │ │ │ │ ├── cgroup
│ │ │ │ │ ├── cpuset
│ │ │ │ │ └── net/
│ │ │ │ │ └── dev
│ │ │ │ ├── cpuinfo
│ │ │ │ ├── mounts
│ │ │ │ └── self/
│ │ │ │ └── smaps
│ │ │ └── sys/
│ │ │ └── fs/
│ │ │ └── cgroup/
│ │ │ └── user.slice/
│ │ │ ├── cpuset.cpus.effective
│ │ │ ├── io.stat
│ │ │ └── user-1000.slice/
│ │ │ └── session-4.scope/
│ │ │ ├── cpu.max
│ │ │ ├── cpu.stat
│ │ │ ├── memory.current
│ │ │ ├── memory.stat
│ │ │ └── memory.swap.current
│ │ ├── ubuntu1804/
│ │ │ ├── proc/
│ │ │ │ ├── 2523/
│ │ │ │ │ ├── cgroup
│ │ │ │ │ ├── cpuset
│ │ │ │ │ └── net/
│ │ │ │ │ └── dev
│ │ │ │ ├── cpuinfo
│ │ │ │ ├── mounts
│ │ │ │ └── self/
│ │ │ │ └── smaps
│ │ │ └── sys/
│ │ │ └── fs/
│ │ │ └── cgroup/
│ │ │ ├── blkio/
│ │ │ │ └── user.slice/
│ │ │ │ └── blkio.throttle.io_service_bytes
│ │ │ ├── cpu,cpuacct/
│ │ │ │ └── user.slice/
│ │ │ │ └── cpuacct.stat
│ │ │ ├── cpuset/
│ │ │ │ └── cpuset.cpus
│ │ │ ├── memory/
│ │ │ │ └── user.slice/
│ │ │ │ └── memory.stat
│ │ │ └── unified/
│ │ │ └── user.slice/
│ │ │ └── user-1000.slice/
│ │ │ └── session-1.scope/
│ │ │ └── cpu.stat
│ │ ├── ubuntu2004/
│ │ │ ├── proc/
│ │ │ │ ├── 1360/
│ │ │ │ │ ├── cgroup
│ │ │ │ │ ├── cpuset
│ │ │ │ │ └── net/
│ │ │ │ │ └── dev
│ │ │ │ ├── cpuinfo
│ │ │ │ ├── mounts
│ │ │ │ └── self/
│ │ │ │ └── smaps
│ │ │ └── sys/
│ │ │ └── fs/
│ │ │ └── cgroup/
│ │ │ ├── blkio/
│ │ │ │ └── user.slice/
│ │ │ │ └── blkio.throttle.io_service_bytes
│ │ │ ├── cpu,cpuacct/
│ │ │ │ └── user.slice/
│ │ │ │ └── cpuacct.stat
│ │ │ ├── cpuset/
│ │ │ │ └── cpuset.cpus
│ │ │ ├── memory/
│ │ │ │ └── user.slice/
│ │ │ │ └── user-1000.slice/
│ │ │ │ └── session-2.scope/
│ │ │ │ └── memory.stat
│ │ │ └── unified/
│ │ │ └── user.slice/
│ │ │ └── user-1000.slice/
│ │ │ └── session-2.scope/
│ │ │ └── cpu.stat
│ │ └── ubuntu2204/
│ │ ├── proc/
│ │ │ ├── 1967/
│ │ │ │ ├── cgroup
│ │ │ │ ├── cpuset
│ │ │ │ └── net/
│ │ │ │ └── dev
│ │ │ ├── cpuinfo
│ │ │ ├── mounts
│ │ │ └── self/
│ │ │ └── smaps
│ │ └── sys/
│ │ └── fs/
│ │ └── cgroup/
│ │ └── user.slice/
│ │ ├── cpu.max
│ │ ├── cpuset.cpus.effective
│ │ ├── io.stat
│ │ └── user-1000.slice/
│ │ └── session-1.scope/
│ │ ├── cpu.stat
│ │ ├── memory.current
│ │ ├── memory.stat
│ │ └── memory.swap.current
│ ├── ctrlctx/
│ │ ├── auth.go
│ │ ├── auth_test.go
│ │ ├── db.go
│ │ └── db_test.go
│ ├── deduplicationreport/
│ │ ├── command.go
│ │ ├── report.go
│ │ └── report_test.go
│ ├── diagnostics/
│ │ ├── cmd.go
│ │ └── docker_image_test.go
│ ├── dispatchcloud/
│ │ ├── adminclient.go
│ │ ├── cmd.go
│ │ ├── container/
│ │ │ ├── node_size.go
│ │ │ ├── node_size_test.go
│ │ │ ├── queue.go
│ │ │ └── queue_test.go
│ │ ├── dispatcher.go
│ │ ├── dispatcher_test.go
│ │ ├── driver.go
│ │ ├── gocheck_test.go
│ │ ├── logger.go
│ │ ├── readme.go
│ │ ├── readme_states.txt
│ │ ├── scheduler/
│ │ │ ├── fix_stale_locks.go
│ │ │ ├── gocheck_test.go
│ │ │ ├── interfaces.go
│ │ │ ├── run_queue.go
│ │ │ ├── run_queue_test.go
│ │ │ ├── scheduler.go
│ │ │ ├── sync.go
│ │ │ └── sync_test.go
│ │ ├── sshexecutor/
│ │ │ ├── executor.go
│ │ │ └── executor_test.go
│ │ ├── test/
│ │ │ ├── doc.go
│ │ │ ├── fixtures.go
│ │ │ ├── queue.go
│ │ │ ├── ssh_service.go
│ │ │ ├── sshkey_dispatch
│ │ │ ├── sshkey_dispatch.pub
│ │ │ ├── sshkey_vm
│ │ │ ├── sshkey_vm.pub
│ │ │ └── stub_driver.go
│ │ └── worker/
│ │ ├── gocheck_test.go
│ │ ├── pool.go
│ │ ├── pool_test.go
│ │ ├── runner.go
│ │ ├── throttle.go
│ │ ├── throttle_test.go
│ │ ├── verify.go
│ │ ├── worker.go
│ │ └── worker_test.go
│ ├── lsf/
│ │ ├── dispatch.go
│ │ ├── dispatch_test.go
│ │ ├── lsfcli.go
│ │ └── lsfqueue.go
│ ├── mount/
│ │ ├── command.go
│ │ ├── command_test.go
│ │ ├── fs.go
│ │ └── fs_test.go
│ ├── pam/
│ │ ├── .gitignore
│ │ ├── README
│ │ ├── docker_test.go
│ │ ├── fpm-info.sh
│ │ ├── pam-configs-arvados
│ │ ├── pam_arvados.go
│ │ ├── pam_c.go
│ │ └── testclient.go
│ ├── recovercollection/
│ │ ├── cmd.go
│ │ └── cmd_test.go
│ ├── selfsigned/
│ │ ├── cert.go
│ │ └── cert_test.go
│ ├── service/
│ │ ├── cmd.go
│ │ ├── cmd_test.go
│ │ ├── error.go
│ │ ├── log.go
│ │ └── tls.go
│ └── webdavfs/
│ ├── fs.go
│ └── fs_test.go
├── sdk/
│ ├── cli/
│ │ ├── .gitignore
│ │ ├── Gemfile
│ │ ├── LICENSE-2.0.txt
│ │ ├── Rakefile
│ │ ├── arvados-cli.gemspec
│ │ ├── bin/
│ │ │ ├── arv
│ │ │ └── arv-tag
│ │ └── test/
│ │ ├── binstub_arv-mount/
│ │ │ └── arv-mount
│ │ ├── binstub_clean_fail/
│ │ │ └── arv-mount
│ │ ├── binstub_docker_noop/
│ │ │ └── docker.io
│ │ ├── binstub_output_coll_owner/
│ │ │ └── python
│ │ ├── binstub_sanity_check/
│ │ │ ├── docker.io
│ │ │ └── true
│ │ ├── test_arv-collection-create.rb
│ │ ├── test_arv-get.rb
│ │ ├── test_arv-keep-get.rb
│ │ ├── test_arv-keep-put.rb
│ │ ├── test_arv-tag.rb
│ │ └── test_arv-ws.rb
│ ├── cwl/
│ │ ├── LICENSE-2.0.txt
│ │ ├── MANIFEST.in
│ │ ├── README.rst
│ │ ├── arvados_cwl/
│ │ │ ├── __init__.py
│ │ │ ├── arv-cwl-schema-v1.0.yml
│ │ │ ├── arv-cwl-schema-v1.1.yml
│ │ │ ├── arv-cwl-schema-v1.2.yml
│ │ │ ├── arvcontainer.py
│ │ │ ├── arvdocker.py
│ │ │ ├── arvtool.py
│ │ │ ├── arvworkflow.py
│ │ │ ├── context.py
│ │ │ ├── done.py
│ │ │ ├── executor.py
│ │ │ ├── fsaccess.py
│ │ │ ├── pathmapper.py
│ │ │ ├── perf.py
│ │ │ ├── runner.py
│ │ │ └── util.py
│ │ ├── arvados_version.py
│ │ ├── bin/
│ │ │ ├── arvados-cwl-runner
│ │ │ └── cwl-runner
│ │ ├── fpm-info.sh
│ │ ├── pyproject.toml
│ │ ├── setup.py
│ │ └── tests/
│ │ ├── 10380-trailing-slash-dir.cwl
│ │ ├── 12213-keepref-expr.cwl
│ │ ├── 12213-keepref-job.yml
│ │ ├── 12213-keepref-tool.cwl
│ │ ├── 12213-keepref-wf.cwl
│ │ ├── 12418-glob-empty-collection.cwl
│ │ ├── 13931-size-job.yml
│ │ ├── 13931-size.cwl
│ │ ├── 13976-keepref-wf.cwl
│ │ ├── 15241-writable-dir-job.json
│ │ ├── 15241-writable-dir.cwl
│ │ ├── 15295-bad-keep-ref.cwl
│ │ ├── 16169-no-listing-hint.cwl
│ │ ├── 16377-missing-default.cwl
│ │ ├── 17004-output-props.cwl
│ │ ├── 17267-broken-schemas.cwl
│ │ ├── 17521-dot-slash-glob.cwl
│ │ ├── 17801-runtime-outdir.cwl
│ │ ├── 17858-pack-visit-crash.cwl
│ │ ├── 17879-ignore-sbg-fields-job.yml
│ │ ├── 17879-ignore-sbg-fields.cwl
│ │ ├── 18888-download_def.cwl
│ │ ├── 18994-basename/
│ │ │ ├── check.cwl
│ │ │ ├── rename.cwl
│ │ │ ├── wf_ren.cwl
│ │ │ └── whale.txt
│ │ ├── 19070-copy-deps.cwl
│ │ ├── 19109-upload-secondary/
│ │ │ ├── file1.txt
│ │ │ ├── file1.txt.tbi
│ │ │ ├── file2.txt
│ │ │ └── file2.txt.tbi
│ │ ├── 19109-upload-secondary.cwl
│ │ ├── 19109-upload-secondary.yml
│ │ ├── 19678-name-id.cwl
│ │ ├── 19678-name-id.yml
│ │ ├── 22466/
│ │ │ ├── fake.bam
│ │ │ └── input.yml
│ │ ├── 22466-output-glob-expressions-secondaryfile.cwl
│ │ ├── __init__.py
│ │ ├── arvados-tests.yml
│ │ ├── badkeep.yml
│ │ ├── cat.cwl
│ │ ├── cat2.cwl
│ │ ├── chipseq/
│ │ │ ├── chip-seq-single.json
│ │ │ ├── cwl-packed.json
│ │ │ └── data/
│ │ │ └── Genomes/
│ │ │ ├── Blacklist/
│ │ │ │ └── lists2/
│ │ │ │ └── hg38-blacklist.v2.bed
│ │ │ ├── Drosophila_melanogaster/
│ │ │ │ └── dmel_r6.16/
│ │ │ │ ├── Bowtie2Index/
│ │ │ │ │ └── genome.fa
│ │ │ │ └── WholeGenome/
│ │ │ │ ├── genome.dict
│ │ │ │ ├── genome.fa
│ │ │ │ └── genome.fa.fai
│ │ │ └── Homo_sapiens/
│ │ │ └── GRCh38.p2/
│ │ │ ├── Bowtie2Index/
│ │ │ │ └── genome.fa
│ │ │ └── WholeGenome/
│ │ │ ├── genome.dict
│ │ │ ├── genome.fa
│ │ │ └── genome.fa.fai
│ │ ├── collection_per_tool/
│ │ │ ├── a.txt
│ │ │ ├── b.txt
│ │ │ ├── c.txt
│ │ │ ├── collection_per_tool.cwl
│ │ │ ├── collection_per_tool_packed.cwl
│ │ │ ├── collection_per_tool_wrapper.cwl
│ │ │ ├── step1.cwl
│ │ │ └── step2.cwl
│ │ ├── conftest.py
│ │ ├── container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y-arv-mount.txt
│ │ ├── container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y-crunchstat.txt
│ │ ├── dir-job.yml
│ │ ├── dir-job2.yml
│ │ ├── fake-keep-mount/
│ │ │ └── fake_collection_dir/
│ │ │ └── subdir/
│ │ │ └── banana.txt
│ │ ├── federation/
│ │ │ ├── README
│ │ │ ├── cases/
│ │ │ │ ├── base-case.cwl
│ │ │ │ ├── cat.cwl
│ │ │ │ ├── hint-on-tool.cwl
│ │ │ │ ├── hint-on-wf.cwl
│ │ │ │ ├── md5sum-tool-hint.cwl
│ │ │ │ ├── md5sum.cwl
│ │ │ │ ├── remote-case.cwl
│ │ │ │ ├── rev-input-to-output.cwl
│ │ │ │ ├── rev.cwl
│ │ │ │ ├── runner-home-step-remote.cwl
│ │ │ │ ├── runner-remote-step-home.cwl
│ │ │ │ ├── scatter-gather.cwl
│ │ │ │ ├── threestep-remote.cwl
│ │ │ │ ├── twostep-both-remote.cwl
│ │ │ │ ├── twostep-home-to-remote.cwl
│ │ │ │ ├── twostep-remote-copy-to-home.cwl
│ │ │ │ └── twostep-remote-to-home.cwl
│ │ │ ├── data/
│ │ │ │ ├── base-case-input.txt
│ │ │ │ ├── hint-on-tool.txt
│ │ │ │ ├── hint-on-wf.txt
│ │ │ │ ├── remote-case-input.txt
│ │ │ │ ├── runner-home-step-remote-input.txt
│ │ │ │ ├── runner-remote-step-home-input.txt
│ │ │ │ ├── scatter-gather-s1.txt
│ │ │ │ ├── scatter-gather-s2.txt
│ │ │ │ ├── scatter-gather-s3.txt
│ │ │ │ ├── threestep-remote.txt
│ │ │ │ ├── twostep-both-remote.txt
│ │ │ │ ├── twostep-home-to-remote.txt
│ │ │ │ ├── twostep-remote-copy-to-home.txt
│ │ │ │ └── twostep-remote-to-home.txt
│ │ │ ├── framework/
│ │ │ │ ├── check-exist.cwl
│ │ │ │ ├── check_exist.py
│ │ │ │ ├── dockerbuild.cwl
│ │ │ │ ├── prepare.cwl
│ │ │ │ ├── prepare.py
│ │ │ │ ├── run-acr.cwl
│ │ │ │ └── testcase.cwl
│ │ │ └── main.cwl
│ │ ├── hello.yml
│ │ ├── hg19/
│ │ │ ├── hg19.fa
│ │ │ ├── hg19.fa.amb
│ │ │ ├── hg19.fa.ann
│ │ │ └── hg19.fa.fai
│ │ ├── hw.py
│ │ ├── input/
│ │ │ └── blorp.txt
│ │ ├── keep-dir-test-input.cwl
│ │ ├── keep-dir-test-input2.cwl
│ │ ├── keep-dir-test-input3.cwl
│ │ ├── listing-job.yml
│ │ ├── makes_intermediates/
│ │ │ ├── echo.cwl
│ │ │ ├── hello1.txt
│ │ │ ├── run_in_single.cwl
│ │ │ └── subwf.cwl
│ │ ├── matcher.py
│ │ ├── mock_discovery.py
│ │ ├── noreuse.cwl
│ │ ├── octo.yml
│ │ ├── oom/
│ │ │ ├── 19975-oom-mispelled.cwl
│ │ │ ├── 19975-oom.cwl
│ │ │ ├── 19975-oom3.cwl
│ │ │ ├── fakeoom.py
│ │ │ ├── fakeoom.yml
│ │ │ ├── fakeoom2.py
│ │ │ ├── fakeoom2.yml
│ │ │ ├── fakeoom3.py
│ │ │ └── fakeoom3.yml
│ │ ├── order/
│ │ │ ├── empty_order.json
│ │ │ └── inputs_test_order.json
│ │ ├── scripts/
│ │ │ └── download_all_data.sh
│ │ ├── secondary/
│ │ │ ├── dir/
│ │ │ │ ├── hg19.fa
│ │ │ │ ├── hg19.fa.amb
│ │ │ │ ├── hg19.fa.ann
│ │ │ │ └── hg19.fa.fai
│ │ │ ├── ls.cwl
│ │ │ ├── sub.cwl
│ │ │ ├── wf-job.yml
│ │ │ └── wf.cwl
│ │ ├── secondaryFiles/
│ │ │ ├── example1.cwl
│ │ │ ├── example3.cwl
│ │ │ ├── hello.txt
│ │ │ ├── hello.txt.idx
│ │ │ └── inp3.yml
│ │ ├── secret_test_job.yml
│ │ ├── stdout.cwl
│ │ ├── submit_test_job.json
│ │ ├── submit_test_job_missing.json
│ │ ├── submit_test_job_s3.json
│ │ ├── submit_test_job_with_inconsistent_uuids.json
│ │ ├── submit_test_job_with_mismatched_uuids.json
│ │ ├── submit_test_job_with_uuids.json
│ │ ├── test_conformance.py
│ │ ├── test_container.py
│ │ ├── test_copy_deps.py
│ │ ├── test_fsaccess.py
│ │ ├── test_integration.py
│ │ ├── test_make_output.py
│ │ ├── test_pathmapper.py
│ │ ├── test_submit.py
│ │ ├── test_tq.py
│ │ ├── test_urljoin.py
│ │ ├── test_util.py
│ │ ├── testdir/
│ │ │ ├── a
│ │ │ ├── b
│ │ │ └── c/
│ │ │ └── d
│ │ ├── tmp1/
│ │ │ └── tmp2/
│ │ │ └── tmp3/
│ │ │ └── .gitkeep
│ │ ├── tool/
│ │ │ ├── blub.txt
│ │ │ ├── blub.txt.cat
│ │ │ ├── submit_tool.cwl
│ │ │ ├── submit_tool_map.cwl
│ │ │ ├── tool_with_sf.cwl
│ │ │ └── tool_with_sf.yml
│ │ ├── wf/
│ │ │ ├── 16169-step.cwl
│ │ │ ├── check_mem.py
│ │ │ ├── echo-subwf.cwl
│ │ │ ├── echo-wf.cwl
│ │ │ ├── echo_a.cwl
│ │ │ ├── echo_b.cwl
│ │ │ ├── expect_arvworkflow.cwl
│ │ │ ├── expect_packed.cwl
│ │ │ ├── expect_upload_packed.cwl
│ │ │ ├── expect_upload_wrapper.cwl
│ │ │ ├── expect_upload_wrapper_altname.cwl
│ │ │ ├── expect_upload_wrapper_map.cwl
│ │ │ ├── hello.txt
│ │ │ ├── indir1/
│ │ │ │ └── hello2.txt
│ │ │ ├── inputs_test.cwl
│ │ │ ├── listing_deep.cwl
│ │ │ ├── listing_none.cwl
│ │ │ ├── listing_shallow.cwl
│ │ │ ├── output_dir.cwl
│ │ │ ├── output_dir_wf.cwl
│ │ │ ├── revsort/
│ │ │ │ ├── revsort.cwl
│ │ │ │ ├── revtool.cwl
│ │ │ │ └── sorttool.cwl
│ │ │ ├── runin-reqs-wf.cwl
│ │ │ ├── runin-reqs-wf2.cwl
│ │ │ ├── runin-reqs-wf3.cwl
│ │ │ ├── runin-reqs-wf4.cwl
│ │ │ ├── runin-reqs-wf5.cwl
│ │ │ ├── runin-wf.cwl
│ │ │ ├── runin-with-ttl-wf.cwl
│ │ │ ├── runseparate-wf.cwl
│ │ │ ├── scatter2.cwl
│ │ │ ├── scatter2_subwf.cwl
│ │ │ ├── secret_job.cwl
│ │ │ ├── secret_wf.cwl
│ │ │ ├── submit_keepref_wf.cwl
│ │ │ ├── submit_storage_class_wf.cwl
│ │ │ ├── submit_wf.cwl
│ │ │ ├── submit_wf_map.cwl
│ │ │ ├── submit_wf_no_reuse.cwl
│ │ │ ├── submit_wf_packed.cwl
│ │ │ ├── submit_wf_process_properties.cwl
│ │ │ ├── submit_wf_runner_resources.cwl
│ │ │ ├── submit_wf_wrapper.cwl
│ │ │ └── trick_defaults2.cwl
│ │ └── wf-defaults/
│ │ ├── default-dir1.cwl
│ │ ├── default-dir2.cwl
│ │ ├── default-dir3.cwl
│ │ ├── default-dir4.cwl
│ │ ├── default-dir5.cwl
│ │ ├── default-dir6.cwl
│ │ ├── default-dir6a.cwl
│ │ ├── default-dir7.cwl
│ │ ├── default-dir7a.cwl
│ │ ├── default-dir8.cwl
│ │ ├── inp1/
│ │ │ └── hello.txt
│ │ ├── wf1.cwl
│ │ ├── wf2.cwl
│ │ ├── wf3.cwl
│ │ ├── wf4.cwl
│ │ ├── wf5.cwl
│ │ ├── wf6.cwl
│ │ ├── wf7.cwl
│ │ └── wf8.cwl
│ ├── go/
│ │ ├── arvados/
│ │ │ ├── api.go
│ │ │ ├── api_client_authorization.go
│ │ │ ├── authorized_key.go
│ │ │ ├── blob_signature.go
│ │ │ ├── blob_signature_test.go
│ │ │ ├── block_segment.go
│ │ │ ├── block_segment_test.go
│ │ │ ├── byte_size.go
│ │ │ ├── byte_size_test.go
│ │ │ ├── client.go
│ │ │ ├── client_test.go
│ │ │ ├── collection.go
│ │ │ ├── collection_test.go
│ │ │ ├── config.go
│ │ │ ├── config_test.go
│ │ │ ├── container.go
│ │ │ ├── container_gateway.go
│ │ │ ├── context.go
│ │ │ ├── contextgroup.go
│ │ │ ├── credential.go
│ │ │ ├── doc.go
│ │ │ ├── duration.go
│ │ │ ├── duration_test.go
│ │ │ ├── error.go
│ │ │ ├── fs_backend.go
│ │ │ ├── fs_base.go
│ │ │ ├── fs_collection.go
│ │ │ ├── fs_collection_test.go
│ │ │ ├── fs_deferred.go
│ │ │ ├── fs_filehandle.go
│ │ │ ├── fs_getternode.go
│ │ │ ├── fs_lookup.go
│ │ │ ├── fs_project.go
│ │ │ ├── fs_project_test.go
│ │ │ ├── fs_site.go
│ │ │ ├── fs_site_test.go
│ │ │ ├── fs_users.go
│ │ │ ├── group.go
│ │ │ ├── integration_test_cluster.go
│ │ │ ├── keep_block.go
│ │ │ ├── keep_cache.go
│ │ │ ├── keep_cache_test.go
│ │ │ ├── keep_metrics.go
│ │ │ ├── keep_service.go
│ │ │ ├── keep_service_test.go
│ │ │ ├── limiter.go
│ │ │ ├── limiter_test.go
│ │ │ ├── link.go
│ │ │ ├── log.go
│ │ │ ├── login.go
│ │ │ ├── node.go
│ │ │ ├── postgresql.go
│ │ │ ├── resource_list.go
│ │ │ ├── resource_list_test.go
│ │ │ ├── throttle.go
│ │ │ ├── tls_certs.go
│ │ │ ├── tls_certs_test.go
│ │ │ ├── tls_certs_test_showenv.go
│ │ │ ├── user.go
│ │ │ ├── virtual_machine.go
│ │ │ ├── vocabulary.go
│ │ │ ├── vocabulary_test.go
│ │ │ └── workflow.go
│ │ ├── arvadosclient/
│ │ │ ├── arvadosclient.go
│ │ │ ├── arvadosclient_test.go
│ │ │ └── pool.go
│ │ ├── arvadostest/
│ │ │ ├── api.go
│ │ │ ├── api_test.go
│ │ │ ├── busybox_image.go
│ │ │ ├── db.go
│ │ │ ├── fixtures.go
│ │ │ ├── keep_stub.go
│ │ │ ├── manifest.go
│ │ │ ├── metrics.go
│ │ │ ├── oidc_provider.go
│ │ │ ├── proxy.go
│ │ │ ├── run_servers.go
│ │ │ └── stub.go
│ │ ├── asyncbuf/
│ │ │ ├── buf.go
│ │ │ └── buf_test.go
│ │ ├── auth/
│ │ │ ├── auth.go
│ │ │ ├── handlers.go
│ │ │ ├── handlers_test.go
│ │ │ └── salt.go
│ │ ├── blockdigest/
│ │ │ ├── blockdigest.go
│ │ │ ├── blockdigest_test.go
│ │ │ └── testing.go
│ │ ├── config/
│ │ │ ├── dump.go
│ │ │ └── load.go
│ │ ├── ctxlog/
│ │ │ └── log.go
│ │ ├── dispatch/
│ │ │ ├── dispatch.go
│ │ │ ├── dispatch_test.go
│ │ │ ├── throttle.go
│ │ │ └── throttle_test.go
│ │ ├── health/
│ │ │ ├── aggregator.go
│ │ │ ├── aggregator_test.go
│ │ │ ├── handler.go
│ │ │ └── handler_test.go
│ │ ├── httpserver/
│ │ │ ├── error.go
│ │ │ ├── httpserver.go
│ │ │ ├── id_generator.go
│ │ │ ├── inspect.go
│ │ │ ├── inspect_test.go
│ │ │ ├── log.go
│ │ │ ├── logger.go
│ │ │ ├── logger_test.go
│ │ │ ├── metrics.go
│ │ │ ├── request_limiter.go
│ │ │ ├── request_limiter_test.go
│ │ │ └── responsewriter.go
│ │ ├── keepclient/
│ │ │ ├── collectionreader.go
│ │ │ ├── collectionreader_test.go
│ │ │ ├── discover.go
│ │ │ ├── discover_test.go
│ │ │ ├── gateway_shim.go
│ │ │ ├── hashcheck.go
│ │ │ ├── hashcheck_test.go
│ │ │ ├── keepclient.go
│ │ │ ├── keepclient_test.go
│ │ │ ├── perms.go
│ │ │ ├── root_sorter.go
│ │ │ ├── root_sorter_test.go
│ │ │ └── support.go
│ │ └── stats/
│ │ ├── duration.go
│ │ └── duration_test.go
│ ├── python/
│ │ ├── LICENSE-2.0.txt
│ │ ├── MANIFEST.in
│ │ ├── README.rst
│ │ ├── arvados/
│ │ │ ├── __init__.py
│ │ │ ├── _internal/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── basedirs.py
│ │ │ │ ├── diskcache.py
│ │ │ │ ├── downloaderbase.py
│ │ │ │ ├── http_to_keep.py
│ │ │ │ ├── pycurl.py
│ │ │ │ ├── report_template.py
│ │ │ │ ├── s3_to_keep.py
│ │ │ │ ├── streams.py
│ │ │ │ └── to_keep_util.py
│ │ │ ├── api.py
│ │ │ ├── arvfile.py
│ │ │ ├── cache.py
│ │ │ ├── collection.py
│ │ │ ├── commands/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _util.py
│ │ │ │ ├── arv_copy.py
│ │ │ │ ├── arvcli.py
│ │ │ │ ├── get.py
│ │ │ │ ├── keepdocker.py
│ │ │ │ ├── ls.py
│ │ │ │ ├── put.py
│ │ │ │ ├── run.py
│ │ │ │ └── ws.py
│ │ │ ├── config.py
│ │ │ ├── errors.py
│ │ │ ├── events.py
│ │ │ ├── keep.py
│ │ │ ├── logging.py
│ │ │ ├── retry.py
│ │ │ ├── safeapi.py
│ │ │ ├── util.py
│ │ │ └── vocabulary.py
│ │ ├── arvados-v1-discovery.json
│ │ ├── arvados_version.py
│ │ ├── bin/
│ │ │ ├── arv-copy
│ │ │ ├── arv-get
│ │ │ ├── arv-keepdocker
│ │ │ ├── arv-ls
│ │ │ ├── arv-normalize
│ │ │ ├── arv-put
│ │ │ └── arv-ws
│ │ ├── discovery2pydoc.py
│ │ ├── fpm-info.sh
│ │ ├── pyproject.toml
│ │ ├── pytest.ini
│ │ ├── setup.py
│ │ └── tests/
│ │ ├── __init__.py
│ │ ├── arvados_testutil.py
│ │ ├── conftest.py
│ │ ├── data/
│ │ │ ├── 1000G_ref_manifest
│ │ │ ├── hello-world-README.txt
│ │ │ └── jlake_manifest
│ │ ├── keepstub.py
│ │ ├── manifest_examples.py
│ │ ├── nginx.conf
│ │ ├── performance/
│ │ │ ├── __init__.py
│ │ │ ├── performance_profiler.py
│ │ │ └── test_a_sample.py
│ │ ├── run_test_server.py
│ │ ├── test_api.py
│ │ ├── test_arv_copy.py
│ │ ├── test_arv_get.py
│ │ ├── test_arv_keepdocker.py
│ │ ├── test_arv_ls.py
│ │ ├── test_arv_normalize.py
│ │ ├── test_arv_put.py
│ │ ├── test_arv_ws.py
│ │ ├── test_arvcli.py
│ │ ├── test_arvfile.py
│ │ ├── test_basedirs.py
│ │ ├── test_benchmark_collections.py
│ │ ├── test_cmd_util.py
│ │ ├── test_collections.py
│ │ ├── test_computed_permissions.py
│ │ ├── test_config.py
│ │ ├── test_errors.py
│ │ ├── test_events.py
│ │ ├── test_http_cache.py
│ │ ├── test_http_to_keep.py
│ │ ├── test_internal.py
│ │ ├── test_keep_client.py
│ │ ├── test_keep_locator.py
│ │ ├── test_retry.py
│ │ ├── test_retry_job_helpers.py
│ │ ├── test_s3_to_keep.py
│ │ ├── test_storage_classes.py
│ │ ├── test_stream.py
│ │ ├── test_util.py
│ │ └── test_vocabulary.py
│ ├── ruby/
│ │ ├── .gitignore
│ │ ├── Gemfile
│ │ ├── LICENSE-2.0.txt
│ │ ├── README
│ │ ├── Rakefile
│ │ ├── arvados.gemspec
│ │ ├── lib/
│ │ │ ├── arvados/
│ │ │ │ ├── collection.rb
│ │ │ │ ├── google_api_client.rb
│ │ │ │ └── keep.rb
│ │ │ └── arvados.rb
│ │ └── test/
│ │ ├── sdk_fixtures.rb
│ │ ├── test_big_request.rb
│ │ ├── test_collection.rb
│ │ ├── test_keep_manifest.rb
│ │ └── test_request_id.rb
│ └── ruby-google-api-client/
│ ├── .gitignore
│ ├── .rspec
│ ├── .travis.yml
│ ├── .yardopts
│ ├── CHANGELOG.md
│ ├── CONTRIBUTING.md
│ ├── Gemfile
│ ├── LICENSE
│ ├── README.md
│ ├── Rakefile
│ ├── arvados-google-api-client.gemspec
│ ├── lib/
│ │ ├── cacerts.pem
│ │ ├── compat/
│ │ │ └── multi_json.rb
│ │ └── google/
│ │ ├── api_client/
│ │ │ ├── auth/
│ │ │ │ ├── compute_service_account.rb
│ │ │ │ ├── file_storage.rb
│ │ │ │ ├── installed_app.rb
│ │ │ │ ├── jwt_asserter.rb
│ │ │ │ ├── key_utils.rb
│ │ │ │ ├── pkcs12.rb
│ │ │ │ ├── storage.rb
│ │ │ │ └── storages/
│ │ │ │ ├── file_store.rb
│ │ │ │ └── redis_store.rb
│ │ │ ├── batch.rb
│ │ │ ├── charset.rb
│ │ │ ├── client_secrets.rb
│ │ │ ├── discovery/
│ │ │ │ ├── api.rb
│ │ │ │ ├── media.rb
│ │ │ │ ├── method.rb
│ │ │ │ ├── resource.rb
│ │ │ │ └── schema.rb
│ │ │ ├── discovery.rb
│ │ │ ├── environment.rb
│ │ │ ├── errors.rb
│ │ │ ├── logging.rb
│ │ │ ├── media.rb
│ │ │ ├── railtie.rb
│ │ │ ├── reference.rb
│ │ │ ├── request.rb
│ │ │ ├── result.rb
│ │ │ ├── service/
│ │ │ │ ├── batch.rb
│ │ │ │ ├── request.rb
│ │ │ │ ├── resource.rb
│ │ │ │ ├── result.rb
│ │ │ │ ├── simple_file_store.rb
│ │ │ │ └── stub_generator.rb
│ │ │ ├── service.rb
│ │ │ ├── service_account.rb
│ │ │ └── version.rb
│ │ └── api_client.rb
│ ├── rakelib/
│ │ ├── gem.rake
│ │ ├── git.rake
│ │ ├── metrics.rake
│ │ ├── spec.rake
│ │ ├── wiki.rake
│ │ └── yard.rake
│ ├── script/
│ │ ├── package
│ │ └── release
│ ├── spec/
│ │ ├── fixtures/
│ │ │ └── files/
│ │ │ ├── auth_stored_credentials.json
│ │ │ ├── client_secrets.json
│ │ │ ├── privatekey.p12
│ │ │ ├── sample.txt
│ │ │ ├── secret.pem
│ │ │ └── zoo.json
│ │ ├── google/
│ │ │ ├── api_client/
│ │ │ │ ├── auth/
│ │ │ │ │ ├── storage_spec.rb
│ │ │ │ │ └── storages/
│ │ │ │ │ ├── file_store_spec.rb
│ │ │ │ │ └── redis_store_spec.rb
│ │ │ │ ├── batch_spec.rb
│ │ │ │ ├── client_secrets_spec.rb
│ │ │ │ ├── discovery_spec.rb
│ │ │ │ ├── gzip_spec.rb
│ │ │ │ ├── media_spec.rb
│ │ │ │ ├── request_spec.rb
│ │ │ │ ├── result_spec.rb
│ │ │ │ ├── service_account_spec.rb
│ │ │ │ ├── service_spec.rb
│ │ │ │ └── simple_file_store_spec.rb
│ │ │ └── api_client_spec.rb
│ │ └── spec_helper.rb
│ └── yard/
│ ├── bin/
│ │ └── yard-wiki
│ ├── lib/
│ │ ├── yard/
│ │ │ ├── cli/
│ │ │ │ └── wiki.rb
│ │ │ ├── rake/
│ │ │ │ └── wikidoc_task.rb
│ │ │ ├── serializers/
│ │ │ │ └── wiki_serializer.rb
│ │ │ └── templates/
│ │ │ └── helpers/
│ │ │ └── wiki_helper.rb
│ │ └── yard-google-code.rb
│ └── templates/
│ └── default/
│ ├── class/
│ │ └── setup.rb
│ ├── docstring/
│ │ └── setup.rb
│ ├── method/
│ │ └── setup.rb
│ ├── method_details/
│ │ └── setup.rb
│ ├── module/
│ │ └── setup.rb
│ └── tags/
│ └── setup.rb
├── services/
│ ├── api/
│ │ ├── .gitignore
│ │ ├── Gemfile
│ │ ├── Passengerfile.json
│ │ ├── README
│ │ ├── Rakefile
│ │ ├── app/
│ │ │ ├── assets/
│ │ │ │ ├── config/
│ │ │ │ │ └── manifest.js
│ │ │ │ └── stylesheets/
│ │ │ │ ├── application.css
│ │ │ │ └── scaffolds.css.scss
│ │ │ ├── controllers/
│ │ │ │ ├── application_controller.rb
│ │ │ │ ├── arvados/
│ │ │ │ │ └── v1/
│ │ │ │ │ ├── api_client_authorizations_controller.rb
│ │ │ │ │ ├── authorized_keys_controller.rb
│ │ │ │ │ ├── collections_controller.rb
│ │ │ │ │ ├── computed_permissions_controller.rb
│ │ │ │ │ ├── container_requests_controller.rb
│ │ │ │ │ ├── containers_controller.rb
│ │ │ │ │ ├── credentials_controller.rb
│ │ │ │ │ ├── groups_controller.rb
│ │ │ │ │ ├── keep_services_controller.rb
│ │ │ │ │ ├── links_controller.rb
│ │ │ │ │ ├── logs_controller.rb
│ │ │ │ │ ├── management_controller.rb
│ │ │ │ │ ├── schema_controller.rb
│ │ │ │ │ ├── user_agreements_controller.rb
│ │ │ │ │ ├── users_controller.rb
│ │ │ │ │ ├── virtual_machines_controller.rb
│ │ │ │ │ └── workflows_controller.rb
│ │ │ │ ├── database_controller.rb
│ │ │ │ ├── static_controller.rb
│ │ │ │ ├── sys_controller.rb
│ │ │ │ └── user_sessions_controller.rb
│ │ │ ├── helpers/
│ │ │ │ └── application_helper.rb
│ │ │ ├── mailers/
│ │ │ │ ├── .gitkeep
│ │ │ │ ├── admin_notifier.rb
│ │ │ │ ├── profile_notifier.rb
│ │ │ │ └── user_notifier.rb
│ │ │ ├── middlewares/
│ │ │ │ └── arvados_api_token.rb
│ │ │ ├── models/
│ │ │ │ ├── .gitkeep
│ │ │ │ ├── api_client_authorization.rb
│ │ │ │ ├── application_record.rb
│ │ │ │ ├── arvados_model.rb
│ │ │ │ ├── authorized_key.rb
│ │ │ │ ├── blob.rb
│ │ │ │ ├── collection.rb
│ │ │ │ ├── computed_permission.rb
│ │ │ │ ├── container.rb
│ │ │ │ ├── container_port.rb
│ │ │ │ ├── container_request.rb
│ │ │ │ ├── credential.rb
│ │ │ │ ├── database_seeds.rb
│ │ │ │ ├── frozen_group.rb
│ │ │ │ ├── group.rb
│ │ │ │ ├── jsonb_type.rb
│ │ │ │ ├── keep_service.rb
│ │ │ │ ├── link.rb
│ │ │ │ ├── log.rb
│ │ │ │ ├── trashed_group.rb
│ │ │ │ ├── user.rb
│ │ │ │ ├── user_agreement.rb
│ │ │ │ ├── virtual_machine.rb
│ │ │ │ └── workflow.rb
│ │ │ └── views/
│ │ │ ├── admin_notifier/
│ │ │ │ ├── new_inactive_user.text.erb
│ │ │ │ └── new_user.text.erb
│ │ │ ├── layouts/
│ │ │ │ └── application.html.erb
│ │ │ ├── profile_notifier/
│ │ │ │ └── profile_created.text.erb
│ │ │ ├── static/
│ │ │ │ ├── intro.html.erb
│ │ │ │ └── login_failure.html.erb
│ │ │ ├── user_notifier/
│ │ │ │ └── account_is_setup.text.erb
│ │ │ └── user_sessions/
│ │ │ ├── create.html.erb
│ │ │ └── failure.html.erb
│ │ ├── arvados-railsapi.service
│ │ ├── bin/
│ │ │ ├── bundle
│ │ │ ├── rails
│ │ │ ├── rake
│ │ │ ├── setup
│ │ │ └── update
│ │ ├── config/
│ │ │ ├── application.default.yml
│ │ │ ├── application.rb
│ │ │ ├── application.yml.example
│ │ │ ├── arvados_config.rb
│ │ │ ├── boot.rb
│ │ │ ├── cable.yml
│ │ │ ├── database.yml.example
│ │ │ ├── environment.rb
│ │ │ ├── environments/
│ │ │ │ ├── development.rb.example
│ │ │ │ ├── production.rb.example
│ │ │ │ └── test.rb.example
│ │ │ ├── initializers/
│ │ │ │ ├── andand.rb
│ │ │ │ ├── app_version.rb
│ │ │ │ ├── application_controller_renderer.rb
│ │ │ │ ├── assets.rb
│ │ │ │ ├── authorization.rb
│ │ │ │ ├── backtrace_silencers.rb
│ │ │ │ ├── clear_empty_content_type.rb
│ │ │ │ ├── common_api_template.rb
│ │ │ │ ├── content_security_policy.rb
│ │ │ │ ├── cookies_serializer.rb
│ │ │ │ ├── current_api_client.rb
│ │ │ │ ├── custom_types.rb
│ │ │ │ ├── db_current_time.rb
│ │ │ │ ├── db_timeout.rb
│ │ │ │ ├── filter_parameter_logging.rb
│ │ │ │ ├── fix_www_decode.rb
│ │ │ │ ├── inflections.rb
│ │ │ │ ├── kind_and_etag.rb
│ │ │ │ ├── lograge.rb
│ │ │ │ ├── mime_types.rb
│ │ │ │ ├── net_http.rb
│ │ │ │ ├── oj_mimic_json.rb
│ │ │ │ ├── permissions_policy.rb
│ │ │ │ ├── permit_all_parameters.rb
│ │ │ │ ├── reload_config.rb
│ │ │ │ ├── request_id_middleware.rb
│ │ │ │ ├── session_store.rb
│ │ │ │ ├── time_format.rb
│ │ │ │ ├── time_zone.rb
│ │ │ │ └── wrap_parameters.rb
│ │ │ ├── locales/
│ │ │ │ └── en.yml
│ │ │ ├── puma.rb
│ │ │ ├── routes.rb
│ │ │ ├── secrets.yml
│ │ │ ├── spring.rb
│ │ │ └── unbound.template
│ │ ├── config.ru
│ │ ├── db/
│ │ │ ├── migrate/
│ │ │ │ ├── 20121016005009_create_collections.rb
│ │ │ │ ├── 20130105203021_create_metadata.rb
│ │ │ │ ├── 20130105224358_rename_metadata_class.rb
│ │ │ │ ├── 20130105224618_rename_collection_created_by_client.rb
│ │ │ │ ├── 20130107181109_add_uuid_to_collections.rb
│ │ │ │ ├── 20130107212832_create_nodes.rb
│ │ │ │ ├── 20130109175700_create_pipelines.rb
│ │ │ │ ├── 20130109220548_create_pipeline_invocations.rb
│ │ │ │ ├── 20130113214204_add_index_to_collections_and_metadata.rb
│ │ │ │ ├── 20130116024233_create_specimens.rb
│ │ │ │ ├── 20130116215213_create_projects.rb
│ │ │ │ ├── 20130118002239_rename_metadata_attributes.rb
│ │ │ │ ├── 20130122020042_create_users.rb
│ │ │ │ ├── 20130122201442_create_logs.rb
│ │ │ │ ├── 20130122221616_add_modified_at_to_logs.rb
│ │ │ │ ├── 20130123174514_add_uuid_index_to_users.rb
│ │ │ │ ├── 20130123180224_create_api_clients.rb
│ │ │ │ ├── 20130123180228_create_api_client_authorizations.rb
│ │ │ │ ├── 20130125220425_rename_created_by_to_owner.rb
│ │ │ │ ├── 20130128202518_rename_metadata_to_links.rb
│ │ │ │ ├── 20130128231343_add_properties_to_specimen.rb
│ │ │ │ ├── 20130130205749_add_manifest_text_to_collection.rb
│ │ │ │ ├── 20130203104818_create_jobs.rb
│ │ │ │ ├── 20130203104824_create_job_steps.rb
│ │ │ │ ├── 20130203115329_add_priority_to_jobs.rb
│ │ │ │ ├── 20130207195855_add_index_on_timestamps.rb
│ │ │ │ ├── 20130218181504_add_properties_to_pipeline_invocations.rb
│ │ │ │ ├── 20130226170000_remove_native_target_from_links.rb
│ │ │ │ ├── 20130313175417_rename_projects_to_groups.rb
│ │ │ │ ├── 20130315155820_add_is_locked_by_to_jobs.rb
│ │ │ │ ├── 20130315183626_add_log_to_jobs.rb
│ │ │ │ ├── 20130315213205_add_tasks_summary_to_jobs.rb
│ │ │ │ ├── 20130318002138_add_resource_limits_to_jobs.rb
│ │ │ │ ├── 20130319165853_rename_job_command_to_script.rb
│ │ │ │ ├── 20130319180730_rename_pipeline_invocation_to_pipeline_instance.rb
│ │ │ │ ├── 20130319194637_rename_pipelines_to_pipeline_templates.rb
│ │ │ │ ├── 20130319201431_rename_job_steps_to_job_tasks.rb
│ │ │ │ ├── 20130319235957_add_default_owner_to_users.rb
│ │ │ │ ├── 20130320000107_add_default_owner_to_api_client_authorizations.rb
│ │ │ │ ├── 20130326173804_create_commits.rb
│ │ │ │ ├── 20130326182917_create_commit_ancestors.rb
│ │ │ │ ├── 20130415020241_rename_orvos_to_arvados.rb
│ │ │ │ ├── 20130425024459_create_keep_disks.rb
│ │ │ │ ├── 20130425214427_add_service_host_and_service_port_and_service_ssl_flag_to_keep_disks.rb
│ │ │ │ ├── 20130523060112_add_created_by_job_task_to_job_tasks.rb
│ │ │ │ ├── 20130523060213_add_qsequence_to_job_tasks.rb
│ │ │ │ ├── 20130524042319_fix_job_task_qsequence_type.rb
│ │ │ │ ├── 20130528134100_update_nodes_index.rb
│ │ │ │ ├── 20130606183519_create_authorized_keys.rb
│ │ │ │ ├── 20130608053730_create_virtual_machines.rb
│ │ │ │ ├── 20130610202538_create_repositories.rb
│ │ │ │ ├── 20130611163736_rename_authorized_key_authorized_user_to_authorized_user_uuid.rb
│ │ │ │ ├── 20130612042554_add_name_unique_index_to_repositories.rb
│ │ │ │ ├── 20130617150007_add_is_trusted_to_api_clients.rb
│ │ │ │ ├── 20130626002829_add_is_active_to_users.rb
│ │ │ │ ├── 20130626022810_activate_all_admins.rb
│ │ │ │ ├── 20130627154537_create_traits.rb
│ │ │ │ ├── 20130627184333_create_humans.rb
│ │ │ │ ├── 20130708163414_rename_foreign_uuid_attributes.rb
│ │ │ │ ├── 20130708182912_rename_job_foreign_uuid_attributes.rb
│ │ │ │ ├── 20130708185153_rename_user_default_owner.rb
│ │ │ │ ├── 20130724153034_add_scopes_to_api_client_authorizations.rb
│ │ │ │ ├── 20131007180607_rename_resource_limits_to_runtime_constraints.rb
│ │ │ │ ├── 20140117231056_normalize_collection_uuid.rb
│ │ │ │ ├── 20140124222114_fix_link_kind_underscores.rb
│ │ │ │ ├── 20140129184311_normalize_collection_uuids_in_script_parameters.rb
│ │ │ │ ├── 20140317135600_add_nondeterministic_column_to_job.rb
│ │ │ │ ├── 20140319160547_separate_repository_from_script_version.rb
│ │ │ │ ├── 20140321191343_add_repository_column_to_job.rb
│ │ │ │ ├── 20140324024606_add_output_is_persistent_to_job.rb
│ │ │ │ ├── 20140325175653_remove_kind_columns.rb
│ │ │ │ ├── 20140402001908_add_system_group.rb
│ │ │ │ ├── 20140407184311_rename_log_info_to_properties.rb
│ │ │ │ ├── 20140421140924_add_group_class_to_groups.rb
│ │ │ │ ├── 20140421151939_rename_auth_keys_user_index.rb
│ │ │ │ ├── 20140421151940_timestamps_not_null.rb
│ │ │ │ ├── 20140422011506_pipeline_instance_state.rb
│ │ │ │ ├── 20140423132913_add_object_owner_to_logs.rb
│ │ │ │ ├── 20140423133559_new_scope_format.rb
│ │ │ │ ├── 20140501165548_add_unique_name_index_to_links.rb
│ │ │ │ ├── 20140519205916_create_keep_services.rb
│ │ │ │ ├── 20140527152921_add_description_to_pipeline_templates.rb
│ │ │ │ ├── 20140530200539_add_supplied_script_version.rb
│ │ │ │ ├── 20140601022548_remove_name_from_collections.rb
│ │ │ │ ├── 20140602143352_remove_active_and_success_from_pipeline_instances.rb
│ │ │ │ ├── 20140607150616_rename_folder_to_project.rb
│ │ │ │ ├── 20140611173003_add_docker_locator_to_jobs.rb
│ │ │ │ ├── 20140627210837_anonymous_group.rb
│ │ │ │ ├── 20140709172343_job_task_serial_qsequence.rb
│ │ │ │ ├── 20140714184006_empty_collection.rb
│ │ │ │ ├── 20140811184643_collection_use_regular_uuids.rb
│ │ │ │ ├── 20140817035914_add_unique_name_constraints.rb
│ │ │ │ ├── 20140818125735_add_not_null_constraint_to_group_name.rb
│ │ │ │ ├── 20140826180337_remove_output_is_persistent_column.rb
│ │ │ │ ├── 20140828141043_job_priority_fixup.rb
│ │ │ │ ├── 20140909183946_add_start_finish_time_to_tasks_and_pipelines.rb
│ │ │ │ ├── 20140911221252_add_description_to_pipeline_instances_and_jobs.rb
│ │ │ │ ├── 20140918141529_change_user_owner_uuid_not_null.rb
│ │ │ │ ├── 20140918153541_add_properties_to_node.rb
│ │ │ │ ├── 20140918153705_add_state_to_job.rb
│ │ │ │ ├── 20140924091559_add_job_uuid_to_nodes.rb
│ │ │ │ ├── 20141111133038_add_arvados_sdk_version_to_jobs.rb
│ │ │ │ ├── 20141208164553_owner_uuid_index.rb
│ │ │ │ ├── 20141208174553_descriptions_are_strings.rb
│ │ │ │ ├── 20141208174653_collection_file_names.rb
│ │ │ │ ├── 20141208185217_search_index.rb
│ │ │ │ ├── 20150122175935_no_description_in_search_index.rb
│ │ │ │ ├── 20150123142953_full_text_search.rb
│ │ │ │ ├── 20150203180223_set_group_class_on_anonymous_group.rb
│ │ │ │ ├── 20150206210804_all_users_can_read_anonymous_group.rb
│ │ │ │ ├── 20150206230342_rename_replication_attributes.rb
│ │ │ │ ├── 20150216193428_collection_name_owner_unique_only_non_expired.rb
│ │ │ │ ├── 20150303210106_fix_collection_portable_data_hash_with_hinted_manifest.rb
│ │ │ │ ├── 20150312151136_change_collection_expires_at_to_datetime.rb
│ │ │ │ ├── 20150317132720_add_username_to_users.rb
│ │ │ │ ├── 20150324152204_backward_compatibility_for_user_repositories.rb
│ │ │ │ ├── 20150423145759_no_filenames_in_collection_search_index.rb
│ │ │ │ ├── 20150512193020_read_only_on_keep_services.rb
│ │ │ │ ├── 20150526180251_leading_space_on_full_text_index.rb
│ │ │ │ ├── 20151202151426_create_containers_and_requests.rb
│ │ │ │ ├── 20151215134304_fix_containers_index.rb
│ │ │ │ ├── 20151229214707_add_exit_code_to_containers.rb
│ │ │ │ ├── 20160208210629_add_uuid_to_api_client_authorization.rb
│ │ │ │ ├── 20160209155729_add_uuid_to_api_token_search_index.rb
│ │ │ │ ├── 20160324144017_add_components_to_job.rb
│ │ │ │ ├── 20160506175108_add_auths_to_container.rb
│ │ │ │ ├── 20160509143250_add_auth_and_lock_to_container_index.rb
│ │ │ │ ├── 20160808151559_create_workflows.rb
│ │ │ │ ├── 20160819195557_add_script_parameters_digest_to_jobs.rb
│ │ │ │ ├── 20160819195725_populate_script_parameters_digest.rb
│ │ │ │ ├── 20160901210110_repair_script_parameters_digest.rb
│ │ │ │ ├── 20160909181442_rename_workflow_to_definition.rb
│ │ │ │ ├── 20160926194129_add_container_count.rb
│ │ │ │ ├── 20161019171346_add_use_existing_to_container_requests.rb
│ │ │ │ ├── 20161111143147_add_scheduling_parameters_to_container.rb
│ │ │ │ ├── 20161115171221_add_output_and_log_uuid_to_container_request.rb
│ │ │ │ ├── 20161115174218_add_output_and_log_uuids_to_container_request_search_index.rb
│ │ │ │ ├── 20161213172944_full_text_search_indexes.rb
│ │ │ │ ├── 20161222153434_split_expiry_to_trash_and_delete.rb
│ │ │ │ ├── 20161223090712_add_output_name_to_container_requests.rb
│ │ │ │ ├── 20170102153111_add_output_name_to_container_request_search_index.rb
│ │ │ │ ├── 20170105160301_add_output_name_to_cr_fts_index.rb
│ │ │ │ ├── 20170105160302_set_finished_at_on_finished_pipeline_instances.rb
│ │ │ │ ├── 20170216170823_no_cr_mounts_and_workflow_def_in_full_text_search_index.rb
│ │ │ │ ├── 20170301225558_no_downgrade_after_json.rb
│ │ │ │ ├── 20170319063406_serialized_columns_accept_null.rb
│ │ │ │ ├── 20170328215436_add_portable_data_hash_index_to_collections.rb
│ │ │ │ ├── 20170330012505_add_output_ttl_to_container_requests.rb
│ │ │ │ ├── 20170419173031_add_created_by_job_task_index_to_job_tasks.rb
│ │ │ │ ├── 20170419173712_add_object_owner_index_to_logs.rb
│ │ │ │ ├── 20170419175801_add_requesting_container_index_to_container_requests.rb
│ │ │ │ ├── 20170628185847_jobs_yaml_to_json.rb
│ │ │ │ ├── 20170704160233_yaml_to_json.rb
│ │ │ │ ├── 20170706141334_json_collection_properties.rb
│ │ │ │ ├── 20170824202826_trashable_groups.rb
│ │ │ │ ├── 20170906224040_materialized_permission_view.rb
│ │ │ │ ├── 20171027183824_add_index_to_containers.rb
│ │ │ │ ├── 20171208203841_fix_trash_flag_follow.rb
│ │ │ │ ├── 20171212153352_add_gin_index_to_collection_properties.rb
│ │ │ │ ├── 20180216203422_add_storage_classes_to_collections.rb
│ │ │ │ ├── 20180228220311_add_secret_mounts_to_containers.rb
│ │ │ │ ├── 20180313180114_change_container_priority_bigint.rb
│ │ │ │ ├── 20180501182859_add_redirect_to_user_uuid_to_users.rb
│ │ │ │ ├── 20180514135529_add_container_auth_uuid_index.rb
│ │ │ │ ├── 20180607175050_properties_to_jsonb.rb
│ │ │ │ ├── 20180608123145_add_properties_to_groups.rb
│ │ │ │ ├── 20180806133039_index_all_filenames.rb
│ │ │ │ ├── 20180820130357_add_pdh_and_trash_index_to_collections.rb
│ │ │ │ ├── 20180820132617_add_lock_index_to_containers.rb
│ │ │ │ ├── 20180820135808_drop_pdh_index_from_collections.rb
│ │ │ │ ├── 20180824152014_add_md5_index_to_containers.rb
│ │ │ │ ├── 20180824155207_add_queue_index_to_containers.rb
│ │ │ │ ├── 20180904110712_add_runtime_status_to_containers.rb
│ │ │ │ ├── 20180913175443_add_version_info_to_collections.rb
│ │ │ │ ├── 20180915155335_set_current_version_uuid_on_collections.rb
│ │ │ │ ├── 20180917200000_replace_full_text_indexes.rb
│ │ │ │ ├── 20180917205609_recompute_file_names_index.rb
│ │ │ │ ├── 20180919001158_recreate_collection_unique_name_index.rb
│ │ │ │ ├── 20181001175023_add_preserve_version_to_collections.rb
│ │ │ │ ├── 20181004131141_add_current_version_uuid_to_collection_search_index.rb
│ │ │ │ ├── 20181005192222_add_container_runtime_token.rb
│ │ │ │ ├── 20181011184200_add_runtime_token_to_container.rb
│ │ │ │ ├── 20181213183234_add_expression_index_to_links.rb
│ │ │ │ ├── 20190214214814_add_container_lock_count.rb
│ │ │ │ ├── 20190322174136_add_file_info_to_collection.rb
│ │ │ │ ├── 20190422144631_fill_missing_modified_at.rb
│ │ │ │ ├── 20190523180148_add_trigram_index_for_text_search.rb
│ │ │ │ ├── 20190808145904_drop_commit_ancestors.rb
│ │ │ │ ├── 20190809135453_remove_commits_table.rb
│ │ │ │ ├── 20190905151603_enforce_unique_identity_url.rb
│ │ │ │ ├── 20200501150153_permission_table.rb
│ │ │ │ ├── 20200602141328_fix_roles_projects.rb
│ │ │ │ ├── 20200914203202_public_favorites_project.rb
│ │ │ │ ├── 20201103170213_refresh_trashed_groups.rb
│ │ │ │ ├── 20201105190435_refresh_permissions.rb
│ │ │ │ ├── 20201202174753_fix_collection_versions_timestamps.rb
│ │ │ │ ├── 20210108033940_add_gateway_address_to_containers.rb
│ │ │ │ ├── 20210126183521_add_interactive_session_started_to_containers.rb
│ │ │ │ ├── 20210621204455_add_container_output_storage_class.rb
│ │ │ │ ├── 20210816191509_drop_fts_index.rb
│ │ │ │ ├── 20211027154300_delete_disabled_user_tokens_and_keys.rb
│ │ │ │ ├── 20220224203102_add_frozen_by_uuid_to_groups.rb
│ │ │ │ ├── 20220301155729_frozen_groups.rb
│ │ │ │ ├── 20220303204419_add_frozen_by_uuid_to_group_search_index.rb
│ │ │ │ ├── 20220401153101_fix_created_at_indexes.rb
│ │ │ │ ├── 20220505112900_add_output_properties.rb
│ │ │ │ ├── 20220726034131_write_via_all_users.rb
│ │ │ │ ├── 20220804133317_add_cost_to_containers.rb
│ │ │ │ ├── 20221219165512_dedup_permission_links.rb
│ │ │ │ ├── 20221230155924_bigint_id.rb
│ │ │ │ ├── 20230421142716_add_name_index_to_collections_and_groups.rb
│ │ │ │ ├── 20230503224107_priority_update_functions.rb
│ │ │ │ ├── 20230815160000_jsonb_exists_functions.rb
│ │ │ │ ├── 20230821000000_priority_update_fix.rb
│ │ │ │ ├── 20230922000000_add_btree_name_index_to_collections_and_groups.rb
│ │ │ │ ├── 20231013000000_compute_permission_index.rb
│ │ │ │ ├── 20240329173437_add_output_glob_to_containers.rb
│ │ │ │ ├── 20240402162733_add_output_glob_index_to_containers.rb
│ │ │ │ ├── 20240604183200_exclude_uuids_and_hashes_from_text_search.rb
│ │ │ │ ├── 20240618121312_create_uuid_locks.rb
│ │ │ │ ├── 20240627201747_set_default_api_client_id.rb
│ │ │ │ ├── 20240820202230_exclude_container_image_from_text_search.rb
│ │ │ │ ├── 20241118110000_index_on_container_request_name.rb
│ │ │ │ ├── 20250115145250_drop_fts_index_again.rb
│ │ │ │ ├── 20250312141843_add_refreshes_at_to_api_client_authorizations.rb
│ │ │ │ ├── 20250315222222_add_services_and_published_ports.rb
│ │ │ │ ├── 20250402131700_add_collection_uuid_to_workflows.rb
│ │ │ │ ├── 20250422103000_create_credentials_table.rb
│ │ │ │ ├── 20250426201300_priority_update_check_trash_at.rb
│ │ │ │ ├── 20250527181323_add_container_ports.rb
│ │ │ │ └── 20251006181234_enforce_required_credential_fields.rb
│ │ │ ├── seeds.rb
│ │ │ └── structure.sql
│ │ ├── fpm-info.sh
│ │ ├── lib/
│ │ │ ├── 20200501150153_permission_table_constants.rb
│ │ │ ├── app_version.rb
│ │ │ ├── arvados_model_updates.rb
│ │ │ ├── assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── audit_logs.rb
│ │ │ ├── can_be_an_owner.rb
│ │ │ ├── common_api_template.rb
│ │ │ ├── config_loader.rb
│ │ │ ├── create_ancestor_view.sql
│ │ │ ├── create_permission_view.sql
│ │ │ ├── current_api_client.rb
│ │ │ ├── db_current_time.rb
│ │ │ ├── fix_collection_versions_timestamps.rb
│ │ │ ├── fix_roles_projects.rb
│ │ │ ├── group_pdhs.rb
│ │ │ ├── has_uuid.rb
│ │ │ ├── kind_and_etag.rb
│ │ │ ├── load_param.rb
│ │ │ ├── log_reuse_info.rb
│ │ │ ├── migrate_yaml_to_json.rb
│ │ │ ├── record_filters.rb
│ │ │ ├── request_error.rb
│ │ │ ├── safe_json.rb
│ │ │ ├── safer_file_store.rb
│ │ │ ├── salvage_collection.rb
│ │ │ ├── serializers.rb
│ │ │ ├── tasks/
│ │ │ │ ├── .gitkeep
│ │ │ │ ├── config.rake
│ │ │ │ ├── delete_old_container_logs.rake
│ │ │ │ ├── manage_long_lived_tokens.rake
│ │ │ │ ├── statement_timeout.rake
│ │ │ │ └── test_tasks.rake
│ │ │ ├── trashable.rb
│ │ │ ├── update_permissions.rb
│ │ │ ├── update_priorities.rb
│ │ │ ├── validate_serialized.rb
│ │ │ └── whitelist_update.rb
│ │ ├── public/
│ │ │ ├── 404.html
│ │ │ ├── 422.html
│ │ │ ├── 500.html
│ │ │ └── robots.txt
│ │ ├── script/
│ │ │ ├── populate-file-info-columns-in-collections.rb
│ │ │ ├── rails
│ │ │ ├── rake_test.sh
│ │ │ ├── restart-dns-server
│ │ │ ├── salvage_collection.rb
│ │ │ └── setup-new-user.rb
│ │ └── test/
│ │ ├── factories/
│ │ │ ├── api_client_authorization.rb
│ │ │ ├── group.rb
│ │ │ ├── link.rb
│ │ │ └── user.rb
│ │ ├── fixtures/
│ │ │ ├── .gitkeep
│ │ │ ├── api_client_authorizations.yml
│ │ │ ├── authorized_keys.yml
│ │ │ ├── collections.yml
│ │ │ ├── container_requests.yml
│ │ │ ├── containers.yml
│ │ │ ├── files/
│ │ │ │ └── proc_stat
│ │ │ ├── groups.yml
│ │ │ ├── keep_services.yml
│ │ │ ├── links.yml
│ │ │ ├── logs.yml
│ │ │ ├── users.yml
│ │ │ ├── virtual_machines.yml
│ │ │ └── workflows.yml
│ │ ├── functional/
│ │ │ ├── .gitkeep
│ │ │ ├── application_controller_test.rb
│ │ │ ├── arvados/
│ │ │ │ └── v1/
│ │ │ │ ├── api_client_authorizations_controller_test.rb
│ │ │ │ ├── authorized_keys_controller_test.rb
│ │ │ │ ├── collections_controller_test.rb
│ │ │ │ ├── computed_permissions_controller_test.rb
│ │ │ │ ├── container_requests_controller_test.rb
│ │ │ │ ├── containers_controller_test.rb
│ │ │ │ ├── filters_test.rb
│ │ │ │ ├── groups_controller_test.rb
│ │ │ │ ├── keep_services_controller_test.rb
│ │ │ │ ├── links_controller_test.rb
│ │ │ │ ├── logs_controller_test.rb
│ │ │ │ ├── management_controller_test.rb
│ │ │ │ ├── query_test.rb
│ │ │ │ ├── schema_controller_test.rb
│ │ │ │ ├── user_agreements_controller_test.rb
│ │ │ │ ├── users_controller_test.rb
│ │ │ │ └── virtual_machines_controller_test.rb
│ │ │ ├── database_controller_test.rb
│ │ │ ├── sys_controller_test.rb
│ │ │ └── user_sessions_controller_test.rb
│ │ ├── helpers/
│ │ │ ├── container_test_helper.rb
│ │ │ ├── docker_migration_helper.rb
│ │ │ ├── manifest_examples.rb
│ │ │ ├── time_block.rb
│ │ │ └── users_test_helper.rb
│ │ ├── integration/
│ │ │ ├── .gitkeep
│ │ │ ├── api_client_authorizations_api_test.rb
│ │ │ ├── api_client_authorizations_scopes_test.rb
│ │ │ ├── bundler_version_test.rb
│ │ │ ├── collections_api_test.rb
│ │ │ ├── collections_performance_test.rb
│ │ │ ├── computed_permissions_test.rb
│ │ │ ├── container_auth_test.rb
│ │ │ ├── container_dispatch_test.rb
│ │ │ ├── container_request_test.rb
│ │ │ ├── credentials_test.rb
│ │ │ ├── cross_origin_test.rb
│ │ │ ├── database_reset_test.rb
│ │ │ ├── discovery_document_test.rb
│ │ │ ├── errors_test.rb
│ │ │ ├── groups_test.rb
│ │ │ ├── http_quirks_test.rb
│ │ │ ├── keep_proxy_test.rb
│ │ │ ├── logging_test.rb
│ │ │ ├── login_workflow_test.rb
│ │ │ ├── noop_deep_munge_test.rb
│ │ │ ├── passenger_config_test.rb
│ │ │ ├── permissions_test.rb
│ │ │ ├── pipeline_test.rb
│ │ │ ├── reader_tokens_test.rb
│ │ │ ├── remote_user_test.rb
│ │ │ ├── select_test.rb
│ │ │ ├── serialized_encoding_test.rb
│ │ │ ├── user_sessions_test.rb
│ │ │ ├── users_test.rb
│ │ │ ├── valid_links_test.rb
│ │ │ └── workflows_test.rb
│ │ ├── performance/
│ │ │ ├── links_index_test.rb
│ │ │ └── permission_test.rb
│ │ ├── test_helper.rb
│ │ └── unit/
│ │ ├── .gitkeep
│ │ ├── api_client_authorization_test.rb
│ │ ├── app_version_test.rb
│ │ ├── application_test.rb
│ │ ├── arvados_model_test.rb
│ │ ├── authorized_key_test.rb
│ │ ├── blob_test.rb
│ │ ├── collection_performance_test.rb
│ │ ├── collection_test.rb
│ │ ├── container_request_test.rb
│ │ ├── container_test.rb
│ │ ├── credential_test.rb
│ │ ├── group_pdhs_test.rb
│ │ ├── group_test.rb
│ │ ├── keep_disk_test.rb
│ │ ├── keep_service_test.rb
│ │ ├── link_test.rb
│ │ ├── log_test.rb
│ │ ├── owner_test.rb
│ │ ├── permission_test.rb
│ │ ├── salvage_collection_test.rb
│ │ ├── seralizer_test.rb
│ │ ├── time_zone_test.rb
│ │ ├── user_notifier_test.rb
│ │ ├── user_test.rb
│ │ ├── virtual_machine_test.rb
│ │ └── workflow_test.rb
│ ├── crunch-dispatch-slurm/
│ │ ├── crunch-dispatch-slurm.go
│ │ ├── crunch-dispatch-slurm_test.go
│ │ ├── node_type.go
│ │ ├── priority.go
│ │ ├── priority_test.go
│ │ ├── script.go
│ │ ├── script_test.go
│ │ ├── slurm.go
│ │ ├── squeue.go
│ │ ├── squeue_test.go
│ │ └── usage.go
│ ├── dockercleaner/
│ │ ├── MANIFEST.in
│ │ ├── README.rst
│ │ ├── agpl-3.0.txt
│ │ ├── arvados-docker-cleaner.service
│ │ ├── arvados_docker/
│ │ │ ├── __init__.py
│ │ │ └── cleaner.py
│ │ ├── arvados_version.py
│ │ ├── bin/
│ │ │ └── arvados-docker-cleaner
│ │ ├── pyproject.toml
│ │ ├── setup.py
│ │ └── tests/
│ │ ├── __init__.py
│ │ └── test_cleaner.py
│ ├── fuse/
│ │ ├── MANIFEST.in
│ │ ├── README.rst
│ │ ├── agpl-3.0.txt
│ │ ├── arvados_fuse/
│ │ │ ├── __init__.py
│ │ │ ├── command.py
│ │ │ ├── crunchstat.py
│ │ │ ├── fresh.py
│ │ │ ├── fusedir.py
│ │ │ ├── fusefile.py
│ │ │ └── unmount.py
│ │ ├── arvados_version.py
│ │ ├── bin/
│ │ │ └── arv-mount
│ │ ├── fpm-info.sh
│ │ ├── pyproject.toml
│ │ ├── setup.py
│ │ └── tests/
│ │ ├── __init__.py
│ │ ├── fstest.py
│ │ ├── integration_test.py
│ │ ├── mount_test_base.py
│ │ ├── prof.py
│ │ ├── test_cache.py
│ │ ├── test_command_args.py
│ │ ├── test_concurrency.py
│ │ ├── test_crunchstat.py
│ │ ├── test_exec.py
│ │ ├── test_inodes.py
│ │ ├── test_mount.py
│ │ ├── test_mount_filters.py
│ │ ├── test_mount_type.py
│ │ ├── test_retry.py
│ │ ├── test_tmp_collection.py
│ │ ├── test_token_expiry.py
│ │ └── test_unmount.py
│ ├── keep-balance/
│ │ ├── balance.go
│ │ ├── balance_run_test.go
│ │ ├── balance_test.go
│ │ ├── block_state.go
│ │ ├── block_state_test.go
│ │ ├── change_set.go
│ │ ├── change_set_test.go
│ │ ├── collection.go
│ │ ├── collection_test.go
│ │ ├── integration_test.go
│ │ ├── keep_service.go
│ │ ├── main.go
│ │ ├── main_test.go
│ │ ├── metrics.go
│ │ └── server.go
│ ├── keepproxy/
│ │ ├── keepproxy.go
│ │ ├── keepproxy_test.go
│ │ ├── pkg-extras/
│ │ │ └── etc/
│ │ │ ├── default/
│ │ │ │ └── keepproxy
│ │ │ └── init.d/
│ │ │ └── keepproxy
│ │ └── proxy_client.go
│ ├── login-sync/
│ │ ├── .gitignore
│ │ ├── Gemfile
│ │ ├── Rakefile
│ │ ├── agpl-3.0.txt
│ │ ├── arvados-login-sync.gemspec
│ │ ├── bin/
│ │ │ └── arvados-login-sync
│ │ └── test/
│ │ ├── binstub_new_user/
│ │ │ └── useradd
│ │ ├── stubs.rb
│ │ └── test_add_user.rb
│ ├── workbench2/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .yarn/
│ │ │ └── releases/
│ │ │ └── yarn-3.2.0.cjs
│ │ ├── .yarnrc
│ │ ├── .yarnrc.yml
│ │ ├── AUTHORS
│ │ ├── COPYING
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── __mocks__/
│ │ │ └── popper.js.js
│ │ ├── agpl-3.0.txt
│ │ ├── apache-2.0.txt
│ │ ├── cc-by-sa-3.0.txt
│ │ ├── config/
│ │ │ ├── env.js
│ │ │ ├── getHttpsConfig.js
│ │ │ ├── jest/
│ │ │ │ ├── babelTransform.js
│ │ │ │ ├── cssTransform.js
│ │ │ │ └── fileTransform.js
│ │ │ ├── modules.js
│ │ │ ├── paths.js
│ │ │ ├── webpack/
│ │ │ │ └── persistentCache/
│ │ │ │ └── createEnvironmentHash.js
│ │ │ ├── webpack.config.js
│ │ │ └── webpackDevServer.config.js
│ │ ├── cypress/
│ │ │ ├── e2e/
│ │ │ │ ├── auth-action.cy.js
│ │ │ │ ├── auth-middleware.cy.js
│ │ │ │ ├── banner-tooltip.cy.js
│ │ │ │ ├── collection.cy.js
│ │ │ │ ├── context-menu.cy.js
│ │ │ │ ├── create-workflow.cy.js
│ │ │ │ ├── dashboard.cy.js
│ │ │ │ ├── delete-multiple-files.cy.js
│ │ │ │ ├── details-card.cy.js
│ │ │ │ ├── details-panel.cy.js
│ │ │ │ ├── external-credentials.cy.js
│ │ │ │ ├── favorites.cy.js
│ │ │ │ ├── group-manage.cy.js
│ │ │ │ ├── login.cy.js
│ │ │ │ ├── multiselect-toolbar.cy.js
│ │ │ │ ├── page-not-found.cy.js
│ │ │ │ ├── process.cy.js
│ │ │ │ ├── project.cy.js
│ │ │ │ ├── search.cy.js
│ │ │ │ ├── sharing.cy.js
│ │ │ │ ├── side-panel.cy.js
│ │ │ │ ├── trash.cy.js
│ │ │ │ ├── user-preferences.cy.js
│ │ │ │ ├── user-profile.cy.js
│ │ │ │ ├── virtual-machine-admin.cy.js
│ │ │ │ └── workflow.cy.js
│ │ │ ├── fixtures/
│ │ │ │ ├── .gitkeep
│ │ │ │ ├── files/
│ │ │ │ │ ├── banner.html
│ │ │ │ │ └── tooltips.txt
│ │ │ │ ├── webdav-propfind-outputs.xml
│ │ │ │ ├── workflow-with-optional-inputs.yaml
│ │ │ │ ├── workflow_directory_array.yaml
│ │ │ │ ├── workflow_with_array_fields.yaml
│ │ │ │ ├── workflow_with_default_array_fields.yaml
│ │ │ │ └── workflow_with_secret_input.yaml
│ │ │ ├── plugins/
│ │ │ │ └── index.js
│ │ │ └── support/
│ │ │ ├── commands.js
│ │ │ ├── commands.ts
│ │ │ ├── component-index.html
│ │ │ ├── component.ts
│ │ │ ├── e2e.js
│ │ │ ├── index.d.ts
│ │ │ └── msToolbarTooltips.js
│ │ ├── cypress.config.ts
│ │ ├── etc/
│ │ │ └── arvados/
│ │ │ └── workbench2/
│ │ │ └── workbench2.example.json
│ │ ├── package.json
│ │ ├── public/
│ │ │ ├── file-viewers-example.json
│ │ │ ├── index.html
│ │ │ ├── manifest.json
│ │ │ └── webshell/
│ │ │ ├── README
│ │ │ ├── index.html
│ │ │ ├── keyboard.html
│ │ │ ├── shell_in_a_box.js
│ │ │ └── styles.css
│ │ ├── scripts/
│ │ │ ├── build.js
│ │ │ └── start.js
│ │ ├── src/
│ │ │ ├── common/
│ │ │ │ ├── app-info.ts
│ │ │ │ ├── array-utils.ts
│ │ │ │ ├── codes.ts
│ │ │ │ ├── config.ts
│ │ │ │ ├── custom-theme.ts
│ │ │ │ ├── file.ts
│ │ │ │ ├── formatters.cy.js
│ │ │ │ ├── formatters.ts
│ │ │ │ ├── frozen-resources.ts
│ │ │ │ ├── getuser.ts
│ │ │ │ ├── html-sanitize.ts
│ │ │ │ ├── labels.ts
│ │ │ │ ├── link-update-name.ts
│ │ │ │ ├── menu-action-set-actions.ts
│ │ │ │ ├── objects.ts
│ │ │ │ ├── plugintypes.ts
│ │ │ │ ├── redirect-to.ts
│ │ │ │ ├── regexp.ts
│ │ │ │ ├── resource-to-menu-kind.ts
│ │ │ │ ├── resource-to-menukind.cy.js
│ │ │ │ ├── service-provider.ts
│ │ │ │ ├── unionize.ts
│ │ │ │ ├── url.cy.js
│ │ │ │ ├── url.ts
│ │ │ │ ├── use-async-interval.cy.js
│ │ │ │ ├── use-async-interval.ts
│ │ │ │ ├── usePrevious.tsx
│ │ │ │ ├── useStateWithValidation.ts
│ │ │ │ ├── webdav.cy.js
│ │ │ │ ├── webdav.ts
│ │ │ │ └── xml.ts
│ │ │ ├── components/
│ │ │ │ ├── autocomplete/
│ │ │ │ │ └── autocomplete.tsx
│ │ │ │ ├── breadcrumbs/
│ │ │ │ │ ├── breadcrumbs.cy.js
│ │ │ │ │ └── breadcrumbs.tsx
│ │ │ │ ├── checkbox-field/
│ │ │ │ │ └── checkbox-field.tsx
│ │ │ │ ├── chips/
│ │ │ │ │ └── chips.tsx
│ │ │ │ ├── chips-input/
│ │ │ │ │ └── chips-input.tsx
│ │ │ │ ├── code-snippet/
│ │ │ │ │ ├── code-snippet.tsx
│ │ │ │ │ └── virtual-code-snippet.tsx
│ │ │ │ ├── collection-panel-files/
│ │ │ │ │ └── collection-panel-files.tsx
│ │ │ │ ├── column-selector/
│ │ │ │ │ ├── column-selector.cy.js
│ │ │ │ │ └── column-selector.tsx
│ │ │ │ ├── conditional-tabs/
│ │ │ │ │ ├── conditional-tabs.cy.js
│ │ │ │ │ └── conditional-tabs.tsx
│ │ │ │ ├── confirmation-dialog/
│ │ │ │ │ └── confirmation-dialog.tsx
│ │ │ │ ├── context-menu/
│ │ │ │ │ └── context-menu.tsx
│ │ │ │ ├── copy-to-clipboard/
│ │ │ │ │ └── copy-result-to-clipboard.ts
│ │ │ │ ├── copy-to-clipboard-snackbar/
│ │ │ │ │ └── copy-to-clipboard-snackbar.tsx
│ │ │ │ ├── dashboard/
│ │ │ │ │ ├── dashboard-item-row.tsx
│ │ │ │ │ ├── dashboard.tsx
│ │ │ │ │ ├── favorite-pins/
│ │ │ │ │ │ ├── favorite-pins-item.tsx
│ │ │ │ │ │ └── favorite-pins-section.tsx
│ │ │ │ │ ├── recent-workflow-runs.tsx
│ │ │ │ │ └── recently-visited.tsx
│ │ │ │ ├── data-explorer/
│ │ │ │ │ ├── data-explorer.cy.js
│ │ │ │ │ └── data-explorer.tsx
│ │ │ │ ├── data-table/
│ │ │ │ │ ├── data-column.ts
│ │ │ │ │ ├── data-table.cy.js
│ │ │ │ │ └── data-table.tsx
│ │ │ │ ├── data-table-default-view/
│ │ │ │ │ └── data-table-default-view.tsx
│ │ │ │ ├── data-table-filters/
│ │ │ │ │ ├── data-table-filters-popover.cy.js
│ │ │ │ │ ├── data-table-filters-popover.tsx
│ │ │ │ │ ├── data-table-filters-tree.tsx
│ │ │ │ │ └── data-table-filters.ts
│ │ │ │ ├── data-table-multiselect-popover/
│ │ │ │ │ └── data-table-multiselect-popover.tsx
│ │ │ │ ├── date-picker/
│ │ │ │ │ ├── date-picker.cy.js
│ │ │ │ │ └── date-picker.tsx
│ │ │ │ ├── default-code-snippet/
│ │ │ │ │ ├── default-code-snippet.tsx
│ │ │ │ │ └── default-virtual-code-snippet.tsx
│ │ │ │ ├── default-view/
│ │ │ │ │ └── default-view.tsx
│ │ │ │ ├── details-attribute/
│ │ │ │ │ └── details-attribute.tsx
│ │ │ │ ├── dialog-actions/
│ │ │ │ │ └── dialog-actions.tsx
│ │ │ │ ├── dialog-form/
│ │ │ │ │ ├── dialog-form.tsx
│ │ │ │ │ └── dialog-text-field.tsx
│ │ │ │ ├── dropdown-menu/
│ │ │ │ │ ├── dropdown-menu.cy.js
│ │ │ │ │ └── dropdown-menu.tsx
│ │ │ │ ├── expand-chevron-right/
│ │ │ │ │ └── expand-chevron-right.tsx
│ │ │ │ ├── file-tree/
│ │ │ │ │ ├── file-thumbnail.cy.js
│ │ │ │ │ ├── file-thumbnail.tsx
│ │ │ │ │ ├── file-tree-data.ts
│ │ │ │ │ └── file-tree-item.tsx
│ │ │ │ ├── file-upload/
│ │ │ │ │ ├── file-upload.tsx
│ │ │ │ │ └── upload-input.tsx
│ │ │ │ ├── float-input/
│ │ │ │ │ └── float-input.tsx
│ │ │ │ ├── form-dialog/
│ │ │ │ │ └── form-dialog.tsx
│ │ │ │ ├── form-field/
│ │ │ │ │ └── form-field.tsx
│ │ │ │ ├── icon/
│ │ │ │ │ └── icon.tsx
│ │ │ │ ├── int-input/
│ │ │ │ │ └── int-input.tsx
│ │ │ │ ├── list-item-text-icon/
│ │ │ │ │ └── list-item-text-icon.tsx
│ │ │ │ ├── loading/
│ │ │ │ │ ├── circular-suspense.tsx
│ │ │ │ │ ├── inline-pulser.tsx
│ │ │ │ │ └── three-dots.tsx
│ │ │ │ ├── loading-indicator/
│ │ │ │ │ └── loading-indicator.tsx
│ │ │ │ ├── multi-panel-view/
│ │ │ │ │ ├── multi-panel-view.cy.js
│ │ │ │ │ └── multi-panel-view.tsx
│ │ │ │ ├── multiselect-toolbar/
│ │ │ │ │ ├── MultiselectToolbar.tsx
│ │ │ │ │ ├── MultiselectToolbar.utils.ts
│ │ │ │ │ ├── ms-toolbar-overflow-menu.tsx
│ │ │ │ │ └── ms-toolbar-overflow-wrapper.tsx
│ │ │ │ ├── overview-panel/
│ │ │ │ │ └── overview-panel.tsx
│ │ │ │ ├── popover/
│ │ │ │ │ ├── helpers.ts
│ │ │ │ │ ├── popover.cy.js
│ │ │ │ │ └── popover.tsx
│ │ │ │ ├── progress-button/
│ │ │ │ │ └── progress-button.tsx
│ │ │ │ ├── radio-field/
│ │ │ │ │ └── radio-field.tsx
│ │ │ │ ├── refresh-button/
│ │ │ │ │ ├── refresh-button.cy.js
│ │ │ │ │ └── refresh-button.tsx
│ │ │ │ ├── rich-text-editor-link/
│ │ │ │ │ └── rich-text-editor-link.tsx
│ │ │ │ ├── search-input/
│ │ │ │ │ ├── search-input.cy.js
│ │ │ │ │ └── search-input.tsx
│ │ │ │ ├── select-field/
│ │ │ │ │ └── select-field.tsx
│ │ │ │ ├── string-array-input/
│ │ │ │ │ ├── string-array-mui-input.cy.js
│ │ │ │ │ └── string-array-mui-input.tsx
│ │ │ │ ├── subprocess-filter/
│ │ │ │ │ └── subprocess-filter.tsx
│ │ │ │ ├── switch-field/
│ │ │ │ │ └── switch-field.tsx
│ │ │ │ ├── tabbedList/
│ │ │ │ │ └── tabbed-list.tsx
│ │ │ │ ├── text-field/
│ │ │ │ │ └── text-field.tsx
│ │ │ │ ├── tree/
│ │ │ │ │ ├── tree.cy.js
│ │ │ │ │ ├── tree.tsx
│ │ │ │ │ └── virtual-tree.tsx
│ │ │ │ ├── warning/
│ │ │ │ │ └── warning.tsx
│ │ │ │ ├── warning-collection/
│ │ │ │ │ └── warning-collection.tsx
│ │ │ │ └── workflow-inputs-form/
│ │ │ │ ├── validators.ts
│ │ │ │ └── workflow-input.tsx
│ │ │ ├── cypress/
│ │ │ │ ├── mocks/
│ │ │ │ │ └── service-provider.ts
│ │ │ │ └── utils/
│ │ │ │ └── contains-action-subset.ts
│ │ │ ├── index.css
│ │ │ ├── index.tsx
│ │ │ ├── lib/
│ │ │ │ ├── cwl-svg/
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ └── styles/
│ │ │ │ │ │ ├── _variables.scss
│ │ │ │ │ │ ├── style.css
│ │ │ │ │ │ ├── style.scss
│ │ │ │ │ │ ├── theme.css
│ │ │ │ │ │ ├── theme.scss
│ │ │ │ │ │ └── themes/
│ │ │ │ │ │ └── rabix-dark/
│ │ │ │ │ │ ├── _variables.scss
│ │ │ │ │ │ ├── theme.css
│ │ │ │ │ │ └── theme.scss
│ │ │ │ │ ├── behaviors/
│ │ │ │ │ │ └── edge-panning.ts
│ │ │ │ │ ├── graph/
│ │ │ │ │ │ ├── connectable.ts
│ │ │ │ │ │ ├── edge.ts
│ │ │ │ │ │ ├── graph-node.ts
│ │ │ │ │ │ ├── io-port.ts
│ │ │ │ │ │ ├── step-node.ts
│ │ │ │ │ │ ├── template-parser.ts
│ │ │ │ │ │ └── workflow.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── plugins/
│ │ │ │ │ │ ├── arrange/
│ │ │ │ │ │ │ └── arrange.ts
│ │ │ │ │ │ ├── deletion/
│ │ │ │ │ │ │ └── deletion.ts
│ │ │ │ │ │ ├── edge-hover/
│ │ │ │ │ │ │ └── edge-hover.ts
│ │ │ │ │ │ ├── node-move/
│ │ │ │ │ │ │ └── node-move.ts
│ │ │ │ │ │ ├── plugin-base.ts
│ │ │ │ │ │ ├── plugin.ts
│ │ │ │ │ │ ├── port-drag/
│ │ │ │ │ │ │ ├── _variables.scss
│ │ │ │ │ │ │ ├── port-drag.ts
│ │ │ │ │ │ │ ├── style.css
│ │ │ │ │ │ │ ├── style.scss
│ │ │ │ │ │ │ ├── theme.css
│ │ │ │ │ │ │ ├── theme.dark.css
│ │ │ │ │ │ │ ├── theme.dark.scss
│ │ │ │ │ │ │ └── theme.scss
│ │ │ │ │ │ ├── selection/
│ │ │ │ │ │ │ ├── _variables.scss
│ │ │ │ │ │ │ ├── selection.ts
│ │ │ │ │ │ │ ├── style.css
│ │ │ │ │ │ │ ├── style.scss
│ │ │ │ │ │ │ ├── theme.css
│ │ │ │ │ │ │ ├── theme.dark.css
│ │ │ │ │ │ │ ├── theme.dark.scss
│ │ │ │ │ │ │ └── theme.scss
│ │ │ │ │ │ ├── validate/
│ │ │ │ │ │ │ ├── validate.css
│ │ │ │ │ │ │ ├── validate.scss
│ │ │ │ │ │ │ └── validate.ts
│ │ │ │ │ │ └── zoom/
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── zoom.ts
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── dom-events.ts
│ │ │ │ │ ├── dynamic-stylesheet.ts
│ │ │ │ │ ├── event-hub.ts
│ │ │ │ │ ├── geometry.ts
│ │ │ │ │ ├── html-utils.ts
│ │ │ │ │ ├── perf.ts
│ │ │ │ │ ├── svg-dumper.ts
│ │ │ │ │ └── svg-utils.ts
│ │ │ │ ├── resource-properties.cy.js
│ │ │ │ └── resource-properties.ts
│ │ │ ├── models/
│ │ │ │ ├── api-client-authorization.ts
│ │ │ │ ├── client-authorization.ts
│ │ │ │ ├── collection-file.ts
│ │ │ │ ├── collection.ts
│ │ │ │ ├── container-request.ts
│ │ │ │ ├── container.ts
│ │ │ │ ├── details.ts
│ │ │ │ ├── empty.ts
│ │ │ │ ├── external-credential.ts
│ │ │ │ ├── file-viewers-config.ts
│ │ │ │ ├── group.ts
│ │ │ │ ├── keep-manifest.ts
│ │ │ │ ├── keep-services.ts
│ │ │ │ ├── link-account.ts
│ │ │ │ ├── link.ts
│ │ │ │ ├── log.ts
│ │ │ │ ├── mount-types.ts
│ │ │ │ ├── node.ts
│ │ │ │ ├── object-types.ts
│ │ │ │ ├── permission.ts
│ │ │ │ ├── process.ts
│ │ │ │ ├── project.ts
│ │ │ │ ├── repositories.ts
│ │ │ │ ├── resource.ts
│ │ │ │ ├── runtime-constraints.ts
│ │ │ │ ├── runtime-status.ts
│ │ │ │ ├── scheduling-parameters.ts
│ │ │ │ ├── search-bar.ts
│ │ │ │ ├── session.ts
│ │ │ │ ├── ssh-key.ts
│ │ │ │ ├── tag.ts
│ │ │ │ ├── test-utils.ts
│ │ │ │ ├── tree.cy.js
│ │ │ │ ├── tree.ts
│ │ │ │ ├── user.cy.js
│ │ │ │ ├── user.ts
│ │ │ │ ├── virtual-machines.ts
│ │ │ │ ├── vocabulary.cy.js
│ │ │ │ ├── vocabulary.ts
│ │ │ │ └── workflow.ts
│ │ │ ├── plugins/
│ │ │ │ ├── README.md
│ │ │ │ ├── blank/
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── example/
│ │ │ │ │ ├── exampleComponents.tsx
│ │ │ │ │ └── index.tsx
│ │ │ │ └── root-redirect/
│ │ │ │ └── index.tsx
│ │ │ ├── plugins.tsx
│ │ │ ├── react-app-env.d.ts
│ │ │ ├── routes/
│ │ │ │ ├── route-change-handlers.ts
│ │ │ │ └── routes.ts
│ │ │ ├── services/
│ │ │ │ ├── ancestors-service/
│ │ │ │ │ └── ancestors-service.ts
│ │ │ │ ├── api/
│ │ │ │ │ ├── api-actions.ts
│ │ │ │ │ ├── filter-builder.cy.js
│ │ │ │ │ ├── filter-builder.ts
│ │ │ │ │ ├── order-builder.cy.js
│ │ │ │ │ ├── order-builder.ts
│ │ │ │ │ ├── url-builder.cy.js
│ │ │ │ │ └── url-builder.ts
│ │ │ │ ├── api-client-authorization-service/
│ │ │ │ │ ├── api-client-authorization-service.cy.js
│ │ │ │ │ └── api-client-authorization-service.ts
│ │ │ │ ├── auth-service/
│ │ │ │ │ └── auth-service.ts
│ │ │ │ ├── authorized-keys-service/
│ │ │ │ │ └── authorized-keys-service.ts
│ │ │ │ ├── collection-service/
│ │ │ │ │ ├── collection-service-files-response.cy.js
│ │ │ │ │ ├── collection-service-files-response.ts
│ │ │ │ │ ├── collection-service.cy.js
│ │ │ │ │ └── collection-service.ts
│ │ │ │ ├── common-service/
│ │ │ │ │ ├── common-resource-service.cy.js
│ │ │ │ │ ├── common-resource-service.ts
│ │ │ │ │ ├── common-service.cy.js
│ │ │ │ │ ├── common-service.ts
│ │ │ │ │ └── trashable-resource-service.ts
│ │ │ │ ├── container-request-service/
│ │ │ │ │ └── container-request-service.ts
│ │ │ │ ├── container-service/
│ │ │ │ │ └── container-service.ts
│ │ │ │ ├── external-credentials/
│ │ │ │ │ └── external-credentials-service.ts
│ │ │ │ ├── favorite-service/
│ │ │ │ │ ├── favorite-service.cy.js
│ │ │ │ │ └── favorite-service.ts
│ │ │ │ ├── file-viewers-config-service/
│ │ │ │ │ └── file-viewers-config-service.ts
│ │ │ │ ├── groups-service/
│ │ │ │ │ ├── groups-service.cy.js
│ │ │ │ │ └── groups-service.ts
│ │ │ │ ├── keep-service/
│ │ │ │ │ └── keep-service.ts
│ │ │ │ ├── link-account-service/
│ │ │ │ │ └── link-account-service.ts
│ │ │ │ ├── link-service/
│ │ │ │ │ └── link-service.ts
│ │ │ │ ├── log-service/
│ │ │ │ │ ├── log-service.cy.js
│ │ │ │ │ └── log-service.ts
│ │ │ │ ├── permission-service/
│ │ │ │ │ └── permission-service.ts
│ │ │ │ ├── project-service/
│ │ │ │ │ ├── project-service.cy.js
│ │ │ │ │ └── project-service.ts
│ │ │ │ ├── repositories-service/
│ │ │ │ │ └── repositories-service.ts
│ │ │ │ ├── search-service/
│ │ │ │ │ └── search-service.ts
│ │ │ │ ├── services.ts
│ │ │ │ ├── tag-service/
│ │ │ │ │ └── tag-service.ts
│ │ │ │ ├── user-service/
│ │ │ │ │ └── user-service.ts
│ │ │ │ ├── virtual-machines-service/
│ │ │ │ │ └── virtual-machines-service.ts
│ │ │ │ ├── vocabulary-service/
│ │ │ │ │ └── vocabulary-service.ts
│ │ │ │ └── workflow-service/
│ │ │ │ └── workflow-service.ts
│ │ │ ├── store/
│ │ │ │ ├── advanced-tab/
│ │ │ │ │ └── advanced-tab.tsx
│ │ │ │ ├── all-processes-panel/
│ │ │ │ │ ├── all-processes-panel-action.ts
│ │ │ │ │ └── all-processes-panel-middleware-service.ts
│ │ │ │ ├── api-client-authorizations/
│ │ │ │ │ ├── api-client-authorizations-actions.ts
│ │ │ │ │ └── api-client-authorizations-middleware-service.ts
│ │ │ │ ├── app-info/
│ │ │ │ │ ├── app-info-actions.ts
│ │ │ │ │ └── app-info-reducer.ts
│ │ │ │ ├── auth/
│ │ │ │ │ ├── auth-action-session.ts
│ │ │ │ │ ├── auth-action-ssh.ts
│ │ │ │ │ ├── auth-action.ts
│ │ │ │ │ ├── auth-middleware.ts
│ │ │ │ │ ├── auth-reducer.cy.js
│ │ │ │ │ ├── auth-reducer.ts
│ │ │ │ │ └── cluster-badges.ts
│ │ │ │ ├── banner/
│ │ │ │ │ ├── banner-action.ts
│ │ │ │ │ └── banner-reducer.ts
│ │ │ │ ├── breadcrumbs/
│ │ │ │ │ └── breadcrumbs-actions.ts
│ │ │ │ ├── collection-panel/
│ │ │ │ │ ├── collection-panel-action.ts
│ │ │ │ │ ├── collection-panel-files/
│ │ │ │ │ │ ├── collection-panel-files-actions.ts
│ │ │ │ │ │ ├── collection-panel-files-reducer.cy.js
│ │ │ │ │ │ ├── collection-panel-files-reducer.ts
│ │ │ │ │ │ └── collection-panel-files-state.ts
│ │ │ │ │ └── collection-panel-reducer.ts
│ │ │ │ ├── collections/
│ │ │ │ │ ├── collection-copy-actions.ts
│ │ │ │ │ ├── collection-create-actions.ts
│ │ │ │ │ ├── collection-info-actions.ts
│ │ │ │ │ ├── collection-move-actions.ts
│ │ │ │ │ ├── collection-partial-copy-actions.ts
│ │ │ │ │ ├── collection-partial-move-actions.ts
│ │ │ │ │ ├── collection-update-actions.ts
│ │ │ │ │ ├── collection-upload-actions.ts
│ │ │ │ │ └── collection-version-actions.ts
│ │ │ │ ├── collections-content-address-panel/
│ │ │ │ │ ├── collections-content-address-middleware-service.ts
│ │ │ │ │ └── collections-content-address-panel-actions.ts
│ │ │ │ ├── context-menu/
│ │ │ │ │ ├── context-menu-actions.ts
│ │ │ │ │ ├── context-menu-filters.ts
│ │ │ │ │ ├── context-menu-reducer.ts
│ │ │ │ │ └── context-menu.ts
│ │ │ │ ├── copy-dialog/
│ │ │ │ │ └── copy-dialog.ts
│ │ │ │ ├── data-explorer/
│ │ │ │ │ ├── data-explorer-action.ts
│ │ │ │ │ ├── data-explorer-middleware-service.ts
│ │ │ │ │ ├── data-explorer-middleware.cy.js
│ │ │ │ │ ├── data-explorer-middleware.ts
│ │ │ │ │ ├── data-explorer-reducer.cy.js
│ │ │ │ │ └── data-explorer-reducer.ts
│ │ │ │ ├── description-dialog/
│ │ │ │ │ └── description-dialog-actions.ts
│ │ │ │ ├── details-panel/
│ │ │ │ │ ├── details-panel-action.ts
│ │ │ │ │ └── details-panel-reducer.ts
│ │ │ │ ├── dialog/
│ │ │ │ │ ├── dialog-actions.ts
│ │ │ │ │ ├── dialog-reducer.cy.js
│ │ │ │ │ ├── dialog-reducer.ts
│ │ │ │ │ └── with-dialog.ts
│ │ │ │ ├── external-credentials/
│ │ │ │ │ ├── external-credential-dialog-data.ts
│ │ │ │ │ ├── external-credentials-actions.cy.js
│ │ │ │ │ ├── external-credentials-actions.ts
│ │ │ │ │ └── external-credentials-middleware-service.ts
│ │ │ │ ├── favorite-panel/
│ │ │ │ │ ├── favorite-panel-action.ts
│ │ │ │ │ └── favorite-panel-middleware-service.ts
│ │ │ │ ├── favorite-pins/
│ │ │ │ │ └── favorite-pins-middleware-service.ts
│ │ │ │ ├── favorites/
│ │ │ │ │ ├── favorites-actions.ts
│ │ │ │ │ ├── favorites-links-reducer.tsx
│ │ │ │ │ └── favorites-reducer.ts
│ │ │ │ ├── file-selection/
│ │ │ │ │ └── file-selection-actions.ts
│ │ │ │ ├── file-uploader/
│ │ │ │ │ ├── file-uploader-actions.ts
│ │ │ │ │ └── file-uploader-reducer.ts
│ │ │ │ ├── file-viewers/
│ │ │ │ │ ├── file-viewers-actions.ts
│ │ │ │ │ └── file-viewers-selectors.ts
│ │ │ │ ├── group-details-panel/
│ │ │ │ │ ├── group-details-panel-actions.ts
│ │ │ │ │ ├── group-details-panel-members-middleware-service.test.js
│ │ │ │ │ ├── group-details-panel-members-middleware-service.ts
│ │ │ │ │ ├── group-details-panel-permissions-middleware-service.test.js
│ │ │ │ │ └── group-details-panel-permissions-middleware-service.ts
│ │ │ │ ├── groups-panel/
│ │ │ │ │ ├── groups-panel-actions.ts
│ │ │ │ │ ├── groups-panel-middleware-service.cy.js
│ │ │ │ │ └── groups-panel-middleware-service.ts
│ │ │ │ ├── keep-services/
│ │ │ │ │ ├── keep-services-actions.ts
│ │ │ │ │ └── keep-services-reducer.ts
│ │ │ │ ├── link-account-panel/
│ │ │ │ │ ├── link-account-panel-actions.ts
│ │ │ │ │ ├── link-account-panel-reducer.cy.js
│ │ │ │ │ └── link-account-panel-reducer.ts
│ │ │ │ ├── link-panel/
│ │ │ │ │ ├── link-panel-actions.ts
│ │ │ │ │ └── link-panel-middleware-service.ts
│ │ │ │ ├── move-to-dialog/
│ │ │ │ │ └── move-to-dialog.ts
│ │ │ │ ├── multiselect/
│ │ │ │ │ ├── multiselect-actions.tsx
│ │ │ │ │ └── multiselect-reducer.tsx
│ │ │ │ ├── navigation/
│ │ │ │ │ └── navigation-action.ts
│ │ │ │ ├── not-found-panel/
│ │ │ │ │ └── not-found-panel-action.tsx
│ │ │ │ ├── open-in-new-tab/
│ │ │ │ │ └── open-in-new-tab.actions.ts
│ │ │ │ ├── owner-name/
│ │ │ │ │ ├── owner-name-actions.ts
│ │ │ │ │ └── owner-name-reducer.ts
│ │ │ │ ├── process-logs-panel/
│ │ │ │ │ ├── process-logs-panel-actions.cy.js
│ │ │ │ │ ├── process-logs-panel-actions.ts
│ │ │ │ │ ├── process-logs-panel-reducer.ts
│ │ │ │ │ └── process-logs-panel.ts
│ │ │ │ ├── process-panel/
│ │ │ │ │ ├── process-panel-actions.ts
│ │ │ │ │ ├── process-panel-reducer.ts
│ │ │ │ │ └── process-panel.ts
│ │ │ │ ├── processes/
│ │ │ │ │ ├── process-copy-actions.cy.js
│ │ │ │ │ ├── process-copy-actions.ts
│ │ │ │ │ ├── process-input-actions.ts
│ │ │ │ │ ├── process-update-actions.ts
│ │ │ │ │ ├── process.ts
│ │ │ │ │ ├── processes-actions.ts
│ │ │ │ │ └── processes-middleware-service.ts
│ │ │ │ ├── progress-indicator/
│ │ │ │ │ ├── progress-indicator-actions.ts
│ │ │ │ │ ├── progress-indicator-reducer.ts
│ │ │ │ │ └── with-progress.ts
│ │ │ │ ├── project-panel/
│ │ │ │ │ ├── project-panel-action-bind.ts
│ │ │ │ │ ├── project-panel-action.ts
│ │ │ │ │ ├── project-panel-data-middleware-service.ts
│ │ │ │ │ ├── project-panel-run-middleware-service.ts
│ │ │ │ │ └── project-panel.ts
│ │ │ │ ├── project-tree-picker/
│ │ │ │ │ └── project-tree-picker-actions.ts
│ │ │ │ ├── projects/
│ │ │ │ │ ├── project-create-actions.ts
│ │ │ │ │ ├── project-lock-actions.ts
│ │ │ │ │ ├── project-move-actions.ts
│ │ │ │ │ └── project-update-actions.ts
│ │ │ │ ├── properties/
│ │ │ │ │ ├── properties-actions.ts
│ │ │ │ │ ├── properties-reducer.ts
│ │ │ │ │ └── properties.ts
│ │ │ │ ├── public-favorites/
│ │ │ │ │ ├── public-favorites-actions.ts
│ │ │ │ │ ├── public-favorites-reducer.ts
│ │ │ │ │ └── public-favorites.ts
│ │ │ │ ├── public-favorites-panel/
│ │ │ │ │ ├── public-favorites-action.ts
│ │ │ │ │ └── public-favorites-middleware-service.ts
│ │ │ │ ├── recent-wf-runs/
│ │ │ │ │ ├── recent-wf-runs-action.ts
│ │ │ │ │ └── recent-wf-runs-middleware-sevice.ts
│ │ │ │ ├── recently-visited/
│ │ │ │ │ ├── recently-visited-actions.tsx
│ │ │ │ │ └── recently-visited-middleware-services.ts
│ │ │ │ ├── redux-saga.ts
│ │ │ │ ├── repositories/
│ │ │ │ │ ├── repositories-actions.ts
│ │ │ │ │ └── repositories-reducer.ts
│ │ │ │ ├── resource-type-filters/
│ │ │ │ │ ├── resource-type-filters.cy.js
│ │ │ │ │ └── resource-type-filters.ts
│ │ │ │ ├── resources/
│ │ │ │ │ ├── resources-actions.ts
│ │ │ │ │ ├── resources-reducer.ts
│ │ │ │ │ └── resources.ts
│ │ │ │ ├── rich-text-editor-dialog/
│ │ │ │ │ └── rich-text-editor-dialog-actions.tsx
│ │ │ │ ├── run-process-panel/
│ │ │ │ │ ├── run-process-panel-actions.cy.js
│ │ │ │ │ ├── run-process-panel-actions.ts
│ │ │ │ │ └── run-process-panel-reducer.ts
│ │ │ │ ├── search-bar/
│ │ │ │ │ ├── search-bar-actions.cy.js
│ │ │ │ │ ├── search-bar-actions.ts
│ │ │ │ │ ├── search-bar-reducer.ts
│ │ │ │ │ ├── search-bar-tree-actions.ts
│ │ │ │ │ └── search-query/
│ │ │ │ │ ├── arv-parser.ts
│ │ │ │ │ └── parser.ts
│ │ │ │ ├── search-results-panel/
│ │ │ │ │ ├── search-results-middleware-service.cy.js
│ │ │ │ │ ├── search-results-middleware-service.ts
│ │ │ │ │ └── search-results-panel-actions.ts
│ │ │ │ ├── selected-resource/
│ │ │ │ │ ├── selected-resource-actions.ts
│ │ │ │ │ └── selected-resource-reducer.ts
│ │ │ │ ├── shared-with-me-panel/
│ │ │ │ │ ├── shared-with-me-middleware-service.ts
│ │ │ │ │ └── shared-with-me-panel-actions.ts
│ │ │ │ ├── sharing-dialog/
│ │ │ │ │ ├── sharing-dialog-actions.ts
│ │ │ │ │ └── sharing-dialog-types.ts
│ │ │ │ ├── side-panel/
│ │ │ │ │ ├── side-panel-action.ts
│ │ │ │ │ └── side-panel-reducer.tsx
│ │ │ │ ├── side-panel-tree/
│ │ │ │ │ └── side-panel-tree-actions.ts
│ │ │ │ ├── snackbar/
│ │ │ │ │ ├── snackbar-actions.ts
│ │ │ │ │ └── snackbar-reducer.ts
│ │ │ │ ├── store.ts
│ │ │ │ ├── subprocess-panel/
│ │ │ │ │ ├── subprocess-panel-actions.ts
│ │ │ │ │ └── subprocess-panel-middleware-service.ts
│ │ │ │ ├── token-dialog/
│ │ │ │ │ └── token-dialog-actions.tsx
│ │ │ │ ├── tooltips/
│ │ │ │ │ └── tooltips-middleware.ts
│ │ │ │ ├── trash/
│ │ │ │ │ └── trash-actions.ts
│ │ │ │ ├── trash-panel/
│ │ │ │ │ ├── trash-panel-action.ts
│ │ │ │ │ └── trash-panel-middleware-service.ts
│ │ │ │ ├── tree-picker/
│ │ │ │ │ ├── picker-id.tsx
│ │ │ │ │ ├── tree-picker-actions.cy.js
│ │ │ │ │ ├── tree-picker-actions.ts
│ │ │ │ │ ├── tree-picker-middleware.ts
│ │ │ │ │ ├── tree-picker-reducer.cy.js
│ │ │ │ │ ├── tree-picker-reducer.ts
│ │ │ │ │ └── tree-picker.ts
│ │ │ │ ├── user-preferences/
│ │ │ │ │ └── user-preferences-actions.ts
│ │ │ │ ├── user-profile/
│ │ │ │ │ ├── user-profile-actions.ts
│ │ │ │ │ └── user-profile-groups-middleware-service.ts
│ │ │ │ ├── users/
│ │ │ │ │ ├── user-panel-middleware-service.ts
│ │ │ │ │ └── users-actions.ts
│ │ │ │ ├── virtual-machines/
│ │ │ │ │ ├── virtual-machines-actions.ts
│ │ │ │ │ └── virtual-machines-reducer.ts
│ │ │ │ ├── vocabulary/
│ │ │ │ │ ├── vocabulary-actions.ts
│ │ │ │ │ └── vocabulary-selectors.ts
│ │ │ │ ├── workbench/
│ │ │ │ │ └── workbench-actions.ts
│ │ │ │ └── workflow-panel/
│ │ │ │ ├── workflow-middleware-service.ts
│ │ │ │ ├── workflow-panel-actions.cy.js
│ │ │ │ └── workflow-panel-actions.ts
│ │ │ ├── validators/
│ │ │ │ ├── is-float.tsx
│ │ │ │ ├── is-integer.tsx
│ │ │ │ ├── is-number.tsx
│ │ │ │ ├── is-remote-host.tsx
│ │ │ │ ├── is-rsa-key.cy.js
│ │ │ │ ├── is-rsa-key.tsx
│ │ │ │ ├── is-valid-file-ops-location.ts
│ │ │ │ ├── is-valid-future-date.tsx
│ │ │ │ ├── is-zip-filename.tsx
│ │ │ │ ├── max-length.tsx
│ │ │ │ ├── min-length.tsx
│ │ │ │ ├── min.tsx
│ │ │ │ ├── optional.tsx
│ │ │ │ ├── require.tsx
│ │ │ │ ├── valid-name.tsx
│ │ │ │ └── validators.tsx
│ │ │ ├── views/
│ │ │ │ ├── all-processes-panel/
│ │ │ │ │ ├── all-processes-panel-columns.tsx
│ │ │ │ │ └── all-processes-panel.tsx
│ │ │ │ ├── api-client-authorization-panel/
│ │ │ │ │ ├── api-client-authorization-panel-columns.tsx
│ │ │ │ │ ├── api-client-authorization-panel-root.tsx
│ │ │ │ │ └── api-client-authorization-panel.tsx
│ │ │ │ ├── collection-content-address-panel/
│ │ │ │ │ ├── collection-content-address-panel-columns.tsx
│ │ │ │ │ └── collection-content-address-panel.tsx
│ │ │ │ ├── collection-panel/
│ │ │ │ │ ├── collection-attributes.tsx
│ │ │ │ │ └── collection-panel.tsx
│ │ │ │ ├── external-credentials-panel/
│ │ │ │ │ ├── external-credentials-panel-columns.tsx
│ │ │ │ │ └── external-credentials-panel.tsx
│ │ │ │ ├── favorite-panel/
│ │ │ │ │ ├── favorite-panel-columns.tsx
│ │ │ │ │ └── favorite-panel.tsx
│ │ │ │ ├── group-details-panel/
│ │ │ │ │ ├── group-details-panel-columns.tsx
│ │ │ │ │ └── group-details-panel.tsx
│ │ │ │ ├── groups-panel/
│ │ │ │ │ ├── groups-panel-columns.tsx
│ │ │ │ │ └── groups-panel.tsx
│ │ │ │ ├── inactive-panel/
│ │ │ │ │ ├── inactive-panel.cy.js
│ │ │ │ │ └── inactive-panel.tsx
│ │ │ │ ├── instance-types-panel/
│ │ │ │ │ ├── instance-types-panel.cy.js
│ │ │ │ │ └── instance-types-panel.tsx
│ │ │ │ ├── keep-service-panel/
│ │ │ │ │ ├── keep-service-panel-root.tsx
│ │ │ │ │ └── keep-service-panel.tsx
│ │ │ │ ├── link-account-panel/
│ │ │ │ │ ├── link-account-panel-root.tsx
│ │ │ │ │ └── link-account-panel.tsx
│ │ │ │ ├── link-panel/
│ │ │ │ │ ├── link-panel-columns.tsx
│ │ │ │ │ ├── link-panel-root.tsx
│ │ │ │ │ └── link-panel.tsx
│ │ │ │ ├── login-panel/
│ │ │ │ │ ├── login-panel.cy.js
│ │ │ │ │ └── login-panel.tsx
│ │ │ │ ├── main-panel/
│ │ │ │ │ ├── main-panel-root.tsx
│ │ │ │ │ └── main-panel.tsx
│ │ │ │ ├── not-found-panel/
│ │ │ │ │ ├── not-found-panel-root.cy.js
│ │ │ │ │ ├── not-found-panel-root.tsx
│ │ │ │ │ └── not-found-panel.tsx
│ │ │ │ ├── process-panel/
│ │ │ │ │ ├── process-attributes.tsx
│ │ │ │ │ ├── process-cmd-card.tsx
│ │ │ │ │ ├── process-details-attributes.tsx
│ │ │ │ │ ├── process-io-card.cy.js
│ │ │ │ │ ├── process-io-card.tsx
│ │ │ │ │ ├── process-log-card.tsx
│ │ │ │ │ ├── process-log-code-snippet.tsx
│ │ │ │ │ ├── process-log-form.tsx
│ │ │ │ │ ├── process-output-collection-files.ts
│ │ │ │ │ ├── process-panel-root.tsx
│ │ │ │ │ ├── process-panel.tsx
│ │ │ │ │ └── process-resource-card.tsx
│ │ │ │ ├── project-panel/
│ │ │ │ │ ├── project-attributes.tsx
│ │ │ │ │ ├── project-panel-columns.tsx
│ │ │ │ │ ├── project-panel-data.tsx
│ │ │ │ │ ├── project-panel-run.tsx
│ │ │ │ │ └── project-panel.tsx
│ │ │ │ ├── public-favorites-panel/
│ │ │ │ │ ├── public-favorites-panel-columns.tsx
│ │ │ │ │ └── public-favorites-panel.tsx
│ │ │ │ ├── repositories-panel/
│ │ │ │ │ └── repositories-panel.tsx
│ │ │ │ ├── run-process-panel/
│ │ │ │ │ ├── inputs/
│ │ │ │ │ │ ├── boolean-input.tsx
│ │ │ │ │ │ ├── directory-array-input.tsx
│ │ │ │ │ │ ├── directory-input.tsx
│ │ │ │ │ │ ├── enum-input.tsx
│ │ │ │ │ │ ├── file-array-input.tsx
│ │ │ │ │ │ ├── file-input.tsx
│ │ │ │ │ │ ├── float-array-input.tsx
│ │ │ │ │ │ ├── float-input.tsx
│ │ │ │ │ │ ├── generic-input.tsx
│ │ │ │ │ │ ├── int-array-input.tsx
│ │ │ │ │ │ ├── int-input.tsx
│ │ │ │ │ │ ├── run-wf-project-input.tsx
│ │ │ │ │ │ ├── search-project-input.tsx
│ │ │ │ │ │ ├── string-array-input.tsx
│ │ │ │ │ │ └── string-input.tsx
│ │ │ │ │ ├── run-process-advanced-form.tsx
│ │ │ │ │ ├── run-process-basic-form.tsx
│ │ │ │ │ ├── run-process-first-step.tsx
│ │ │ │ │ ├── run-process-inputs-form.tsx
│ │ │ │ │ ├── run-process-panel-root.tsx
│ │ │ │ │ ├── run-process-panel.tsx
│ │ │ │ │ ├── run-process-second-step.tsx
│ │ │ │ │ └── workflow-preset-select.tsx
│ │ │ │ ├── search-results-panel/
│ │ │ │ │ ├── search-results-panel-columns.tsx
│ │ │ │ │ ├── search-results-panel-view.tsx
│ │ │ │ │ └── search-results-panel.tsx
│ │ │ │ ├── shared-with-me-panel/
│ │ │ │ │ ├── shared-with-me-columns.tsx
│ │ │ │ │ └── shared-with-me-panel.tsx
│ │ │ │ ├── site-manager-panel/
│ │ │ │ │ ├── site-manager-panel-root.tsx
│ │ │ │ │ └── site-manager-panel.tsx
│ │ │ │ ├── ssh-key-panel/
│ │ │ │ │ ├── ssh-key-admin-panel.tsx
│ │ │ │ │ ├── ssh-key-panel-root.tsx
│ │ │ │ │ └── ssh-key-panel.tsx
│ │ │ │ ├── subprocess-panel/
│ │ │ │ │ ├── subprocess-panel-columns.tsx
│ │ │ │ │ ├── subprocess-panel-root.tsx
│ │ │ │ │ └── subprocess-panel.tsx
│ │ │ │ ├── trash-panel/
│ │ │ │ │ ├── trash-panel-columns.tsx
│ │ │ │ │ └── trash-panel.tsx
│ │ │ │ ├── user-panel/
│ │ │ │ │ ├── user-panel-columns.tsx
│ │ │ │ │ └── user-panel.tsx
│ │ │ │ ├── user-preferences-panel/
│ │ │ │ │ ├── user-preferences-panel-root.tsx
│ │ │ │ │ └── user-preferences-panel.tsx
│ │ │ │ ├── user-profile-panel/
│ │ │ │ │ ├── user-profile-panel-columns.tsx
│ │ │ │ │ ├── user-profile-panel-root.tsx
│ │ │ │ │ └── user-profile-panel.tsx
│ │ │ │ ├── virtual-machine-panel/
│ │ │ │ │ ├── virtual-machine-admin-panel.tsx
│ │ │ │ │ └── virtual-machine-user-panel.tsx
│ │ │ │ ├── workbench/
│ │ │ │ │ ├── fed-login.tsx
│ │ │ │ │ ├── workbench-loading-screen.tsx
│ │ │ │ │ ├── workbench.cy.js
│ │ │ │ │ └── workbench.tsx
│ │ │ │ └── workflow-panel/
│ │ │ │ ├── registered-workflow-panel.tsx
│ │ │ │ ├── workflow-description-card.tsx
│ │ │ │ ├── workflow-graph.tsx
│ │ │ │ ├── workflow-panel-columns.tsx
│ │ │ │ ├── workflow-panel-view.tsx
│ │ │ │ ├── workflow-panel.tsx
│ │ │ │ ├── workflow-processes-panel-columns.tsx
│ │ │ │ ├── workflow-processes-panel-root.tsx
│ │ │ │ └── workflow-processes-panel.tsx
│ │ │ ├── views-components/
│ │ │ │ ├── add-session/
│ │ │ │ │ └── add-session.tsx
│ │ │ │ ├── advanced-tab-dialog/
│ │ │ │ │ ├── advanced-tab-dialog.tsx
│ │ │ │ │ └── metadataTab.tsx
│ │ │ │ ├── api-client-authorizations-dialog/
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ ├── help-dialog.tsx
│ │ │ │ │ └── remove-dialog.tsx
│ │ │ │ ├── api-token/
│ │ │ │ │ └── api-token.tsx
│ │ │ │ ├── auto-logout/
│ │ │ │ │ ├── auto-logout.cy.js
│ │ │ │ │ └── auto-logout.tsx
│ │ │ │ ├── baner/
│ │ │ │ │ ├── banner.cy.js
│ │ │ │ │ └── banner.tsx
│ │ │ │ ├── breadcrumbs/
│ │ │ │ │ └── breadcrumbs.ts
│ │ │ │ ├── collection-panel-files/
│ │ │ │ │ └── collection-panel-files.ts
│ │ │ │ ├── collections-dialog/
│ │ │ │ │ └── restore-version-dialog.ts
│ │ │ │ ├── context-menu/
│ │ │ │ │ ├── action-sets/
│ │ │ │ │ │ ├── api-client-authorization-action-set.ts
│ │ │ │ │ │ ├── collection-action-set.cy.js
│ │ │ │ │ │ ├── collection-action-set.ts
│ │ │ │ │ │ ├── collection-files-action-set.ts
│ │ │ │ │ │ ├── collection-files-item-action-set.ts
│ │ │ │ │ │ ├── collection-files-not-selected-action-set.ts
│ │ │ │ │ │ ├── external-credential-action-set.ts
│ │ │ │ │ │ ├── favorite-action-set.ts
│ │ │ │ │ │ ├── group-action-set.ts
│ │ │ │ │ │ ├── group-member-action-set.ts
│ │ │ │ │ │ ├── keep-service-action-set.ts
│ │ │ │ │ │ ├── link-action-set.ts
│ │ │ │ │ │ ├── permission-edit-action-set.ts
│ │ │ │ │ │ ├── process-resource-action-set.ts
│ │ │ │ │ │ ├── project-action-set.cy.js
│ │ │ │ │ │ ├── project-action-set.ts
│ │ │ │ │ │ ├── project-admin-action-set.ts
│ │ │ │ │ │ ├── repository-action-set.ts
│ │ │ │ │ │ ├── resource-action-set.ts
│ │ │ │ │ │ ├── root-project-action-set.ts
│ │ │ │ │ │ ├── search-results-action-set.ts
│ │ │ │ │ │ ├── ssh-key-action-set.ts
│ │ │ │ │ │ ├── trash-action-set.ts
│ │ │ │ │ │ ├── trashed-collection-action-set.ts
│ │ │ │ │ │ ├── user-action-set.ts
│ │ │ │ │ │ ├── user-details-action-set.ts
│ │ │ │ │ │ ├── virtual-machine-action-set.ts
│ │ │ │ │ │ └── workflow-action-set.ts
│ │ │ │ │ ├── actions/
│ │ │ │ │ │ ├── collection-copy-to-clipboard-action.tsx
│ │ │ │ │ │ ├── collection-file-viewer-action.cy.js
│ │ │ │ │ │ ├── collection-file-viewer-action.tsx
│ │ │ │ │ │ ├── context-menu-divider.tsx
│ │ │ │ │ │ ├── copy-to-clipboard-action.cy.js
│ │ │ │ │ │ ├── copy-to-clipboard-action.tsx
│ │ │ │ │ │ ├── download-action.cy.js
│ │ │ │ │ │ ├── download-action.tsx
│ │ │ │ │ │ ├── download-collection-file-action.tsx
│ │ │ │ │ │ ├── favorite-action.tsx
│ │ │ │ │ │ ├── file-viewer-action.cy.js
│ │ │ │ │ │ ├── file-viewer-action.tsx
│ │ │ │ │ │ ├── file-viewer-actions.tsx
│ │ │ │ │ │ ├── helpers.cy.js
│ │ │ │ │ │ ├── helpers.ts
│ │ │ │ │ │ ├── lock-action.tsx
│ │ │ │ │ │ ├── public-favorite-action.tsx
│ │ │ │ │ │ └── trash-action.tsx
│ │ │ │ │ ├── component-item-styles.ts
│ │ │ │ │ ├── context-menu-action-set.ts
│ │ │ │ │ ├── context-menu.tsx
│ │ │ │ │ └── menu-item-sort.ts
│ │ │ │ ├── data-explorer/
│ │ │ │ │ ├── data-explorer.tsx
│ │ │ │ │ ├── renderers.cy.js
│ │ │ │ │ ├── renderers.tsx
│ │ │ │ │ └── with-resources.tsx
│ │ │ │ ├── description-dialog/
│ │ │ │ │ └── description-dialog.tsx
│ │ │ │ ├── details-card/
│ │ │ │ │ ├── collection-details-card.tsx
│ │ │ │ │ ├── description-preview.tsx
│ │ │ │ │ ├── details-card-root.tsx
│ │ │ │ │ ├── process-details-card.tsx
│ │ │ │ │ ├── project-details-card.tsx
│ │ │ │ │ ├── service-menu.cy.js
│ │ │ │ │ ├── service-menu.tsx
│ │ │ │ │ ├── user-details-card.tsx
│ │ │ │ │ └── workflow-details-card.tsx
│ │ │ │ ├── details-panel/
│ │ │ │ │ ├── collection-details.tsx
│ │ │ │ │ ├── details-data.tsx
│ │ │ │ │ ├── details-panel.tsx
│ │ │ │ │ ├── empty-details.tsx
│ │ │ │ │ ├── file-details.tsx
│ │ │ │ │ ├── process-details.tsx
│ │ │ │ │ ├── project-details.tsx
│ │ │ │ │ ├── root-project-details.tsx
│ │ │ │ │ └── workflow-details.tsx
│ │ │ │ ├── dialog-copy/
│ │ │ │ │ ├── dialog-collection-partial-copy-to-existing-collection.tsx
│ │ │ │ │ ├── dialog-collection-partial-copy-to-new-collection.tsx
│ │ │ │ │ ├── dialog-collection-partial-copy-to-separate-collections.tsx
│ │ │ │ │ ├── dialog-copy.tsx
│ │ │ │ │ └── dialog-process-rerun.tsx
│ │ │ │ ├── dialog-create/
│ │ │ │ │ ├── create-external-credential-dialog.ts
│ │ │ │ │ ├── dialog-collection-create.tsx
│ │ │ │ │ ├── dialog-external-credential-create.tsx
│ │ │ │ │ ├── dialog-project-create.tsx
│ │ │ │ │ ├── dialog-repository-create.tsx
│ │ │ │ │ ├── dialog-ssh-key-create.tsx
│ │ │ │ │ └── dialog-user-create.tsx
│ │ │ │ ├── dialog-forms/
│ │ │ │ │ ├── create-repository-dialog.ts
│ │ │ │ │ ├── create-ssh-key-dialog.ts
│ │ │ │ │ ├── create-user-dialog.ts
│ │ │ │ │ ├── update-external-credential-dialog.ts
│ │ │ │ │ └── update-process-dialog.ts
│ │ │ │ ├── dialog-move/
│ │ │ │ │ ├── dialog-collection-partial-move-to-existing-collection.tsx
│ │ │ │ │ ├── dialog-collection-partial-move-to-new-collection.tsx
│ │ │ │ │ ├── dialog-collection-partial-move-to-separate-collections.tsx
│ │ │ │ │ ├── dialog-move-collection.tsx
│ │ │ │ │ └── dialog-move-project.tsx
│ │ │ │ ├── dialog-remove/
│ │ │ │ │ └── external-credential-remove-dialog.tsx
│ │ │ │ ├── dialog-update/
│ │ │ │ │ ├── dialog-collection-update.tsx
│ │ │ │ │ ├── dialog-external-credential-update.tsx
│ │ │ │ │ ├── dialog-process-update.tsx
│ │ │ │ │ └── dialog-project-update.tsx
│ │ │ │ ├── dialog-upload/
│ │ │ │ │ └── dialog-collection-files-upload.tsx
│ │ │ │ ├── download-files-as-zip/
│ │ │ │ │ └── download-files-as-zip.tsx
│ │ │ │ ├── favorite-star/
│ │ │ │ │ └── favorite-star.tsx
│ │ │ │ ├── file-remove-dialog/
│ │ │ │ │ ├── file-remove-dialog.ts
│ │ │ │ │ └── multiple-files-remove-dialog.ts
│ │ │ │ ├── file-uploader/
│ │ │ │ │ └── file-uploader.tsx
│ │ │ │ ├── form-fields/
│ │ │ │ │ ├── collection-form-fields.tsx
│ │ │ │ │ ├── external-credential-form-fields.tsx
│ │ │ │ │ ├── process-form-fields.tsx
│ │ │ │ │ ├── project-form-fields.tsx
│ │ │ │ │ ├── repository-form-fields.tsx
│ │ │ │ │ ├── resource-form-fields.tsx
│ │ │ │ │ ├── search-bar-form-fields.tsx
│ │ │ │ │ ├── ssh-key-form-fields.tsx
│ │ │ │ │ └── user-form-fields.tsx
│ │ │ │ ├── groups-dialog/
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ ├── member-attributes-dialog.tsx
│ │ │ │ │ ├── member-remove-dialog.ts
│ │ │ │ │ └── remove-dialog.ts
│ │ │ │ ├── keep-services-dialog/
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ └── remove-dialog.tsx
│ │ │ │ ├── links-dialog/
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ └── remove-dialog.tsx
│ │ │ │ ├── login-form/
│ │ │ │ │ └── login-form.tsx
│ │ │ │ ├── main-app-bar/
│ │ │ │ │ ├── account-menu.cy.js
│ │ │ │ │ ├── account-menu.tsx
│ │ │ │ │ ├── admin-menu.tsx
│ │ │ │ │ ├── anonymous-menu.tsx
│ │ │ │ │ ├── help-menu.tsx
│ │ │ │ │ ├── main-app-bar.tsx
│ │ │ │ │ └── notifications-menu.tsx
│ │ │ │ ├── main-content-bar/
│ │ │ │ │ └── main-content-bar.tsx
│ │ │ │ ├── not-found-dialog/
│ │ │ │ │ └── not-found-dialog.tsx
│ │ │ │ ├── process-cancel-dialog/
│ │ │ │ │ └── process-cancel-dialog.tsx
│ │ │ │ ├── process-input-dialog/
│ │ │ │ │ └── process-input-dialog.tsx
│ │ │ │ ├── process-remove-dialog/
│ │ │ │ │ └── process-remove-dialog.tsx
│ │ │ │ ├── process-runtime-status/
│ │ │ │ │ └── process-runtime-status.tsx
│ │ │ │ ├── projects-tree-picker/
│ │ │ │ │ ├── favorites-tree-picker.tsx
│ │ │ │ │ ├── generic-projects-tree-picker.tsx
│ │ │ │ │ ├── home-tree-picker.tsx
│ │ │ │ │ ├── projects-tree-picker.tsx
│ │ │ │ │ ├── public-favorites-tree-picker.tsx
│ │ │ │ │ ├── search-projects-picker.tsx
│ │ │ │ │ ├── shared-tree-picker.tsx
│ │ │ │ │ └── tree-picker-field.tsx
│ │ │ │ ├── property-chips/
│ │ │ │ │ ├── get-property-chips.cy.js
│ │ │ │ │ └── get-property-chips.tsx
│ │ │ │ ├── remove-dialog/
│ │ │ │ │ └── remove-dialog.tsx
│ │ │ │ ├── rename-file-dialog/
│ │ │ │ │ └── rename-file-dialog.tsx
│ │ │ │ ├── repositories-sample-git-dialog/
│ │ │ │ │ └── repositories-sample-git-dialog.tsx
│ │ │ │ ├── repository-attributes-dialog/
│ │ │ │ │ └── repository-attributes-dialog.tsx
│ │ │ │ ├── repository-remove-dialog/
│ │ │ │ │ └── repository-remove-dialog.ts
│ │ │ │ ├── resource-properties-form/
│ │ │ │ │ ├── property-chip.tsx
│ │ │ │ │ ├── property-field-common.tsx
│ │ │ │ │ ├── property-key-field.tsx
│ │ │ │ │ ├── property-value-field.tsx
│ │ │ │ │ └── resource-properties-form.tsx
│ │ │ │ ├── rich-text-editor-dialog/
│ │ │ │ │ └── rich-text-editor-dialog.tsx
│ │ │ │ ├── run-process-dialog/
│ │ │ │ │ └── change-workflow-dialog.ts
│ │ │ │ ├── search-bar/
│ │ │ │ │ ├── search-bar-advanced-properties-view.tsx
│ │ │ │ │ ├── search-bar-advanced-view.tsx
│ │ │ │ │ ├── search-bar-autocomplete-view.tsx
│ │ │ │ │ ├── search-bar-basic-view.tsx
│ │ │ │ │ ├── search-bar-recent-queries.tsx
│ │ │ │ │ ├── search-bar-save-queries.tsx
│ │ │ │ │ ├── search-bar-view.cy.js
│ │ │ │ │ ├── search-bar-view.tsx
│ │ │ │ │ └── search-bar.tsx
│ │ │ │ ├── sharing-dialog/
│ │ │ │ │ ├── participant-select.tsx
│ │ │ │ │ ├── permission-select.tsx
│ │ │ │ │ ├── select-item.tsx
│ │ │ │ │ ├── sharing-dialog-component.cy.js
│ │ │ │ │ ├── sharing-dialog-component.tsx
│ │ │ │ │ ├── sharing-dialog.tsx
│ │ │ │ │ ├── sharing-invitation-form-component.tsx
│ │ │ │ │ ├── sharing-invitation-form.tsx
│ │ │ │ │ ├── sharing-management-form-component.tsx
│ │ │ │ │ ├── sharing-management-form.tsx
│ │ │ │ │ ├── sharing-public-access-form-component.tsx
│ │ │ │ │ ├── sharing-public-access-form.tsx
│ │ │ │ │ ├── sharing-urls-component.cy.js
│ │ │ │ │ ├── sharing-urls-component.tsx
│ │ │ │ │ ├── sharing-urls.tsx
│ │ │ │ │ └── visibility-level-select.tsx
│ │ │ │ ├── side-panel/
│ │ │ │ │ ├── side-panel-collapsed.tsx
│ │ │ │ │ └── side-panel.tsx
│ │ │ │ ├── side-panel-button/
│ │ │ │ │ ├── side-panel-button.cy.js
│ │ │ │ │ └── side-panel-button.tsx
│ │ │ │ ├── side-panel-toggle/
│ │ │ │ │ └── side-panel-toggle.tsx
│ │ │ │ ├── side-panel-tree/
│ │ │ │ │ └── side-panel-tree.tsx
│ │ │ │ ├── snackbar/
│ │ │ │ │ └── snackbar.tsx
│ │ │ │ ├── ssh-keys-dialog/
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ ├── public-key-dialog.tsx
│ │ │ │ │ └── remove-dialog.tsx
│ │ │ │ ├── token-dialog/
│ │ │ │ │ ├── token-dialog.cy.js
│ │ │ │ │ └── token-dialog.tsx
│ │ │ │ ├── tree-picker/
│ │ │ │ │ ├── tree-picker.cy.js
│ │ │ │ │ └── tree-picker.ts
│ │ │ │ ├── user-dialog/
│ │ │ │ │ ├── activate-dialog.tsx
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ ├── deactivate-dialog.tsx
│ │ │ │ │ └── setup-dialog.tsx
│ │ │ │ ├── virtual-machines-dialog/
│ │ │ │ │ ├── add-login-dialog.tsx
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ ├── group-array-input.tsx
│ │ │ │ │ ├── remove-dialog.tsx
│ │ │ │ │ └── remove-login-dialog.tsx
│ │ │ │ ├── webdav-s3-dialog/
│ │ │ │ │ ├── webdav-s3-dialog.cy.js
│ │ │ │ │ └── webdav-s3-dialog.tsx
│ │ │ │ └── workflow-remove-dialog/
│ │ │ │ └── workflow-remove-dialog.tsx
│ │ │ └── websocket/
│ │ │ ├── resource-event-message.ts
│ │ │ ├── websocket-service.cy.js
│ │ │ ├── websocket-service.ts
│ │ │ └── websocket.ts
│ │ ├── tools/
│ │ │ ├── arvados_config.yml
│ │ │ ├── example-vocabulary.json
│ │ │ ├── run-integration-tests.sh
│ │ │ └── setup-docker-volume.sh
│ │ ├── tsconfig.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsconfig.test.json
│ │ ├── tslint.json
│ │ ├── typings/
│ │ │ ├── global.d.ts
│ │ │ └── images.d.ts
│ │ └── version-at-commit.sh
│ └── ws/
│ ├── doc.go
│ ├── event.go
│ ├── event_source.go
│ ├── event_source_test.go
│ ├── event_test.go
│ ├── gocheck_test.go
│ ├── handler.go
│ ├── permission.go
│ ├── permission_test.go
│ ├── router.go
│ ├── service.go
│ ├── service_test.go
│ ├── session.go
│ ├── session_v0.go
│ ├── session_v0_test.go
│ └── session_v1.go
└── tools/
├── ansible/
│ ├── README.md
│ ├── build-compute-image.yml
│ ├── build-debian-nspawn-vm.yml
│ ├── build-docker-image.yml
│ ├── examples/
│ │ ├── full-cluster-inventory.yml
│ │ ├── simple-cluster-config.yml
│ │ └── simple-cluster-inventory.yml
│ ├── files/
│ │ ├── default-test-config.yml
│ │ └── development-docker-images.yml
│ ├── filter_plugins/
│ │ └── arvados.py
│ ├── group_vars/
│ │ ├── all/
│ │ │ └── vars.yml
│ │ └── arvados_postgresql/
│ │ └── database.yml
│ ├── install-ansible.sh
│ ├── install-arvados-cluster.yml
│ ├── install-dev-tools.yml
│ ├── privilege-nspawn-vm.yml
│ ├── requirements.txt
│ ├── requirements.yml
│ ├── roles/
│ │ ├── arvados_alloy/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_ansible/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_api/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ └── cluster.conf.j2
│ │ ├── arvados_apt/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ └── arvados.pref.j2
│ │ ├── arvados_aws_secret/
│ │ │ ├── files/
│ │ │ │ └── arvados-aws-secret.sh
│ │ │ ├── tasks/
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ └── arvados_aws_secret.service.j2
│ │ ├── arvados_compute/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_controller/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_database/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_dispatch_cloud/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_dispatch_local/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_docker/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── files/
│ │ │ │ └── arvados-docker.pref
│ │ │ └── tasks/
│ │ │ ├── apt.yml
│ │ │ ├── dnf.yml
│ │ │ └── main.yml
│ │ ├── arvados_go/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_grafana/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_keep_web/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_keepbalance/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_keepproxy/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_keepstore/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_loki/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_nginx_base/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── handlers/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ ├── arvados-nginx-http.conf.j2
│ │ │ └── nginx-core.conf.j2
│ │ ├── arvados_nginx_frontend/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── files/
│ │ │ │ └── aws_secret.conf
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ ├── install_cert_file.yml
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ ├── arvados-nginx-controller.conf.j2
│ │ │ ├── arvados-nginx-keepproxy.conf.j2
│ │ │ ├── arvados-nginx-site.conf.j2
│ │ │ ├── arvados-nginx-webdav.conf.j2
│ │ │ ├── arvados-nginx-websocket.conf.j2
│ │ │ └── arvados-nginx-workbench2.conf.j2
│ │ ├── arvados_nodejs/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_postgresql/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ ├── main.yml
│ │ │ │ └── setup_service.yml
│ │ │ └── templates/
│ │ │ └── arvados-ansible.conf.j2
│ │ ├── arvados_prometheus/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_python/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ ├── install_from_source.yml
│ │ │ └── main.yml
│ │ ├── arvados_ruby/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ ├── install_from_source.yml
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ └── bundler.sh.j2
│ │ ├── arvados_service/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_shell/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── files/
│ │ │ │ ├── arvados-login-sync.service
│ │ │ │ └── arvados-login-sync.timer
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ ├── login_sync.yml
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ └── login-sync.env.j2
│ │ ├── arvados_websocket/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_workbench/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── compute_amd_rocm/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── files/
│ │ │ │ └── arvados-amd-rocm.pref
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── compute_docker/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── handlers/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── compute_encrypt_tmp/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── files/
│ │ │ │ ├── arvados-ensure-encrypted-partitions.service
│ │ │ │ ├── ebs-autoscale.conf
│ │ │ │ └── ensure-encrypted-partitions.sh
│ │ │ └── tasks/
│ │ │ ├── aws_ebs.yml
│ │ │ └── main.yml
│ │ ├── compute_nvidia/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── files/
│ │ │ │ └── arvados-nvidia.pref
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── compute_singularity/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── compute_user/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── distro_apt/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── handlers/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ └── 65arvados-ansible-unattended-upgrades.j2
│ │ ├── distro_bootstrap/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── distro_dnf/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── distro_grafana/
│ │ │ ├── files/
│ │ │ │ └── arvados-grafana.pref
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── distro_packages/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ └── distro_postgresql/
│ │ ├── defaults/
│ │ │ └── main.yml
│ │ ├── meta/
│ │ │ └── main.yml
│ │ └── tasks/
│ │ └── main.yml
│ └── setup-package-tests.yml
├── cluster-activity/
│ ├── MANIFEST.in
│ ├── README.rst
│ ├── agpl-3.0.txt
│ ├── arvados_cluster_activity/
│ │ ├── __init__.py
│ │ ├── dygraphs.js
│ │ ├── main.py
│ │ ├── prometheus.py
│ │ ├── report.py
│ │ ├── reportchart.py
│ │ ├── sortable.js
│ │ └── synchronizer.js
│ ├── arvados_version.py
│ ├── cluster-activity.cwl
│ ├── fpm-info.sh
│ ├── pyproject.toml
│ ├── pytest.ini
│ ├── setup.py
│ └── tests/
│ ├── test_prometheus.py
│ ├── test_report.csv
│ ├── test_report.html
│ └── test_report.py
├── compute-images/
│ ├── .gitignore
│ ├── README.md
│ ├── aws_config.example.json
│ ├── aws_template.json
│ ├── azure_config.example.json
│ ├── azure_template.json
│ └── host_config.example.yml
├── copy-tutorial/
│ └── copy-tutorial.sh
├── crunchstat-summary/
│ ├── MANIFEST.in
│ ├── README.rst
│ ├── agpl-3.0.txt
│ ├── arvados_version.py
│ ├── bin/
│ │ └── crunchstat-summary
│ ├── crunchstat_summary/
│ │ ├── __init__.py
│ │ ├── command.py
│ │ ├── dygraphs.js
│ │ ├── dygraphs.py
│ │ ├── reader.py
│ │ ├── summarizer.py
│ │ └── synchronizer.js
│ ├── fpm-info.sh
│ ├── pyproject.toml
│ ├── setup.py
│ └── tests/
│ ├── __init__.py
│ ├── container_9tee4-dz642-lymtndkpy39eibk.txt.gz.report
│ ├── container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y-arv-mount.txt.gz.report
│ ├── container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y-crunchstat.txt.gz.report
│ ├── container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y.txt.gz.report
│ ├── crunchstat_error_messages.txt
│ └── test_examples.py
├── jenkins/
│ └── submit-ci-dev.sh
├── keep-xref/
│ └── keep-xref.py
├── python-metapackage/
│ ├── LICENSE-2.0.txt
│ ├── README.md
│ ├── agpl-3.0.txt
│ ├── arvados_version.py
│ ├── pyproject.toml
│ └── setup.py
├── salt-install/
│ ├── .gitignore
│ ├── README.md
│ ├── Vagrantfile
│ ├── common.sh
│ ├── config_examples/
│ │ ├── multi_host/
│ │ │ └── aws/
│ │ │ ├── README.md
│ │ │ ├── certs/
│ │ │ │ └── README.md
│ │ │ ├── dashboards/
│ │ │ │ ├── arvados_logs.json
│ │ │ │ ├── arvados_overview.json
│ │ │ │ ├── node-exporter-full_rev30.json
│ │ │ │ ├── postgresql_exporter.json
│ │ │ │ └── ssl-certificate-monitor.json
│ │ │ ├── pillars/
│ │ │ │ ├── alloy.sls
│ │ │ │ ├── arvados.sls
│ │ │ │ ├── aws_credentials.sls
│ │ │ │ ├── docker.sls
│ │ │ │ ├── grafana.sls
│ │ │ │ ├── letsencrypt.sls
│ │ │ │ ├── letsencrypt_balancer_configuration.sls
│ │ │ │ ├── letsencrypt_controller_configuration.sls
│ │ │ │ ├── letsencrypt_grafana_configuration.sls
│ │ │ │ ├── letsencrypt_keepproxy_configuration.sls
│ │ │ │ ├── letsencrypt_keepweb_configuration.sls
│ │ │ │ ├── letsencrypt_loki_configuration.sls
│ │ │ │ ├── letsencrypt_prometheus_configuration.sls
│ │ │ │ ├── letsencrypt_webshell_configuration.sls
│ │ │ │ ├── letsencrypt_websocket_configuration.sls
│ │ │ │ ├── letsencrypt_workbench2_configuration.sls
│ │ │ │ ├── letsencrypt_workbench_configuration.sls
│ │ │ │ ├── locale.sls
│ │ │ │ ├── logrotate.sls
│ │ │ │ ├── logrotate_api.sls
│ │ │ │ ├── logrotate_wb1.sls
│ │ │ │ ├── loki.sls
│ │ │ │ ├── nginx.sls
│ │ │ │ ├── nginx_api_configuration.sls
│ │ │ │ ├── nginx_balancer_configuration.sls
│ │ │ │ ├── nginx_collections_configuration.sls
│ │ │ │ ├── nginx_controller_configuration.sls
│ │ │ │ ├── nginx_download_configuration.sls
│ │ │ │ ├── nginx_grafana_configuration.sls
│ │ │ │ ├── nginx_keepproxy_configuration.sls
│ │ │ │ ├── nginx_keepweb_configuration.sls
│ │ │ │ ├── nginx_loki_configuration.sls
│ │ │ │ ├── nginx_prometheus_configuration.sls
│ │ │ │ ├── nginx_snippets.sls
│ │ │ │ ├── nginx_webshell_configuration.sls
│ │ │ │ ├── nginx_websocket_configuration.sls
│ │ │ │ ├── nginx_workbench2_configuration.sls
│ │ │ │ ├── nginx_workbench_configuration.sls
│ │ │ │ ├── postgresql.sls
│ │ │ │ ├── postgresql_external.sls
│ │ │ │ ├── prometheus_node_exporter.sls
│ │ │ │ ├── prometheus_pg_exporter.sls
│ │ │ │ ├── prometheus_server.sls
│ │ │ │ └── ssl_key_encrypted.sls
│ │ │ ├── states/
│ │ │ │ ├── alloy_install.sls
│ │ │ │ ├── aws_credentials.sls
│ │ │ │ ├── custom_certs.sls
│ │ │ │ ├── grafana_admin_user.sls
│ │ │ │ ├── grafana_dashboards.sls
│ │ │ │ ├── grafana_datasource.sls
│ │ │ │ ├── host_entries.sls
│ │ │ │ ├── loki_install.sls
│ │ │ │ ├── nginx_prometheus_configuration.sls
│ │ │ │ ├── passenger_rvm.sls
│ │ │ │ ├── postgresql_external.sls
│ │ │ │ ├── prometheus_pg_exporter.sls
│ │ │ │ ├── railsapi_passenger_configs.sls
│ │ │ │ ├── shell_cron_add_login_sync.sls
│ │ │ │ ├── shell_sudo_passwordless.sls
│ │ │ │ ├── ssl_key_encrypted.sls
│ │ │ │ └── workbench1_uninstall.sls
│ │ │ └── tofs/
│ │ │ └── arvados/
│ │ │ └── shell/
│ │ │ └── config/
│ │ │ └── files/
│ │ │ └── default/
│ │ │ ├── shell-pam-shellinabox.tmpl.jinja
│ │ │ └── shell-shellinabox.tmpl.jinja
│ │ └── single_host/
│ │ ├── multiple_hostnames/
│ │ │ ├── README.md
│ │ │ ├── pillars/
│ │ │ │ ├── arvados.sls
│ │ │ │ ├── docker.sls
│ │ │ │ ├── locale.sls
│ │ │ │ ├── logrotate.sls
│ │ │ │ ├── logrotate_api.sls
│ │ │ │ ├── logrotate_wb1.sls
│ │ │ │ ├── nginx.sls
│ │ │ │ ├── nginx_api_configuration.sls
│ │ │ │ ├── nginx_controller_configuration.sls
│ │ │ │ ├── nginx_keepproxy_configuration.sls
│ │ │ │ ├── nginx_keepweb_configuration.sls
│ │ │ │ ├── nginx_webshell_configuration.sls
│ │ │ │ ├── nginx_websocket_configuration.sls
│ │ │ │ ├── nginx_workbench2_configuration.sls
│ │ │ │ ├── nginx_workbench_configuration.sls
│ │ │ │ └── postgresql.sls
│ │ │ └── states/
│ │ │ ├── custom_certs.sls
│ │ │ ├── dns.sls
│ │ │ ├── host_entries.sls
│ │ │ ├── keep_volume.sls
│ │ │ ├── passenger_rvm.sls
│ │ │ ├── railsapi_passenger_configs.sls
│ │ │ ├── snakeoil_certs.sls
│ │ │ └── workbench1_uninstall.sls
│ │ └── single_hostname/
│ │ ├── README.md
│ │ ├── pillars/
│ │ │ ├── arvados.sls
│ │ │ ├── aws_credentials.sls
│ │ │ ├── docker.sls
│ │ │ ├── letsencrypt.sls
│ │ │ ├── locale.sls
│ │ │ ├── logrotate.sls
│ │ │ ├── logrotate_api.sls
│ │ │ ├── logrotate_wb1.sls
│ │ │ ├── nginx.sls
│ │ │ ├── nginx_api_configuration.sls
│ │ │ ├── nginx_controller_configuration.sls
│ │ │ ├── nginx_keepproxy_configuration.sls
│ │ │ ├── nginx_keepweb_configuration.sls
│ │ │ ├── nginx_webshell_configuration.sls
│ │ │ ├── nginx_websocket_configuration.sls
│ │ │ ├── nginx_workbench2_configuration.sls
│ │ │ ├── nginx_workbench_configuration.sls
│ │ │ └── postgresql.sls
│ │ └── states/
│ │ ├── custom_certs.sls
│ │ ├── dns.sls
│ │ ├── host_entries.sls
│ │ ├── keep_volume.sls
│ │ ├── passenger_rvm.sls
│ │ ├── railsapi_passenger_configs.sls
│ │ ├── shell_cron_add_login_sync.sls
│ │ ├── shell_sudo_passwordless.sls
│ │ ├── snakeoil_certs.sls
│ │ └── workbench1_uninstall.sls
│ ├── installer.sh
│ ├── local.params.example.multiple_hosts
│ ├── local.params.example.single_host_multiple_hostnames
│ ├── local.params.example.single_host_single_hostname
│ ├── local.params.secrets.example
│ ├── provision.sh
│ ├── terraform/
│ │ └── aws/
│ │ ├── .gitignore
│ │ ├── assumerolepolicy.json
│ │ ├── data-storage/
│ │ │ ├── .terraform.lock.hcl
│ │ │ ├── data.tf
│ │ │ ├── locals.tf
│ │ │ ├── main.tf
│ │ │ ├── outputs.tf
│ │ │ ├── terraform.tfvars
│ │ │ └── variables.tf
│ │ ├── services/
│ │ │ ├── .terraform.lock.hcl
│ │ │ ├── data.tf
│ │ │ ├── locals.tf
│ │ │ ├── main.tf
│ │ │ ├── outputs.tf
│ │ │ ├── terraform.tfvars
│ │ │ ├── user_data.sh
│ │ │ └── variables.tf
│ │ └── vpc/
│ │ ├── .terraform.lock.hcl
│ │ ├── data.tf
│ │ ├── locals.tf
│ │ ├── main.tf
│ │ ├── outputs.tf
│ │ ├── terraform.tfvars
│ │ └── variables.tf
│ └── tests/
│ ├── hasher-workflow-job.yml
│ ├── hasher-workflow.cwl
│ ├── hasher.cwl
│ ├── run-test.sh
│ └── test.txt
├── terraform/
│ └── .gitignore
├── test-collection-create/
│ └── test-collection-create.py
├── user-activity/
│ ├── MANIFEST.in
│ ├── README.rst
│ ├── agpl-3.0.txt
│ ├── arvados_user_activity/
│ │ ├── __init__.py
│ │ └── main.py
│ ├── arvados_version.py
│ ├── bin/
│ │ └── arv-user-activity
│ ├── fpm-info.sh
│ ├── pyproject.toml
│ └── setup.py
└── vocabulary-migrate/
└── vocabulary-migrate.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
.bundle
.rvmrc
*~
*.pyc
*.egg
*.egg-info
.eggs
*.pid
*.pid.lock
*.gem
*.rpm
*.deb
docker/*/generated
docker/config.yml
/doc/.site
/doc/sdk/python/arvados
/doc/sdk/python/arvados.html
/doc/sdk/python/index.html
/doc/sdk/python/search.js
/doc/sdk/R/arvados
/doc/sdk/java-v2/javadoc
*.class
/sdk/cli/binstubs/
/sdk/ruby/binstubs/
/services/api/binstubs/
/services/login-sync/binstubs/
/services/api/config/arvados-clients.yml
/contrib/arvados-bootstrap/build/
/contrib/arvados-bootstrap/dist/
/sdk/cwl/build/
/sdk/cwl/dist/
/sdk/python/build/
/sdk/python/dist/
/services/dockercleaner/build/
/services/dockercleaner/dist/
/services/fuse/build/
/services/fuse/dist/
/tools/cluster-activity/build/
/tools/cluster-activity/dist/
/tools/crunchstat-summary/build/
/tools/crunchstat-summary/dist/
/tools/python-metapackage/build/
/tools/python-metapackage/dist/
/tools/user-activity/build/
/tools/user-activity/dist/
*#*
vendor/
tmp/
.DS_Store/
.vscode
.Rproj.user
*.bak
*.log
arvados-snakeoil-ca.pem
.vagrant
/packages/
.eslintcache
================================================
FILE: .licenseignore
================================================
*agpl-3.0.html
*agpl-3.0.txt
apache-2.0.txt
AUTHORS
*/bootstrap.css
*/bootstrap.js
*bootstrap-theme.css
*by-sa-3.0.html
*by-sa-3.0.txt
*COPYING
doc/fonts/*
doc/_includes/_config_default_yml.liquid
doc/_includes/_terraform_*_tfvars.liquid
doc/user/cwl/federated/*
doc/_includes/_federated_cwl.liquid
*/docker_image
docker/jobs/apt.arvados.org*.list
docker/jobs/1078ECD7.key
*/en.bootstrap.yml
*font-awesome.css
*.gif
.gitignore
*/.gitignore
*/.gitkeep
*/.gitstub
*.gz
*.gz.report
*.ico
*.jpg
*.svg
*.odg
*.json
*LICENSE*.html
.licenseignore
*LICENSE*.txt
*.lock
*.log
*.map
*.min.css
*.min.js
*.png
*/proc_stat
*/pytest.ini
*/README
*/robots.txt
*/runit-docker/*
*/sb-admin.css.scss
*/script/rails
sdk/cwl/tests/input/blorp.txt
sdk/cwl/tests/tool/blub.txt
sdk/cwl/tests/19109-upload-secondary/*
sdk/cwl/tests/federation/data/*
sdk/cwl/tests/fake-keep-mount/fake_collection_dir/.arvados#collection
sdk/cwl/tests/container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y-arv-mount.txt
sdk/cwl/tests/container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y-crunchstat.txt
sdk/go/manifest/testdata/*_manifest
sdk/java/.classpath
sdk/java/pom.xml
sdk/java/.project
sdk/java/.settings/org.eclipse.jdt.core.prefs
sdk/java/src/main/resources/log4j.properties
sdk/pam/examples/shellinabox
sdk/pam/pam-configs/arvados
sdk/python/tests/data/*
services/api/config/unbound.template
services/api/config/config.default.yml
services/arv-web/sample-cgi-app/public/.htaccess
services/arv-web/sample-cgi-app/public/index.cgi
services/keepproxy/pkg-extras/etc/default/keepproxy
*.tar
tools/crunchstat-summary/tests/crunchstat_error_messages.txt
tools/crunchstat-summary/crunchstat_summary/synchronizer.js
tools/cluster-activity/tests/*.html
tools/cluster-activity/tests/*.csv
contrib/R-sdk/DESCRIPTION
contrib/R-sdk/NAMESPACE
contrib/R-sdk/.Rbuildignore
contrib/R-sdk/ArvadosR.Rproj
*.Rd
lib/dispatchcloud/test/sshkey_*
*.asc
contrib/java-sdk-v2/build.gradle
contrib/java-sdk-v2/settings.gradle
contrib/java-sdk-v2/src/test/resources/*
sdk/cwl/tests/wf/feddemo
go.mod
go.sum
doc/install/*.xlsx
sdk/cwl/tests/wf/hello.txt
sdk/cwl/tests/wf/indir1/hello2.txt
sdk/cwl/tests/chipseq/data/Genomes/*
CITATION.cff
SECURITY.md
lib/crunchstat/testdata/*
lib/controller/localdb/testdata/*.pub
sdk/ruby-google-api-client/*
services/api/bin/rails
services/api/bin/rake
services/api/bin/setup
services/api/bin/yarn
services/api/storage.yml
services/api/test.rb.example
services/api/config/boot.rb
services/api/config/environment.rb
services/api/config/initializers/application_controller_renderer.rb
services/api/config/initializers/assets.rb
services/api/config/initializers/backtrace_silencers.rb
services/api/config/initializers/content_security_policy.rb
services/api/config/initializers/cookies_serializer.rb
services/api/config/initializers/filter_parameter_logging.rb
services/api/config/initializers/mime_types.rb
services/api/config/initializers/new_framework_defaults_*.rb
services/api/config/initializers/permissions_policy.rb
services/api/config/initializers/wrap_parameters.rb
services/api/config/locales/en.yml
services/api/config.ru
services/workbench2/*.d.ts
services/workbench2/*.css
services/workbench2/*.scss
services/workbench2/README.md
services/workbench2/public/*
services/workbench2/.yarnrc
services/workbench2/.npmrc
services/workbench2/src/lib/cwl-svg/*
services/workbench2/tools/arvados_config.yml
services/workbench2/cypress/fixtures/files/5mb.bin
services/workbench2/cypress/fixtures/files/15mb.bin
services/workbench2/cypress/fixtures/files/cat.png
services/workbench2/cypress/fixtures/files/banner.html
services/workbench2/cypress/fixtures/files/tooltips.txt
services/workbench2/cypress/fixtures/webdav-propfind-outputs.xml
services/workbench2/.yarn/releases/*
services/workbench2/package.json
services/workbench2/yarn.lock
================================================
FILE: AUTHORS
================================================
# Names should be added to this file with this pattern:
#
# For individuals:
# Name <email address>
#
# For organizations:
# Organization <fnmatch pattern>
#
# See python fnmatch module documentation for more information.
Curoverse, Inc. <*@curoverse.com>
Adam Savitzky <adam.savitzky@gmail.com>
Colin Nolan <colin.nolan@sanger.ac.uk>
David <davide.fiorentino.loregio@gmail.com>
Guillermo Carrasco <guille.ch.88@gmail.com>
Joshua Randall <joshua.randall@sanger.ac.uk>
President and Fellows of Harvard College <*@harvard.edu>
Thomas Mooney <tmooney@genome.wustl.edu>
Chen Chen <aflyhorse@gmail.com>
Veritas Genetics, Inc. <*@veritasgenetics.com>
Curii Corporation <*@curii.com>
Dante Tsang <dante@dantetsang.com>
Codex Genetics Ltd <info@codexgenetics.com>
Bruno P. Kinoshita <brunodepaulak@yahoo.com.br>
George Chlipala <gchlip2@uic.edu>
================================================
FILE: CITATION.cff
================================================
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- name: "The Arvados Authors"
- family-names: "Amstutz"
given-names: "Peter"
orcid: "https://orcid.org/0000-0003-3566-7705"
- family-names: "Bértoli"
given-names: "Javier"
family-names: "César"
given-names: "Nico"
- family-names: "Clegg"
given-names: "Tom"
orcid: "https://orcid.org/0000-0001-6751-2930"
- family-names: "Di Pentima"
given-names: "Lucas"
orcid: "https://orcid.org/0000-0002-2807-6854"
- family-names: "Kutyła"
given-names: "Daniel"
- family-names: "Li"
given-names: "Jiayong"
- family-names: "Smith"
given-names: "Stephen"
- family-names: "Vandewege"
given-names: "Ward"
orcid: "https://orcid.org/0000-0002-2527-6949"
- family-names: "Wait Zaranek"
given-names: "Alexander"
orcid: "https://orcid.org/0000-0002-0415-9655"
- family-names: "Wait Zaranek"
given-names: "Sarah"
orcid: "https://orcid.org/0000-0003-4716-9121"
title: "Arvados"
abstract: "Arvados is an open source platform for managing, processing, and sharing genomic and other large scientific and biomedical data."
type: software
url: "https://github.com/arvados/arvados/"
doi: 10.5281/zenodo.6382942
================================================
FILE: CODE_OF_CONDUCT.md
================================================
Arvados Code of Conduct
=======================
The Arvados Project is dedicated to providing a harassment-free experience for
everyone. We do not tolerate harassment of participants in any form.
This code of conduct applies to all Arvados Project spaces both online and off:
Gitter chat, Redmine issues, wiki, mailing lists, forums, video chats, and any other
Arvados spaces. Anyone who violates this code of conduct may be sanctioned or
expelled from these spaces at the discretion of the Arvados Team.
Some Arvados Project spaces may have additional rules in place, which will be
made clearly available to participants. Participants are responsible for
knowing and abiding by these rules.
Harassment includes, but is not limited to:
- Offensive comments related to gender, gender identity and expression, sexual
orientation, disability, mental illness, neuro(a)typicality, physical
appearance, body size, age, race, or religion.
- Unwelcome comments regarding a person’s lifestyle choices and practices,
including those related to food, health, parenting, drugs, and employment.
- Deliberate misgendering or use of [dead](https://www.quora.com/What-is-deadnaming/answer/Nancy-C-Walker)
or rejected names.
- Gratuitous or off-topic sexual images or behaviour in spaces where they’re not
appropriate.
- Physical contact and simulated physical contact (eg, textual descriptions like
“\*hug\*” or “\*backrub\*”) without consent or after a request to stop.
- Threats of violence.
- Incitement of violence towards any individual, including encouraging a person
to commit suicide or to engage in self-harm.
- Deliberate intimidation.
- Stalking or following.
- Harassing photography or recording, including logging online activity for
harassment purposes.
- Sustained disruption of discussion.
- Unwelcome sexual attention.
- Pattern of inappropriate social contact, such as requesting/assuming
inappropriate levels of intimacy with others
- Continued one-on-one communication after requests to cease.
- Deliberate “outing” of any aspect of a person’s identity without their consent
except as necessary to protect vulnerable people from intentional abuse.
- Publication of non-harassing private communication.
The Arvados Project prioritizes marginalized people’s safety over privileged
people’s comfort. The Arvados Leadership Team will not act on complaints regarding:
- ‘Reverse’ -isms, including ‘reverse racism,’ ‘reverse sexism,’ and ‘cisphobia’
- Reasonable communication of boundaries, such as “leave me alone,” “go away,” or
“I’m not discussing this with you.”
- Communicating in a [tone](http://geekfeminism.wikia.com/wiki/Tone_argument)
you don’t find congenial
Reporting
---------
If you are being harassed by a member of the Arvados Project, notice that someone
else is being harassed, or have any other concerns, please contact the Arvados
Project Team at contact@arvados.org. If person who is harassing
you is on the team, they will recuse themselves from handling your incident. We
will respond as promptly as we can.
This code of conduct applies to Arvados Project spaces, but if you are being
harassed by a member of Arvados Project outside our spaces, we still want to
know about it. We will take all good-faith reports of harassment by Arvados Project
members, especially the Arvados Team, seriously. This includes harassment
outside our spaces and harassment that took place at any point in time. The
abuse team reserves the right to exclude people from the Arvados Project based on
their past behavior, including behavior outside Arvados Project spaces and
behavior towards people who are not in the Arvados Project.
In order to protect volunteers from abuse and burnout, we reserve the right to
reject any report we believe to have been made in bad faith. Reports intended
to silence legitimate criticism may be deleted without response.
We will respect confidentiality requests for the purpose of protecting victims
of abuse. At our discretion, we may publicly name a person about whom we’ve
received harassment complaints, or privately warn third parties about them, if
we believe that doing so will increase the safety of Arvados Project members or
the general public. We will not name harassment victims without their
affirmative consent.
Consequences
------------
Participants asked to stop any harassing behavior are expected to comply
immediately.
If a participant engages in harassing behavior, the Arvados Team may
take any action they deem appropriate, up to and including expulsion from all
Arvados Project spaces and identification of the participant as a harasser to other
Arvados Project members or the general public.
This anti-harassment policy is based on the [example policy from the Geek
Feminism wiki](http://geekfeminism.wikia.com/wiki/Community_anti-harassment/Policy),
created by the Geek Feminism community.
================================================
FILE: CONTRIBUTING.md
================================================
[comment]: # (Copyright © The Arvados Authors. All rights reserved.)
[comment]: # ()
[comment]: # (SPDX-License-Identifier: CC-BY-SA-3.0)
# Contributing to Arvados
Arvados is free software, which means it is free for all to use, learn
from, and improve. We encourage contributions from the community that
improve Arvados for everyone. Some examples of contributions are bug
reports, bug fixes, new features, and scripts or documentation that help
with using, administering, or installing Arvados. We also love to
hear about Arvados success stories.
## Reporting Issues
Arvados uses [GitHub Issues](https://github.com/arvados/arvados/issues). You can file issues against any Arvados component there. Even if you're not sure which component causes the issue, you can still file problem reports and we'll work with you to address them.
## Contributing Code
The preferred method for making contributions is through GitHub pull requests. The rest of this guide helps orient you with the code and discusses requirements for all contributions, from the smallest typo fix to entire new components.
If you're interested in developing a large new feature for Arvados, please file an issue to discuss it with us first. We can give you guidance on how to best organize the work before you start it.
## Setting Up Your Development Environment
The [Arvados source code is hosted on GitHub](https://github.com/arvados/arvados). Once you clone it, you'll find guides for specific topics under the `doc/development` directory. You'll probably want to [install a development environment](doc/development/Prerequisites.md) and [learn how to run tests](doc/development/RunningTests.md). There are also some component-specific guides.
### Setting Up Git
We provide Git configuration and hooks to help you follow project conventions.
`doc/development/git.conf` includes a block of Git configuration settings. You can set it up for your checkout by running `git config edit --local`: insert the contents of `doc/development/git.conf`, edit them following the comments, then save and exit.
Install our `prepare-commit-msg` hook:
```sh
$ install -b -m 755 doc/development/prepare-commit-msg.sh .git/hooks/prepare-commit-msg
```
## Prepare a Development Branch
If you haven't before, fork the Arvados repository using the GitHub "Fork" button. If you have, make sure your fork's `main` branch is up-to-date with Arvados'.
Then start a new branch for your development named like `1234-your-work`. The number at the start should match the GitHub issue this request is associated with. Then briefly describe the main change your branch makes.
### Coding Standards
Please familiarize yourself with our [coding standards](doc/development/CodingStandards.md) for the component(s) you're working on and follow them in your work.
### Sign Off Your Commits
Contributions must be signed off. The sign-off is a simple line at the end of each commit message which certifies that you wrote it or otherwise have the right to contribute it under the license listed in the file(s) modified. Make sure each commit message contains the following line with your real name and email (sorry, no pseudonymous or anonymous contributions):
Arvados-DCO-1.1-Signed-off-by: Alex Doe <alex.doe@example.com>
When you add this, you certify the below (from <https://developercertificate.org>):
> Developer Certificate of Origin
> Version 1.1
>
> Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
>
> Everyone is permitted to copy and distribute verbatim copies of this
> license document, but changing it is not allowed.
>
>
> Developer's Certificate of Origin 1.1
>
> By making a contribution to this project, I certify that:
>
> (a) The contribution was created in whole or in part by me and I
> have the right to submit it under the open source license
> indicated in the file; or
>
> (b) The contribution is based upon previous work that, to the best
> of my knowledge, is covered under an appropriate open source
> license and I have the right under that license to submit that
> work with modifications, whether created in whole or in part
> by me, under the same open source license (unless I am
> permitted to submit under a different license), as indicated
> in the file; or
>
> (c) The contribution was provided directly to me by some other
> person who certified (a), (b) or (c) and I have not modified
> it.
>
> (d) I understand and agree that this project and the contribution
> are public and that a record of the contribution (including all
> personal information I submit with it, including my sign-off) is
> maintained indefinitely and may be redistributed consistent with
> this project or the open source license(s) involved.
### Add License Headers
The comments at the top of each file must contain this copyright notice:
> Copyright © The Arvados Authors. All rights reserved.
They must also contain an `SPDX-License-Identifier` to identify the license of this component.
In most cases you can copy this header from another file in the component. If you need more guidance, refer to [the COPYING file](COPYING).
If it is not technically possible to add these comments to a file (for example, because it's a binary test file), you may add its path to the `.licenseignore` file instead.
### Add Your Authorship
If you are not already listed in [the AUTHORS file](AUTHORS), please add yourself in the branch, following the documented format.
## Create Your Pull Request
Once you've finished pushing changes to your branch, create a pull request against `arvados:main` with the following checklist filled out:
* All agreed upon points are implemented / addressed. Describe changes from pre-implementation design.
** _comments_
* Anything not implemented (discovered or discussed during work) has a follow-up story.
** _comments_
* Code is tested and passing, both automated and manual, what manual testing was done is described.
** _comments_
* The tested code incorporates recent main branch changes.
** _confirm_
* New or changed UI/UX has gotten feedback from stakeholders.
** _comments_
* Documentation has been updated.
** _comments_
* Behaves appropriately at the intended scale (describe intended scale).
** _comments_
* Considered backwards and forwards compatibility issues between client and server.
** _comments_
* Follows our coding standards, including GUI style guidelines
** _comments_
"Incorporates recent main branch changes" means that the branch is either based on, or merged, the `main` branch within the last week. The more active development on a component is, the more important it is to be up-to-date with main to avoid surprising test failures post-merge.
UI/UX stands for “User Interface / User Experience”. This includes new or modified GUI elements in Workbench and as well as usability elements of command line tools.
Stakeholders typically include the product manager and may include designers, salespeople, customers, and other end users as appropriate. In this process, the assigned developer demos the new feature, makes note of any feedback, and then based on their judgement either: implements the changes, provides a reason why the feedback cannot be acted on, or discusses how to handle the feedback with the product manager and/or assigned reviewer. This feedback is typically obtained in earlier drafts of the pull request before it is submitted for final review.
A member of the core team will review the pull request. They may have questions or comments through the pull request interface. Once all issues have been resolved, your branch will be merged.
## Continuous Integration
Continuous integration is hosted at <https://ci.arvados.org/>. Currently, external contributors cannot trigger test runs. Trusted contributors may be given permission to do so.
## Community Chat
You can chat with other members of the [Arvados community on Gitter](https://gitter.im/arvados/community). Come say hi!
================================================
FILE: COPYING
================================================
Unless indicated otherwise in the header of the file, the files in this
repository are distributed under one of three different licenses: AGPL-3.0,
Apache-2.0 or CC-BY-SA-3.0.
Individual files contain an SPDX tag that indicates the license for the file.
These are the three tags in use:
SPDX-License-Identifier: AGPL-3.0
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: CC-BY-SA-3.0
This enables machine processing of license information based on the SPDX
License Identifiers that are available here: http://spdx.org/licenses/
The full license text for each license is appended below, and is also available
in this directory:
AGPL-3.0: agpl-3.0.txt
Apache-2.0: apache-2.0.txt
CC-BY-SA-3.0: cc-by-sa-3.0.txt
As a general rule, code in the sdk/ directory is licensed Apache-2.0,
documentation in the doc/ directory is licensed CC-BY-SA-3.0, and
everything else is licensed AGPL-3.0.
###############################################################################
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
###############################################################################
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<http://www.gnu.org/licenses/>.
###############################################################################
Attribution-ShareAlike 3.0 Unported
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
License
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
1. Definitions
"Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License.
"Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined below) for the purposes of this License.
"Creative Commons Compatible License" means a license that is listed at https://creativecommons.org/compatiblelicenses that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of works made available under that license under this License or a Creative Commons jurisdiction license with the same License Elements as this License.
"Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.
"License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.
"Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
"Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast.
"Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.
"You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
"Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
"Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.
2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.
3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;
to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified.";
to Distribute and Publicly Perform the Work including as incorporated in Collections; and,
to Distribute and Publicly Perform Adaptations.
For the avoidance of doubt:
Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and,
Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.
The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.
4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(c), as requested.
You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. If you license the Adaptation under one of the licenses mentioned in (iv), you must comply with the terms of that license. If you license the Adaptation under the terms of any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable License"), you must comply with the terms of the Applicable License generally and the following provisions: (I) You must include a copy of, or the URI for, the Applicable License with every copy of each Adaptation You Distribute or Publicly Perform; (II) You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License; (III) You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License.
If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Ssection 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.
Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.
5. Representations, Warranties and Disclaimer
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. Termination
This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
8. Miscellaneous
Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.
Creative Commons Notice
Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.
Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of the License.
Creative Commons may be contacted at https://creativecommons.org/.
================================================
FILE: Makefile
================================================
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
export WORKSPACE?=$(shell pwd)
help:
@echo >&2
@echo >&2 "There is no default make target here. Did you mean 'make test'?"
@echo >&2
@echo >&2 "More info:"
@echo >&2 " Installing --> http://doc.arvados.org/install"
@echo >&2 " Developing/contributing --> https://github.com/arvados/arvados"
@echo >&2 " Project home --> https://arvados.org"
@echo >&2
@false
test:
build/run-tests.sh ${TEST_FLAGS}
packages:
build/run-build-packages-all-targets.sh ${PACKAGES_FLAGS}
test-packages:
build/run-build-packages-all-targets.sh --test-packages ${PACKAGES_FLAGS}
================================================
FILE: README.md
================================================
[comment]: # (Copyright © The Arvados Authors. All rights reserved.)
[comment]: # ()
[comment]: # (SPDX-License-Identifier: CC-BY-SA-3.0)
[](https://gitter.im/arvados/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) | [Installing Arvados](https://doc.arvados.org/install/index.html) | [Installing Client SDKs](https://doc.arvados.org/sdk/index.html) | [Report a bug](https://github.com/arvados/arvados/issues/new) | [Development and Contributing](CONTRIBUTING.md)
<img align="right" src="doc/images/dax.png" height="240px">
[Arvados](https://arvados.org) is an open source platform for
managing, processing, and sharing genomic and other large scientific
and biomedical data. With Arvados, bioinformaticians run and scale
compute-intensive workflows, developers create biomedical
applications, and IT administrators manage large compute and storage
resources.
The key components of Arvados are:
* *Keep*: Keep is the Arvados storage system for managing and storing large
collections of files. Keep combines content addressing and a
distributed storage architecture resulting in both high reliability
and high throughput. Every file stored in Keep can be accurately
verified every time it is retrieved. Keep supports the creation of
collections as a flexible way to define data sets without having to
re-organize or needlessly copy data. Keep works on a wide range of
underlying filesystems and object stores.
* *Crunch*: Crunch is the orchestration system for running [Common Workflow Language](https://www.commonwl.org) workflows. It is
designed to maintain data provenance and workflow
reproducibility. Crunch automatically tracks data inputs and outputs
through Keep and executes workflow processes in Docker containers. In
a cloud environment, Crunch optimizes costs by scaling compute on demand.
* *Workbench*: The Workbench web application allows users to interactively access
Arvados functionality. It is especially helpful for querying and
browsing data, visualizing provenance, and tracking the progress of
workflows.
* *Command Line tools*: The command line interface (CLI) provides convenient access to Arvados
functionality in the Arvados platform from the command line.
* *API and SDKs*: Arvados is designed to be integrated with existing infrastructure. All
the services in Arvados are accessed through a RESTful API. SDKs are
available for Python, Go, R, Perl, Ruby, and Java.
# Documentation
Complete documentation, including the [User Guide](https://doc.arvados.org/user/index.html), [Installation documentation](https://doc.arvados.org/install/index.html), [Administrator documentation](https://doc.arvados.org/admin/index.html) and
[API documentation](https://doc.arvados.org/api/index.html) is available at http://doc.arvados.org/
If you wish to build the Arvados documentation from a local git clone, see
[doc/README.textile](doc/README.textile) for instructions.
# Community
[](https://gitter.im/arvados/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
The [Arvados community channel](https://gitter.im/arvados/community)
channel at [gitter.im](https://gitter.im) is available for live
discussion and support.
The [Arvados developement channel](https://gitter.im/arvados/development)
channel at [gitter.im](https://gitter.im) is used to coordinate development.
The [Arvados user mailing list](http://lists.arvados.org/mailman/listinfo/arvados)
is used to announce new versions and other news.
All participants are expected to abide by the [Arvados Code of Conduct](CODE_OF_CONDUCT.md).
# Reporting bugs
[Report an issue on GitHub](https://github.com/arvados/arvados/issues/new)
# Development and Contributing
See [CONTRIBUTING](CONTRIBUTING.md) for information about Arvados development and how to contribute to the Arvados project.
# Licensing
Arvados is Free Software. See [COPYING](COPYING) for information about the open source licenses used in Arvados.
================================================
FILE: SECURITY.md
================================================
# Arvados Project Security Policy
## Supported Versions
The Arvados project will issue security fixes by making point releases
on the current stable release series (X.Y.0, X.Y.1, X.Y.2, etc).
The most recent stable release version, along with release notes and
upgrade notes documenting security fixes, can be found at these
locations:
https://arvados.org/releases/
https://doc.arvados.org/admin/upgrading.html
The Arvados project does not support versions older than the current
stable release except by special arrangement (contact info@curii.com).
Release announcements, including notification of security fixes, are
sent to the Arvados announcement list:
https://lists.arvados.org//mailman/listinfo/arvados
## Reporting Security Issues
If you believe you have found a security vulnerability in any Arvados-owned repository, please report it to us through coordinated disclosure.
**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.**
Instead, please send an email to dev@curii.com.
Please include as much of the information listed below as you can to help us better understand and resolve the issue:
* The type of issue (e.g., remote code execution, SQL injection, or cross-site scripting)
* Full paths of source file(s) related to the manifestation of the issue
* The location of the affected source code (tag/branch/commit or direct URL)
* Any special configuration required to reproduce the issue
* Step-by-step instructions to reproduce the issue
* Proof-of-concept or exploit code (if possible)
* Impact of the issue, including how an attacker might exploit the issue
This information will help us triage your report more quickly.
================================================
FILE: agpl-3.0.txt
================================================
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<http://www.gnu.org/licenses/>.
================================================
FILE: apache-2.0.txt
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: build/README
================================================
Prerequisites
=============
In order to build packages, you will need:
* Ansible installed following the instructions in `tools/ansible/README.md`
* `ansible-galaxy` and `ansible-playbook` in `$PATH` (e.g., by activating
your Ansible virtualenv, or having symlinks to those commands inside it)
* Docker installed
* permission to run Docker commands
* the `WORKSPACE` environment variable set to the absolute path of an
Arvados Git work tree
The Ansible playbook `tools/ansible/install-dev-tools.yml` can install all
of these prerequisites except the last.
Quickstart
==========
Build and test all the packages for a distribution on your architecture by
running:
./run-build-test-packages-one-target.sh --target DISTRO
This will build package build and test Docker images for the named target
distribution, build all packages in a build container, then test all
packages in a test container.
Limit the build to a single package by adding the `--only-build
PACKAGE_NAME` option. This is helpful when a build is mostly in good shape
and you're tracking down last bugs in one or two packages.
Get more verbose output by adding the `--debug` option.
By default the script avoids rebuilding or retesting packages that it
detects have already been done in past runs. You can force the script to
rebuild or retest package(s) with the `--force-build` and `--force-test`
options, respectively.
Run the script with `--help` for more information about other options.
Scripts in this directory
=========================
run-tests.sh Run unit and integration test suite.
run-build-test-packages-one-target.sh Entry point, wraps
run-build-packages-one-target.sh to
perform package building and testing
inside Docker.
run-build-packages-one-target.sh Build packages for one target inside Docker.
run-build-packages-all-targets.sh Run run-build-packages-one-target.sh
for every target.
run-build-packages.sh Actually build packages. Intended to run
inside Docker container with proper
build environment.
run-build-packages-python-and-ruby.sh Build Python and Ruby packages suitable
for upload to PyPi and Rubygems.
run-library.sh A library of functions shared by the
various scripts in this
directory.
build_docker_image.py Build a Docker image from Arvados
source components
Adding a new target
===================
In order to build packages on a new distribution, you MUST:
* Define containers to build the package build and test Docker images in
`tools/ansible/files/development-docker-images.yml`.
* Create `package-testing/test-packages-TARGET.sh`, ideally by making it a
symlink to `FORMAT-common-test-packages.sh`.
* Update the package download code near the bottom of `test_package_presence`
in `run-library.sh` so it can download packages for the new distribution.
Of course, any part of our package build or test infrastructure may need to
be updated to accommodate the process for new distributions. If you're
having trouble building lots of packages, consider grepping these build
scripts for the identifier of the closest working target, and see if you may
need to add branches or similar hooks for your target. If you're having
trouble building specific packages, consider doing the same for those
packages' `fpm-info.sh` files.
================================================
FILE: build/build_docker_image.py
================================================
#!/usr/bin/env python3
# build_docker_image.py - Build a Docker image with Python source packages
#
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
#
# Requires you have requirements.build.txt installed
import argparse
import logging
import os
import re
import runpy
import shlex
import shutil
import subprocess
import sys
import tempfile
from pathlib import Path
logger = logging.getLogger('build_docker_image')
_null_loghandler = logging.NullHandler()
logger.addHandler(_null_loghandler)
def _log_cmd(level, msg, *args):
*args, cmd = args
if logger.isEnabledFor(level):
logger.log(level, f'{msg}: %s', *args, ' '.join(shlex.quote(s) for s in cmd))
def _log_and_run(cmd, *, level=logging.DEBUG, check=True, **kwargs):
_log_cmd(level, "running command", cmd)
return subprocess.run(cmd, check=check, **kwargs)
class OptionError(ValueError):
pass
class DockerImage:
_BUILD_ARGS = {}
_REGISTRY = {}
@classmethod
def register(cls, subcls):
cls._REGISTRY[subcls.NAME] = subcls
pre_name, _, shortname = subcls.NAME.rpartition('/')
if pre_name == 'arvados':
cls._REGISTRY[shortname] = subcls
return subcls
@classmethod
def build_from_args(cls, args):
try:
subcls = cls._REGISTRY[args.docker_image]
except KeyError:
raise OptionError(f"unrecognized Docker image {args.docker_image!r}") from None
else:
return subcls(args)
def __init__(self, args):
self.extra_args = args.extra_args
self.workspace = args.workspace
if args.tag is not None:
self.tag = args.tag
elif version := (args.version or self.dev_version()):
self.tag = f'{self.NAME}:{version}'
else:
self.tag = None
def __enter__(self):
tmpname = self.NAME.replace('/', '-')
self.context_dir = Path(tempfile.mkdtemp(prefix=f'{tmpname}.'))
return self
def __exit__(self, exc_type, exc_value, exc_tb):
shutil.rmtree(self.context_dir, ignore_errors=True)
del self.context_dir
def build_docker_image(self):
logger.info("building Docker image %s", self.tag or self.NAME)
cmd = ['docker', 'image', 'build']
cmd.extend(
f'--build-arg={key}={val}'
for key, val in self._BUILD_ARGS.items()
)
cmd.append(f'--file={self.workspace / self.DOCKERFILE_PATH}')
if self.tag is not None:
cmd.append(f'--tag={self.tag}')
cmd.append(str(self.context_dir))
return _log_and_run(cmd)
def dev_version(self):
return None
class PythonVenvImage(DockerImage):
DOCKERFILE_PATH = 'build/docker/python-venv.Dockerfile'
_EXTRAS = {}
_TEST_COMMAND = None
def __init__(self, args):
arv_vars = runpy.run_path(args.workspace / 'sdk/python/arvados_version.py')
self.arv_pymod = arv_vars['ARVADOS_PYTHON_MODULES'][self._PACKAGE_NAME]
super().__init__(args)
def dev_version(self):
return self.arv_pymod.get_version(self.workspace / self.arv_pymod.src_path)
def build_python_wheel(self, src_dir):
logger.info("building Python wheel at %s", src_dir)
cmd = [sys.executable, '-m', 'build', '--outdir', str(self.context_dir)]
return _log_and_run(cmd, cwd=src_dir, umask=0o022)
def build_requirements(self):
with (self.context_dir / 'requirements.txt').open('w') as requirements_file:
for whl_path in self.context_dir.glob('*.whl'):
name, _, _ = whl_path.stem.partition('-')
try:
name += f' [{self._EXTRAS[name]}]'
except KeyError:
pass
whl_uri = Path('/usr/local/src', whl_path.name).as_uri()
print(name, '@', whl_uri, file=requirements_file)
def build_docker_image(self):
for path in self.extra_args:
self.build_python_wheel(path)
for dep in self.arv_pymod.dependencies:
self.build_python_wheel(self.workspace / dep.src_path)
self.build_python_wheel(self.workspace / self.arv_pymod.src_path)
self.build_requirements()
result = super().build_docker_image()
if self.tag and self._TEST_COMMAND:
_log_and_run(
['docker', 'run', '--rm', '--tty', self.tag] + self._TEST_COMMAND,
stdout=subprocess.DEVNULL,
)
return result
@DockerImage.register
class ClusterActivityImage(PythonVenvImage):
NAME = 'arvados/cluster-activity'
_BUILD_ARGS = {
'APT_PKGLIST': 'libcurl4',
'OLD_PKGNAME': 'python3-arvados-cluster-activity',
}
_EXTRAS = {
'arvados_cluster_activity': 'prometheus',
}
_PACKAGE_NAME = 'arvados-cluster-activity'
_TEST_COMMAND = ['arv-cluster-activity', '--version']
@DockerImage.register
class JobsImage(PythonVenvImage):
NAME = 'arvados/jobs'
_BUILD_ARGS = {
'APT_PKGLIST': 'libcurl4 nodejs',
'OLD_PKGNAME': 'python3-arvados-cwl-runner',
}
_PACKAGE_NAME = 'arvados-cwl-runner'
_TEST_COMMAND = ['arvados-cwl-runner', '--version']
class Environments:
@staticmethod
def production(args):
if args.version is None:
raise OptionError(
"$ARVADOS_BUILDING_VERSION must be set to build production images"
)
@staticmethod
def development(args):
return
_ARG_MAP = {
'dev': development,
'devel': development,
'development': development,
'prod': production,
'production': production,
}
@classmethod
def parse_argument(cls, s):
try:
return cls._ARG_MAP[s.lower()]
except KeyError:
raise ValueError(f"unrecognized environment {s!r}")
class UploadActions:
@staticmethod
def to_arvados(tag):
logger.info("uploading Docker image %s to Arvados", tag)
name, _, version = tag.rpartition(':')
if name:
cmd = ['arv-keepdocker', name, version]
else:
cmd = ['arv-keepdocker', tag]
return _log_and_run(cmd)
@staticmethod
def to_docker_hub(tag):
logger.info("uploading Docker image %s to Docker Hub", tag)
cmd = ['docker', 'push', tag]
for tries_left in range(4, -1, -1):
try:
docker_push = _log_and_run(cmd)
except subprocess.CalledProcessError:
if tries_left == 0:
raise
else:
break
return docker_push
_ARG_MAP = {
'arv-keepdocker': to_arvados,
'arvados': to_arvados,
'docker': to_docker_hub,
'docker_hub': to_docker_hub,
'dockerhub': to_docker_hub,
'keepdocker': to_arvados,
}
@classmethod
def parse_argument(cls, s):
try:
return cls._ARG_MAP[s.lower()]
except KeyError:
raise ValueError(f"unrecognized upload method {s!r}")
class ArgumentParser(argparse.ArgumentParser):
def __init__(self):
super().__init__(
prog='build_docker_image.py',
usage='%(prog)s [options ...] IMAGE_NAME [source directory ...]',
)
# We put environment variables for the tool in the args so the rest
# of the program has a single place to access parameters.
env_workspace = os.environ.get('WORKSPACE')
if version := os.environ.get('ARVADOS_BUILDING_VERSION'):
version = re.sub(r'~(dev[0-9])', r'.\1', version, 1)
version = re.sub(r'~(a|b|rc)([0-9])', r'\1\2', version, 1)
self.set_defaults(
version=version,
workspace=Path(env_workspace) if env_workspace else None,
)
self.add_argument(
'--environment',
type=Environments.parse_argument,
default=Environments.production,
help="""One of `development` or `production`.
Your build settings will use defaults and be validated based on this setting.
Default is `production` because it's the strictest.
""")
self.add_argument(
'--loglevel',
type=self._parse_loglevel,
default=logging.WARNING,
help="""Log level to use, like `debug`, `info`, `warning`, or `error`
""")
self.add_argument(
'--tag', '-t',
help="""Tag for the built Docker image.
Default is generated from the image name and build version.
""")
self.add_argument(
'--upload-to',
type=UploadActions.parse_argument,
help="""After successfully building the Docker image, upload it to
this destination. Choices are `arvados` or `docker_hub`. Both require
credentials in place to work.
""")
self.add_argument(
'docker_image',
metavar='IMAGE_NAME',
choices=sorted(DockerImage._REGISTRY),
help="""Docker image to build.
Supported images are: %(choices)s.
""")
self.add_argument(
'extra_args',
metavar='SOURCE_DIR',
type=Path,
nargs=argparse.ZERO_OR_MORE,
default=[],
help="""Before building the Docker image, the tool will build a
Python wheel from each source directory and add it to the Docker build context.
You can use this during testing to install specific development versions of
dependencies.
""")
def _parse_loglevel(self, s):
try:
return logging.getLevelNamesMapping()[s.upper()]
except KeyError:
raise ValueError(f"unrecognized logging level {s!r}")
def main(args):
if not isinstance(args, argparse.Namespace):
args = ArgumentParser().parse_args(args)
if args.workspace is None:
raise OptionError("$WORKSPACE must be set to the Arvados source directory")
args.environment(args)
docker_image = DockerImage.build_from_args(args)
if args.upload_to and not docker_image.tag:
raise OptionError("cannot upload a Docker image without a tag")
with docker_image:
docker_image.build_docker_image()
if args.upload_to:
args.upload_to(docker_image.tag)
return os.EX_OK
if __name__ == '__main__':
argparser = ArgumentParser()
_args = argparser.parse_args()
logging.basicConfig(
format=f'{logger.name}: %(levelname)s: %(message)s',
level=_args.loglevel,
)
try:
returncode = main(_args)
except OptionError as err:
argparser.error(err.args[0])
returncode = 2
except subprocess.CalledProcessError as err:
_log_cmd(
logging.ERROR,
"command failed with exit code %s",
err.returncode,
err.cmd,
)
returncode = err.returncode
exit(returncode)
================================================
FILE: build/check-copyright-notices
================================================
#!/bin/bash
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
set -e
fix=false
while [[ "${@}" != "" ]]
do
arg=${1}
shift
case ${arg} in
--help)
cat <<EOF
Usage: $0 [--fix] [-- git-ls-args...]
Options:
--fix Insert missing copyright notices where possible.
Git arguments:
Arguments after "--" are passed to \`git ls-files\`; this can be used to
restrict the set of files to check.
EOF
exit 2
;;
--fix)
fix=true
;;
--)
break
;;
*)
echo >&2 "Unrecognized argument '${arg}'. Try $0 --help"
exit 2
;;
esac
done
fixer() {
want="${want}" perl -pi~ - "${1}" <<'EOF'
BEGIN { undef $/ }
s{^((\#\!.*?\n|\n*---\n.*?\n\.\.\.\n|<\?xml.*?>\n)\n?)?}{${2}$ENV{want}\n\n}ms
EOF
}
IFS=$'\n' read -a ignores -r -d $'\000' <.licenseignore || true
result=0
coproc git ls-files -z ${@} </dev/null
while read -rd $'\000' fnm
do
grepAfter=2
grepBefore=0
cs=
cc=
ce=
fixer=
if [[ ! -f ${fnm} ]] || [[ -L ${fnm} ]] || [[ ! -s ${fnm} ]]
then
continue
fi
ignore=
for pattern in "${ignores[@]}"
do
if [[ ${fnm} == ${pattern} ]]
then
ignore=1
fi
done
if [[ ${ignore} = 1 ]]; then continue; fi
case ${fnm} in
Makefile | */Makefile \
| *.dockerfile | */Dockerfile.* | */Dockerfile | *.dockerignore \
| */MANIFEST.in | */fuse.conf | */gitolite.rc \
| *.pl | *.pm | *.PL \
| *.rb | *.rb.example | *.rake | *.ru \
| *.gemspec | */Gemfile | */Rakefile \
| services/login-sync/bin/* \
| sdk/cli/bin/* \
| *.py \
| sdk/python/bin/arv-* \
| sdk/cwl/bin/* \
| services/fuse/bin/* \
| tools/crunchstat-summary/bin/* \
| crunch_scripts/* \
| *.yaml | *.yml | *.yml.example | *.cwl \
| *.sh | *.service \
| */run | */run-service | */restart-dns-server \
| */nginx.conf \
| build/build.list | *.R)
fixer=fixer
cc="#"
;;
*.md)
fixer=fixer
cc="[//]: #"
;;
*.rst)
fixer=fixer
cc=".."
;;
*.erb)
fixer=fixer
cs="<%# "
cc=""
ce=" %>"
;;
*.liquid)
fixer=fixer
cs=$'{% comment %}\n'
cc=""
ce=$'\n{% endcomment %}'
grepAfter=3
grepBefore=1
;;
*.textile)
fixer=fixer
cs="###. "
cc="...."
ce=
;;
*.css)
fixer=fixer
cs="/* "
cc=""
ce=" */"
;;
*.coffee)
fixer=fixer
cs="### "
cc=""
ce=" ###"
;;
*.go | *.scss | *.java | *.js)
fixer=fixer
cc="//"
;;
*.sql)
fixer=fixer
cc="--"
;;
*.html | *.svg)
fixer=fixer
cs="<!-- "
cc=""
ce=" -->"
;;
*)
cc="#"
hashbang=$(head -n1 ${fnm})
if [[ ${hashbang} = "#!/bin/sh" ]] || [[ ${hashbang} = "#!/bin/bash" ]]
then
fixer=fixer
fi
;;
esac
wantGPL="${cs:-${cc}${cc:+ }}Copyright (C) The Arvados Authors. All rights reserved.
${cc}
${cc}${cc:+ }SPDX-License-Identifier: AGPL-3.0${ce}"
wantApache="${cs:-${cc}${cc:+ }}Copyright (C) The Arvados Authors. All rights reserved.
${cc}
${cc}${cc:+ }SPDX-License-Identifier: Apache-2.0${ce}"
wantBYSA="${cs:-${cc}${cc:+ }}Copyright (C) The Arvados Authors. All rights reserved.
${cc}
${cc}${cc:+ }SPDX-License-Identifier: CC-BY-SA-3.0${ce}"
wantBYSAmd="[comment]: # (Copyright © The Arvados Authors. All rights reserved.)
[comment]: # ()
[comment]: # (SPDX-License-Identifier: CC-BY-SA-3.0)"
found=$(head -n20 "$fnm" | egrep -A${grepAfter} -B${grepBefore} 'Copyright.*All rights reserved.' || true)
case ${fnm} in
Makefile | build/* | lib/* | tools/* | apps/* | services/* | sdk/cli/bin/crunch-job)
want=${wantGPL}
;;
crunch_scripts/* | docker/* | sdk/*)
want=${wantApache}
;;
doc/*)
want=${wantBYSA}
;;
README.md)
want=${wantBYSAmd}
;;
*)
want=
;;
esac
case "$found" in
"$wantGPL")
;;
"$wantApache")
;;
"$wantBYSA")
;;
"$wantBYSAmd")
;;
"")
if [[ -z ${found} ]] && [[ -n ${want} ]] && [[ $fix = true ]] && [[ $fixer != "" ]]
then
${fixer} ${fnm}
else
echo "missing copyright notice: $fnm"
result=1
fi
;;
*)
echo "nonstandard copyright notice: $fnm '${found}'"
result=1
;;
esac
done <&${COPROC[0]}
exit $result
================================================
FILE: build/create-plot-data-from-log.sh
================================================
#!/bin/bash
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
build=$1
file=$2
outputdir=$3
usage() {
echo "./$0 build_number file_to_parse output_dir"
echo "this script will use the build output to generate *csv and *txt"
echo "for jenkins plugin plot https://github.com/jenkinsci/plot-plugin/"
}
if [ $# -ne 3 ]
then
usage
exit 1
fi
if [ ! -e $file ]
then
usage
echo "$file doesn't exist! exiting"
exit 2
fi
if [ ! -w $outputdir ]
then
usage
echo "$outputdir isn't writeable! exiting"
exit 3
fi
#------------------------------
## MAXLINE is the amount of lines that will read after the pattern
## is match (the logfile could be hundred thousands lines long).
## 1000 should be safe enough to capture all the output of the individual test
MAXLINES=1000
## TODO: check $build and $file make sense
for test in \
test_Create_and_show_large_collection_with_manifest_text_of_20000000 \
test_Create,_show,_and_update_description_for_large_collection_with_manifest_text_of_100000 \
test_Create_one_large_collection_of_20000000_and_one_small_collection_of_10000_and_combine_them
do
cleaned_test=$(echo $test | tr -d ",.:;/")
(zgrep -i -E -A$MAXLINES "^[A-Za-z0-9]+Test: $test" $file && echo "----") | tail -n +1 | tail --lines=+3|grep -B$MAXLINES -E "^-*$" -m1 > $outputdir/$cleaned_test-$build.txt
result=$?
if [ $result -eq 0 ]
then
echo processing $outputdir/$cleaned_test-$build.txt creating $outputdir/$cleaned_test.csv
echo $(grep ^Completed $outputdir/$cleaned_test-$build.txt | perl -n -e '/^Completed (.*) in [0-9]+ms.*$/;print "".++$line."-$1,";' | perl -p -e 's/,$//g'|tr " " "_" ) > $outputdir/$cleaned_test.csv
echo $(grep ^Completed $outputdir/$cleaned_test-$build.txt | perl -n -e '/^Completed.*in ([0-9]+)ms.*$/;print "$1,";' | perl -p -e 's/,$//g' ) >> $outputdir/$cleaned_test.csv
else
echo "$test was't found on $file"
cleaned_test=$(echo $test | tr -d ",.:;/")
> $outputdir/$cleaned_test.csv
fi
done
================================================
FILE: build/docker/python-venv.Dockerfile
================================================
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
# Build this with `build/build_docker_image.py`
FROM debian:bookworm-slim
RUN apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qy python3-venv \
&& python3 -m venv /opt/arvados-py
# The build script sets up our build context with all the Python source
# packages to install.
COPY . /usr/local/src/
RUN /opt/arvados-py/bin/pip install -qq --no-cache-dir --no-input \
-r /usr/local/src/requirements.txt
### Stage 2
FROM debian:bookworm-slim
MAINTAINER Arvados Package Maintainers <packaging@arvados.org>
ARG APT_PKGLIST
ARG OLD_PKGNAME=python3-arvados-python-client
RUN apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qy python3 $APT_PKGLIST
# The symlinks provide path compatibility with old package-based images.
RUN adduser --disabled-password --gecos 'Crunch execution user' crunch \
&& install --directory --owner=crunch --group=crunch --mode=0700 \
/keep /tmp/crunch-src /tmp/crunch-job \
&& ln -s /opt/arvados-py "/usr/lib/$OLD_PKGNAME"
USER crunch
ENV PATH=/opt/arvados-py/bin:/usr/local/bin:/usr/bin:/bin
COPY --from=0 /opt/arvados-py/ /opt/arvados-py/
================================================
FILE: build/go-python-package-scripts/postinst
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
set -e
# Detect rpm-based systems: the exit code of the following command is zero
# on rpm-based systems
if /usr/bin/rpm -q -f /usr/bin/rpm >/dev/null 2>&1; then
# Red Hat ("%{...}" is interpolated at package build time)
pkg="%{name}"
pkgtype=rpm
prefix="${RPM_INSTALL_PREFIX}"
else
# Debian
script="$(basename "${0}")"
pkg="${script%.postinst}"
pkgtype=deb
prefix=/usr
fi
case "${pkgtype}-${1}" in
deb-configure | rpm-1)
dest_dir="/lib/systemd/system"
if ! [ -d "${dest_dir}" ]; then
exit 0
fi
# Find the unit file we need to install.
unit_file="${pkg}.service"
for dir in \
"${prefix}/share/doc/${pkg}" \
"${dest_dir}"; do
if [ -e "${dir}/${unit_file}" ]; then
src_dir="${dir}"
break
fi
done
if [ -z "${src_dir}" ]; then
echo >&2 "WARNING: postinst script did not find ${unit_file} anywhere."
exit 0
fi
# Install/update the unit file if necessary.
if [ "${src_dir}" != "${dest_dir}" ]; then
cp "${src_dir}/${unit_file}" "${dest_dir}/" || exit 0
fi
# Enable service, and make sure systemd re-reads the unit
# file, in case we changed it.
if [ -e /run/systemd/system ]; then
systemctl daemon-reload || true
eval "$(systemctl -p UnitFileState show "${pkg}")"
case "${UnitFileState}" in
disabled)
# Failing to enable or start the service is not a
# package error, so don't let errors here
# propagate up.
systemctl enable "${pkg}" || true
systemctl start "${pkg}" || true
;;
enabled)
systemctl reload-or-try-restart "${pkg}" || true
;;
esac
fi
;;
esac
================================================
FILE: build/go-python-package-scripts/prerm
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
set -e
# Detect rpm-based systems: the exit code of the following command is zero
# on rpm-based systems
if /usr/bin/rpm -q -f /usr/bin/rpm >/dev/null 2>&1; then
# Red Hat ("%{...}" is interpolated at package build time)
pkg="%{name}"
pkgtype=rpm
prefix="${RPM_INSTALL_PREFIX}"
else
# Debian
script="$(basename "${0}")"
pkg="${script%.prerm}"
pkgtype=deb
prefix=/usr
fi
case "${pkgtype}-${1}" in
deb-remove | rpm-0)
if [ -e /run/systemd/system ]; then
systemctl stop "${pkg}" || true
systemctl disable "${pkg}" || true
fi
if [ -e "${prefix}/share/doc/${pkg}/${pkg}.service" ]; then
# Unit files from Python packages get installed by
# postinst so we have to remove them explicitly here.
rm "/lib/systemd/system/${pkg}/${pkg}.service" || true
fi
;;
esac
================================================
FILE: build/package-testing/common-test-packages.sh
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
set -eu
FAIL=0
echo
while read so && [ -n "$so" ]; do
if ldd "$so" | grep "not found" ; then
echo "^^^ Missing while scanning $so ^^^"
FAIL=1
fi
done <<EOF
$(find -name '*.so')
EOF
if test -x "/jenkins/package-testing/test-package-$1.sh" ; then
if ! "/jenkins/package-testing/test-package-$1.sh" ; then
FAIL=1
fi
fi
if test $FAIL = 0 ; then
echo "Package $1 passed"
fi
exit $FAIL
================================================
FILE: build/package-testing/deb-common-test-packages.sh
================================================
#!/bin/bash
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
set -eu
# Set up
DEBUG=${ARVADOS_DEBUG:-0}
STDOUT_IF_DEBUG=/dev/null
STDERR_IF_DEBUG=/dev/null
DASHQQ_UNLESS_DEBUG=-qq
if [[ "$DEBUG" != "0" ]]; then
STDOUT_IF_DEBUG=/dev/stdout
STDERR_IF_DEBUG=/dev/stderr
DASHQQ_UNLESS_DEBUG=
fi
# Multiple .deb based distros symlink to this script, so extract the target
# from the invocation path.
target=$(echo $0 | sed 's/.*test-packages-\([^.]*\)\.sh.*/\1/')
export ARV_PACKAGES_DIR="/arvados/packages/$target"
dpkg-query --show > "$ARV_PACKAGES_DIR/$1.before"
apt-get $DASHQQ_UNLESS_DEBUG --allow-insecure-repositories update
apt-get $DASHQQ_UNLESS_DEBUG -y --allow-unauthenticated install "$1" >"$STDOUT_IF_DEBUG" 2>"$STDERR_IF_DEBUG" ||
install_status=$?
dpkg-query --show > "$ARV_PACKAGES_DIR/$1.after"
diff "$ARV_PACKAGES_DIR/$1.before" "$ARV_PACKAGES_DIR/$1.after" > "$ARV_PACKAGES_DIR/$1.diff" || true
mkdir -p /tmp/opts
cd /tmp/opts
export ARV_PACKAGES_DIR="/arvados/packages/$target"
if [[ -f $(ls -t "$ARV_PACKAGES_DIR/$1"_*.deb 2>/dev/null | head -n1) ]] ; then
debpkg=$(ls -t "$ARV_PACKAGES_DIR/$1"_*.deb | head -n1)
else
debpkg=$(ls -t "$ARV_PACKAGES_DIR/processed/$1"_*.deb | head -n1)
fi
dpkg-deb -x $debpkg .
if [[ "$DEBUG" != "0" ]]; then
find -type f -name '*.so' | while read so; do
printf "\n== Package dependencies for %s ==\n" "$so"
# dpkg is not fully aware of merged-/usr systems: ldd may list a library
# under /lib where dpkg thinks it's under /usr/lib, or vice versa.
# awk constructs globs that we pass to `dpkg --search` to be flexible
# about which version we find. This could potentially return multiple
# results, but doing better probably requires restructuring this whole
# code to find and report the best match across multiple dpkg queries.
ldd "$so" \
| awk 'BEGIN { ORS="\0" } ($3 ~ /^\//) {print "*" $3}' \
| sort --unique --zero-terminated \
| xargs -0 --no-run-if-empty dpkg --search \
| cut -d: -f1 \
| sort --unique
done
fi
case "${install_status:-0}-$1" in
0-* | 100-arvados-api-server )
exec /jenkins/package-testing/common-test-packages.sh "$1"
;;
*)
exit "$install_status"
;;
esac
================================================
FILE: build/package-testing/rpm-common-test-packages.sh
================================================
#!/bin/bash
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
set -eu
# Set up
DEBUG=${ARVADOS_DEBUG:-0}
STDOUT_IF_DEBUG=/dev/null
STDERR_IF_DEBUG=/dev/null
if [[ "$DEBUG" != "0" ]]; then
STDOUT_IF_DEBUG=/dev/stdout
STDERR_IF_DEBUG=/dev/stderr
fi
target="$(basename "$0" .sh)"
target="${target##*-}"
microdnf --assumeyes clean all
touch /var/lib/rpm/*
export ARV_PACKAGES_DIR="/arvados/packages/$target"
rpm -qa | sort > "$ARV_PACKAGES_DIR/$1.before"
microdnf --assumeyes install "$1" || install_status="$?"
rpm -qa | sort > "$ARV_PACKAGES_DIR/$1.after"
diff "$ARV_PACKAGES_DIR/$1".{before,after} >"$ARV_PACKAGES_DIR/$1.diff" || true
mkdir -p /tmp/opts
cd /tmp/opts
rpm2cpio $(ls -t "$ARV_PACKAGES_DIR/$1"-*.rpm | head -n1) | cpio -idm 2>/dev/null
if [[ "$DEBUG" != "0" ]]; then
find -name '*.so' | while read so; do
echo -e "\n== Packages dependencies for $so =="
ldd "$so" \
| awk '($3 ~ /^\//){print $3}' | sort -u | xargs rpm -qf | sort -u
done
fi
case "${install_status:-0}-$1" in
0-* )
# Install other packages alongside to test for build id conflicts.
# This can be removed after we have test-provision-rocky8, #21426.
microdnf --assumeyes install arvados-client arvados-server python3-arvados-python-client
;;
1-arvados-api-server )
;;
*)
exit "$install_status"
;;
esac
exec /jenkins/package-testing/common-test-packages.sh "$1"
================================================
FILE: build/package-testing/test-package-arvados-api-server.sh
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
set -e
PACKAGE_NAME=arvados-api-server
API_GEMS_LS="$(mktemp --tmpdir api-gems-XXXXXX.list)"
trap 'rm -f "$API_GEMS_LS"' EXIT INT TERM QUIT
cd "/var/www/${PACKAGE_NAME%-server}"
cat_dropins() {
cat /lib/systemd/system/arvados-railsapi.service.d/*.conf
}
check_gem_dirs() {
local when="$1"; shift
env -C shared/vendor_bundle/ruby ls -1 >"$API_GEMS_LS"
local ls_count="$(wc -l <"$API_GEMS_LS")"
if [ "$ls_count" = 1 ]; then
return 0
fi
echo "Package $PACKAGE_NAME FAILED: $ls_count gem directories created after $when:" >&2
case "${ARVADOS_DEBUG:-0}" in
0) cat "$API_GEMS_LS" >&2 ;;
*) env -C shared/vendor_bundle/ruby find -maxdepth 3 -type d -ls >&2 ;;
esac
return 11
}
expect_grep() {
local expect_exit="$1"; shift
local actual_exit=0
grep "$@" >/dev/null || actual_exit=$?
if [ "$actual_exit" -eq "$expect_exit" ]; then
return 0
fi
echo "Package $PACKAGE_NAME FAILED: \`grep" "$@" "\` returned exit code $actual_exit" >&2
case "$actual_exit" in
0) return 1 ;;
*) return "$actual_exit" ;;
esac
}
# We intentionally don't hardcode a Bundler path here because other parts of our
# infrastructure expect `bundle` to be available system-wide after installation.
# After that infrastructure is fixed, this test can invoke `bundle` the same
# way the postinst script does.
env -C current bundle list >"$ARV_PACKAGES_DIR/$PACKAGE_NAME.gems"
check_gem_dirs "initial install"
case "$TARGET" in
debian*|ubuntu*)
cat_dropins | expect_grep 0 -x SupplementaryGroups=www-data
;;
rocky*)
cat_dropins | expect_grep 1 "^SupplementaryGroups="
microdnf --assumeyes install nginx
microdnf --assumeyes reinstall "$PACKAGE_NAME" || test $? -eq 1
check_gem_dirs "package reinstall"
cat_dropins | expect_grep 0 -x SupplementaryGroups=nginx
;;
*)
echo "$0: WARNING: Unknown target '$TARGET'." >&2
;;
esac
================================================
FILE: build/package-testing/test-package-arvados-client.sh
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
set -e
arvados-client -version >/dev/null
================================================
FILE: build/package-testing/test-package-arvados-docker-cleaner.sh
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
set -e
arvados-docker-cleaner -h >/dev/null
================================================
FILE: build/package-testing/test-package-python3-arvados-cwl-runner.sh
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
set -e
arvados-cwl-runner --version >/dev/null
================================================
FILE: build/package-testing/test-package-python3-arvados-python-client.sh
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
arv-put --version >/dev/null || exit
. /usr/lib/python3-arvados-python-client/bin/activate
python <<EOF
import arvados
print("Successfully imported arvados")
EOF
================================================
FILE: build/package-testing/test-package-python3-crunchstat-summary.sh
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
set -e
crunchstat-summary -h >/dev/null
================================================
FILE: build/package-testing/test-package-python3-python-arvados-fuse.sh
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
set -e
arv-mount --version
================================================
FILE: build/pypkg_info.py
================================================
#!/usr/bin/env python3
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
"""pypkg_info.py - Introspect installed Python packages
This tool can read metadata about any Python package installed in the current
environment and report it out in various formats. We use this mainly to pass
information through when building distribution packages.
"""
import argparse
import enum
import importlib.metadata
import os
import sys
from pathlib import PurePath
class RawFormat:
def format_metadata(self, key, value):
return value
def format_path(self, path):
return str(path)
class FPMFormat(RawFormat):
PYTHON_METADATA_MAP = {
'summary': 'description',
}
def format_metadata(self, key, value):
key = key.lower()
key = self.PYTHON_METADATA_MAP.get(key, key)
return f'--{key}={value}'
class Formats(enum.Enum):
RAW = RawFormat
FPM = FPMFormat
@classmethod
def from_arg(cls, arg):
try:
return cls[arg.upper()]
except KeyError:
raise ValueError(f"unknown format {arg!r}") from None
def report_binfiles(args):
bin_names = [
PurePath('bin', path.name)
for pkg_name in args.package_names
for path in importlib.metadata.distribution(pkg_name).files
if path.parts[-3:-1] == ('..', 'bin')
]
fmt = args.format.value().format_path
return (fmt(path) for path in bin_names)
def report_metadata(args):
dist = importlib.metadata.distribution(args.package_name)
fmt = args.format.value().format_metadata
for key in args.metadata_key:
yield fmt(key, dist.metadata.get(key, ''))
def unescape_str(arg):
arg = arg.replace('\'', '\\\'')
return eval(f"'''{arg}'''", {})
def parse_arguments(arglist=None):
parser = argparse.ArgumentParser()
parser.set_defaults(action=None)
format_names = ', '.join(fmt.name.lower() for fmt in Formats)
parser.add_argument(
'--format', '-f',
choices=list(Formats),
default=Formats.RAW,
type=Formats.from_arg,
help=f"Output format. Choices are: {format_names}",
)
parser.add_argument(
'--delimiter', '-d',
default='\n',
type=unescape_str,
help="Line ending. Python backslash escapes are supported. Default newline.",
)
subparsers = parser.add_subparsers()
binfiles = subparsers.add_parser('binfiles')
binfiles.set_defaults(action=report_binfiles)
binfiles.add_argument(
'package_names',
nargs=argparse.ONE_OR_MORE,
)
metadata = subparsers.add_parser('metadata')
metadata.set_defaults(action=report_metadata)
metadata.add_argument(
'package_name',
)
metadata.add_argument(
'metadata_key',
nargs=argparse.ONE_OR_MORE,
)
args = parser.parse_args()
if args.action is None:
parser.error("subcommand is required")
return args
def main(arglist=None):
args = parse_arguments(arglist)
try:
for line in args.action(args):
print(line, end=args.delimiter)
except importlib.metadata.PackageNotFoundError as error:
print(f"error: package not found: {error.args[0]}", file=sys.stderr)
return os.EX_NOTFOUND
else:
return os.EX_OK
if __name__ == '__main__':
exit(main())
================================================
FILE: build/rails-package-scripts/README.md
================================================
[//]: # Copyright (C) The Arvados Authors. All rights reserved.
[//]: #
[//]: # SPDX-License-Identifier: AGPL-3.0
When run-build-packages.sh builds a Rails package, it generates the package's pre/post-inst/rm scripts by concatenating `arvados-api-server.sh` to define common variables, then the actual step script. Especially when this infrastructure was shared with the old Rails Workbench, this seemed like the least worst option to share code between these files and packages. More advanced code generation would've been too much trouble to integrate into our build process at this time. Trying to inject portions of files into other files seemed error-prone and likely to introduce bugs to the end result.
================================================
FILE: build/rails-package-scripts/arvados-api-server.sh
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
# This file declares variables common to all scripts for one Rails package.
PACKAGE_NAME=arvados-api-server
INSTALL_PATH=/var/www/arvados-api
CONFIG_PATH=/etc/arvados/api
DOC_URL="http://doc.arvados.org/install/install-api-server.html#configure"
RELEASE_PATH=$INSTALL_PATH/current
RELEASE_CONFIG_PATH=$RELEASE_PATH/config
SHARED_PATH=$INSTALL_PATH/shared
================================================
FILE: build/rails-package-scripts/postinst.sh
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
# This code runs after package variable definitions.
set -e
for DISTRO_FAMILY in $(. /etc/os-release && echo "${ID:-} ${ID_LIKE:-}"); do
case "$DISTRO_FAMILY" in
debian)
RESETUP_CMD="dpkg-reconfigure $PACKAGE_NAME"
break ;;
rhel)
RESETUP_CMD="dnf reinstall $PACKAGE_NAME"
break ;;
esac
done
if [ -z "$RESETUP_CMD" ]; then
echo "$PACKAGE_NAME postinst skipped: don't recognize the distribution from /etc/os-release" >&2
exit 0
fi
# This will be set to a command path after we install the version we need.
BUNDLE=
# systemd_ctl is just "systemctl if we booted with systemd, otherwise a noop."
# This makes the package installable in Docker containers, albeit without any
# service deployment.
if [ -d /run/systemd/system ]; then
systemd_ctl() { systemctl "$@"; }
else
systemd_ctl() { true; }
fi
systemd_quote() {
if [ $# -ne 1 ]; then
echo "error: systemd_quote requires exactly one argument" >&2
return 2
fi
# See systemd.syntax(7) - Use double quotes with backslash escapes
echo "$1" | sed -re 's/[\\"]/\\\0/g; s/^/"/; s/$/"/'
}
run_and_report() {
# Usage: run_and_report ACTION_MSG CMD
# This is the usual wrapper that prints ACTION_MSG, runs CMD, then writes
# a message about whether CMD succeeded or failed. Returns the exit code
# of CMD.
local action_message="$1"; shift
local retcode=0
echo -n "$action_message..."
if "$@"; then
echo " done."
else
retcode=$?
echo " failed."
fi
return $retcode
}
report_not_ready() {
local exitcode="$1"; shift
local reason="$1"; shift
local doc_url="${1:-}"
case "$doc_url" in
http://* | https://* ) ;;
/*) doc_url="https://doc.arvados.org${doc_url}" ;;
\#*) doc_url="https://doc.arvados.org/install/install-api-server.html${doc_url}" ;;
*) doc_url="https://doc.arvados.org/install/${doc_url}" ;;
esac
cat >&2 <<EOF
NOTE: The $PACKAGE_NAME package was not configured completely because
$reason.
Please refer to the documentation for next steps:
<$doc_url>
After you do that, resume $PACKAGE_NAME setup by running:
$RESETUP_CMD
EOF
exit "${exitcode:-20}"
}
setup_confdirs() {
local confdir confgrp
case "$WWW_OWNER" in
"") confgrp=root ;;
*) confgrp="$WWW_OWNER" ;;
esac
for confdir in "$@"; do
if [ ! -d "$confdir" ]; then
install -d -g "$confgrp" -m 0750 "$confdir"
fi
done
}
setup_conffile() {
# Usage: setup_conffile CONFFILE_PATH [SOURCE_PATH]
# Both paths are relative to RELEASE_CONFIG_PATH.
# This function will try to safely ensure that a symbolic link for
# the configuration file points from RELEASE_CONFIG_PATH to CONFIG_PATH.
# If SOURCE_PATH is given, this function will try to install that file as
# the configuration file in CONFIG_PATH, and return 1 if the file in
# CONFIG_PATH is unmodified from the source.
local conffile_relpath="$1"; shift
local conffile_source="$1"
local release_conffile="$RELEASE_CONFIG_PATH/$conffile_relpath"
local etc_conffile="$CONFIG_PATH/$(basename "$conffile_relpath")"
# Note that -h can return true and -e will return false simultaneously
# when the target is a dangling symlink. We're okay with that outcome,
# so check -h first.
if [ ! -h "$release_conffile" ]; then
if [ ! -e "$release_conffile" ]; then
ln -s "$etc_conffile" "$release_conffile"
# If there's a config file in /var/www identical to the one in /etc,
# overwrite it with a symlink after porting its permissions.
elif cmp --quiet "$release_conffile" "$etc_conffile"; then
local ownership="$(stat -c "%u:%g" "$release_conffile")"
local owning_group="${ownership#*:}"
if [ 0 != "$owning_group" ]; then
chgrp "$owning_group" "$CONFIG_PATH" /etc/arvados
fi
chown "$ownership" "$etc_conffile"
chmod --reference="$release_conffile" "$etc_conffile"
ln --force -s "$etc_conffile" "$release_conffile"
fi
fi
if [ -n "$conffile_source" ]; then
if [ ! -e "$etc_conffile" ]; then
install -g "$WWW_OWNER" -m 0640 \
"$RELEASE_CONFIG_PATH/$conffile_source" "$etc_conffile"
return 1
# Even if $etc_conffile already existed, it might be unmodified from
# the source. This is especially likely when a user installs, updates
# database.yml, then reconfigures before they update application.yml.
# Use cmp to be sure whether $etc_conffile is modified.
elif cmp --quiet "$RELEASE_CONFIG_PATH/$conffile_source" "$etc_conffile"; then
return 1
fi
fi
}
prepare_database() {
# Prevent PostgreSQL from trying to page output
unset PAGER
DB_MIGRATE_STATUS=`"$BUNDLE" exec bin/rake db:migrate:status 2>&1 || true`
if echo "$DB_MIGRATE_STATUS" | grep -qF 'Schema migrations table does not exist yet.'; then
# The database exists, but the migrations table doesn't.
run_and_report "Setting up database" "$BUNDLE" exec bin/rake db:schema:load db:seed
elif echo "$DB_MIGRATE_STATUS" | grep -q '^database: '; then
run_and_report "Running db:migrate" "$BUNDLE" exec bin/rake db:migrate db:seed
elif echo "$DB_MIGRATE_STATUS" | grep -q 'database .* does not exist'; then
run_and_report "Running db:setup" "$BUNDLE" exec bin/rake db:setup
else
# We don't have enough configuration to even check the database.
return 1
fi
}
case "$DISTRO_FAMILY" in
debian) WWW_OWNER=www-data ;;
rhel) WWW_OWNER="$(id --group --name nginx || true)" ;;
esac
# Before we do anything else, make sure some directories and files are in place
if [ ! -e $SHARED_PATH/log ]; then mkdir -p $SHARED_PATH/log; fi
if [ ! -e $RELEASE_PATH/tmp ]; then mkdir -p $RELEASE_PATH/tmp; fi
if [ ! -e $RELEASE_PATH/log ]; then ln -s $SHARED_PATH/log $RELEASE_PATH/log; fi
if [ ! -e $SHARED_PATH/log/production.log ]; then touch $SHARED_PATH/log/production.log; fi
cd "$RELEASE_PATH"
export RAILS_ENV=production
# Bundler behaves inconsistently when gems are available system-wide.
# Avoid those bugs by starting with a GEM_HOME that *only* contains Bundler.
export GEM_HOME="$SHARED_PATH/bundler"
export GEM_PATH="$GEM_HOME"
# We still need to set directory switches because RHEL configures `gem` with
# built-in options that override the environment variables.
run_and_report "Installing bundler" gem install \
--bindir "$GEM_HOME/bin" \
--install-dir "$GEM_HOME" \
--version "~> 2.5.0" \
bundler
BUNDLE="$GEM_HOME/bin/bundle"
run_and_report "Running bundle install" "$BUNDLE" install --prefer-local --quiet
run_and_report "Verifying bundle is complete" "$BUNDLE" exec true
# Some of our infrastructure expects `bundler` to be available system-wide
# after installing arvados-api-server. Ensure that's the case.
# TODO: Make the other infrastructure stop doing that, then delete this code.
for bcmd in bundle bundler; do
if ! command -v "$bcmd" >/dev/null 2>&1; then
cat >"/usr/local/bin/$bcmd" <<EOF
#!/bin/sh
GEM_HOME="$GEM_HOME"
GEM_PATH="$GEM_PATH"
export GEM_HOME GEM_PATH
exec "\$GEM_HOME/bin/$bcmd" "\$@"
EOF
chmod a+rx "/usr/local/bin/$bcmd"
fi
done
passenger="$("$BUNDLE" exec gem contents passenger | grep -E '/(bin|exe)/passenger$' | tail -n1)"
if ! [ -x "$passenger" ]; then
echo "Error: failed to find \`passenger\` command after installing bundle" >&2
exit 12
fi
"$BUNDLE" exec "$passenger-config" build-native-support
# `passenger-config install-standalone-runtime` downloads an agent, but at
# least with Passenger 6.0.23 (late 2024), that version tends to segfault.
# Compiling our own is safer.
"$BUNDLE" exec "$passenger-config" compile-agent --auto --optimize
"$BUNDLE" exec "$passenger-config" install-standalone-runtime --auto --brief
echo -n "Creating symlinks to configuration in $CONFIG_PATH ..."
setup_confdirs /etc/arvados "$CONFIG_PATH"
setup_conffile environments/production.rb environments/production.rb.example \
|| true
# Rails 5.2 does not tolerate dangling symlinks in the initializers
# directory, and this one can still be there, left over from a previous
# version of the API server package.
rm -f $RELEASE_PATH/config/initializers/omniauth.rb
echo "... done."
echo -n "Extending systemd unit configuration ..."
if [ -z "$WWW_OWNER" ]; then
systemd_group="%N"
else
systemd_group="$(systemd_quote "$WWW_OWNER")"
fi
install -d /lib/systemd/system/arvados-railsapi.service.d
# The 20 prefix is chosen so most user overrides should come after, which
# is what most admins will expect, but there's still space to put drop-ins
# earlier.
cat >/lib/systemd/system/arvados-railsapi.service.d/20-postinst.conf <<EOF
[Service]
Environment=GEM_HOME=$(systemd_quote "$GEM_HOME")
Environment=GEM_PATH=$(systemd_quote "$GEM_PATH")
ExecStartPre=+/bin/chgrp $systemd_group log tmp
ExecStartPre=+-/bin/chgrp $systemd_group \${PASSENGER_LOG_FILE}
ExecStart=
ExecStart=$(systemd_quote "$BUNDLE") exec $(systemd_quote "$passenger") start --daemonize --pid-file %t/%N/passenger.pid
ExecStop=
ExecStop=$(systemd_quote "$BUNDLE") exec $(systemd_quote "$passenger") stop --pid-file %t/%N/passenger.pid
ExecReload=
ExecReload=$(systemd_quote "$BUNDLE") exec $(systemd_quote "$passenger-config") reopen-logs
${WWW_OWNER:+SupplementaryGroups=$WWW_OWNER}
EOF
systemd_ctl daemon-reload
echo "... done."
# warn about config errors (deprecated/removed keys from
# previous version, etc)
if ! run_and_report "Checking configuration for completeness" "$BUNDLE" exec bin/rake config:check; then
report_not_ready 21 "you must add required configuration settings to /etc/arvados/config.yml" "#update-config"
elif ! prepare_database; then
report_not_ready 22 "database setup could not be completed"
else
systemd_ctl try-restart arvados-railsapi.service
fi
================================================
FILE: build/rails-package-scripts/postrm.sh
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
# This code runs after package variable definitions.
set -e
purge () {
rm -rf $SHARED_PATH/vendor_bundle
rm -rf $SHARED_PATH/log
rm -rf $CONFIG_PATH
rmdir $SHARED_PATH || true
rmdir $INSTALL_PATH || true
}
if [ "$1" = 'purge' ]; then
# This is a debian-based system and purge was requested
purge
elif [ "$1" = "0" ]; then
# This is an rpm-based system, no guarantees are made, always purge
# Apparently yum doesn't actually remember what it installed.
# Clean those files up here, then purge.
rm -rf $RELEASE_PATH
purge
fi
================================================
FILE: build/rails-package-scripts/prerm.sh
================================================
#!/bin/sh
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
# This code runs after package variable definitions.
remove () {
rm -f $RELEASE_PATH/config/database.yml
rm -f $RELEASE_PATH/config/environments/production.rb
rm -f $RELEASE_PATH/config/application.yml
# Old API server configuration file.
rm -rf $RELEASE_PATH/public/assets/
rm -rf $RELEASE_PATH/tmp
rm -rf $RELEASE_PATH/.bundle
rm -rf $RELEASE_PATH/log
rm -rf /lib/systemd/system/arvados-railsapi.service.d
}
if [ "$1" = 'remove' ]; then
# This is a debian-based system and removal was requested
remove
elif [ "$1" = "0" ]; then
# This is an rpm-based system and zero versions will remain after erasure
remove
fi
================================================
FILE: build/requirements.build-packages.txt
================================================
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
#
# Python requirements for run-build-packages
-r requirements.build.txt
piprepo
================================================
FILE: build/requirements.build.txt
================================================
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
#
# Common requirements to build and install Arvados Python components
build
# 20.3 introduced the modern dependency resolver which we rely on.
pip >= 20.3
# Technically this shouldn't be required: the build process should get the
# build requirements listed in pyproject.toml. But it's nice to have it
# cached.
setuptools ~= 80.9
wheel
================================================
FILE: build/requirements.tests.txt
================================================
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
#
# Python requirements for run-tests
### Requirements for run-tests.sh itself
-r requirements.build.txt
# Required by sdk/python/tests/run_test_server.py
# which is run directly by run-tests.sh
PyYAML
# yq is used by run-tests.sh directly and controller tests
yq ~= 3.4
### Requirements for Python tests generally
# Required by older, unittest-style Python tests
# Prefer using pytest.mark.parametrize in new tests
parameterized
# Our chosen Python testing tool
pytest
### Requirements for individual tests
# Run by CWL integration tests
cwltest >= 2.5.20241122133319, < 3.0
# Required to build Python SDK documentation
pdoc ~= 16.0
# Used by controller and keep-web tests
s3cmd
================================================
FILE: build/run-build-packages-all-targets.sh
================================================
#!/bin/bash
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
read -rd "\000" helpmessage <<EOF
$(basename $0): Orchestrate run-build-packages.sh for every target
Syntax:
WORKSPACE=/path/to/arvados $(basename $0) [options]
Options:
--command
Build command to execute (default: use built-in Docker image command)
--test-packages
Run package install tests
--debug
Output debug information (default: false)
--build-version <string>
Version to build (default:
\$ARVADOS_BUILDING_VERSION-\$ARVADOS_BUILDING_ITERATION or
0.1.timestamp.commithash)
WORKSPACE=path Path to the Arvados source tree to build packages from
EOF
if ! [[ -n "$WORKSPACE" ]]; then
echo >&2 "$helpmessage"
echo >&2
echo >&2 "Error: WORKSPACE environment variable not set"
echo >&2
exit 1
fi
if ! [[ -d "$WORKSPACE" ]]; then
echo >&2 "$helpmessage"
echo >&2
echo >&2 "Error: $WORKSPACE is not a directory"
echo >&2
exit 1
fi
set -e
PARSEDOPTS=$(getopt --name "$0" --longoptions \
help,test-packages,debug,command:,only-test:,build-version: \
-- "" "$@")
if [ $? -ne 0 ]; then
exit 1
fi
COMMAND=
DEBUG=
TEST_PACKAGES=
ONLY_TEST=
eval set -- "$PARSEDOPTS"
while [ $# -gt 0 ]; do
case "$1" in
--help)
echo >&2 "$helpmessage"
echo >&2
exit 1
;;
--debug)
DEBUG="--debug"
;;
--command)
COMMAND="$2"; shift
;;
--test-packages)
TEST_PACKAGES="--test-packages"
;;
--only-test)
ONLY_TEST="$1 $2"; shift
;;
--build-version)
ARVADOS_BUILDING_VERSION="$2"; shift
;;
--)
if [ $# -gt 1 ]; then
echo >&2 "$0: unrecognized argument '$2'. Try: $0 --help"
exit 1
fi
;;
esac
shift
done
cd $(dirname $0)
FINAL_EXITCODE=0
for pkgtest_path in package-testing/test-packages-*.sh; do
target="$(basename "${pkgtest_path##*-}" .sh)"
if ./run-build-packages-one-target.sh --target "$target" --command "$COMMAND" --build-version "$ARVADOS_BUILDING_VERSION" $DEBUG $TEST_PACKAGES $ONLY_TEST ; then
true
else
FINAL_EXITCODE=$?
echo
echo "Build packages failed for $(basename $(dirname "$dockerfile_path"))"
echo
fi
done
if test $FINAL_EXITCODE != 0 ; then
Showing preview only (224K chars total). Download the full file or copy to clipboard to get everything.
gitextract_zydnvh49/
├── .gitignore
├── .licenseignore
├── AUTHORS
├── CITATION.cff
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── COPYING
├── Makefile
├── README.md
├── SECURITY.md
├── agpl-3.0.txt
├── apache-2.0.txt
├── build/
│ ├── README
│ ├── build_docker_image.py
│ ├── check-copyright-notices
│ ├── create-plot-data-from-log.sh
│ ├── docker/
│ │ └── python-venv.Dockerfile
│ ├── go-python-package-scripts/
│ │ ├── postinst
│ │ └── prerm
│ ├── package-testing/
│ │ ├── common-test-packages.sh
│ │ ├── deb-common-test-packages.sh
│ │ ├── rpm-common-test-packages.sh
│ │ ├── test-package-arvados-api-server.sh
│ │ ├── test-package-arvados-client.sh
│ │ ├── test-package-arvados-docker-cleaner.sh
│ │ ├── test-package-python3-arvados-cwl-runner.sh
│ │ ├── test-package-python3-arvados-python-client.sh
│ │ ├── test-package-python3-crunchstat-summary.sh
│ │ └── test-package-python3-python-arvados-fuse.sh
│ ├── pypkg_info.py
│ ├── rails-package-scripts/
│ │ ├── README.md
│ │ ├── arvados-api-server.sh
│ │ ├── postinst.sh
│ │ ├── postrm.sh
│ │ └── prerm.sh
│ ├── requirements.build-packages.txt
│ ├── requirements.build.txt
│ ├── requirements.tests.txt
│ ├── run-build-packages-all-targets.sh
│ ├── run-build-packages-one-target.sh
│ ├── run-build-packages-python-and-ruby.sh
│ ├── run-build-packages.sh
│ ├── run-build-test-packages-one-target.sh
│ ├── run-library.sh
│ ├── run-tests.sh
│ └── version-at-commit.sh
├── cc-by-sa-3.0.txt
├── cmd/
│ └── arvados-server/
│ ├── arvados-controller.service
│ ├── arvados-dispatch-cloud.service
│ ├── arvados-dispatch-lsf.service
│ ├── arvados-health.service
│ ├── arvados-ws.service
│ ├── cmd.go
│ ├── crunch-dispatch-slurm.service
│ ├── keep-balance.service
│ ├── keep-web.service
│ ├── keepproxy.service
│ └── keepstore.service
├── contrib/
│ ├── R-sdk/
│ │ ├── .Rbuildignore
│ │ ├── .gitignore
│ │ ├── ArvadosR.Rproj
│ │ ├── DESCRIPTION
│ │ ├── Makefile
│ │ ├── NAMESPACE
│ │ ├── R/
│ │ │ ├── ArvadosFile.R
│ │ │ ├── ArvadosR.R
│ │ │ ├── Collection.R
│ │ │ ├── CollectionTree.R
│ │ │ ├── HttpParser.R
│ │ │ ├── HttpRequest.R
│ │ │ ├── RESTService.R
│ │ │ ├── Subcollection.R
│ │ │ ├── util.R
│ │ │ └── zzz.R
│ │ ├── README.md
│ │ ├── arvados-v1-discovery.json
│ │ ├── generateApi.R
│ │ ├── install_deps.R
│ │ ├── run_test.R
│ │ └── tests/
│ │ ├── testthat/
│ │ │ ├── fakes/
│ │ │ │ ├── FakeArvados.R
│ │ │ │ ├── FakeHttpParser.R
│ │ │ │ ├── FakeHttpRequest.R
│ │ │ │ └── FakeRESTService.R
│ │ │ ├── test-ArvadosFile.R
│ │ │ ├── test-Collection.R
│ │ │ ├── test-CollectionTree.R
│ │ │ ├── test-HttpParser.R
│ │ │ ├── test-HttpRequest.R
│ │ │ ├── test-RESTService.R
│ │ │ ├── test-Subcollection.R
│ │ │ └── test-util.R
│ │ └── testthat.R
│ ├── README.md
│ ├── arvados-bootstrap/
│ │ ├── LICENSE-2.0.txt
│ │ ├── README.md
│ │ ├── pyproject.toml
│ │ └── src/
│ │ └── arv_bootstrap/
│ │ ├── __init__.py
│ │ ├── export_import.py
│ │ ├── federation_migrate.py
│ │ ├── seed.py
│ │ └── stubapi.py
│ ├── arvbash/
│ │ └── arvbash.sh
│ └── java-sdk-v2/
│ ├── .gitignore
│ ├── .licenseignore
│ ├── COPYING
│ ├── README.md
│ ├── agpl-3.0.txt
│ ├── apache-2.0.txt
│ ├── build.gradle
│ ├── gradle.properties
│ ├── settings.gradle
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/
│ │ │ └── arvados/
│ │ │ └── client/
│ │ │ ├── api/
│ │ │ │ ├── client/
│ │ │ │ │ ├── BaseApiClient.java
│ │ │ │ │ ├── BaseStandardApiClient.java
│ │ │ │ │ ├── CollectionsApiClient.java
│ │ │ │ │ ├── ConfigApiClient.java
│ │ │ │ │ ├── CountingFileRequestBody.java
│ │ │ │ │ ├── CountingRequestBody.java
│ │ │ │ │ ├── CountingStreamRequestBody.java
│ │ │ │ │ ├── GroupsApiClient.java
│ │ │ │ │ ├── KeepWebApiClient.java
│ │ │ │ │ ├── LinksApiClient.java
│ │ │ │ │ ├── ProgressListener.java
│ │ │ │ │ ├── UsersApiClient.java
│ │ │ │ │ └── factory/
│ │ │ │ │ └── OkHttpClientFactory.java
│ │ │ │ └── model/
│ │ │ │ ├── ApiError.java
│ │ │ │ ├── ArvadosConfig.java
│ │ │ │ ├── Collection.java
│ │ │ │ ├── CollectionList.java
│ │ │ │ ├── CollectionReplaceFiles.java
│ │ │ │ ├── Group.java
│ │ │ │ ├── GroupList.java
│ │ │ │ ├── Item.java
│ │ │ │ ├── ItemList.java
│ │ │ │ ├── KeepService.java
│ │ │ │ ├── KeepServiceList.java
│ │ │ │ ├── Link.java
│ │ │ │ ├── LinkList.java
│ │ │ │ ├── RuntimeConstraints.java
│ │ │ │ ├── User.java
│ │ │ │ ├── UserList.java
│ │ │ │ └── argument/
│ │ │ │ ├── Argument.java
│ │ │ │ ├── ContentsGroup.java
│ │ │ │ ├── Filter.java
│ │ │ │ ├── ListArgument.java
│ │ │ │ └── UntrashGroup.java
│ │ │ ├── common/
│ │ │ │ ├── Characters.java
│ │ │ │ ├── Headers.java
│ │ │ │ └── Patterns.java
│ │ │ ├── config/
│ │ │ │ ├── ConfigProvider.java
│ │ │ │ ├── ExternalConfigProvider.java
│ │ │ │ ├── FileConfigProvider.java
│ │ │ │ └── WebDAVConfigFetcher.java
│ │ │ ├── exception/
│ │ │ │ ├── ArvadosApiException.java
│ │ │ │ └── ArvadosClientException.java
│ │ │ ├── facade/
│ │ │ │ └── ArvadosFacade.java
│ │ │ ├── logic/
│ │ │ │ ├── collection/
│ │ │ │ │ ├── CollectionFactory.java
│ │ │ │ │ ├── FileToken.java
│ │ │ │ │ ├── ManifestDecoder.java
│ │ │ │ │ ├── ManifestFactory.java
│ │ │ │ │ └── ManifestStream.java
│ │ │ │ └── keep/
│ │ │ │ ├── FileDownloader.java
│ │ │ │ ├── FileUploader.java
│ │ │ │ ├── KeepLocator.java
│ │ │ │ └── exception/
│ │ │ │ ├── DownloadFolderAlreadyExistsException.java
│ │ │ │ └── FileAlreadyExistsException.java
│ │ │ └── utils/
│ │ │ ├── FileMerge.java
│ │ │ └── FileSplit.java
│ │ └── resources/
│ │ └── reference.conf
│ └── test/
│ ├── java/
│ │ └── org/
│ │ └── arvados/
│ │ └── client/
│ │ ├── api/
│ │ │ └── client/
│ │ │ ├── BaseStandardApiClientTest.java
│ │ │ ├── CollectionsApiClientTest.java
│ │ │ ├── GroupsApiClientTest.java
│ │ │ ├── KeepWebApiClientTest.java
│ │ │ ├── LinkApiClientTest.java
│ │ │ ├── UsersApiClientTest.java
│ │ │ └── factory/
│ │ │ └── OkHttpClientFactoryTest.java
│ │ ├── config/
│ │ │ ├── ExternalConfigProviderTest.java
│ │ │ └── WebDAVConfigFetcherTest.java
│ │ ├── facade/
│ │ │ ├── ArvadosFacadeIntegrationTest.java
│ │ │ └── ArvadosFacadeTest.java
│ │ ├── junit/
│ │ │ └── categories/
│ │ │ └── IntegrationTests.java
│ │ ├── logic/
│ │ │ ├── collection/
│ │ │ │ ├── FileTokenTest.java
│ │ │ │ ├── ManifestDecoderTest.java
│ │ │ │ ├── ManifestFactoryTest.java
│ │ │ │ └── ManifestStreamTest.java
│ │ │ └── keep/
│ │ │ ├── FileDownloaderTest.java
│ │ │ └── KeepLocatorTest.java
│ │ ├── test/
│ │ │ └── utils/
│ │ │ ├── ApiClientTestUtils.java
│ │ │ ├── ArvadosClientIntegrationTest.java
│ │ │ ├── ArvadosClientMockedWebServerTest.java
│ │ │ ├── ArvadosClientUnitTest.java
│ │ │ ├── FileTestUtils.java
│ │ │ └── RequestMethod.java
│ │ └── utils/
│ │ ├── FileMergeTest.java
│ │ └── FileSplitTest.java
│ └── resources/
│ ├── application.conf
│ ├── integration-tests-application.conf
│ ├── integration-tests-application.conf.example
│ ├── mockito-extensions/
│ │ └── org.mockito.plugins.MockMaker
│ ├── org/
│ │ └── arvados/
│ │ └── client/
│ │ └── api/
│ │ └── client/
│ │ ├── collections-create-manifest.json
│ │ ├── collections-create-simple.json
│ │ ├── collections-download-file.json
│ │ ├── collections-get.json
│ │ ├── collections-list.json
│ │ ├── groups-get.json
│ │ ├── groups-list.json
│ │ ├── keep-client-test-file.txt
│ │ ├── keep-client-upload-response.json
│ │ ├── keep-services-accessible-disk-only.json
│ │ ├── keep-services-accessible.json
│ │ ├── keep-services-get.json
│ │ ├── keep-services-list.json
│ │ ├── keep-services-not-accessible.json
│ │ ├── links-create.json
│ │ ├── links-get.json
│ │ ├── links-list.json
│ │ ├── users-create.json
│ │ ├── users-get.json
│ │ ├── users-list.json
│ │ └── users-system.json
│ └── selfsigned.keystore.jks
├── doc/
│ ├── Gemfile
│ ├── README.textile
│ ├── Rakefile
│ ├── _config.yml
│ ├── _includes/
│ │ ├── _admin_list_collections_without_property_py.liquid
│ │ ├── _admin_set_property_to_collections_under_project_py.liquid
│ │ ├── _admin_update_collection_property_py.liquid
│ │ ├── _assign_volume_uuid.liquid
│ │ ├── _branchname.liquid
│ │ ├── _container_glob_patterns.liquid
│ │ ├── _container_published_ports.liquid
│ │ ├── _container_runtime_constraints.liquid
│ │ ├── _container_scheduling_parameters.liquid
│ │ ├── _contrib_component.liquid
│ │ ├── _download_installer.liquid
│ │ ├── _example_sdk_go.liquid
│ │ ├── _google_analytics.liquid
│ │ ├── _hpc_max_gateway_tunnels.liquid
│ │ ├── _html_tags.liquid
│ │ ├── _install_ansible.liquid
│ │ ├── _install_ca_cert.liquid
│ │ ├── _install_compute_docker.liquid
│ │ ├── _install_compute_fuse.liquid
│ │ ├── _install_cuda.liquid
│ │ ├── _install_debian_key.liquid
│ │ ├── _install_docker_cleaner.liquid
│ │ ├── _install_packages.liquid
│ │ ├── _install_postgres_database.liquid
│ │ ├── _install_rails_command.liquid
│ │ ├── _install_ruby_and_bundler.liquid
│ │ ├── _matomo_analytics.liquid
│ │ ├── _metadata_vocabulary_example.liquid
│ │ ├── _mount_types.liquid
│ │ ├── _multi_host_install_custom_certificates.liquid
│ │ ├── _navbar_left.liquid
│ │ ├── _navbar_top.liquid
│ │ ├── _notebox_begin.liquid
│ │ ├── _notebox_begin_warning.liquid
│ │ ├── _notebox_end.liquid
│ │ ├── _restart_api.liquid
│ │ ├── _setup_debian_repo.liquid
│ │ ├── _setup_redhat_repo.liquid
│ │ ├── _singularity_mksquashfs_configuration.liquid
│ │ ├── _ssh_addkey.liquid
│ │ ├── _ssh_intro.liquid
│ │ ├── _ssl_config_multi.liquid
│ │ ├── _ssl_config_single.liquid
│ │ ├── _start_service.liquid
│ │ ├── _supportedlinux.liquid
│ │ ├── _tutorial_expectations.liquid
│ │ ├── _tutorial_expectations_workstation.liquid
│ │ ├── _tutorial_hello_cwl.liquid
│ │ ├── _webring.liquid
│ │ └── _what_is_cwl.liquid
│ ├── _layouts/
│ │ └── default.html.liquid
│ ├── admin/
│ │ ├── User account states.odg
│ │ ├── cloudtest.html.textile.liquid
│ │ ├── collection-managed-properties.html.textile.liquid
│ │ ├── collection-versioning.html.textile.liquid
│ │ ├── config-urls.html.textile.liquid
│ │ ├── config.html.textile.liquid
│ │ ├── controlling-container-reuse.html.textile.liquid
│ │ ├── diagnostics.html.textile.liquid
│ │ ├── dispatch.html.textile.liquid
│ │ ├── federation.html.textile.liquid
│ │ ├── group-management.html.textile.liquid
│ │ ├── health-checks.html.textile.liquid
│ │ ├── index.html.textile.liquid
│ │ ├── inspect.html.textile.liquid
│ │ ├── keep-balance.html.textile.liquid
│ │ ├── keep-faster-gc-s3.html.textile.liquid
│ │ ├── keep-measuring-deduplication.html.textile.liquid
│ │ ├── keep-recovering-data.html.textile.liquid
│ │ ├── link-accounts.html.textile.liquid
│ │ ├── logging.html.textile.liquid
│ │ ├── logs-table-management.html.textile.liquid
│ │ ├── maintenance-and-upgrading.html.textile.liquid
│ │ ├── management-token.html.textile.liquid
│ │ ├── memory-cpu-profiling.html.textile.liquid
│ │ ├── metadata-vocabulary.html.textile.liquid
│ │ ├── metrics.html.textile.liquid
│ │ ├── migrating-providers.html.textile.liquid
│ │ ├── reassign-ownership.html.textile.liquid
│ │ ├── restricting-upload-download.html.textile.liquid
│ │ ├── scoped-tokens.html.textile.liquid
│ │ ├── spot-instances.html.textile.liquid
│ │ ├── storage-classes.html.textile.liquid
│ │ ├── token-expiration-policy.html.textile.liquid
│ │ ├── upgrading.html.textile.liquid
│ │ ├── user-activity.html.textile.liquid
│ │ ├── user-management-cli.html.textile.liquid
│ │ └── user-management.html.textile.liquid
│ ├── api/
│ │ ├── dispatch.html.textile.liquid
│ │ ├── execution.html.textile.liquid
│ │ ├── index.html.textile.liquid
│ │ ├── keep-s3.html.textile.liquid
│ │ ├── keep-web-urls.html.textile.liquid
│ │ ├── keep-webdav.html.textile.liquid
│ │ ├── methods/
│ │ │ ├── api_client_authorizations.html.textile.liquid
│ │ │ ├── authorized_keys.html.textile.liquid
│ │ │ ├── collections.html.textile.liquid
│ │ │ ├── computed_permissions.html.textile.liquid
│ │ │ ├── container_requests.html.textile.liquid
│ │ │ ├── containers.html.textile.liquid
│ │ │ ├── credentials.html.textile.liquid
│ │ │ ├── groups.html.textile.liquid
│ │ │ ├── keep_services.html.textile.liquid
│ │ │ ├── links.html.textile.liquid
│ │ │ ├── logs.html.textile.liquid
│ │ │ ├── user_agreements.html.textile.liquid
│ │ │ ├── users.html.textile.liquid
│ │ │ ├── virtual_machines.html.textile.liquid
│ │ │ └── workflows.html.textile.liquid
│ │ ├── methods.html.textile.liquid
│ │ ├── permission-model.html.textile.liquid
│ │ ├── projects.html.textile.liquid
│ │ ├── properties.html.textile.liquid
│ │ ├── requests.html.textile.liquid
│ │ ├── resources.html.textile.liquid
│ │ └── tokens.html.textile.liquid
│ ├── architecture/
│ │ ├── Arvados_arch.odg
│ │ ├── Arvados_federation.odg
│ │ ├── dispatchcloud.html.textile.liquid
│ │ ├── federation.html.textile.liquid
│ │ ├── hpc.html.textile.liquid
│ │ ├── index.html.textile.liquid
│ │ ├── keep-clients.html.textile.liquid
│ │ ├── keep-components-overview.html.textile.liquid
│ │ ├── keep-data-lifecycle.html.textile.liquid
│ │ ├── manifest-format.html.textile.liquid
│ │ ├── singularity.html.textile.liquid
│ │ └── storage.html.textile.liquid
│ ├── css/
│ │ ├── R.css
│ │ ├── badges.css
│ │ ├── bootstrap-theme.css
│ │ ├── bootstrap.css
│ │ ├── button-override.css
│ │ ├── carousel-override.css
│ │ ├── code.css
│ │ ├── font-awesome.css
│ │ ├── images.css
│ │ ├── layout.css
│ │ └── nav-list.css
│ ├── development/
│ │ ├── CodingStandards.md
│ │ ├── DevelopmentProcess.md
│ │ ├── DistroVersions.md
│ │ ├── Prerequisites.md
│ │ ├── RunningTests.md
│ │ ├── UpdatingDependencies.md
│ │ ├── git.conf
│ │ ├── prepare-commit-msg.sh
│ │ └── release/
│ │ ├── Checklist.md
│ │ ├── FastqPipeline.md
│ │ ├── JavaSDK.md
│ │ ├── ManualTests.md
│ │ └── Zenodo.md
│ ├── examples/
│ │ └── config/
│ │ └── zzzzz.yml
│ ├── fonts/
│ │ └── FontAwesome.otf
│ ├── index.html.liquid
│ ├── install/
│ │ ├── arvbox.html.textile.liquid
│ │ ├── config.html.textile.liquid
│ │ ├── configure-azure-blob-storage.html.textile.liquid
│ │ ├── configure-fs-storage.html.textile.liquid
│ │ ├── configure-s3-object-storage.html.textile.liquid
│ │ ├── container-shell-access.html.textile.liquid
│ │ ├── crunch2/
│ │ │ ├── install-compute-node-docker.html.textile.liquid
│ │ │ └── install-compute-node-singularity.html.textile.liquid
│ │ ├── crunch2-cloud/
│ │ │ ├── install-compute-node.html.textile.liquid
│ │ │ └── install-dispatch-cloud.html.textile.liquid
│ │ ├── crunch2-lsf/
│ │ │ └── install-dispatch.html.textile.liquid
│ │ ├── crunch2-slurm/
│ │ │ ├── configure-slurm.html.textile.liquid
│ │ │ ├── install-dispatch.html.textile.liquid
│ │ │ └── install-test.html.textile.liquid
│ │ ├── diagnostics.html.textile.liquid
│ │ ├── index.html.textile.liquid
│ │ ├── install-api-server.html.textile.liquid
│ │ ├── install-docker.html.textile.liquid
│ │ ├── install-keep-balance.html.textile.liquid
│ │ ├── install-keep-web.html.textile.liquid
│ │ ├── install-keepproxy.html.textile.liquid
│ │ ├── install-keepstore.html.textile.liquid
│ │ ├── install-manual-prerequisites.html.textile.liquid
│ │ ├── install-multi-host.html.textile.liquid
│ │ ├── install-postgresql.html.textile.liquid
│ │ ├── install-shell-server.html.textile.liquid
│ │ ├── install-single-host.html.textile.liquid
│ │ ├── install-webshell.html.textile.liquid
│ │ ├── install-workbench2-app.html.textile.liquid
│ │ ├── install-ws.html.textile.liquid
│ │ ├── new_cluster_checklist_AWS.xlsx
│ │ ├── new_cluster_checklist_Azure.xlsx
│ │ ├── new_cluster_checklist_slurm.xlsx
│ │ ├── nginx.html.textile.liquid
│ │ ├── packages.html.textile.liquid
│ │ ├── proxy-chain.odg
│ │ ├── ruby.html.textile.liquid
│ │ ├── salt-multi-host.html.textile.liquid
│ │ ├── salt-single-host.html.textile.liquid
│ │ ├── setup-login.html.textile.liquid
│ │ └── workbench.html.textile.liquid
│ ├── js/
│ │ └── bootstrap.js
│ ├── pysdk_pdoc.py
│ ├── sdk/
│ │ ├── cli/
│ │ │ ├── index.html.textile.liquid
│ │ │ ├── install.html.textile.liquid
│ │ │ ├── reference.html.textile.liquid
│ │ │ └── subcommands.html.textile.liquid
│ │ ├── fuse/
│ │ │ ├── install.html.textile.liquid
│ │ │ └── options.html.textile.liquid
│ │ ├── go/
│ │ │ ├── example.html.textile.liquid
│ │ │ └── index.html.textile.liquid
│ │ ├── index.html.textile.liquid
│ │ ├── java-v2/
│ │ │ ├── example.html.textile.liquid
│ │ │ ├── index.html.textile.liquid
│ │ │ └── javadoc.html.textile.liquid
│ │ ├── python/
│ │ │ ├── api-client.html.textile.liquid
│ │ │ ├── arvados-cwl-runner.html.textile.liquid
│ │ │ ├── cookbook.html.textile.liquid
│ │ │ ├── events.html.textile.liquid
│ │ │ ├── python.html.textile.liquid
│ │ │ └── sdk-python.html.textile.liquid
│ │ └── ruby/
│ │ ├── example.html.textile.liquid
│ │ └── index.html.textile.liquid
│ ├── user/
│ │ ├── copying/
│ │ │ ├── LICENSE-2.0.html
│ │ │ ├── agpl-3.0.html
│ │ │ ├── by-sa-3.0.html
│ │ │ └── copying.html.textile.liquid
│ │ ├── cwl/
│ │ │ ├── arvados-vscode-training.html.md.liquid
│ │ │ ├── bwa-mem/
│ │ │ │ ├── bwa-mem-input-local.yml
│ │ │ │ ├── bwa-mem-input-mixed.yml
│ │ │ │ ├── bwa-mem-input-uuids.yml
│ │ │ │ ├── bwa-mem-input.yml
│ │ │ │ ├── bwa-mem-template.yml
│ │ │ │ └── bwa-mem.cwl
│ │ │ ├── costanalyzer.html.textile.liquid
│ │ │ ├── crunchstat-summary.html.textile.liquid
│ │ │ ├── cwl-extensions.html.textile.liquid
│ │ │ ├── cwl-run-options.html.textile.liquid
│ │ │ ├── cwl-runner.html.textile.liquid
│ │ │ ├── cwl-style.html.textile.liquid
│ │ │ ├── cwl-versions.html.textile.liquid
│ │ │ ├── federated/
│ │ │ │ ├── FileOnCluster.yml
│ │ │ │ ├── colors_to_select.txt
│ │ │ │ ├── extract.cwl
│ │ │ │ ├── extract.py
│ │ │ │ ├── feddemo.cwl
│ │ │ │ ├── items1.csv
│ │ │ │ ├── items2.csv
│ │ │ │ ├── items3.csv
│ │ │ │ ├── merge.cwl
│ │ │ │ ├── merge.py
│ │ │ │ └── shards.yml
│ │ │ ├── federated-workflow.odg
│ │ │ ├── federated-workflows.html.textile.liquid
│ │ │ └── rnaseq-cwl-training.html.textile.liquid
│ │ ├── debugging/
│ │ │ └── container-shell-access.html.textile.liquid
│ │ ├── getting_started/
│ │ │ ├── check-environment.html.textile.liquid
│ │ │ ├── community.html.textile.liquid
│ │ │ ├── setup-cli.html.textile.liquid
│ │ │ ├── ssh-access-unix.html.textile.liquid
│ │ │ ├── ssh-access-windows.html.textile.liquid
│ │ │ ├── vm-login-with-webshell.html.textile.liquid
│ │ │ └── workbench.html.textile.liquid
│ │ ├── index.html.textile.liquid
│ │ ├── reference/
│ │ │ ├── api-tokens.html.textile.liquid
│ │ │ └── cookbook.html.textile.liquid
│ │ ├── topics/
│ │ │ ├── arv-copy.html.textile.liquid
│ │ │ ├── arv-docker.html.textile.liquid
│ │ │ ├── arvados-sync-external-sources.html.textile.liquid
│ │ │ ├── collection-versioning.html.textile.liquid
│ │ │ ├── external-inputs.html.textile.liquid
│ │ │ ├── link-accounts.html.textile.liquid
│ │ │ ├── service-containers.html.textile.liquid
│ │ │ ├── storage-classes.html.textile.liquid
│ │ │ └── workbench-migration.html.textile.liquid
│ │ └── tutorials/
│ │ ├── tutorial-keep-collection-lifecycle.html.textile.liquid
│ │ ├── tutorial-keep-get.html.textile.liquid
│ │ ├── tutorial-keep-mount-gnu-linux.html.textile.liquid
│ │ ├── tutorial-keep-mount-os-x.html.textile.liquid
│ │ ├── tutorial-keep-mount-windows.html.textile.liquid
│ │ ├── tutorial-keep.html.textile.liquid
│ │ ├── tutorial-projects.html.textile.liquid
│ │ ├── tutorial-workflow-workbench.html.textile.liquid
│ │ ├── wgs-tutorial.html.textile.liquid
│ │ └── writing-cwl-workflow.html.textile.liquid
│ ├── zenweb-fix-body.rb
│ ├── zenweb-liquid.rb
│ └── zenweb-textile.rb
├── go.mod
├── go.sum
├── lib/
│ ├── boot/
│ │ ├── cert.go
│ │ ├── cmd.go
│ │ ├── example.sh
│ │ ├── helpers.go
│ │ ├── nginx.go
│ │ ├── passenger.go
│ │ ├── postgresql.go
│ │ ├── rails_db.go
│ │ ├── rails_db_test.go
│ │ ├── service.go
│ │ ├── supervisor.go
│ │ ├── supervisor_test.go
│ │ └── workbench2.go
│ ├── cli/
│ │ ├── external.go
│ │ ├── flags.go
│ │ ├── get.go
│ │ └── get_test.go
│ ├── cloud/
│ │ ├── azure/
│ │ │ ├── azure.go
│ │ │ └── azure_test.go
│ │ ├── cloudtest/
│ │ │ ├── cmd.go
│ │ │ ├── tester.go
│ │ │ └── tester_test.go
│ │ ├── ec2/
│ │ │ ├── ec2.go
│ │ │ └── ec2_test.go
│ │ ├── interfaces.go
│ │ ├── loopback/
│ │ │ ├── loopback.go
│ │ │ └── loopback_test.go
│ │ ├── price.go
│ │ └── price_test.go
│ ├── cmd/
│ │ ├── cmd.go
│ │ ├── cmd_test.go
│ │ └── parseflags.go
│ ├── cmdtest/
│ │ └── leakcheck.go
│ ├── config/
│ │ ├── cmd.go
│ │ ├── cmd_test.go
│ │ ├── config.default.yml
│ │ ├── default.go
│ │ ├── deprecated.go
│ │ ├── deprecated_keepstore.go
│ │ ├── deprecated_keepstore_test.go
│ │ ├── deprecated_test.go
│ │ ├── export.go
│ │ ├── export_test.go
│ │ ├── load.go
│ │ ├── load_test.go
│ │ └── uptodate_test.go
│ ├── controller/
│ │ ├── api/
│ │ │ └── routable.go
│ │ ├── auth_test.go
│ │ ├── cmd.go
│ │ ├── dblock/
│ │ │ ├── dblock.go
│ │ │ └── dblock_test.go
│ │ ├── fed_generic.go
│ │ ├── federation/
│ │ │ ├── collection_test.go
│ │ │ ├── conn.go
│ │ │ ├── federation_test.go
│ │ │ ├── generate.go
│ │ │ ├── generated.go
│ │ │ ├── generated_test.go
│ │ │ ├── group_test.go
│ │ │ ├── list.go
│ │ │ ├── list_test.go
│ │ │ ├── login_test.go
│ │ │ ├── logout_test.go
│ │ │ └── user_test.go
│ │ ├── federation.go
│ │ ├── federation_test.go
│ │ ├── handler.go
│ │ ├── handler_test.go
│ │ ├── integration_test.go
│ │ ├── localdb/
│ │ │ ├── authorized_key.go
│ │ │ ├── authorized_key_test.go
│ │ │ ├── collection.go
│ │ │ ├── collection_test.go
│ │ │ ├── conn.go
│ │ │ ├── container.go
│ │ │ ├── container_gateway.go
│ │ │ ├── container_gateway_test.go
│ │ │ ├── container_request.go
│ │ │ ├── container_request_test.go
│ │ │ ├── container_test.go
│ │ │ ├── docker_test.go
│ │ │ ├── group.go
│ │ │ ├── group_test.go
│ │ │ ├── link.go
│ │ │ ├── link_test.go
│ │ │ ├── localdb_test.go
│ │ │ ├── log_activity.go
│ │ │ ├── log_activity_test.go
│ │ │ ├── login.go
│ │ │ ├── login_docker_test/
│ │ │ │ ├── add_example_user.ldif
│ │ │ │ ├── run_controller.sh
│ │ │ │ ├── setup_pam_test.sh
│ │ │ │ ├── setup_suite.sh
│ │ │ │ ├── setup_suite_users.sh
│ │ │ │ ├── start_controller_container.sh
│ │ │ │ └── teardown_suite.sh
│ │ │ ├── login_docker_test.go
│ │ │ ├── login_ldap.go
│ │ │ ├── login_oidc.go
│ │ │ ├── login_oidc_test.go
│ │ │ ├── login_pam.go
│ │ │ ├── login_pam_static.go
│ │ │ ├── login_test.go
│ │ │ ├── login_testuser.go
│ │ │ ├── login_testuser_test.go
│ │ │ ├── logout.go
│ │ │ └── testdata/
│ │ │ ├── dsa.pub
│ │ │ ├── ecdsa-sk.pub
│ │ │ ├── ecdsa.pub
│ │ │ ├── ed25519-sk.pub
│ │ │ ├── ed25519.pub
│ │ │ ├── generate
│ │ │ └── rsa.pub
│ │ ├── proxy.go
│ │ ├── rails_restart_test.go
│ │ ├── railsproxy/
│ │ │ └── railsproxy.go
│ │ ├── router/
│ │ │ ├── checker_test.go
│ │ │ ├── error.go
│ │ │ ├── request.go
│ │ │ ├── request_test.go
│ │ │ ├── response.go
│ │ │ ├── router.go
│ │ │ └── router_test.go
│ │ ├── rpc/
│ │ │ ├── conn.go
│ │ │ └── conn_test.go
│ │ ├── semaphore.go
│ │ ├── server_test.go
│ │ └── trash.go
│ ├── crunchrun/
│ │ ├── background.go
│ │ ├── bufthenwrite.go
│ │ ├── cgroup.go
│ │ ├── cgroup_test.go
│ │ ├── container_gateway.go
│ │ ├── copier.go
│ │ ├── copier_test.go
│ │ ├── crunchrun.go
│ │ ├── crunchrun_test.go
│ │ ├── cuda.go
│ │ ├── docker.go
│ │ ├── docker_test.go
│ │ ├── executor.go
│ │ ├── executor_test.go
│ │ ├── integration_test.go
│ │ ├── logging.go
│ │ ├── logging_test.go
│ │ ├── logscanner.go
│ │ ├── logscanner_test.go
│ │ ├── singularity.go
│ │ ├── singularity_test.go
│ │ └── testdata/
│ │ └── fakestat/
│ │ ├── cgroup.procs
│ │ └── cgroupid/
│ │ ├── cgroup.procs
│ │ └── memory.stat
│ ├── crunchstat/
│ │ ├── command.go
│ │ ├── crunchstat.go
│ │ ├── crunchstat_test.go
│ │ └── testdata/
│ │ ├── debian10/
│ │ │ ├── proc/
│ │ │ │ ├── 3288/
│ │ │ │ │ ├── cgroup
│ │ │ │ │ ├── cpuset
│ │ │ │ │ └── net/
│ │ │ │ │ └── dev
│ │ │ │ ├── cpuinfo
│ │ │ │ ├── mounts
│ │ │ │ └── self/
│ │ │ │ └── smaps
│ │ │ └── sys/
│ │ │ └── fs/
│ │ │ └── cgroup/
│ │ │ └── user.slice/
│ │ │ ├── cpu.max
│ │ │ ├── io.stat
│ │ │ └── user-1000.slice/
│ │ │ └── session-7.scope/
│ │ │ ├── cpu.stat
│ │ │ ├── memory.current
│ │ │ ├── memory.stat
│ │ │ └── memory.swap.current
│ │ ├── debian11/
│ │ │ ├── proc/
│ │ │ │ ├── 4153022/
│ │ │ │ │ ├── cgroup
│ │ │ │ │ ├── cpuset
│ │ │ │ │ └── net/
│ │ │ │ │ └── dev
│ │ │ │ ├── cpuinfo
│ │ │ │ ├── mounts
│ │ │ │ └── self/
│ │ │ │ └── smaps
│ │ │ └── sys/
│ │ │ └── fs/
│ │ │ └── cgroup/
│ │ │ └── user.slice/
│ │ │ ├── cpu.max
│ │ │ ├── cpuset.cpus.effective
│ │ │ ├── io.stat
│ │ │ └── user-1000.slice/
│ │ │ └── session-5424.scope/
│ │ │ ├── cpu.stat
│ │ │ ├── memory.current
│ │ │ ├── memory.stat
│ │ │ └── memory.swap.current
│ │ ├── debian12/
│ │ │ ├── proc/
│ │ │ │ ├── 1115883/
│ │ │ │ │ ├── cgroup
│ │ │ │ │ ├── cpuset
│ │ │ │ │ └── net/
│ │ │ │ │ └── dev
│ │ │ │ ├── cpuinfo
│ │ │ │ ├── mounts
│ │ │ │ └── self/
│ │ │ │ └── smaps
│ │ │ └── sys/
│ │ │ └── fs/
│ │ │ └── cgroup/
│ │ │ └── user.slice/
│ │ │ ├── cpuset.cpus.effective
│ │ │ ├── io.stat
│ │ │ └── user-1000.slice/
│ │ │ └── session-4.scope/
│ │ │ ├── cpu.max
│ │ │ ├── cpu.stat
│ │ │ ├── memory.current
│ │ │ ├── memory.stat
│ │ │ └── memory.swap.current
│ │ ├── ubuntu1804/
│ │ │ ├── proc/
│ │ │ │ ├── 2523/
│ │ │ │ │ ├── cgroup
│ │ │ │ │ ├── cpuset
│ │ │ │ │ └── net/
│ │ │ │ │ └── dev
│ │ │ │ ├── cpuinfo
│ │ │ │ ├── mounts
│ │ │ │ └── self/
│ │ │ │ └── smaps
│ │ │ └── sys/
│ │ │ └── fs/
│ │ │ └── cgroup/
│ │ │ ├── blkio/
│ │ │ │ └── user.slice/
│ │ │ │ └── blkio.throttle.io_service_bytes
│ │ │ ├── cpu,cpuacct/
│ │ │ │ └── user.slice/
│ │ │ │ └── cpuacct.stat
│ │ │ ├── cpuset/
│ │ │ │ └── cpuset.cpus
│ │ │ ├── memory/
│ │ │ │ └── user.slice/
│ │ │ │ └── memory.stat
│ │ │ └── unified/
│ │ │ └── user.slice/
│ │ │ └── user-1000.slice/
│ │ │ └── session-1.scope/
│ │ │ └── cpu.stat
│ │ ├── ubuntu2004/
│ │ │ ├── proc/
│ │ │ │ ├── 1360/
│ │ │ │ │ ├── cgroup
│ │ │ │ │ ├── cpuset
│ │ │ │ │ └── net/
│ │ │ │ │ └── dev
│ │ │ │ ├── cpuinfo
│ │ │ │ ├── mounts
│ │ │ │ └── self/
│ │ │ │ └── smaps
│ │ │ └── sys/
│ │ │ └── fs/
│ │ │ └── cgroup/
│ │ │ ├── blkio/
│ │ │ │ └── user.slice/
│ │ │ │ └── blkio.throttle.io_service_bytes
│ │ │ ├── cpu,cpuacct/
│ │ │ │ └── user.slice/
│ │ │ │ └── cpuacct.stat
│ │ │ ├── cpuset/
│ │ │ │ └── cpuset.cpus
│ │ │ ├── memory/
│ │ │ │ └── user.slice/
│ │ │ │ └── user-1000.slice/
│ │ │ │ └── session-2.scope/
│ │ │ │ └── memory.stat
│ │ │ └── unified/
│ │ │ └── user.slice/
│ │ │ └── user-1000.slice/
│ │ │ └── session-2.scope/
│ │ │ └── cpu.stat
│ │ └── ubuntu2204/
│ │ ├── proc/
│ │ │ ├── 1967/
│ │ │ │ ├── cgroup
│ │ │ │ ├── cpuset
│ │ │ │ └── net/
│ │ │ │ └── dev
│ │ │ ├── cpuinfo
│ │ │ ├── mounts
│ │ │ └── self/
│ │ │ └── smaps
│ │ └── sys/
│ │ └── fs/
│ │ └── cgroup/
│ │ └── user.slice/
│ │ ├── cpu.max
│ │ ├── cpuset.cpus.effective
│ │ ├── io.stat
│ │ └── user-1000.slice/
│ │ └── session-1.scope/
│ │ ├── cpu.stat
│ │ ├── memory.current
│ │ ├── memory.stat
│ │ └── memory.swap.current
│ ├── ctrlctx/
│ │ ├── auth.go
│ │ ├── auth_test.go
│ │ ├── db.go
│ │ └── db_test.go
│ ├── deduplicationreport/
│ │ ├── command.go
│ │ ├── report.go
│ │ └── report_test.go
│ ├── diagnostics/
│ │ ├── cmd.go
│ │ └── docker_image_test.go
│ ├── dispatchcloud/
│ │ ├── adminclient.go
│ │ ├── cmd.go
│ │ ├── container/
│ │ │ ├── node_size.go
│ │ │ ├── node_size_test.go
│ │ │ ├── queue.go
│ │ │ └── queue_test.go
│ │ ├── dispatcher.go
│ │ ├── dispatcher_test.go
│ │ ├── driver.go
│ │ ├── gocheck_test.go
│ │ ├── logger.go
│ │ ├── readme.go
│ │ ├── readme_states.txt
│ │ ├── scheduler/
│ │ │ ├── fix_stale_locks.go
│ │ │ ├── gocheck_test.go
│ │ │ ├── interfaces.go
│ │ │ ├── run_queue.go
│ │ │ ├── run_queue_test.go
│ │ │ ├── scheduler.go
│ │ │ ├── sync.go
│ │ │ └── sync_test.go
│ │ ├── sshexecutor/
│ │ │ ├── executor.go
│ │ │ └── executor_test.go
│ │ ├── test/
│ │ │ ├── doc.go
│ │ │ ├── fixtures.go
│ │ │ ├── queue.go
│ │ │ ├── ssh_service.go
│ │ │ ├── sshkey_dispatch
│ │ │ ├── sshkey_dispatch.pub
│ │ │ ├── sshkey_vm
│ │ │ ├── sshkey_vm.pub
│ │ │ └── stub_driver.go
│ │ └── worker/
│ │ ├── gocheck_test.go
│ │ ├── pool.go
│ │ ├── pool_test.go
│ │ ├── runner.go
│ │ ├── throttle.go
│ │ ├── throttle_test.go
│ │ ├── verify.go
│ │ ├── worker.go
│ │ └── worker_test.go
│ ├── lsf/
│ │ ├── dispatch.go
│ │ ├── dispatch_test.go
│ │ ├── lsfcli.go
│ │ └── lsfqueue.go
│ ├── mount/
│ │ ├── command.go
│ │ ├── command_test.go
│ │ ├── fs.go
│ │ └── fs_test.go
│ ├── pam/
│ │ ├── .gitignore
│ │ ├── README
│ │ ├── docker_test.go
│ │ ├── fpm-info.sh
│ │ ├── pam-configs-arvados
│ │ ├── pam_arvados.go
│ │ ├── pam_c.go
│ │ └── testclient.go
│ ├── recovercollection/
│ │ ├── cmd.go
│ │ └── cmd_test.go
│ ├── selfsigned/
│ │ ├── cert.go
│ │ └── cert_test.go
│ ├── service/
│ │ ├── cmd.go
│ │ ├── cmd_test.go
│ │ ├── error.go
│ │ ├── log.go
│ │ └── tls.go
│ └── webdavfs/
│ ├── fs.go
│ └── fs_test.go
├── sdk/
│ ├── cli/
│ │ ├── .gitignore
│ │ ├── Gemfile
│ │ ├── LICENSE-2.0.txt
│ │ ├── Rakefile
│ │ ├── arvados-cli.gemspec
│ │ ├── bin/
│ │ │ ├── arv
│ │ │ └── arv-tag
│ │ └── test/
│ │ ├── binstub_arv-mount/
│ │ │ └── arv-mount
│ │ ├── binstub_clean_fail/
│ │ │ └── arv-mount
│ │ ├── binstub_docker_noop/
│ │ │ └── docker.io
│ │ ├── binstub_output_coll_owner/
│ │ │ └── python
│ │ ├── binstub_sanity_check/
│ │ │ ├── docker.io
│ │ │ └── true
│ │ ├── test_arv-collection-create.rb
│ │ ├── test_arv-get.rb
│ │ ├── test_arv-keep-get.rb
│ │ ├── test_arv-keep-put.rb
│ │ ├── test_arv-tag.rb
│ │ └── test_arv-ws.rb
│ ├── cwl/
│ │ ├── LICENSE-2.0.txt
│ │ ├── MANIFEST.in
│ │ ├── README.rst
│ │ ├── arvados_cwl/
│ │ │ ├── __init__.py
│ │ │ ├── arv-cwl-schema-v1.0.yml
│ │ │ ├── arv-cwl-schema-v1.1.yml
│ │ │ ├── arv-cwl-schema-v1.2.yml
│ │ │ ├── arvcontainer.py
│ │ │ ├── arvdocker.py
│ │ │ ├── arvtool.py
│ │ │ ├── arvworkflow.py
│ │ │ ├── context.py
│ │ │ ├── done.py
│ │ │ ├── executor.py
│ │ │ ├── fsaccess.py
│ │ │ ├── pathmapper.py
│ │ │ ├── perf.py
│ │ │ ├── runner.py
│ │ │ └── util.py
│ │ ├── arvados_version.py
│ │ ├── bin/
│ │ │ ├── arvados-cwl-runner
│ │ │ └── cwl-runner
│ │ ├── fpm-info.sh
│ │ ├── pyproject.toml
│ │ ├── setup.py
│ │ └── tests/
│ │ ├── 10380-trailing-slash-dir.cwl
│ │ ├── 12213-keepref-expr.cwl
│ │ ├── 12213-keepref-job.yml
│ │ ├── 12213-keepref-tool.cwl
│ │ ├── 12213-keepref-wf.cwl
│ │ ├── 12418-glob-empty-collection.cwl
│ │ ├── 13931-size-job.yml
│ │ ├── 13931-size.cwl
│ │ ├── 13976-keepref-wf.cwl
│ │ ├── 15241-writable-dir-job.json
│ │ ├── 15241-writable-dir.cwl
│ │ ├── 15295-bad-keep-ref.cwl
│ │ ├── 16169-no-listing-hint.cwl
│ │ ├── 16377-missing-default.cwl
│ │ ├── 17004-output-props.cwl
│ │ ├── 17267-broken-schemas.cwl
│ │ ├── 17521-dot-slash-glob.cwl
│ │ ├── 17801-runtime-outdir.cwl
│ │ ├── 17858-pack-visit-crash.cwl
│ │ ├── 17879-ignore-sbg-fields-job.yml
│ │ ├── 17879-ignore-sbg-fields.cwl
│ │ ├── 18888-download_def.cwl
│ │ ├── 18994-basename/
│ │ │ ├── check.cwl
│ │ │ ├── rename.cwl
│ │ │ ├── wf_ren.cwl
│ │ │ └── whale.txt
│ │ ├── 19070-copy-deps.cwl
│ │ ├── 19109-upload-secondary/
│ │ │ ├── file1.txt
│ │ │ ├── file1.txt.tbi
│ │ │ ├── file2.txt
│ │ │ └── file2.txt.tbi
│ │ ├── 19109-upload-secondary.cwl
│ │ ├── 19109-upload-secondary.yml
│ │ ├── 19678-name-id.cwl
│ │ ├── 19678-name-id.yml
│ │ ├── 22466/
│ │ │ ├── fake.bam
│ │ │ └── input.yml
│ │ ├── 22466-output-glob-expressions-secondaryfile.cwl
│ │ ├── __init__.py
│ │ ├── arvados-tests.yml
│ │ ├── badkeep.yml
│ │ ├── cat.cwl
│ │ ├── cat2.cwl
│ │ ├── chipseq/
│ │ │ ├── chip-seq-single.json
│ │ │ ├── cwl-packed.json
│ │ │ └── data/
│ │ │ └── Genomes/
│ │ │ ├── Blacklist/
│ │ │ │ └── lists2/
│ │ │ │ └── hg38-blacklist.v2.bed
│ │ │ ├── Drosophila_melanogaster/
│ │ │ │ └── dmel_r6.16/
│ │ │ │ ├── Bowtie2Index/
│ │ │ │ │ └── genome.fa
│ │ │ │ └── WholeGenome/
│ │ │ │ ├── genome.dict
│ │ │ │ ├── genome.fa
│ │ │ │ └── genome.fa.fai
│ │ │ └── Homo_sapiens/
│ │ │ └── GRCh38.p2/
│ │ │ ├── Bowtie2Index/
│ │ │ │ └── genome.fa
│ │ │ └── WholeGenome/
│ │ │ ├── genome.dict
│ │ │ ├── genome.fa
│ │ │ └── genome.fa.fai
│ │ ├── collection_per_tool/
│ │ │ ├── a.txt
│ │ │ ├── b.txt
│ │ │ ├── c.txt
│ │ │ ├── collection_per_tool.cwl
│ │ │ ├── collection_per_tool_packed.cwl
│ │ │ ├── collection_per_tool_wrapper.cwl
│ │ │ ├── step1.cwl
│ │ │ └── step2.cwl
│ │ ├── conftest.py
│ │ ├── container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y-arv-mount.txt
│ │ ├── container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y-crunchstat.txt
│ │ ├── dir-job.yml
│ │ ├── dir-job2.yml
│ │ ├── fake-keep-mount/
│ │ │ └── fake_collection_dir/
│ │ │ └── subdir/
│ │ │ └── banana.txt
│ │ ├── federation/
│ │ │ ├── README
│ │ │ ├── cases/
│ │ │ │ ├── base-case.cwl
│ │ │ │ ├── cat.cwl
│ │ │ │ ├── hint-on-tool.cwl
│ │ │ │ ├── hint-on-wf.cwl
│ │ │ │ ├── md5sum-tool-hint.cwl
│ │ │ │ ├── md5sum.cwl
│ │ │ │ ├── remote-case.cwl
│ │ │ │ ├── rev-input-to-output.cwl
│ │ │ │ ├── rev.cwl
│ │ │ │ ├── runner-home-step-remote.cwl
│ │ │ │ ├── runner-remote-step-home.cwl
│ │ │ │ ├── scatter-gather.cwl
│ │ │ │ ├── threestep-remote.cwl
│ │ │ │ ├── twostep-both-remote.cwl
│ │ │ │ ├── twostep-home-to-remote.cwl
│ │ │ │ ├── twostep-remote-copy-to-home.cwl
│ │ │ │ └── twostep-remote-to-home.cwl
│ │ │ ├── data/
│ │ │ │ ├── base-case-input.txt
│ │ │ │ ├── hint-on-tool.txt
│ │ │ │ ├── hint-on-wf.txt
│ │ │ │ ├── remote-case-input.txt
│ │ │ │ ├── runner-home-step-remote-input.txt
│ │ │ │ ├── runner-remote-step-home-input.txt
│ │ │ │ ├── scatter-gather-s1.txt
│ │ │ │ ├── scatter-gather-s2.txt
│ │ │ │ ├── scatter-gather-s3.txt
│ │ │ │ ├── threestep-remote.txt
│ │ │ │ ├── twostep-both-remote.txt
│ │ │ │ ├── twostep-home-to-remote.txt
│ │ │ │ ├── twostep-remote-copy-to-home.txt
│ │ │ │ └── twostep-remote-to-home.txt
│ │ │ ├── framework/
│ │ │ │ ├── check-exist.cwl
│ │ │ │ ├── check_exist.py
│ │ │ │ ├── dockerbuild.cwl
│ │ │ │ ├── prepare.cwl
│ │ │ │ ├── prepare.py
│ │ │ │ ├── run-acr.cwl
│ │ │ │ └── testcase.cwl
│ │ │ └── main.cwl
│ │ ├── hello.yml
│ │ ├── hg19/
│ │ │ ├── hg19.fa
│ │ │ ├── hg19.fa.amb
│ │ │ ├── hg19.fa.ann
│ │ │ └── hg19.fa.fai
│ │ ├── hw.py
│ │ ├── input/
│ │ │ └── blorp.txt
│ │ ├── keep-dir-test-input.cwl
│ │ ├── keep-dir-test-input2.cwl
│ │ ├── keep-dir-test-input3.cwl
│ │ ├── listing-job.yml
│ │ ├── makes_intermediates/
│ │ │ ├── echo.cwl
│ │ │ ├── hello1.txt
│ │ │ ├── run_in_single.cwl
│ │ │ └── subwf.cwl
│ │ ├── matcher.py
│ │ ├── mock_discovery.py
│ │ ├── noreuse.cwl
│ │ ├── octo.yml
│ │ ├── oom/
│ │ │ ├── 19975-oom-mispelled.cwl
│ │ │ ├── 19975-oom.cwl
│ │ │ ├── 19975-oom3.cwl
│ │ │ ├── fakeoom.py
│ │ │ ├── fakeoom.yml
│ │ │ ├── fakeoom2.py
│ │ │ ├── fakeoom2.yml
│ │ │ ├── fakeoom3.py
│ │ │ └── fakeoom3.yml
│ │ ├── order/
│ │ │ ├── empty_order.json
│ │ │ └── inputs_test_order.json
│ │ ├── scripts/
│ │ │ └── download_all_data.sh
│ │ ├── secondary/
│ │ │ ├── dir/
│ │ │ │ ├── hg19.fa
│ │ │ │ ├── hg19.fa.amb
│ │ │ │ ├── hg19.fa.ann
│ │ │ │ └── hg19.fa.fai
│ │ │ ├── ls.cwl
│ │ │ ├── sub.cwl
│ │ │ ├── wf-job.yml
│ │ │ └── wf.cwl
│ │ ├── secondaryFiles/
│ │ │ ├── example1.cwl
│ │ │ ├── example3.cwl
│ │ │ ├── hello.txt
│ │ │ ├── hello.txt.idx
│ │ │ └── inp3.yml
│ │ ├── secret_test_job.yml
│ │ ├── stdout.cwl
│ │ ├── submit_test_job.json
│ │ ├── submit_test_job_missing.json
│ │ ├── submit_test_job_s3.json
│ │ ├── submit_test_job_with_inconsistent_uuids.json
│ │ ├── submit_test_job_with_mismatched_uuids.json
│ │ ├── submit_test_job_with_uuids.json
│ │ ├── test_conformance.py
│ │ ├── test_container.py
│ │ ├── test_copy_deps.py
│ │ ├── test_fsaccess.py
│ │ ├── test_integration.py
│ │ ├── test_make_output.py
│ │ ├── test_pathmapper.py
│ │ ├── test_submit.py
│ │ ├── test_tq.py
│ │ ├── test_urljoin.py
│ │ ├── test_util.py
│ │ ├── testdir/
│ │ │ ├── a
│ │ │ ├── b
│ │ │ └── c/
│ │ │ └── d
│ │ ├── tmp1/
│ │ │ └── tmp2/
│ │ │ └── tmp3/
│ │ │ └── .gitkeep
│ │ ├── tool/
│ │ │ ├── blub.txt
│ │ │ ├── blub.txt.cat
│ │ │ ├── submit_tool.cwl
│ │ │ ├── submit_tool_map.cwl
│ │ │ ├── tool_with_sf.cwl
│ │ │ └── tool_with_sf.yml
│ │ ├── wf/
│ │ │ ├── 16169-step.cwl
│ │ │ ├── check_mem.py
│ │ │ ├── echo-subwf.cwl
│ │ │ ├── echo-wf.cwl
│ │ │ ├── echo_a.cwl
│ │ │ ├── echo_b.cwl
│ │ │ ├── expect_arvworkflow.cwl
│ │ │ ├── expect_packed.cwl
│ │ │ ├── expect_upload_packed.cwl
│ │ │ ├── expect_upload_wrapper.cwl
│ │ │ ├── expect_upload_wrapper_altname.cwl
│ │ │ ├── expect_upload_wrapper_map.cwl
│ │ │ ├── hello.txt
│ │ │ ├── indir1/
│ │ │ │ └── hello2.txt
│ │ │ ├── inputs_test.cwl
│ │ │ ├── listing_deep.cwl
│ │ │ ├── listing_none.cwl
│ │ │ ├── listing_shallow.cwl
│ │ │ ├── output_dir.cwl
│ │ │ ├── output_dir_wf.cwl
│ │ │ ├── revsort/
│ │ │ │ ├── revsort.cwl
│ │ │ │ ├── revtool.cwl
│ │ │ │ └── sorttool.cwl
│ │ │ ├── runin-reqs-wf.cwl
│ │ │ ├── runin-reqs-wf2.cwl
│ │ │ ├── runin-reqs-wf3.cwl
│ │ │ ├── runin-reqs-wf4.cwl
│ │ │ ├── runin-reqs-wf5.cwl
│ │ │ ├── runin-wf.cwl
│ │ │ ├── runin-with-ttl-wf.cwl
│ │ │ ├── runseparate-wf.cwl
│ │ │ ├── scatter2.cwl
│ │ │ ├── scatter2_subwf.cwl
│ │ │ ├── secret_job.cwl
│ │ │ ├── secret_wf.cwl
│ │ │ ├── submit_keepref_wf.cwl
│ │ │ ├── submit_storage_class_wf.cwl
│ │ │ ├── submit_wf.cwl
│ │ │ ├── submit_wf_map.cwl
│ │ │ ├── submit_wf_no_reuse.cwl
│ │ │ ├── submit_wf_packed.cwl
│ │ │ ├── submit_wf_process_properties.cwl
│ │ │ ├── submit_wf_runner_resources.cwl
│ │ │ ├── submit_wf_wrapper.cwl
│ │ │ └── trick_defaults2.cwl
│ │ └── wf-defaults/
│ │ ├── default-dir1.cwl
│ │ ├── default-dir2.cwl
│ │ ├── default-dir3.cwl
│ │ ├── default-dir4.cwl
│ │ ├── default-dir5.cwl
│ │ ├── default-dir6.cwl
│ │ ├── default-dir6a.cwl
│ │ ├── default-dir7.cwl
│ │ ├── default-dir7a.cwl
│ │ ├── default-dir8.cwl
│ │ ├── inp1/
│ │ │ └── hello.txt
│ │ ├── wf1.cwl
│ │ ├── wf2.cwl
│ │ ├── wf3.cwl
│ │ ├── wf4.cwl
│ │ ├── wf5.cwl
│ │ ├── wf6.cwl
│ │ ├── wf7.cwl
│ │ └── wf8.cwl
│ ├── go/
│ │ ├── arvados/
│ │ │ ├── api.go
│ │ │ ├── api_client_authorization.go
│ │ │ ├── authorized_key.go
│ │ │ ├── blob_signature.go
│ │ │ ├── blob_signature_test.go
│ │ │ ├── block_segment.go
│ │ │ ├── block_segment_test.go
│ │ │ ├── byte_size.go
│ │ │ ├── byte_size_test.go
│ │ │ ├── client.go
│ │ │ ├── client_test.go
│ │ │ ├── collection.go
│ │ │ ├── collection_test.go
│ │ │ ├── config.go
│ │ │ ├── config_test.go
│ │ │ ├── container.go
│ │ │ ├── container_gateway.go
│ │ │ ├── context.go
│ │ │ ├── contextgroup.go
│ │ │ ├── credential.go
│ │ │ ├── doc.go
│ │ │ ├── duration.go
│ │ │ ├── duration_test.go
│ │ │ ├── error.go
│ │ │ ├── fs_backend.go
│ │ │ ├── fs_base.go
│ │ │ ├── fs_collection.go
│ │ │ ├── fs_collection_test.go
│ │ │ ├── fs_deferred.go
│ │ │ ├── fs_filehandle.go
│ │ │ ├── fs_getternode.go
│ │ │ ├── fs_lookup.go
│ │ │ ├── fs_project.go
│ │ │ ├── fs_project_test.go
│ │ │ ├── fs_site.go
│ │ │ ├── fs_site_test.go
│ │ │ ├── fs_users.go
│ │ │ ├── group.go
│ │ │ ├── integration_test_cluster.go
│ │ │ ├── keep_block.go
│ │ │ ├── keep_cache.go
│ │ │ ├── keep_cache_test.go
│ │ │ ├── keep_metrics.go
│ │ │ ├── keep_service.go
│ │ │ ├── keep_service_test.go
│ │ │ ├── limiter.go
│ │ │ ├── limiter_test.go
│ │ │ ├── link.go
│ │ │ ├── log.go
│ │ │ ├── login.go
│ │ │ ├── node.go
│ │ │ ├── postgresql.go
│ │ │ ├── resource_list.go
│ │ │ ├── resource_list_test.go
│ │ │ ├── throttle.go
│ │ │ ├── tls_certs.go
│ │ │ ├── tls_certs_test.go
│ │ │ ├── tls_certs_test_showenv.go
│ │ │ ├── user.go
│ │ │ ├── virtual_machine.go
│ │ │ ├── vocabulary.go
│ │ │ ├── vocabulary_test.go
│ │ │ └── workflow.go
│ │ ├── arvadosclient/
│ │ │ ├── arvadosclient.go
│ │ │ ├── arvadosclient_test.go
│ │ │ └── pool.go
│ │ ├── arvadostest/
│ │ │ ├── api.go
│ │ │ ├── api_test.go
│ │ │ ├── busybox_image.go
│ │ │ ├── db.go
│ │ │ ├── fixtures.go
│ │ │ ├── keep_stub.go
│ │ │ ├── manifest.go
│ │ │ ├── metrics.go
│ │ │ ├── oidc_provider.go
│ │ │ ├── proxy.go
│ │ │ ├── run_servers.go
│ │ │ └── stub.go
│ │ ├── asyncbuf/
│ │ │ ├── buf.go
│ │ │ └── buf_test.go
│ │ ├── auth/
│ │ │ ├── auth.go
│ │ │ ├── handlers.go
│ │ │ ├── handlers_test.go
│ │ │ └── salt.go
│ │ ├── blockdigest/
│ │ │ ├── blockdigest.go
│ │ │ ├── blockdigest_test.go
│ │ │ └── testing.go
│ │ ├── config/
│ │ │ ├── dump.go
│ │ │ └── load.go
│ │ ├── ctxlog/
│ │ │ └── log.go
│ │ ├── dispatch/
│ │ │ ├── dispatch.go
│ │ │ ├── dispatch_test.go
│ │ │ ├── throttle.go
│ │ │ └── throttle_test.go
│ │ ├── health/
│ │ │ ├── aggregator.go
│ │ │ ├── aggregator_test.go
│ │ │ ├── handler.go
│ │ │ └── handler_test.go
│ │ ├── httpserver/
│ │ │ ├── error.go
│ │ │ ├── httpserver.go
│ │ │ ├── id_generator.go
│ │ │ ├── inspect.go
│ │ │ ├── inspect_test.go
│ │ │ ├── log.go
│ │ │ ├── logger.go
│ │ │ ├── logger_test.go
│ │ │ ├── metrics.go
│ │ │ ├── request_limiter.go
│ │ │ ├── request_limiter_test.go
│ │ │ └── responsewriter.go
│ │ ├── keepclient/
│ │ │ ├── collectionreader.go
│ │ │ ├── collectionreader_test.go
│ │ │ ├── discover.go
│ │ │ ├── discover_test.go
│ │ │ ├── gateway_shim.go
│ │ │ ├── hashcheck.go
│ │ │ ├── hashcheck_test.go
│ │ │ ├── keepclient.go
│ │ │ ├── keepclient_test.go
│ │ │ ├── perms.go
│ │ │ ├── root_sorter.go
│ │ │ ├── root_sorter_test.go
│ │ │ └── support.go
│ │ └── stats/
│ │ ├── duration.go
│ │ └── duration_test.go
│ ├── python/
│ │ ├── LICENSE-2.0.txt
│ │ ├── MANIFEST.in
│ │ ├── README.rst
│ │ ├── arvados/
│ │ │ ├── __init__.py
│ │ │ ├── _internal/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── basedirs.py
│ │ │ │ ├── diskcache.py
│ │ │ │ ├── downloaderbase.py
│ │ │ │ ├── http_to_keep.py
│ │ │ │ ├── pycurl.py
│ │ │ │ ├── report_template.py
│ │ │ │ ├── s3_to_keep.py
│ │ │ │ ├── streams.py
│ │ │ │ └── to_keep_util.py
│ │ │ ├── api.py
│ │ │ ├── arvfile.py
│ │ │ ├── cache.py
│ │ │ ├── collection.py
│ │ │ ├── commands/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _util.py
│ │ │ │ ├── arv_copy.py
│ │ │ │ ├── arvcli.py
│ │ │ │ ├── get.py
│ │ │ │ ├── keepdocker.py
│ │ │ │ ├── ls.py
│ │ │ │ ├── put.py
│ │ │ │ ├── run.py
│ │ │ │ └── ws.py
│ │ │ ├── config.py
│ │ │ ├── errors.py
│ │ │ ├── events.py
│ │ │ ├── keep.py
│ │ │ ├── logging.py
│ │ │ ├── retry.py
│ │ │ ├── safeapi.py
│ │ │ ├── util.py
│ │ │ └── vocabulary.py
│ │ ├── arvados-v1-discovery.json
│ │ ├── arvados_version.py
│ │ ├── bin/
│ │ │ ├── arv-copy
│ │ │ ├── arv-get
│ │ │ ├── arv-keepdocker
│ │ │ ├── arv-ls
│ │ │ ├── arv-normalize
│ │ │ ├── arv-put
│ │ │ └── arv-ws
│ │ ├── discovery2pydoc.py
│ │ ├── fpm-info.sh
│ │ ├── pyproject.toml
│ │ ├── pytest.ini
│ │ ├── setup.py
│ │ └── tests/
│ │ ├── __init__.py
│ │ ├── arvados_testutil.py
│ │ ├── conftest.py
│ │ ├── data/
│ │ │ ├── 1000G_ref_manifest
│ │ │ ├── hello-world-README.txt
│ │ │ └── jlake_manifest
│ │ ├── keepstub.py
│ │ ├── manifest_examples.py
│ │ ├── nginx.conf
│ │ ├── performance/
│ │ │ ├── __init__.py
│ │ │ ├── performance_profiler.py
│ │ │ └── test_a_sample.py
│ │ ├── run_test_server.py
│ │ ├── test_api.py
│ │ ├── test_arv_copy.py
│ │ ├── test_arv_get.py
│ │ ├── test_arv_keepdocker.py
│ │ ├── test_arv_ls.py
│ │ ├── test_arv_normalize.py
│ │ ├── test_arv_put.py
│ │ ├── test_arv_ws.py
│ │ ├── test_arvcli.py
│ │ ├── test_arvfile.py
│ │ ├── test_basedirs.py
│ │ ├── test_benchmark_collections.py
│ │ ├── test_cmd_util.py
│ │ ├── test_collections.py
│ │ ├── test_computed_permissions.py
│ │ ├── test_config.py
│ │ ├── test_errors.py
│ │ ├── test_events.py
│ │ ├── test_http_cache.py
│ │ ├── test_http_to_keep.py
│ │ ├── test_internal.py
│ │ ├── test_keep_client.py
│ │ ├── test_keep_locator.py
│ │ ├── test_retry.py
│ │ ├── test_retry_job_helpers.py
│ │ ├── test_s3_to_keep.py
│ │ ├── test_storage_classes.py
│ │ ├── test_stream.py
│ │ ├── test_util.py
│ │ └── test_vocabulary.py
│ ├── ruby/
│ │ ├── .gitignore
│ │ ├── Gemfile
│ │ ├── LICENSE-2.0.txt
│ │ ├── README
│ │ ├── Rakefile
│ │ ├── arvados.gemspec
│ │ ├── lib/
│ │ │ ├── arvados/
│ │ │ │ ├── collection.rb
│ │ │ │ ├── google_api_client.rb
│ │ │ │ └── keep.rb
│ │ │ └── arvados.rb
│ │ └── test/
│ │ ├── sdk_fixtures.rb
│ │ ├── test_big_request.rb
│ │ ├── test_collection.rb
│ │ ├── test_keep_manifest.rb
│ │ └── test_request_id.rb
│ └── ruby-google-api-client/
│ ├── .gitignore
│ ├── .rspec
│ ├── .travis.yml
│ ├── .yardopts
│ ├── CHANGELOG.md
│ ├── CONTRIBUTING.md
│ ├── Gemfile
│ ├── LICENSE
│ ├── README.md
│ ├── Rakefile
│ ├── arvados-google-api-client.gemspec
│ ├── lib/
│ │ ├── cacerts.pem
│ │ ├── compat/
│ │ │ └── multi_json.rb
│ │ └── google/
│ │ ├── api_client/
│ │ │ ├── auth/
│ │ │ │ ├── compute_service_account.rb
│ │ │ │ ├── file_storage.rb
│ │ │ │ ├── installed_app.rb
│ │ │ │ ├── jwt_asserter.rb
│ │ │ │ ├── key_utils.rb
│ │ │ │ ├── pkcs12.rb
│ │ │ │ ├── storage.rb
│ │ │ │ └── storages/
│ │ │ │ ├── file_store.rb
│ │ │ │ └── redis_store.rb
│ │ │ ├── batch.rb
│ │ │ ├── charset.rb
│ │ │ ├── client_secrets.rb
│ │ │ ├── discovery/
│ │ │ │ ├── api.rb
│ │ │ │ ├── media.rb
│ │ │ │ ├── method.rb
│ │ │ │ ├── resource.rb
│ │ │ │ └── schema.rb
│ │ │ ├── discovery.rb
│ │ │ ├── environment.rb
│ │ │ ├── errors.rb
│ │ │ ├── logging.rb
│ │ │ ├── media.rb
│ │ │ ├── railtie.rb
│ │ │ ├── reference.rb
│ │ │ ├── request.rb
│ │ │ ├── result.rb
│ │ │ ├── service/
│ │ │ │ ├── batch.rb
│ │ │ │ ├── request.rb
│ │ │ │ ├── resource.rb
│ │ │ │ ├── result.rb
│ │ │ │ ├── simple_file_store.rb
│ │ │ │ └── stub_generator.rb
│ │ │ ├── service.rb
│ │ │ ├── service_account.rb
│ │ │ └── version.rb
│ │ └── api_client.rb
│ ├── rakelib/
│ │ ├── gem.rake
│ │ ├── git.rake
│ │ ├── metrics.rake
│ │ ├── spec.rake
│ │ ├── wiki.rake
│ │ └── yard.rake
│ ├── script/
│ │ ├── package
│ │ └── release
│ ├── spec/
│ │ ├── fixtures/
│ │ │ └── files/
│ │ │ ├── auth_stored_credentials.json
│ │ │ ├── client_secrets.json
│ │ │ ├── privatekey.p12
│ │ │ ├── sample.txt
│ │ │ ├── secret.pem
│ │ │ └── zoo.json
│ │ ├── google/
│ │ │ ├── api_client/
│ │ │ │ ├── auth/
│ │ │ │ │ ├── storage_spec.rb
│ │ │ │ │ └── storages/
│ │ │ │ │ ├── file_store_spec.rb
│ │ │ │ │ └── redis_store_spec.rb
│ │ │ │ ├── batch_spec.rb
│ │ │ │ ├── client_secrets_spec.rb
│ │ │ │ ├── discovery_spec.rb
│ │ │ │ ├── gzip_spec.rb
│ │ │ │ ├── media_spec.rb
│ │ │ │ ├── request_spec.rb
│ │ │ │ ├── result_spec.rb
│ │ │ │ ├── service_account_spec.rb
│ │ │ │ ├── service_spec.rb
│ │ │ │ └── simple_file_store_spec.rb
│ │ │ └── api_client_spec.rb
│ │ └── spec_helper.rb
│ └── yard/
│ ├── bin/
│ │ └── yard-wiki
│ ├── lib/
│ │ ├── yard/
│ │ │ ├── cli/
│ │ │ │ └── wiki.rb
│ │ │ ├── rake/
│ │ │ │ └── wikidoc_task.rb
│ │ │ ├── serializers/
│ │ │ │ └── wiki_serializer.rb
│ │ │ └── templates/
│ │ │ └── helpers/
│ │ │ └── wiki_helper.rb
│ │ └── yard-google-code.rb
│ └── templates/
│ └── default/
│ ├── class/
│ │ └── setup.rb
│ ├── docstring/
│ │ └── setup.rb
│ ├── method/
│ │ └── setup.rb
│ ├── method_details/
│ │ └── setup.rb
│ ├── module/
│ │ └── setup.rb
│ └── tags/
│ └── setup.rb
├── services/
│ ├── api/
│ │ ├── .gitignore
│ │ ├── Gemfile
│ │ ├── Passengerfile.json
│ │ ├── README
│ │ ├── Rakefile
│ │ ├── app/
│ │ │ ├── assets/
│ │ │ │ ├── config/
│ │ │ │ │ └── manifest.js
│ │ │ │ └── stylesheets/
│ │ │ │ ├── application.css
│ │ │ │ └── scaffolds.css.scss
│ │ │ ├── controllers/
│ │ │ │ ├── application_controller.rb
│ │ │ │ ├── arvados/
│ │ │ │ │ └── v1/
│ │ │ │ │ ├── api_client_authorizations_controller.rb
│ │ │ │ │ ├── authorized_keys_controller.rb
│ │ │ │ │ ├── collections_controller.rb
│ │ │ │ │ ├── computed_permissions_controller.rb
│ │ │ │ │ ├── container_requests_controller.rb
│ │ │ │ │ ├── containers_controller.rb
│ │ │ │ │ ├── credentials_controller.rb
│ │ │ │ │ ├── groups_controller.rb
│ │ │ │ │ ├── keep_services_controller.rb
│ │ │ │ │ ├── links_controller.rb
│ │ │ │ │ ├── logs_controller.rb
│ │ │ │ │ ├── management_controller.rb
│ │ │ │ │ ├── schema_controller.rb
│ │ │ │ │ ├── user_agreements_controller.rb
│ │ │ │ │ ├── users_controller.rb
│ │ │ │ │ ├── virtual_machines_controller.rb
│ │ │ │ │ └── workflows_controller.rb
│ │ │ │ ├── database_controller.rb
│ │ │ │ ├── static_controller.rb
│ │ │ │ ├── sys_controller.rb
│ │ │ │ └── user_sessions_controller.rb
│ │ │ ├── helpers/
│ │ │ │ └── application_helper.rb
│ │ │ ├── mailers/
│ │ │ │ ├── .gitkeep
│ │ │ │ ├── admin_notifier.rb
│ │ │ │ ├── profile_notifier.rb
│ │ │ │ └── user_notifier.rb
│ │ │ ├── middlewares/
│ │ │ │ └── arvados_api_token.rb
│ │ │ ├── models/
│ │ │ │ ├── .gitkeep
│ │ │ │ ├── api_client_authorization.rb
│ │ │ │ ├── application_record.rb
│ │ │ │ ├── arvados_model.rb
│ │ │ │ ├── authorized_key.rb
│ │ │ │ ├── blob.rb
│ │ │ │ ├── collection.rb
│ │ │ │ ├── computed_permission.rb
│ │ │ │ ├── container.rb
│ │ │ │ ├── container_port.rb
│ │ │ │ ├── container_request.rb
│ │ │ │ ├── credential.rb
│ │ │ │ ├── database_seeds.rb
│ │ │ │ ├── frozen_group.rb
│ │ │ │ ├── group.rb
│ │ │ │ ├── jsonb_type.rb
│ │ │ │ ├── keep_service.rb
│ │ │ │ ├── link.rb
│ │ │ │ ├── log.rb
│ │ │ │ ├── trashed_group.rb
│ │ │ │ ├── user.rb
│ │ │ │ ├── user_agreement.rb
│ │ │ │ ├── virtual_machine.rb
│ │ │ │ └── workflow.rb
│ │ │ └── views/
│ │ │ ├── admin_notifier/
│ │ │ │ ├── new_inactive_user.text.erb
│ │ │ │ └── new_user.text.erb
│ │ │ ├── layouts/
│ │ │ │ └── application.html.erb
│ │ │ ├── profile_notifier/
│ │ │ │ └── profile_created.text.erb
│ │ │ ├── static/
│ │ │ │ ├── intro.html.erb
│ │ │ │ └── login_failure.html.erb
│ │ │ ├── user_notifier/
│ │ │ │ └── account_is_setup.text.erb
│ │ │ └── user_sessions/
│ │ │ ├── create.html.erb
│ │ │ └── failure.html.erb
│ │ ├── arvados-railsapi.service
│ │ ├── bin/
│ │ │ ├── bundle
│ │ │ ├── rails
│ │ │ ├── rake
│ │ │ ├── setup
│ │ │ └── update
│ │ ├── config/
│ │ │ ├── application.default.yml
│ │ │ ├── application.rb
│ │ │ ├── application.yml.example
│ │ │ ├── arvados_config.rb
│ │ │ ├── boot.rb
│ │ │ ├── cable.yml
│ │ │ ├── database.yml.example
│ │ │ ├── environment.rb
│ │ │ ├── environments/
│ │ │ │ ├── development.rb.example
│ │ │ │ ├── production.rb.example
│ │ │ │ └── test.rb.example
│ │ │ ├── initializers/
│ │ │ │ ├── andand.rb
│ │ │ │ ├── app_version.rb
│ │ │ │ ├── application_controller_renderer.rb
│ │ │ │ ├── assets.rb
│ │ │ │ ├── authorization.rb
│ │ │ │ ├── backtrace_silencers.rb
│ │ │ │ ├── clear_empty_content_type.rb
│ │ │ │ ├── common_api_template.rb
│ │ │ │ ├── content_security_policy.rb
│ │ │ │ ├── cookies_serializer.rb
│ │ │ │ ├── current_api_client.rb
│ │ │ │ ├── custom_types.rb
│ │ │ │ ├── db_current_time.rb
│ │ │ │ ├── db_timeout.rb
│ │ │ │ ├── filter_parameter_logging.rb
│ │ │ │ ├── fix_www_decode.rb
│ │ │ │ ├── inflections.rb
│ │ │ │ ├── kind_and_etag.rb
│ │ │ │ ├── lograge.rb
│ │ │ │ ├── mime_types.rb
│ │ │ │ ├── net_http.rb
│ │ │ │ ├── oj_mimic_json.rb
│ │ │ │ ├── permissions_policy.rb
│ │ │ │ ├── permit_all_parameters.rb
│ │ │ │ ├── reload_config.rb
│ │ │ │ ├── request_id_middleware.rb
│ │ │ │ ├── session_store.rb
│ │ │ │ ├── time_format.rb
│ │ │ │ ├── time_zone.rb
│ │ │ │ └── wrap_parameters.rb
│ │ │ ├── locales/
│ │ │ │ └── en.yml
│ │ │ ├── puma.rb
│ │ │ ├── routes.rb
│ │ │ ├── secrets.yml
│ │ │ ├── spring.rb
│ │ │ └── unbound.template
│ │ ├── config.ru
│ │ ├── db/
│ │ │ ├── migrate/
│ │ │ │ ├── 20121016005009_create_collections.rb
│ │ │ │ ├── 20130105203021_create_metadata.rb
│ │ │ │ ├── 20130105224358_rename_metadata_class.rb
│ │ │ │ ├── 20130105224618_rename_collection_created_by_client.rb
│ │ │ │ ├── 20130107181109_add_uuid_to_collections.rb
│ │ │ │ ├── 20130107212832_create_nodes.rb
│ │ │ │ ├── 20130109175700_create_pipelines.rb
│ │ │ │ ├── 20130109220548_create_pipeline_invocations.rb
│ │ │ │ ├── 20130113214204_add_index_to_collections_and_metadata.rb
│ │ │ │ ├── 20130116024233_create_specimens.rb
│ │ │ │ ├── 20130116215213_create_projects.rb
│ │ │ │ ├── 20130118002239_rename_metadata_attributes.rb
│ │ │ │ ├── 20130122020042_create_users.rb
│ │ │ │ ├── 20130122201442_create_logs.rb
│ │ │ │ ├── 20130122221616_add_modified_at_to_logs.rb
│ │ │ │ ├── 20130123174514_add_uuid_index_to_users.rb
│ │ │ │ ├── 20130123180224_create_api_clients.rb
│ │ │ │ ├── 20130123180228_create_api_client_authorizations.rb
│ │ │ │ ├── 20130125220425_rename_created_by_to_owner.rb
│ │ │ │ ├── 20130128202518_rename_metadata_to_links.rb
│ │ │ │ ├── 20130128231343_add_properties_to_specimen.rb
│ │ │ │ ├── 20130130205749_add_manifest_text_to_collection.rb
│ │ │ │ ├── 20130203104818_create_jobs.rb
│ │ │ │ ├── 20130203104824_create_job_steps.rb
│ │ │ │ ├── 20130203115329_add_priority_to_jobs.rb
│ │ │ │ ├── 20130207195855_add_index_on_timestamps.rb
│ │ │ │ ├── 20130218181504_add_properties_to_pipeline_invocations.rb
│ │ │ │ ├── 20130226170000_remove_native_target_from_links.rb
│ │ │ │ ├── 20130313175417_rename_projects_to_groups.rb
│ │ │ │ ├── 20130315155820_add_is_locked_by_to_jobs.rb
│ │ │ │ ├── 20130315183626_add_log_to_jobs.rb
│ │ │ │ ├── 20130315213205_add_tasks_summary_to_jobs.rb
│ │ │ │ ├── 20130318002138_add_resource_limits_to_jobs.rb
│ │ │ │ ├── 20130319165853_rename_job_command_to_script.rb
│ │ │ │ ├── 20130319180730_rename_pipeline_invocation_to_pipeline_instance.rb
│ │ │ │ ├── 20130319194637_rename_pipelines_to_pipeline_templates.rb
│ │ │ │ ├── 20130319201431_rename_job_steps_to_job_tasks.rb
│ │ │ │ ├── 20130319235957_add_default_owner_to_users.rb
│ │ │ │ ├── 20130320000107_add_default_owner_to_api_client_authorizations.rb
│ │ │ │ ├── 20130326173804_create_commits.rb
│ │ │ │ ├── 20130326182917_create_commit_ancestors.rb
│ │ │ │ ├── 20130415020241_rename_orvos_to_arvados.rb
│ │ │ │ ├── 20130425024459_create_keep_disks.rb
│ │ │ │ ├── 20130425214427_add_service_host_and_service_port_and_service_ssl_flag_to_keep_disks.rb
│ │ │ │ ├── 20130523060112_add_created_by_job_task_to_job_tasks.rb
│ │ │ │ ├── 20130523060213_add_qsequence_to_job_tasks.rb
│ │ │ │ ├── 20130524042319_fix_job_task_qsequence_type.rb
│ │ │ │ ├── 20130528134100_update_nodes_index.rb
│ │ │ │ ├── 20130606183519_create_authorized_keys.rb
│ │ │ │ ├── 20130608053730_create_virtual_machines.rb
│ │ │ │ ├── 20130610202538_create_repositories.rb
│ │ │ │ ├── 20130611163736_rename_authorized_key_authorized_user_to_authorized_user_uuid.rb
│ │ │ │ ├── 20130612042554_add_name_unique_index_to_repositories.rb
│ │ │ │ ├── 20130617150007_add_is_trusted_to_api_clients.rb
│ │ │ │ ├── 20130626002829_add_is_active_to_users.rb
│ │ │ │ ├── 20130626022810_activate_all_admins.rb
│ │ │ │ ├── 20130627154537_create_traits.rb
│ │ │ │ ├── 20130627184333_create_humans.rb
│ │ │ │ ├── 20130708163414_rename_foreign_uuid_attributes.rb
│ │ │ │ ├── 20130708182912_rename_job_foreign_uuid_attributes.rb
│ │ │ │ ├── 20130708185153_rename_user_default_owner.rb
│ │ │ │ ├── 20130724153034_add_scopes_to_api_client_authorizations.rb
│ │ │ │ ├── 20131007180607_rename_resource_limits_to_runtime_constraints.rb
│ │ │ │ ├── 20140117231056_normalize_collection_uuid.rb
│ │ │ │ ├── 20140124222114_fix_link_kind_underscores.rb
│ │ │ │ ├── 20140129184311_normalize_collection_uuids_in_script_parameters.rb
│ │ │ │ ├── 20140317135600_add_nondeterministic_column_to_job.rb
│ │ │ │ ├── 20140319160547_separate_repository_from_script_version.rb
│ │ │ │ ├── 20140321191343_add_repository_column_to_job.rb
│ │ │ │ ├── 20140324024606_add_output_is_persistent_to_job.rb
│ │ │ │ ├── 20140325175653_remove_kind_columns.rb
│ │ │ │ ├── 20140402001908_add_system_group.rb
│ │ │ │ ├── 20140407184311_rename_log_info_to_properties.rb
│ │ │ │ ├── 20140421140924_add_group_class_to_groups.rb
│ │ │ │ ├── 20140421151939_rename_auth_keys_user_index.rb
│ │ │ │ ├── 20140421151940_timestamps_not_null.rb
│ │ │ │ ├── 20140422011506_pipeline_instance_state.rb
│ │ │ │ ├── 20140423132913_add_object_owner_to_logs.rb
│ │ │ │ ├── 20140423133559_new_scope_format.rb
│ │ │ │ ├── 20140501165548_add_unique_name_index_to_links.rb
│ │ │ │ ├── 20140519205916_create_keep_services.rb
│ │ │ │ ├── 20140527152921_add_description_to_pipeline_templates.rb
│ │ │ │ ├── 20140530200539_add_supplied_script_version.rb
│ │ │ │ ├── 20140601022548_remove_name_from_collections.rb
│ │ │ │ ├── 20140602143352_remove_active_and_success_from_pipeline_instances.rb
│ │ │ │ ├── 20140607150616_rename_folder_to_project.rb
│ │ │ │ ├── 20140611173003_add_docker_locator_to_jobs.rb
│ │ │ │ ├── 20140627210837_anonymous_group.rb
│ │ │ │ ├── 20140709172343_job_task_serial_qsequence.rb
│ │ │ │ ├── 20140714184006_empty_collection.rb
│ │ │ │ ├── 20140811184643_collection_use_regular_uuids.rb
│ │ │ │ ├── 20140817035914_add_unique_name_constraints.rb
│ │ │ │ ├── 20140818125735_add_not_null_constraint_to_group_name.rb
│ │ │ │ ├── 20140826180337_remove_output_is_persistent_column.rb
│ │ │ │ ├── 20140828141043_job_priority_fixup.rb
│ │ │ │ ├── 20140909183946_add_start_finish_time_to_tasks_and_pipelines.rb
│ │ │ │ ├── 20140911221252_add_description_to_pipeline_instances_and_jobs.rb
│ │ │ │ ├── 20140918141529_change_user_owner_uuid_not_null.rb
│ │ │ │ ├── 20140918153541_add_properties_to_node.rb
│ │ │ │ ├── 20140918153705_add_state_to_job.rb
│ │ │ │ ├── 20140924091559_add_job_uuid_to_nodes.rb
│ │ │ │ ├── 20141111133038_add_arvados_sdk_version_to_jobs.rb
│ │ │ │ ├── 20141208164553_owner_uuid_index.rb
│ │ │ │ ├── 20141208174553_descriptions_are_strings.rb
│ │ │ │ ├── 20141208174653_collection_file_names.rb
│ │ │ │ ├── 20141208185217_search_index.rb
│ │ │ │ ├── 20150122175935_no_description_in_search_index.rb
│ │ │ │ ├── 20150123142953_full_text_search.rb
│ │ │ │ ├── 20150203180223_set_group_class_on_anonymous_group.rb
│ │ │ │ ├── 20150206210804_all_users_can_read_anonymous_group.rb
│ │ │ │ ├── 20150206230342_rename_replication_attributes.rb
│ │ │ │ ├── 20150216193428_collection_name_owner_unique_only_non_expired.rb
│ │ │ │ ├── 20150303210106_fix_collection_portable_data_hash_with_hinted_manifest.rb
│ │ │ │ ├── 20150312151136_change_collection_expires_at_to_datetime.rb
│ │ │ │ ├── 20150317132720_add_username_to_users.rb
│ │ │ │ ├── 20150324152204_backward_compatibility_for_user_repositories.rb
│ │ │ │ ├── 20150423145759_no_filenames_in_collection_search_index.rb
│ │ │ │ ├── 20150512193020_read_only_on_keep_services.rb
│ │ │ │ ├── 20150526180251_leading_space_on_full_text_index.rb
│ │ │ │ ├── 20151202151426_create_containers_and_requests.rb
│ │ │ │ ├── 20151215134304_fix_containers_index.rb
│ │ │ │ ├── 20151229214707_add_exit_code_to_containers.rb
│ │ │ │ ├── 20160208210629_add_uuid_to_api_client_authorization.rb
│ │ │ │ ├── 20160209155729_add_uuid_to_api_token_search_index.rb
│ │ │ │ ├── 20160324144017_add_components_to_job.rb
│ │ │ │ ├── 20160506175108_add_auths_to_container.rb
│ │ │ │ ├── 20160509143250_add_auth_and_lock_to_container_index.rb
│ │ │ │ ├── 20160808151559_create_workflows.rb
│ │ │ │ ├── 20160819195557_add_script_parameters_digest_to_jobs.rb
│ │ │ │ ├── 20160819195725_populate_script_parameters_digest.rb
│ │ │ │ ├── 20160901210110_repair_script_parameters_digest.rb
│ │ │ │ ├── 20160909181442_rename_workflow_to_definition.rb
│ │ │ │ ├── 20160926194129_add_container_count.rb
│ │ │ │ ├── 20161019171346_add_use_existing_to_container_requests.rb
│ │ │ │ ├── 20161111143147_add_scheduling_parameters_to_container.rb
│ │ │ │ ├── 20161115171221_add_output_and_log_uuid_to_container_request.rb
│ │ │ │ ├── 20161115174218_add_output_and_log_uuids_to_container_request_search_index.rb
│ │ │ │ ├── 20161213172944_full_text_search_indexes.rb
│ │ │ │ ├── 20161222153434_split_expiry_to_trash_and_delete.rb
│ │ │ │ ├── 20161223090712_add_output_name_to_container_requests.rb
│ │ │ │ ├── 20170102153111_add_output_name_to_container_request_search_index.rb
│ │ │ │ ├── 20170105160301_add_output_name_to_cr_fts_index.rb
│ │ │ │ ├── 20170105160302_set_finished_at_on_finished_pipeline_instances.rb
│ │ │ │ ├── 20170216170823_no_cr_mounts_and_workflow_def_in_full_text_search_index.rb
│ │ │ │ ├── 20170301225558_no_downgrade_after_json.rb
│ │ │ │ ├── 20170319063406_serialized_columns_accept_null.rb
│ │ │ │ ├── 20170328215436_add_portable_data_hash_index_to_collections.rb
│ │ │ │ ├── 20170330012505_add_output_ttl_to_container_requests.rb
│ │ │ │ ├── 20170419173031_add_created_by_job_task_index_to_job_tasks.rb
│ │ │ │ ├── 20170419173712_add_object_owner_index_to_logs.rb
│ │ │ │ ├── 20170419175801_add_requesting_container_index_to_container_requests.rb
│ │ │ │ ├── 20170628185847_jobs_yaml_to_json.rb
│ │ │ │ ├── 20170704160233_yaml_to_json.rb
│ │ │ │ ├── 20170706141334_json_collection_properties.rb
│ │ │ │ ├── 20170824202826_trashable_groups.rb
│ │ │ │ ├── 20170906224040_materialized_permission_view.rb
│ │ │ │ ├── 20171027183824_add_index_to_containers.rb
│ │ │ │ ├── 20171208203841_fix_trash_flag_follow.rb
│ │ │ │ ├── 20171212153352_add_gin_index_to_collection_properties.rb
│ │ │ │ ├── 20180216203422_add_storage_classes_to_collections.rb
│ │ │ │ ├── 20180228220311_add_secret_mounts_to_containers.rb
│ │ │ │ ├── 20180313180114_change_container_priority_bigint.rb
│ │ │ │ ├── 20180501182859_add_redirect_to_user_uuid_to_users.rb
│ │ │ │ ├── 20180514135529_add_container_auth_uuid_index.rb
│ │ │ │ ├── 20180607175050_properties_to_jsonb.rb
│ │ │ │ ├── 20180608123145_add_properties_to_groups.rb
│ │ │ │ ├── 20180806133039_index_all_filenames.rb
│ │ │ │ ├── 20180820130357_add_pdh_and_trash_index_to_collections.rb
│ │ │ │ ├── 20180820132617_add_lock_index_to_containers.rb
│ │ │ │ ├── 20180820135808_drop_pdh_index_from_collections.rb
│ │ │ │ ├── 20180824152014_add_md5_index_to_containers.rb
│ │ │ │ ├── 20180824155207_add_queue_index_to_containers.rb
│ │ │ │ ├── 20180904110712_add_runtime_status_to_containers.rb
│ │ │ │ ├── 20180913175443_add_version_info_to_collections.rb
│ │ │ │ ├── 20180915155335_set_current_version_uuid_on_collections.rb
│ │ │ │ ├── 20180917200000_replace_full_text_indexes.rb
│ │ │ │ ├── 20180917205609_recompute_file_names_index.rb
│ │ │ │ ├── 20180919001158_recreate_collection_unique_name_index.rb
│ │ │ │ ├── 20181001175023_add_preserve_version_to_collections.rb
│ │ │ │ ├── 20181004131141_add_current_version_uuid_to_collection_search_index.rb
│ │ │ │ ├── 20181005192222_add_container_runtime_token.rb
│ │ │ │ ├── 20181011184200_add_runtime_token_to_container.rb
│ │ │ │ ├── 20181213183234_add_expression_index_to_links.rb
│ │ │ │ ├── 20190214214814_add_container_lock_count.rb
│ │ │ │ ├── 20190322174136_add_file_info_to_collection.rb
│ │ │ │ ├── 20190422144631_fill_missing_modified_at.rb
│ │ │ │ ├── 20190523180148_add_trigram_index_for_text_search.rb
│ │ │ │ ├── 20190808145904_drop_commit_ancestors.rb
│ │ │ │ ├── 20190809135453_remove_commits_table.rb
│ │ │ │ ├── 20190905151603_enforce_unique_identity_url.rb
│ │ │ │ ├── 20200501150153_permission_table.rb
│ │ │ │ ├── 20200602141328_fix_roles_projects.rb
│ │ │ │ ├── 20200914203202_public_favorites_project.rb
│ │ │ │ ├── 20201103170213_refresh_trashed_groups.rb
│ │ │ │ ├── 20201105190435_refresh_permissions.rb
│ │ │ │ ├── 20201202174753_fix_collection_versions_timestamps.rb
│ │ │ │ ├── 20210108033940_add_gateway_address_to_containers.rb
│ │ │ │ ├── 20210126183521_add_interactive_session_started_to_containers.rb
│ │ │ │ ├── 20210621204455_add_container_output_storage_class.rb
│ │ │ │ ├── 20210816191509_drop_fts_index.rb
│ │ │ │ ├── 20211027154300_delete_disabled_user_tokens_and_keys.rb
│ │ │ │ ├── 20220224203102_add_frozen_by_uuid_to_groups.rb
│ │ │ │ ├── 20220301155729_frozen_groups.rb
│ │ │ │ ├── 20220303204419_add_frozen_by_uuid_to_group_search_index.rb
│ │ │ │ ├── 20220401153101_fix_created_at_indexes.rb
│ │ │ │ ├── 20220505112900_add_output_properties.rb
│ │ │ │ ├── 20220726034131_write_via_all_users.rb
│ │ │ │ ├── 20220804133317_add_cost_to_containers.rb
│ │ │ │ ├── 20221219165512_dedup_permission_links.rb
│ │ │ │ ├── 20221230155924_bigint_id.rb
│ │ │ │ ├── 20230421142716_add_name_index_to_collections_and_groups.rb
│ │ │ │ ├── 20230503224107_priority_update_functions.rb
│ │ │ │ ├── 20230815160000_jsonb_exists_functions.rb
│ │ │ │ ├── 20230821000000_priority_update_fix.rb
│ │ │ │ ├── 20230922000000_add_btree_name_index_to_collections_and_groups.rb
│ │ │ │ ├── 20231013000000_compute_permission_index.rb
│ │ │ │ ├── 20240329173437_add_output_glob_to_containers.rb
│ │ │ │ ├── 20240402162733_add_output_glob_index_to_containers.rb
│ │ │ │ ├── 20240604183200_exclude_uuids_and_hashes_from_text_search.rb
│ │ │ │ ├── 20240618121312_create_uuid_locks.rb
│ │ │ │ ├── 20240627201747_set_default_api_client_id.rb
│ │ │ │ ├── 20240820202230_exclude_container_image_from_text_search.rb
│ │ │ │ ├── 20241118110000_index_on_container_request_name.rb
│ │ │ │ ├── 20250115145250_drop_fts_index_again.rb
│ │ │ │ ├── 20250312141843_add_refreshes_at_to_api_client_authorizations.rb
│ │ │ │ ├── 20250315222222_add_services_and_published_ports.rb
│ │ │ │ ├── 20250402131700_add_collection_uuid_to_workflows.rb
│ │ │ │ ├── 20250422103000_create_credentials_table.rb
│ │ │ │ ├── 20250426201300_priority_update_check_trash_at.rb
│ │ │ │ ├── 20250527181323_add_container_ports.rb
│ │ │ │ └── 20251006181234_enforce_required_credential_fields.rb
│ │ │ ├── seeds.rb
│ │ │ └── structure.sql
│ │ ├── fpm-info.sh
│ │ ├── lib/
│ │ │ ├── 20200501150153_permission_table_constants.rb
│ │ │ ├── app_version.rb
│ │ │ ├── arvados_model_updates.rb
│ │ │ ├── assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── audit_logs.rb
│ │ │ ├── can_be_an_owner.rb
│ │ │ ├── common_api_template.rb
│ │ │ ├── config_loader.rb
│ │ │ ├── create_ancestor_view.sql
│ │ │ ├── create_permission_view.sql
│ │ │ ├── current_api_client.rb
│ │ │ ├── db_current_time.rb
│ │ │ ├── fix_collection_versions_timestamps.rb
│ │ │ ├── fix_roles_projects.rb
│ │ │ ├── group_pdhs.rb
│ │ │ ├── has_uuid.rb
│ │ │ ├── kind_and_etag.rb
│ │ │ ├── load_param.rb
│ │ │ ├── log_reuse_info.rb
│ │ │ ├── migrate_yaml_to_json.rb
│ │ │ ├── record_filters.rb
│ │ │ ├── request_error.rb
│ │ │ ├── safe_json.rb
│ │ │ ├── safer_file_store.rb
│ │ │ ├── salvage_collection.rb
│ │ │ ├── serializers.rb
│ │ │ ├── tasks/
│ │ │ │ ├── .gitkeep
│ │ │ │ ├── config.rake
│ │ │ │ ├── delete_old_container_logs.rake
│ │ │ │ ├── manage_long_lived_tokens.rake
│ │ │ │ ├── statement_timeout.rake
│ │ │ │ └── test_tasks.rake
│ │ │ ├── trashable.rb
│ │ │ ├── update_permissions.rb
│ │ │ ├── update_priorities.rb
│ │ │ ├── validate_serialized.rb
│ │ │ └── whitelist_update.rb
│ │ ├── public/
│ │ │ ├── 404.html
│ │ │ ├── 422.html
│ │ │ ├── 500.html
│ │ │ └── robots.txt
│ │ ├── script/
│ │ │ ├── populate-file-info-columns-in-collections.rb
│ │ │ ├── rails
│ │ │ ├── rake_test.sh
│ │ │ ├── restart-dns-server
│ │ │ ├── salvage_collection.rb
│ │ │ └── setup-new-user.rb
│ │ └── test/
│ │ ├── factories/
│ │ │ ├── api_client_authorization.rb
│ │ │ ├── group.rb
│ │ │ ├── link.rb
│ │ │ └── user.rb
│ │ ├── fixtures/
│ │ │ ├── .gitkeep
│ │ │ ├── api_client_authorizations.yml
│ │ │ ├── authorized_keys.yml
│ │ │ ├── collections.yml
│ │ │ ├── container_requests.yml
│ │ │ ├── containers.yml
│ │ │ ├── files/
│ │ │ │ └── proc_stat
│ │ │ ├── groups.yml
│ │ │ ├── keep_services.yml
│ │ │ ├── links.yml
│ │ │ ├── logs.yml
│ │ │ ├── users.yml
│ │ │ ├── virtual_machines.yml
│ │ │ └── workflows.yml
│ │ ├── functional/
│ │ │ ├── .gitkeep
│ │ │ ├── application_controller_test.rb
│ │ │ ├── arvados/
│ │ │ │ └── v1/
│ │ │ │ ├── api_client_authorizations_controller_test.rb
│ │ │ │ ├── authorized_keys_controller_test.rb
│ │ │ │ ├── collections_controller_test.rb
│ │ │ │ ├── computed_permissions_controller_test.rb
│ │ │ │ ├── container_requests_controller_test.rb
│ │ │ │ ├── containers_controller_test.rb
│ │ │ │ ├── filters_test.rb
│ │ │ │ ├── groups_controller_test.rb
│ │ │ │ ├── keep_services_controller_test.rb
│ │ │ │ ├── links_controller_test.rb
│ │ │ │ ├── logs_controller_test.rb
│ │ │ │ ├── management_controller_test.rb
│ │ │ │ ├── query_test.rb
│ │ │ │ ├── schema_controller_test.rb
│ │ │ │ ├── user_agreements_controller_test.rb
│ │ │ │ ├── users_controller_test.rb
│ │ │ │ └── virtual_machines_controller_test.rb
│ │ │ ├── database_controller_test.rb
│ │ │ ├── sys_controller_test.rb
│ │ │ └── user_sessions_controller_test.rb
│ │ ├── helpers/
│ │ │ ├── container_test_helper.rb
│ │ │ ├── docker_migration_helper.rb
│ │ │ ├── manifest_examples.rb
│ │ │ ├── time_block.rb
│ │ │ └── users_test_helper.rb
│ │ ├── integration/
│ │ │ ├── .gitkeep
│ │ │ ├── api_client_authorizations_api_test.rb
│ │ │ ├── api_client_authorizations_scopes_test.rb
│ │ │ ├── bundler_version_test.rb
│ │ │ ├── collections_api_test.rb
│ │ │ ├── collections_performance_test.rb
│ │ │ ├── computed_permissions_test.rb
│ │ │ ├── container_auth_test.rb
│ │ │ ├── container_dispatch_test.rb
│ │ │ ├── container_request_test.rb
│ │ │ ├── credentials_test.rb
│ │ │ ├── cross_origin_test.rb
│ │ │ ├── database_reset_test.rb
│ │ │ ├── discovery_document_test.rb
│ │ │ ├── errors_test.rb
│ │ │ ├── groups_test.rb
│ │ │ ├── http_quirks_test.rb
│ │ │ ├── keep_proxy_test.rb
│ │ │ ├── logging_test.rb
│ │ │ ├── login_workflow_test.rb
│ │ │ ├── noop_deep_munge_test.rb
│ │ │ ├── passenger_config_test.rb
│ │ │ ├── permissions_test.rb
│ │ │ ├── pipeline_test.rb
│ │ │ ├── reader_tokens_test.rb
│ │ │ ├── remote_user_test.rb
│ │ │ ├── select_test.rb
│ │ │ ├── serialized_encoding_test.rb
│ │ │ ├── user_sessions_test.rb
│ │ │ ├── users_test.rb
│ │ │ ├── valid_links_test.rb
│ │ │ └── workflows_test.rb
│ │ ├── performance/
│ │ │ ├── links_index_test.rb
│ │ │ └── permission_test.rb
│ │ ├── test_helper.rb
│ │ └── unit/
│ │ ├── .gitkeep
│ │ ├── api_client_authorization_test.rb
│ │ ├── app_version_test.rb
│ │ ├── application_test.rb
│ │ ├── arvados_model_test.rb
│ │ ├── authorized_key_test.rb
│ │ ├── blob_test.rb
│ │ ├── collection_performance_test.rb
│ │ ├── collection_test.rb
│ │ ├── container_request_test.rb
│ │ ├── container_test.rb
│ │ ├── credential_test.rb
│ │ ├── group_pdhs_test.rb
│ │ ├── group_test.rb
│ │ ├── keep_disk_test.rb
│ │ ├── keep_service_test.rb
│ │ ├── link_test.rb
│ │ ├── log_test.rb
│ │ ├── owner_test.rb
│ │ ├── permission_test.rb
│ │ ├── salvage_collection_test.rb
│ │ ├── seralizer_test.rb
│ │ ├── time_zone_test.rb
│ │ ├── user_notifier_test.rb
│ │ ├── user_test.rb
│ │ ├── virtual_machine_test.rb
│ │ └── workflow_test.rb
│ ├── crunch-dispatch-slurm/
│ │ ├── crunch-dispatch-slurm.go
│ │ ├── crunch-dispatch-slurm_test.go
│ │ ├── node_type.go
│ │ ├── priority.go
│ │ ├── priority_test.go
│ │ ├── script.go
│ │ ├── script_test.go
│ │ ├── slurm.go
│ │ ├── squeue.go
│ │ ├── squeue_test.go
│ │ └── usage.go
│ ├── dockercleaner/
│ │ ├── MANIFEST.in
│ │ ├── README.rst
│ │ ├── agpl-3.0.txt
│ │ ├── arvados-docker-cleaner.service
│ │ ├── arvados_docker/
│ │ │ ├── __init__.py
│ │ │ └── cleaner.py
│ │ ├── arvados_version.py
│ │ ├── bin/
│ │ │ └── arvados-docker-cleaner
│ │ ├── pyproject.toml
│ │ ├── setup.py
│ │ └── tests/
│ │ ├── __init__.py
│ │ └── test_cleaner.py
│ ├── fuse/
│ │ ├── MANIFEST.in
│ │ ├── README.rst
│ │ ├── agpl-3.0.txt
│ │ ├── arvados_fuse/
│ │ │ ├── __init__.py
│ │ │ ├── command.py
│ │ │ ├── crunchstat.py
│ │ │ ├── fresh.py
│ │ │ ├── fusedir.py
│ │ │ ├── fusefile.py
│ │ │ └── unmount.py
│ │ ├── arvados_version.py
│ │ ├── bin/
│ │ │ └── arv-mount
│ │ ├── fpm-info.sh
│ │ ├── pyproject.toml
│ │ ├── setup.py
│ │ └── tests/
│ │ ├── __init__.py
│ │ ├── fstest.py
│ │ ├── integration_test.py
│ │ ├── mount_test_base.py
│ │ ├── prof.py
│ │ ├── test_cache.py
│ │ ├── test_command_args.py
│ │ ├── test_concurrency.py
│ │ ├── test_crunchstat.py
│ │ ├── test_exec.py
│ │ ├── test_inodes.py
│ │ ├── test_mount.py
│ │ ├── test_mount_filters.py
│ │ ├── test_mount_type.py
│ │ ├── test_retry.py
│ │ ├── test_tmp_collection.py
│ │ ├── test_token_expiry.py
│ │ └── test_unmount.py
│ ├── keep-balance/
│ │ ├── balance.go
│ │ ├── balance_run_test.go
│ │ ├── balance_test.go
│ │ ├── block_state.go
│ │ ├── block_state_test.go
│ │ ├── change_set.go
│ │ ├── change_set_test.go
│ │ ├── collection.go
│ │ ├── collection_test.go
│ │ ├── integration_test.go
│ │ ├── keep_service.go
│ │ ├── main.go
│ │ ├── main_test.go
│ │ ├── metrics.go
│ │ └── server.go
│ ├── keepproxy/
│ │ ├── keepproxy.go
│ │ ├── keepproxy_test.go
│ │ ├── pkg-extras/
│ │ │ └── etc/
│ │ │ ├── default/
│ │ │ │ └── keepproxy
│ │ │ └── init.d/
│ │ │ └── keepproxy
│ │ └── proxy_client.go
│ ├── login-sync/
│ │ ├── .gitignore
│ │ ├── Gemfile
│ │ ├── Rakefile
│ │ ├── agpl-3.0.txt
│ │ ├── arvados-login-sync.gemspec
│ │ ├── bin/
│ │ │ └── arvados-login-sync
│ │ └── test/
│ │ ├── binstub_new_user/
│ │ │ └── useradd
│ │ ├── stubs.rb
│ │ └── test_add_user.rb
│ ├── workbench2/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .yarn/
│ │ │ └── releases/
│ │ │ └── yarn-3.2.0.cjs
│ │ ├── .yarnrc
│ │ ├── .yarnrc.yml
│ │ ├── AUTHORS
│ │ ├── COPYING
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── __mocks__/
│ │ │ └── popper.js.js
│ │ ├── agpl-3.0.txt
│ │ ├── apache-2.0.txt
│ │ ├── cc-by-sa-3.0.txt
│ │ ├── config/
│ │ │ ├── env.js
│ │ │ ├── getHttpsConfig.js
│ │ │ ├── jest/
│ │ │ │ ├── babelTransform.js
│ │ │ │ ├── cssTransform.js
│ │ │ │ └── fileTransform.js
│ │ │ ├── modules.js
│ │ │ ├── paths.js
│ │ │ ├── webpack/
│ │ │ │ └── persistentCache/
│ │ │ │ └── createEnvironmentHash.js
│ │ │ ├── webpack.config.js
│ │ │ └── webpackDevServer.config.js
│ │ ├── cypress/
│ │ │ ├── e2e/
│ │ │ │ ├── auth-action.cy.js
│ │ │ │ ├── auth-middleware.cy.js
│ │ │ │ ├── banner-tooltip.cy.js
│ │ │ │ ├── collection.cy.js
│ │ │ │ ├── context-menu.cy.js
│ │ │ │ ├── create-workflow.cy.js
│ │ │ │ ├── dashboard.cy.js
│ │ │ │ ├── delete-multiple-files.cy.js
│ │ │ │ ├── details-card.cy.js
│ │ │ │ ├── details-panel.cy.js
│ │ │ │ ├── external-credentials.cy.js
│ │ │ │ ├── favorites.cy.js
│ │ │ │ ├── group-manage.cy.js
│ │ │ │ ├── login.cy.js
│ │ │ │ ├── multiselect-toolbar.cy.js
│ │ │ │ ├── page-not-found.cy.js
│ │ │ │ ├── process.cy.js
│ │ │ │ ├── project.cy.js
│ │ │ │ ├── search.cy.js
│ │ │ │ ├── sharing.cy.js
│ │ │ │ ├── side-panel.cy.js
│ │ │ │ ├── trash.cy.js
│ │ │ │ ├── user-preferences.cy.js
│ │ │ │ ├── user-profile.cy.js
│ │ │ │ ├── virtual-machine-admin.cy.js
│ │ │ │ └── workflow.cy.js
│ │ │ ├── fixtures/
│ │ │ │ ├── .gitkeep
│ │ │ │ ├── files/
│ │ │ │ │ ├── banner.html
│ │ │ │ │ └── tooltips.txt
│ │ │ │ ├── webdav-propfind-outputs.xml
│ │ │ │ ├── workflow-with-optional-inputs.yaml
│ │ │ │ ├── workflow_directory_array.yaml
│ │ │ │ ├── workflow_with_array_fields.yaml
│ │ │ │ ├── workflow_with_default_array_fields.yaml
│ │ │ │ └── workflow_with_secret_input.yaml
│ │ │ ├── plugins/
│ │ │ │ └── index.js
│ │ │ └── support/
│ │ │ ├── commands.js
│ │ │ ├── commands.ts
│ │ │ ├── component-index.html
│ │ │ ├── component.ts
│ │ │ ├── e2e.js
│ │ │ ├── index.d.ts
│ │ │ └── msToolbarTooltips.js
│ │ ├── cypress.config.ts
│ │ ├── etc/
│ │ │ └── arvados/
│ │ │ └── workbench2/
│ │ │ └── workbench2.example.json
│ │ ├── package.json
│ │ ├── public/
│ │ │ ├── file-viewers-example.json
│ │ │ ├── index.html
│ │ │ ├── manifest.json
│ │ │ └── webshell/
│ │ │ ├── README
│ │ │ ├── index.html
│ │ │ ├── keyboard.html
│ │ │ ├── shell_in_a_box.js
│ │ │ └── styles.css
│ │ ├── scripts/
│ │ │ ├── build.js
│ │ │ └── start.js
│ │ ├── src/
│ │ │ ├── common/
│ │ │ │ ├── app-info.ts
│ │ │ │ ├── array-utils.ts
│ │ │ │ ├── codes.ts
│ │ │ │ ├── config.ts
│ │ │ │ ├── custom-theme.ts
│ │ │ │ ├── file.ts
│ │ │ │ ├── formatters.cy.js
│ │ │ │ ├── formatters.ts
│ │ │ │ ├── frozen-resources.ts
│ │ │ │ ├── getuser.ts
│ │ │ │ ├── html-sanitize.ts
│ │ │ │ ├── labels.ts
│ │ │ │ ├── link-update-name.ts
│ │ │ │ ├── menu-action-set-actions.ts
│ │ │ │ ├── objects.ts
│ │ │ │ ├── plugintypes.ts
│ │ │ │ ├── redirect-to.ts
│ │ │ │ ├── regexp.ts
│ │ │ │ ├── resource-to-menu-kind.ts
│ │ │ │ ├── resource-to-menukind.cy.js
│ │ │ │ ├── service-provider.ts
│ │ │ │ ├── unionize.ts
│ │ │ │ ├── url.cy.js
│ │ │ │ ├── url.ts
│ │ │ │ ├── use-async-interval.cy.js
│ │ │ │ ├── use-async-interval.ts
│ │ │ │ ├── usePrevious.tsx
│ │ │ │ ├── useStateWithValidation.ts
│ │ │ │ ├── webdav.cy.js
│ │ │ │ ├── webdav.ts
│ │ │ │ └── xml.ts
│ │ │ ├── components/
│ │ │ │ ├── autocomplete/
│ │ │ │ │ └── autocomplete.tsx
│ │ │ │ ├── breadcrumbs/
│ │ │ │ │ ├── breadcrumbs.cy.js
│ │ │ │ │ └── breadcrumbs.tsx
│ │ │ │ ├── checkbox-field/
│ │ │ │ │ └── checkbox-field.tsx
│ │ │ │ ├── chips/
│ │ │ │ │ └── chips.tsx
│ │ │ │ ├── chips-input/
│ │ │ │ │ └── chips-input.tsx
│ │ │ │ ├── code-snippet/
│ │ │ │ │ ├── code-snippet.tsx
│ │ │ │ │ └── virtual-code-snippet.tsx
│ │ │ │ ├── collection-panel-files/
│ │ │ │ │ └── collection-panel-files.tsx
│ │ │ │ ├── column-selector/
│ │ │ │ │ ├── column-selector.cy.js
│ │ │ │ │ └── column-selector.tsx
│ │ │ │ ├── conditional-tabs/
│ │ │ │ │ ├── conditional-tabs.cy.js
│ │ │ │ │ └── conditional-tabs.tsx
│ │ │ │ ├── confirmation-dialog/
│ │ │ │ │ └── confirmation-dialog.tsx
│ │ │ │ ├── context-menu/
│ │ │ │ │ └── context-menu.tsx
│ │ │ │ ├── copy-to-clipboard/
│ │ │ │ │ └── copy-result-to-clipboard.ts
│ │ │ │ ├── copy-to-clipboard-snackbar/
│ │ │ │ │ └── copy-to-clipboard-snackbar.tsx
│ │ │ │ ├── dashboard/
│ │ │ │ │ ├── dashboard-item-row.tsx
│ │ │ │ │ ├── dashboard.tsx
│ │ │ │ │ ├── favorite-pins/
│ │ │ │ │ │ ├── favorite-pins-item.tsx
│ │ │ │ │ │ └── favorite-pins-section.tsx
│ │ │ │ │ ├── recent-workflow-runs.tsx
│ │ │ │ │ └── recently-visited.tsx
│ │ │ │ ├── data-explorer/
│ │ │ │ │ ├── data-explorer.cy.js
│ │ │ │ │ └── data-explorer.tsx
│ │ │ │ ├── data-table/
│ │ │ │ │ ├── data-column.ts
│ │ │ │ │ ├── data-table.cy.js
│ │ │ │ │ └── data-table.tsx
│ │ │ │ ├── data-table-default-view/
│ │ │ │ │ └── data-table-default-view.tsx
│ │ │ │ ├── data-table-filters/
│ │ │ │ │ ├── data-table-filters-popover.cy.js
│ │ │ │ │ ├── data-table-filters-popover.tsx
│ │ │ │ │ ├── data-table-filters-tree.tsx
│ │ │ │ │ └── data-table-filters.ts
│ │ │ │ ├── data-table-multiselect-popover/
│ │ │ │ │ └── data-table-multiselect-popover.tsx
│ │ │ │ ├── date-picker/
│ │ │ │ │ ├── date-picker.cy.js
│ │ │ │ │ └── date-picker.tsx
│ │ │ │ ├── default-code-snippet/
│ │ │ │ │ ├── default-code-snippet.tsx
│ │ │ │ │ └── default-virtual-code-snippet.tsx
│ │ │ │ ├── default-view/
│ │ │ │ │ └── default-view.tsx
│ │ │ │ ├── details-attribute/
│ │ │ │ │ └── details-attribute.tsx
│ │ │ │ ├── dialog-actions/
│ │ │ │ │ └── dialog-actions.tsx
│ │ │ │ ├── dialog-form/
│ │ │ │ │ ├── dialog-form.tsx
│ │ │ │ │ └── dialog-text-field.tsx
│ │ │ │ ├── dropdown-menu/
│ │ │ │ │ ├── dropdown-menu.cy.js
│ │ │ │ │ └── dropdown-menu.tsx
│ │ │ │ ├── expand-chevron-right/
│ │ │ │ │ └── expand-chevron-right.tsx
│ │ │ │ ├── file-tree/
│ │ │ │ │ ├── file-thumbnail.cy.js
│ │ │ │ │ ├── file-thumbnail.tsx
│ │ │ │ │ ├── file-tree-data.ts
│ │ │ │ │ └── file-tree-item.tsx
│ │ │ │ ├── file-upload/
│ │ │ │ │ ├── file-upload.tsx
│ │ │ │ │ └── upload-input.tsx
│ │ │ │ ├── float-input/
│ │ │ │ │ └── float-input.tsx
│ │ │ │ ├── form-dialog/
│ │ │ │ │ └── form-dialog.tsx
│ │ │ │ ├── form-field/
│ │ │ │ │ └── form-field.tsx
│ │ │ │ ├── icon/
│ │ │ │ │ └── icon.tsx
│ │ │ │ ├── int-input/
│ │ │ │ │ └── int-input.tsx
│ │ │ │ ├── list-item-text-icon/
│ │ │ │ │ └── list-item-text-icon.tsx
│ │ │ │ ├── loading/
│ │ │ │ │ ├── circular-suspense.tsx
│ │ │ │ │ ├── inline-pulser.tsx
│ │ │ │ │ └── three-dots.tsx
│ │ │ │ ├── loading-indicator/
│ │ │ │ │ └── loading-indicator.tsx
│ │ │ │ ├── multi-panel-view/
│ │ │ │ │ ├── multi-panel-view.cy.js
│ │ │ │ │ └── multi-panel-view.tsx
│ │ │ │ ├── multiselect-toolbar/
│ │ │ │ │ ├── MultiselectToolbar.tsx
│ │ │ │ │ ├── MultiselectToolbar.utils.ts
│ │ │ │ │ ├── ms-toolbar-overflow-menu.tsx
│ │ │ │ │ └── ms-toolbar-overflow-wrapper.tsx
│ │ │ │ ├── overview-panel/
│ │ │ │ │ └── overview-panel.tsx
│ │ │ │ ├── popover/
│ │ │ │ │ ├── helpers.ts
│ │ │ │ │ ├── popover.cy.js
│ │ │ │ │ └── popover.tsx
│ │ │ │ ├── progress-button/
│ │ │ │ │ └── progress-button.tsx
│ │ │ │ ├── radio-field/
│ │ │ │ │ └── radio-field.tsx
│ │ │ │ ├── refresh-button/
│ │ │ │ │ ├── refresh-button.cy.js
│ │ │ │ │ └── refresh-button.tsx
│ │ │ │ ├── rich-text-editor-link/
│ │ │ │ │ └── rich-text-editor-link.tsx
│ │ │ │ ├── search-input/
│ │ │ │ │ ├── search-input.cy.js
│ │ │ │ │ └── search-input.tsx
│ │ │ │ ├── select-field/
│ │ │ │ │ └── select-field.tsx
│ │ │ │ ├── string-array-input/
│ │ │ │ │ ├── string-array-mui-input.cy.js
│ │ │ │ │ └── string-array-mui-input.tsx
│ │ │ │ ├── subprocess-filter/
│ │ │ │ │ └── subprocess-filter.tsx
│ │ │ │ ├── switch-field/
│ │ │ │ │ └── switch-field.tsx
│ │ │ │ ├── tabbedList/
│ │ │ │ │ └── tabbed-list.tsx
│ │ │ │ ├── text-field/
│ │ │ │ │ └── text-field.tsx
│ │ │ │ ├── tree/
│ │ │ │ │ ├── tree.cy.js
│ │ │ │ │ ├── tree.tsx
│ │ │ │ │ └── virtual-tree.tsx
│ │ │ │ ├── warning/
│ │ │ │ │ └── warning.tsx
│ │ │ │ ├── warning-collection/
│ │ │ │ │ └── warning-collection.tsx
│ │ │ │ └── workflow-inputs-form/
│ │ │ │ ├── validators.ts
│ │ │ │ └── workflow-input.tsx
│ │ │ ├── cypress/
│ │ │ │ ├── mocks/
│ │ │ │ │ └── service-provider.ts
│ │ │ │ └── utils/
│ │ │ │ └── contains-action-subset.ts
│ │ │ ├── index.css
│ │ │ ├── index.tsx
│ │ │ ├── lib/
│ │ │ │ ├── cwl-svg/
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ └── styles/
│ │ │ │ │ │ ├── _variables.scss
│ │ │ │ │ │ ├── style.css
│ │ │ │ │ │ ├── style.scss
│ │ │ │ │ │ ├── theme.css
│ │ │ │ │ │ ├── theme.scss
│ │ │ │ │ │ └── themes/
│ │ │ │ │ │ └── rabix-dark/
│ │ │ │ │ │ ├── _variables.scss
│ │ │ │ │ │ ├── theme.css
│ │ │ │ │ │ └── theme.scss
│ │ │ │ │ ├── behaviors/
│ │ │ │ │ │ └── edge-panning.ts
│ │ │ │ │ ├── graph/
│ │ │ │ │ │ ├── connectable.ts
│ │ │ │ │ │ ├── edge.ts
│ │ │ │ │ │ ├── graph-node.ts
│ │ │ │ │ │ ├── io-port.ts
│ │ │ │ │ │ ├── step-node.ts
│ │ │ │ │ │ ├── template-parser.ts
│ │ │ │ │ │ └── workflow.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── plugins/
│ │ │ │ │ │ ├── arrange/
│ │ │ │ │ │ │ └── arrange.ts
│ │ │ │ │ │ ├── deletion/
│ │ │ │ │ │ │ └── deletion.ts
│ │ │ │ │ │ ├── edge-hover/
│ │ │ │ │ │ │ └── edge-hover.ts
│ │ │ │ │ │ ├── node-move/
│ │ │ │ │ │ │ └── node-move.ts
│ │ │ │ │ │ ├── plugin-base.ts
│ │ │ │ │ │ ├── plugin.ts
│ │ │ │ │ │ ├── port-drag/
│ │ │ │ │ │ │ ├── _variables.scss
│ │ │ │ │ │ │ ├── port-drag.ts
│ │ │ │ │ │ │ ├── style.css
│ │ │ │ │ │ │ ├── style.scss
│ │ │ │ │ │ │ ├── theme.css
│ │ │ │ │ │ │ ├── theme.dark.css
│ │ │ │ │ │ │ ├── theme.dark.scss
│ │ │ │ │ │ │ └── theme.scss
│ │ │ │ │ │ ├── selection/
│ │ │ │ │ │ │ ├── _variables.scss
│ │ │ │ │ │ │ ├── selection.ts
│ │ │ │ │ │ │ ├── style.css
│ │ │ │ │ │ │ ├── style.scss
│ │ │ │ │ │ │ ├── theme.css
│ │ │ │ │ │ │ ├── theme.dark.css
│ │ │ │ │ │ │ ├── theme.dark.scss
│ │ │ │ │ │ │ └── theme.scss
│ │ │ │ │ │ ├── validate/
│ │ │ │ │ │ │ ├── validate.css
│ │ │ │ │ │ │ ├── validate.scss
│ │ │ │ │ │ │ └── validate.ts
│ │ │ │ │ │ └── zoom/
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── zoom.ts
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── dom-events.ts
│ │ │ │ │ ├── dynamic-stylesheet.ts
│ │ │ │ │ ├── event-hub.ts
│ │ │ │ │ ├── geometry.ts
│ │ │ │ │ ├── html-utils.ts
│ │ │ │ │ ├── perf.ts
│ │ │ │ │ ├── svg-dumper.ts
│ │ │ │ │ └── svg-utils.ts
│ │ │ │ ├── resource-properties.cy.js
│ │ │ │ └── resource-properties.ts
│ │ │ ├── models/
│ │ │ │ ├── api-client-authorization.ts
│ │ │ │ ├── client-authorization.ts
│ │ │ │ ├── collection-file.ts
│ │ │ │ ├── collection.ts
│ │ │ │ ├── container-request.ts
│ │ │ │ ├── container.ts
│ │ │ │ ├── details.ts
│ │ │ │ ├── empty.ts
│ │ │ │ ├── external-credential.ts
│ │ │ │ ├── file-viewers-config.ts
│ │ │ │ ├── group.ts
│ │ │ │ ├── keep-manifest.ts
│ │ │ │ ├── keep-services.ts
│ │ │ │ ├── link-account.ts
│ │ │ │ ├── link.ts
│ │ │ │ ├── log.ts
│ │ │ │ ├── mount-types.ts
│ │ │ │ ├── node.ts
│ │ │ │ ├── object-types.ts
│ │ │ │ ├── permission.ts
│ │ │ │ ├── process.ts
│ │ │ │ ├── project.ts
│ │ │ │ ├── repositories.ts
│ │ │ │ ├── resource.ts
│ │ │ │ ├── runtime-constraints.ts
│ │ │ │ ├── runtime-status.ts
│ │ │ │ ├── scheduling-parameters.ts
│ │ │ │ ├── search-bar.ts
│ │ │ │ ├── session.ts
│ │ │ │ ├── ssh-key.ts
│ │ │ │ ├── tag.ts
│ │ │ │ ├── test-utils.ts
│ │ │ │ ├── tree.cy.js
│ │ │ │ ├── tree.ts
│ │ │ │ ├── user.cy.js
│ │ │ │ ├── user.ts
│ │ │ │ ├── virtual-machines.ts
│ │ │ │ ├── vocabulary.cy.js
│ │ │ │ ├── vocabulary.ts
│ │ │ │ └── workflow.ts
│ │ │ ├── plugins/
│ │ │ │ ├── README.md
│ │ │ │ ├── blank/
│ │ │ │ │ └── index.tsx
│ │ │ │ ├── example/
│ │ │ │ │ ├── exampleComponents.tsx
│ │ │ │ │ └── index.tsx
│ │ │ │ └── root-redirect/
│ │ │ │ └── index.tsx
│ │ │ ├── plugins.tsx
│ │ │ ├── react-app-env.d.ts
│ │ │ ├── routes/
│ │ │ │ ├── route-change-handlers.ts
│ │ │ │ └── routes.ts
│ │ │ ├── services/
│ │ │ │ ├── ancestors-service/
│ │ │ │ │ └── ancestors-service.ts
│ │ │ │ ├── api/
│ │ │ │ │ ├── api-actions.ts
│ │ │ │ │ ├── filter-builder.cy.js
│ │ │ │ │ ├── filter-builder.ts
│ │ │ │ │ ├── order-builder.cy.js
│ │ │ │ │ ├── order-builder.ts
│ │ │ │ │ ├── url-builder.cy.js
│ │ │ │ │ └── url-builder.ts
│ │ │ │ ├── api-client-authorization-service/
│ │ │ │ │ ├── api-client-authorization-service.cy.js
│ │ │ │ │ └── api-client-authorization-service.ts
│ │ │ │ ├── auth-service/
│ │ │ │ │ └── auth-service.ts
│ │ │ │ ├── authorized-keys-service/
│ │ │ │ │ └── authorized-keys-service.ts
│ │ │ │ ├── collection-service/
│ │ │ │ │ ├── collection-service-files-response.cy.js
│ │ │ │ │ ├── collection-service-files-response.ts
│ │ │ │ │ ├── collection-service.cy.js
│ │ │ │ │ └── collection-service.ts
│ │ │ │ ├── common-service/
│ │ │ │ │ ├── common-resource-service.cy.js
│ │ │ │ │ ├── common-resource-service.ts
│ │ │ │ │ ├── common-service.cy.js
│ │ │ │ │ ├── common-service.ts
│ │ │ │ │ └── trashable-resource-service.ts
│ │ │ │ ├── container-request-service/
│ │ │ │ │ └── container-request-service.ts
│ │ │ │ ├── container-service/
│ │ │ │ │ └── container-service.ts
│ │ │ │ ├── external-credentials/
│ │ │ │ │ └── external-credentials-service.ts
│ │ │ │ ├── favorite-service/
│ │ │ │ │ ├── favorite-service.cy.js
│ │ │ │ │ └── favorite-service.ts
│ │ │ │ ├── file-viewers-config-service/
│ │ │ │ │ └── file-viewers-config-service.ts
│ │ │ │ ├── groups-service/
│ │ │ │ │ ├── groups-service.cy.js
│ │ │ │ │ └── groups-service.ts
│ │ │ │ ├── keep-service/
│ │ │ │ │ └── keep-service.ts
│ │ │ │ ├── link-account-service/
│ │ │ │ │ └── link-account-service.ts
│ │ │ │ ├── link-service/
│ │ │ │ │ └── link-service.ts
│ │ │ │ ├── log-service/
│ │ │ │ │ ├── log-service.cy.js
│ │ │ │ │ └── log-service.ts
│ │ │ │ ├── permission-service/
│ │ │ │ │ └── permission-service.ts
│ │ │ │ ├── project-service/
│ │ │ │ │ ├── project-service.cy.js
│ │ │ │ │ └── project-service.ts
│ │ │ │ ├── repositories-service/
│ │ │ │ │ └── repositories-service.ts
│ │ │ │ ├── search-service/
│ │ │ │ │ └── search-service.ts
│ │ │ │ ├── services.ts
│ │ │ │ ├── tag-service/
│ │ │ │ │ └── tag-service.ts
│ │ │ │ ├── user-service/
│ │ │ │ │ └── user-service.ts
│ │ │ │ ├── virtual-machines-service/
│ │ │ │ │ └── virtual-machines-service.ts
│ │ │ │ ├── vocabulary-service/
│ │ │ │ │ └── vocabulary-service.ts
│ │ │ │ └── workflow-service/
│ │ │ │ └── workflow-service.ts
│ │ │ ├── store/
│ │ │ │ ├── advanced-tab/
│ │ │ │ │ └── advanced-tab.tsx
│ │ │ │ ├── all-processes-panel/
│ │ │ │ │ ├── all-processes-panel-action.ts
│ │ │ │ │ └── all-processes-panel-middleware-service.ts
│ │ │ │ ├── api-client-authorizations/
│ │ │ │ │ ├── api-client-authorizations-actions.ts
│ │ │ │ │ └── api-client-authorizations-middleware-service.ts
│ │ │ │ ├── app-info/
│ │ │ │ │ ├── app-info-actions.ts
│ │ │ │ │ └── app-info-reducer.ts
│ │ │ │ ├── auth/
│ │ │ │ │ ├── auth-action-session.ts
│ │ │ │ │ ├── auth-action-ssh.ts
│ │ │ │ │ ├── auth-action.ts
│ │ │ │ │ ├── auth-middleware.ts
│ │ │ │ │ ├── auth-reducer.cy.js
│ │ │ │ │ ├── auth-reducer.ts
│ │ │ │ │ └── cluster-badges.ts
│ │ │ │ ├── banner/
│ │ │ │ │ ├── banner-action.ts
│ │ │ │ │ └── banner-reducer.ts
│ │ │ │ ├── breadcrumbs/
│ │ │ │ │ └── breadcrumbs-actions.ts
│ │ │ │ ├── collection-panel/
│ │ │ │ │ ├── collection-panel-action.ts
│ │ │ │ │ ├── collection-panel-files/
│ │ │ │ │ │ ├── collection-panel-files-actions.ts
│ │ │ │ │ │ ├── collection-panel-files-reducer.cy.js
│ │ │ │ │ │ ├── collection-panel-files-reducer.ts
│ │ │ │ │ │ └── collection-panel-files-state.ts
│ │ │ │ │ └── collection-panel-reducer.ts
│ │ │ │ ├── collections/
│ │ │ │ │ ├── collection-copy-actions.ts
│ │ │ │ │ ├── collection-create-actions.ts
│ │ │ │ │ ├── collection-info-actions.ts
│ │ │ │ │ ├── collection-move-actions.ts
│ │ │ │ │ ├── collection-partial-copy-actions.ts
│ │ │ │ │ ├── collection-partial-move-actions.ts
│ │ │ │ │ ├── collection-update-actions.ts
│ │ │ │ │ ├── collection-upload-actions.ts
│ │ │ │ │ └── collection-version-actions.ts
│ │ │ │ ├── collections-content-address-panel/
│ │ │ │ │ ├── collections-content-address-middleware-service.ts
│ │ │ │ │ └── collections-content-address-panel-actions.ts
│ │ │ │ ├── context-menu/
│ │ │ │ │ ├── context-menu-actions.ts
│ │ │ │ │ ├── context-menu-filters.ts
│ │ │ │ │ ├── context-menu-reducer.ts
│ │ │ │ │ └── context-menu.ts
│ │ │ │ ├── copy-dialog/
│ │ │ │ │ └── copy-dialog.ts
│ │ │ │ ├── data-explorer/
│ │ │ │ │ ├── data-explorer-action.ts
│ │ │ │ │ ├── data-explorer-middleware-service.ts
│ │ │ │ │ ├── data-explorer-middleware.cy.js
│ │ │ │ │ ├── data-explorer-middleware.ts
│ │ │ │ │ ├── data-explorer-reducer.cy.js
│ │ │ │ │ └── data-explorer-reducer.ts
│ │ │ │ ├── description-dialog/
│ │ │ │ │ └── description-dialog-actions.ts
│ │ │ │ ├── details-panel/
│ │ │ │ │ ├── details-panel-action.ts
│ │ │ │ │ └── details-panel-reducer.ts
│ │ │ │ ├── dialog/
│ │ │ │ │ ├── dialog-actions.ts
│ │ │ │ │ ├── dialog-reducer.cy.js
│ │ │ │ │ ├── dialog-reducer.ts
│ │ │ │ │ └── with-dialog.ts
│ │ │ │ ├── external-credentials/
│ │ │ │ │ ├── external-credential-dialog-data.ts
│ │ │ │ │ ├── external-credentials-actions.cy.js
│ │ │ │ │ ├── external-credentials-actions.ts
│ │ │ │ │ └── external-credentials-middleware-service.ts
│ │ │ │ ├── favorite-panel/
│ │ │ │ │ ├── favorite-panel-action.ts
│ │ │ │ │ └── favorite-panel-middleware-service.ts
│ │ │ │ ├── favorite-pins/
│ │ │ │ │ └── favorite-pins-middleware-service.ts
│ │ │ │ ├── favorites/
│ │ │ │ │ ├── favorites-actions.ts
│ │ │ │ │ ├── favorites-links-reducer.tsx
│ │ │ │ │ └── favorites-reducer.ts
│ │ │ │ ├── file-selection/
│ │ │ │ │ └── file-selection-actions.ts
│ │ │ │ ├── file-uploader/
│ │ │ │ │ ├── file-uploader-actions.ts
│ │ │ │ │ └── file-uploader-reducer.ts
│ │ │ │ ├── file-viewers/
│ │ │ │ │ ├── file-viewers-actions.ts
│ │ │ │ │ └── file-viewers-selectors.ts
│ │ │ │ ├── group-details-panel/
│ │ │ │ │ ├── group-details-panel-actions.ts
│ │ │ │ │ ├── group-details-panel-members-middleware-service.test.js
│ │ │ │ │ ├── group-details-panel-members-middleware-service.ts
│ │ │ │ │ ├── group-details-panel-permissions-middleware-service.test.js
│ │ │ │ │ └── group-details-panel-permissions-middleware-service.ts
│ │ │ │ ├── groups-panel/
│ │ │ │ │ ├── groups-panel-actions.ts
│ │ │ │ │ ├── groups-panel-middleware-service.cy.js
│ │ │ │ │ └── groups-panel-middleware-service.ts
│ │ │ │ ├── keep-services/
│ │ │ │ │ ├── keep-services-actions.ts
│ │ │ │ │ └── keep-services-reducer.ts
│ │ │ │ ├── link-account-panel/
│ │ │ │ │ ├── link-account-panel-actions.ts
│ │ │ │ │ ├── link-account-panel-reducer.cy.js
│ │ │ │ │ └── link-account-panel-reducer.ts
│ │ │ │ ├── link-panel/
│ │ │ │ │ ├── link-panel-actions.ts
│ │ │ │ │ └── link-panel-middleware-service.ts
│ │ │ │ ├── move-to-dialog/
│ │ │ │ │ └── move-to-dialog.ts
│ │ │ │ ├── multiselect/
│ │ │ │ │ ├── multiselect-actions.tsx
│ │ │ │ │ └── multiselect-reducer.tsx
│ │ │ │ ├── navigation/
│ │ │ │ │ └── navigation-action.ts
│ │ │ │ ├── not-found-panel/
│ │ │ │ │ └── not-found-panel-action.tsx
│ │ │ │ ├── open-in-new-tab/
│ │ │ │ │ └── open-in-new-tab.actions.ts
│ │ │ │ ├── owner-name/
│ │ │ │ │ ├── owner-name-actions.ts
│ │ │ │ │ └── owner-name-reducer.ts
│ │ │ │ ├── process-logs-panel/
│ │ │ │ │ ├── process-logs-panel-actions.cy.js
│ │ │ │ │ ├── process-logs-panel-actions.ts
│ │ │ │ │ ├── process-logs-panel-reducer.ts
│ │ │ │ │ └── process-logs-panel.ts
│ │ │ │ ├── process-panel/
│ │ │ │ │ ├── process-panel-actions.ts
│ │ │ │ │ ├── process-panel-reducer.ts
│ │ │ │ │ └── process-panel.ts
│ │ │ │ ├── processes/
│ │ │ │ │ ├── process-copy-actions.cy.js
│ │ │ │ │ ├── process-copy-actions.ts
│ │ │ │ │ ├── process-input-actions.ts
│ │ │ │ │ ├── process-update-actions.ts
│ │ │ │ │ ├── process.ts
│ │ │ │ │ ├── processes-actions.ts
│ │ │ │ │ └── processes-middleware-service.ts
│ │ │ │ ├── progress-indicator/
│ │ │ │ │ ├── progress-indicator-actions.ts
│ │ │ │ │ ├── progress-indicator-reducer.ts
│ │ │ │ │ └── with-progress.ts
│ │ │ │ ├── project-panel/
│ │ │ │ │ ├── project-panel-action-bind.ts
│ │ │ │ │ ├── project-panel-action.ts
│ │ │ │ │ ├── project-panel-data-middleware-service.ts
│ │ │ │ │ ├── project-panel-run-middleware-service.ts
│ │ │ │ │ └── project-panel.ts
│ │ │ │ ├── project-tree-picker/
│ │ │ │ │ └── project-tree-picker-actions.ts
│ │ │ │ ├── projects/
│ │ │ │ │ ├── project-create-actions.ts
│ │ │ │ │ ├── project-lock-actions.ts
│ │ │ │ │ ├── project-move-actions.ts
│ │ │ │ │ └── project-update-actions.ts
│ │ │ │ ├── properties/
│ │ │ │ │ ├── properties-actions.ts
│ │ │ │ │ ├── properties-reducer.ts
│ │ │ │ │ └── properties.ts
│ │ │ │ ├── public-favorites/
│ │ │ │ │ ├── public-favorites-actions.ts
│ │ │ │ │ ├── public-favorites-reducer.ts
│ │ │ │ │ └── public-favorites.ts
│ │ │ │ ├── public-favorites-panel/
│ │ │ │ │ ├── public-favorites-action.ts
│ │ │ │ │ └── public-favorites-middleware-service.ts
│ │ │ │ ├── recent-wf-runs/
│ │ │ │ │ ├── recent-wf-runs-action.ts
│ │ │ │ │ └── recent-wf-runs-middleware-sevice.ts
│ │ │ │ ├── recently-visited/
│ │ │ │ │ ├── recently-visited-actions.tsx
│ │ │ │ │ └── recently-visited-middleware-services.ts
│ │ │ │ ├── redux-saga.ts
│ │ │ │ ├── repositories/
│ │ │ │ │ ├── repositories-actions.ts
│ │ │ │ │ └── repositories-reducer.ts
│ │ │ │ ├── resource-type-filters/
│ │ │ │ │ ├── resource-type-filters.cy.js
│ │ │ │ │ └── resource-type-filters.ts
│ │ │ │ ├── resources/
│ │ │ │ │ ├── resources-actions.ts
│ │ │ │ │ ├── resources-reducer.ts
│ │ │ │ │ └── resources.ts
│ │ │ │ ├── rich-text-editor-dialog/
│ │ │ │ │ └── rich-text-editor-dialog-actions.tsx
│ │ │ │ ├── run-process-panel/
│ │ │ │ │ ├── run-process-panel-actions.cy.js
│ │ │ │ │ ├── run-process-panel-actions.ts
│ │ │ │ │ └── run-process-panel-reducer.ts
│ │ │ │ ├── search-bar/
│ │ │ │ │ ├── search-bar-actions.cy.js
│ │ │ │ │ ├── search-bar-actions.ts
│ │ │ │ │ ├── search-bar-reducer.ts
│ │ │ │ │ ├── search-bar-tree-actions.ts
│ │ │ │ │ └── search-query/
│ │ │ │ │ ├── arv-parser.ts
│ │ │ │ │ └── parser.ts
│ │ │ │ ├── search-results-panel/
│ │ │ │ │ ├── search-results-middleware-service.cy.js
│ │ │ │ │ ├── search-results-middleware-service.ts
│ │ │ │ │ └── search-results-panel-actions.ts
│ │ │ │ ├── selected-resource/
│ │ │ │ │ ├── selected-resource-actions.ts
│ │ │ │ │ └── selected-resource-reducer.ts
│ │ │ │ ├── shared-with-me-panel/
│ │ │ │ │ ├── shared-with-me-middleware-service.ts
│ │ │ │ │ └── shared-with-me-panel-actions.ts
│ │ │ │ ├── sharing-dialog/
│ │ │ │ │ ├── sharing-dialog-actions.ts
│ │ │ │ │ └── sharing-dialog-types.ts
│ │ │ │ ├── side-panel/
│ │ │ │ │ ├── side-panel-action.ts
│ │ │ │ │ └── side-panel-reducer.tsx
│ │ │ │ ├── side-panel-tree/
│ │ │ │ │ └── side-panel-tree-actions.ts
│ │ │ │ ├── snackbar/
│ │ │ │ │ ├── snackbar-actions.ts
│ │ │ │ │ └── snackbar-reducer.ts
│ │ │ │ ├── store.ts
│ │ │ │ ├── subprocess-panel/
│ │ │ │ │ ├── subprocess-panel-actions.ts
│ │ │ │ │ └── subprocess-panel-middleware-service.ts
│ │ │ │ ├── token-dialog/
│ │ │ │ │ └── token-dialog-actions.tsx
│ │ │ │ ├── tooltips/
│ │ │ │ │ └── tooltips-middleware.ts
│ │ │ │ ├── trash/
│ │ │ │ │ └── trash-actions.ts
│ │ │ │ ├── trash-panel/
│ │ │ │ │ ├── trash-panel-action.ts
│ │ │ │ │ └── trash-panel-middleware-service.ts
│ │ │ │ ├── tree-picker/
│ │ │ │ │ ├── picker-id.tsx
│ │ │ │ │ ├── tree-picker-actions.cy.js
│ │ │ │ │ ├── tree-picker-actions.ts
│ │ │ │ │ ├── tree-picker-middleware.ts
│ │ │ │ │ ├── tree-picker-reducer.cy.js
│ │ │ │ │ ├── tree-picker-reducer.ts
│ │ │ │ │ └── tree-picker.ts
│ │ │ │ ├── user-preferences/
│ │ │ │ │ └── user-preferences-actions.ts
│ │ │ │ ├── user-profile/
│ │ │ │ │ ├── user-profile-actions.ts
│ │ │ │ │ └── user-profile-groups-middleware-service.ts
│ │ │ │ ├── users/
│ │ │ │ │ ├── user-panel-middleware-service.ts
│ │ │ │ │ └── users-actions.ts
│ │ │ │ ├── virtual-machines/
│ │ │ │ │ ├── virtual-machines-actions.ts
│ │ │ │ │ └── virtual-machines-reducer.ts
│ │ │ │ ├── vocabulary/
│ │ │ │ │ ├── vocabulary-actions.ts
│ │ │ │ │ └── vocabulary-selectors.ts
│ │ │ │ ├── workbench/
│ │ │ │ │ └── workbench-actions.ts
│ │ │ │ └── workflow-panel/
│ │ │ │ ├── workflow-middleware-service.ts
│ │ │ │ ├── workflow-panel-actions.cy.js
│ │ │ │ └── workflow-panel-actions.ts
│ │ │ ├── validators/
│ │ │ │ ├── is-float.tsx
│ │ │ │ ├── is-integer.tsx
│ │ │ │ ├── is-number.tsx
│ │ │ │ ├── is-remote-host.tsx
│ │ │ │ ├── is-rsa-key.cy.js
│ │ │ │ ├── is-rsa-key.tsx
│ │ │ │ ├── is-valid-file-ops-location.ts
│ │ │ │ ├── is-valid-future-date.tsx
│ │ │ │ ├── is-zip-filename.tsx
│ │ │ │ ├── max-length.tsx
│ │ │ │ ├── min-length.tsx
│ │ │ │ ├── min.tsx
│ │ │ │ ├── optional.tsx
│ │ │ │ ├── require.tsx
│ │ │ │ ├── valid-name.tsx
│ │ │ │ └── validators.tsx
│ │ │ ├── views/
│ │ │ │ ├── all-processes-panel/
│ │ │ │ │ ├── all-processes-panel-columns.tsx
│ │ │ │ │ └── all-processes-panel.tsx
│ │ │ │ ├── api-client-authorization-panel/
│ │ │ │ │ ├── api-client-authorization-panel-columns.tsx
│ │ │ │ │ ├── api-client-authorization-panel-root.tsx
│ │ │ │ │ └── api-client-authorization-panel.tsx
│ │ │ │ ├── collection-content-address-panel/
│ │ │ │ │ ├── collection-content-address-panel-columns.tsx
│ │ │ │ │ └── collection-content-address-panel.tsx
│ │ │ │ ├── collection-panel/
│ │ │ │ │ ├── collection-attributes.tsx
│ │ │ │ │ └── collection-panel.tsx
│ │ │ │ ├── external-credentials-panel/
│ │ │ │ │ ├── external-credentials-panel-columns.tsx
│ │ │ │ │ └── external-credentials-panel.tsx
│ │ │ │ ├── favorite-panel/
│ │ │ │ │ ├── favorite-panel-columns.tsx
│ │ │ │ │ └── favorite-panel.tsx
│ │ │ │ ├── group-details-panel/
│ │ │ │ │ ├── group-details-panel-columns.tsx
│ │ │ │ │ └── group-details-panel.tsx
│ │ │ │ ├── groups-panel/
│ │ │ │ │ ├── groups-panel-columns.tsx
│ │ │ │ │ └── groups-panel.tsx
│ │ │ │ ├── inactive-panel/
│ │ │ │ │ ├── inactive-panel.cy.js
│ │ │ │ │ └── inactive-panel.tsx
│ │ │ │ ├── instance-types-panel/
│ │ │ │ │ ├── instance-types-panel.cy.js
│ │ │ │ │ └── instance-types-panel.tsx
│ │ │ │ ├── keep-service-panel/
│ │ │ │ │ ├── keep-service-panel-root.tsx
│ │ │ │ │ └── keep-service-panel.tsx
│ │ │ │ ├── link-account-panel/
│ │ │ │ │ ├── link-account-panel-root.tsx
│ │ │ │ │ └── link-account-panel.tsx
│ │ │ │ ├── link-panel/
│ │ │ │ │ ├── link-panel-columns.tsx
│ │ │ │ │ ├── link-panel-root.tsx
│ │ │ │ │ └── link-panel.tsx
│ │ │ │ ├── login-panel/
│ │ │ │ │ ├── login-panel.cy.js
│ │ │ │ │ └── login-panel.tsx
│ │ │ │ ├── main-panel/
│ │ │ │ │ ├── main-panel-root.tsx
│ │ │ │ │ └── main-panel.tsx
│ │ │ │ ├── not-found-panel/
│ │ │ │ │ ├── not-found-panel-root.cy.js
│ │ │ │ │ ├── not-found-panel-root.tsx
│ │ │ │ │ └── not-found-panel.tsx
│ │ │ │ ├── process-panel/
│ │ │ │ │ ├── process-attributes.tsx
│ │ │ │ │ ├── process-cmd-card.tsx
│ │ │ │ │ ├── process-details-attributes.tsx
│ │ │ │ │ ├── process-io-card.cy.js
│ │ │ │ │ ├── process-io-card.tsx
│ │ │ │ │ ├── process-log-card.tsx
│ │ │ │ │ ├── process-log-code-snippet.tsx
│ │ │ │ │ ├── process-log-form.tsx
│ │ │ │ │ ├── process-output-collection-files.ts
│ │ │ │ │ ├── process-panel-root.tsx
│ │ │ │ │ ├── process-panel.tsx
│ │ │ │ │ └── process-resource-card.tsx
│ │ │ │ ├── project-panel/
│ │ │ │ │ ├── project-attributes.tsx
│ │ │ │ │ ├── project-panel-columns.tsx
│ │ │ │ │ ├── project-panel-data.tsx
│ │ │ │ │ ├── project-panel-run.tsx
│ │ │ │ │ └── project-panel.tsx
│ │ │ │ ├── public-favorites-panel/
│ │ │ │ │ ├── public-favorites-panel-columns.tsx
│ │ │ │ │ └── public-favorites-panel.tsx
│ │ │ │ ├── repositories-panel/
│ │ │ │ │ └── repositories-panel.tsx
│ │ │ │ ├── run-process-panel/
│ │ │ │ │ ├── inputs/
│ │ │ │ │ │ ├── boolean-input.tsx
│ │ │ │ │ │ ├── directory-array-input.tsx
│ │ │ │ │ │ ├── directory-input.tsx
│ │ │ │ │ │ ├── enum-input.tsx
│ │ │ │ │ │ ├── file-array-input.tsx
│ │ │ │ │ │ ├── file-input.tsx
│ │ │ │ │ │ ├── float-array-input.tsx
│ │ │ │ │ │ ├── float-input.tsx
│ │ │ │ │ │ ├── generic-input.tsx
│ │ │ │ │ │ ├── int-array-input.tsx
│ │ │ │ │ │ ├── int-input.tsx
│ │ │ │ │ │ ├── run-wf-project-input.tsx
│ │ │ │ │ │ ├── search-project-input.tsx
│ │ │ │ │ │ ├── string-array-input.tsx
│ │ │ │ │ │ └── string-input.tsx
│ │ │ │ │ ├── run-process-advanced-form.tsx
│ │ │ │ │ ├── run-process-basic-form.tsx
│ │ │ │ │ ├── run-process-first-step.tsx
│ │ │ │ │ ├── run-process-inputs-form.tsx
│ │ │ │ │ ├── run-process-panel-root.tsx
│ │ │ │ │ ├── run-process-panel.tsx
│ │ │ │ │ ├── run-process-second-step.tsx
│ │ │ │ │ └── workflow-preset-select.tsx
│ │ │ │ ├── search-results-panel/
│ │ │ │ │ ├── search-results-panel-columns.tsx
│ │ │ │ │ ├── search-results-panel-view.tsx
│ │ │ │ │ └── search-results-panel.tsx
│ │ │ │ ├── shared-with-me-panel/
│ │ │ │ │ ├── shared-with-me-columns.tsx
│ │ │ │ │ └── shared-with-me-panel.tsx
│ │ │ │ ├── site-manager-panel/
│ │ │ │ │ ├── site-manager-panel-root.tsx
│ │ │ │ │ └── site-manager-panel.tsx
│ │ │ │ ├── ssh-key-panel/
│ │ │ │ │ ├── ssh-key-admin-panel.tsx
│ │ │ │ │ ├── ssh-key-panel-root.tsx
│ │ │ │ │ └── ssh-key-panel.tsx
│ │ │ │ ├── subprocess-panel/
│ │ │ │ │ ├── subprocess-panel-columns.tsx
│ │ │ │ │ ├── subprocess-panel-root.tsx
│ │ │ │ │ └── subprocess-panel.tsx
│ │ │ │ ├── trash-panel/
│ │ │ │ │ ├── trash-panel-columns.tsx
│ │ │ │ │ └── trash-panel.tsx
│ │ │ │ ├── user-panel/
│ │ │ │ │ ├── user-panel-columns.tsx
│ │ │ │ │ └── user-panel.tsx
│ │ │ │ ├── user-preferences-panel/
│ │ │ │ │ ├── user-preferences-panel-root.tsx
│ │ │ │ │ └── user-preferences-panel.tsx
│ │ │ │ ├── user-profile-panel/
│ │ │ │ │ ├── user-profile-panel-columns.tsx
│ │ │ │ │ ├── user-profile-panel-root.tsx
│ │ │ │ │ └── user-profile-panel.tsx
│ │ │ │ ├── virtual-machine-panel/
│ │ │ │ │ ├── virtual-machine-admin-panel.tsx
│ │ │ │ │ └── virtual-machine-user-panel.tsx
│ │ │ │ ├── workbench/
│ │ │ │ │ ├── fed-login.tsx
│ │ │ │ │ ├── workbench-loading-screen.tsx
│ │ │ │ │ ├── workbench.cy.js
│ │ │ │ │ └── workbench.tsx
│ │ │ │ └── workflow-panel/
│ │ │ │ ├── registered-workflow-panel.tsx
│ │ │ │ ├── workflow-description-card.tsx
│ │ │ │ ├── workflow-graph.tsx
│ │ │ │ ├── workflow-panel-columns.tsx
│ │ │ │ ├── workflow-panel-view.tsx
│ │ │ │ ├── workflow-panel.tsx
│ │ │ │ ├── workflow-processes-panel-columns.tsx
│ │ │ │ ├── workflow-processes-panel-root.tsx
│ │ │ │ └── workflow-processes-panel.tsx
│ │ │ ├── views-components/
│ │ │ │ ├── add-session/
│ │ │ │ │ └── add-session.tsx
│ │ │ │ ├── advanced-tab-dialog/
│ │ │ │ │ ├── advanced-tab-dialog.tsx
│ │ │ │ │ └── metadataTab.tsx
│ │ │ │ ├── api-client-authorizations-dialog/
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ ├── help-dialog.tsx
│ │ │ │ │ └── remove-dialog.tsx
│ │ │ │ ├── api-token/
│ │ │ │ │ └── api-token.tsx
│ │ │ │ ├── auto-logout/
│ │ │ │ │ ├── auto-logout.cy.js
│ │ │ │ │ └── auto-logout.tsx
│ │ │ │ ├── baner/
│ │ │ │ │ ├── banner.cy.js
│ │ │ │ │ └── banner.tsx
│ │ │ │ ├── breadcrumbs/
│ │ │ │ │ └── breadcrumbs.ts
│ │ │ │ ├── collection-panel-files/
│ │ │ │ │ └── collection-panel-files.ts
│ │ │ │ ├── collections-dialog/
│ │ │ │ │ └── restore-version-dialog.ts
│ │ │ │ ├── context-menu/
│ │ │ │ │ ├── action-sets/
│ │ │ │ │ │ ├── api-client-authorization-action-set.ts
│ │ │ │ │ │ ├── collection-action-set.cy.js
│ │ │ │ │ │ ├── collection-action-set.ts
│ │ │ │ │ │ ├── collection-files-action-set.ts
│ │ │ │ │ │ ├── collection-files-item-action-set.ts
│ │ │ │ │ │ ├── collection-files-not-selected-action-set.ts
│ │ │ │ │ │ ├── external-credential-action-set.ts
│ │ │ │ │ │ ├── favorite-action-set.ts
│ │ │ │ │ │ ├── group-action-set.ts
│ │ │ │ │ │ ├── group-member-action-set.ts
│ │ │ │ │ │ ├── keep-service-action-set.ts
│ │ │ │ │ │ ├── link-action-set.ts
│ │ │ │ │ │ ├── permission-edit-action-set.ts
│ │ │ │ │ │ ├── process-resource-action-set.ts
│ │ │ │ │ │ ├── project-action-set.cy.js
│ │ │ │ │ │ ├── project-action-set.ts
│ │ │ │ │ │ ├── project-admin-action-set.ts
│ │ │ │ │ │ ├── repository-action-set.ts
│ │ │ │ │ │ ├── resource-action-set.ts
│ │ │ │ │ │ ├── root-project-action-set.ts
│ │ │ │ │ │ ├── search-results-action-set.ts
│ │ │ │ │ │ ├── ssh-key-action-set.ts
│ │ │ │ │ │ ├── trash-action-set.ts
│ │ │ │ │ │ ├── trashed-collection-action-set.ts
│ │ │ │ │ │ ├── user-action-set.ts
│ │ │ │ │ │ ├── user-details-action-set.ts
│ │ │ │ │ │ ├── virtual-machine-action-set.ts
│ │ │ │ │ │ └── workflow-action-set.ts
│ │ │ │ │ ├── actions/
│ │ │ │ │ │ ├── collection-copy-to-clipboard-action.tsx
│ │ │ │ │ │ ├── collection-file-viewer-action.cy.js
│ │ │ │ │ │ ├── collection-file-viewer-action.tsx
│ │ │ │ │ │ ├── context-menu-divider.tsx
│ │ │ │ │ │ ├── copy-to-clipboard-action.cy.js
│ │ │ │ │ │ ├── copy-to-clipboard-action.tsx
│ │ │ │ │ │ ├── download-action.cy.js
│ │ │ │ │ │ ├── download-action.tsx
│ │ │ │ │ │ ├── download-collection-file-action.tsx
│ │ │ │ │ │ ├── favorite-action.tsx
│ │ │ │ │ │ ├── file-viewer-action.cy.js
│ │ │ │ │ │ ├── file-viewer-action.tsx
│ │ │ │ │ │ ├── file-viewer-actions.tsx
│ │ │ │ │ │ ├── helpers.cy.js
│ │ │ │ │ │ ├── helpers.ts
│ │ │ │ │ │ ├── lock-action.tsx
│ │ │ │ │ │ ├── public-favorite-action.tsx
│ │ │ │ │ │ └── trash-action.tsx
│ │ │ │ │ ├── component-item-styles.ts
│ │ │ │ │ ├── context-menu-action-set.ts
│ │ │ │ │ ├── context-menu.tsx
│ │ │ │ │ └── menu-item-sort.ts
│ │ │ │ ├── data-explorer/
│ │ │ │ │ ├── data-explorer.tsx
│ │ │ │ │ ├── renderers.cy.js
│ │ │ │ │ ├── renderers.tsx
│ │ │ │ │ └── with-resources.tsx
│ │ │ │ ├── description-dialog/
│ │ │ │ │ └── description-dialog.tsx
│ │ │ │ ├── details-card/
│ │ │ │ │ ├── collection-details-card.tsx
│ │ │ │ │ ├── description-preview.tsx
│ │ │ │ │ ├── details-card-root.tsx
│ │ │ │ │ ├── process-details-card.tsx
│ │ │ │ │ ├── project-details-card.tsx
│ │ │ │ │ ├── service-menu.cy.js
│ │ │ │ │ ├── service-menu.tsx
│ │ │ │ │ ├── user-details-card.tsx
│ │ │ │ │ └── workflow-details-card.tsx
│ │ │ │ ├── details-panel/
│ │ │ │ │ ├── collection-details.tsx
│ │ │ │ │ ├── details-data.tsx
│ │ │ │ │ ├── details-panel.tsx
│ │ │ │ │ ├── empty-details.tsx
│ │ │ │ │ ├── file-details.tsx
│ │ │ │ │ ├── process-details.tsx
│ │ │ │ │ ├── project-details.tsx
│ │ │ │ │ ├── root-project-details.tsx
│ │ │ │ │ └── workflow-details.tsx
│ │ │ │ ├── dialog-copy/
│ │ │ │ │ ├── dialog-collection-partial-copy-to-existing-collection.tsx
│ │ │ │ │ ├── dialog-collection-partial-copy-to-new-collection.tsx
│ │ │ │ │ ├── dialog-collection-partial-copy-to-separate-collections.tsx
│ │ │ │ │ ├── dialog-copy.tsx
│ │ │ │ │ └── dialog-process-rerun.tsx
│ │ │ │ ├── dialog-create/
│ │ │ │ │ ├── create-external-credential-dialog.ts
│ │ │ │ │ ├── dialog-collection-create.tsx
│ │ │ │ │ ├── dialog-external-credential-create.tsx
│ │ │ │ │ ├── dialog-project-create.tsx
│ │ │ │ │ ├── dialog-repository-create.tsx
│ │ │ │ │ ├── dialog-ssh-key-create.tsx
│ │ │ │ │ └── dialog-user-create.tsx
│ │ │ │ ├── dialog-forms/
│ │ │ │ │ ├── create-repository-dialog.ts
│ │ │ │ │ ├── create-ssh-key-dialog.ts
│ │ │ │ │ ├── create-user-dialog.ts
│ │ │ │ │ ├── update-external-credential-dialog.ts
│ │ │ │ │ └── update-process-dialog.ts
│ │ │ │ ├── dialog-move/
│ │ │ │ │ ├── dialog-collection-partial-move-to-existing-collection.tsx
│ │ │ │ │ ├── dialog-collection-partial-move-to-new-collection.tsx
│ │ │ │ │ ├── dialog-collection-partial-move-to-separate-collections.tsx
│ │ │ │ │ ├── dialog-move-collection.tsx
│ │ │ │ │ └── dialog-move-project.tsx
│ │ │ │ ├── dialog-remove/
│ │ │ │ │ └── external-credential-remove-dialog.tsx
│ │ │ │ ├── dialog-update/
│ │ │ │ │ ├── dialog-collection-update.tsx
│ │ │ │ │ ├── dialog-external-credential-update.tsx
│ │ │ │ │ ├── dialog-process-update.tsx
│ │ │ │ │ └── dialog-project-update.tsx
│ │ │ │ ├── dialog-upload/
│ │ │ │ │ └── dialog-collection-files-upload.tsx
│ │ │ │ ├── download-files-as-zip/
│ │ │ │ │ └── download-files-as-zip.tsx
│ │ │ │ ├── favorite-star/
│ │ │ │ │ └── favorite-star.tsx
│ │ │ │ ├── file-remove-dialog/
│ │ │ │ │ ├── file-remove-dialog.ts
│ │ │ │ │ └── multiple-files-remove-dialog.ts
│ │ │ │ ├── file-uploader/
│ │ │ │ │ └── file-uploader.tsx
│ │ │ │ ├── form-fields/
│ │ │ │ │ ├── collection-form-fields.tsx
│ │ │ │ │ ├── external-credential-form-fields.tsx
│ │ │ │ │ ├── process-form-fields.tsx
│ │ │ │ │ ├── project-form-fields.tsx
│ │ │ │ │ ├── repository-form-fields.tsx
│ │ │ │ │ ├── resource-form-fields.tsx
│ │ │ │ │ ├── search-bar-form-fields.tsx
│ │ │ │ │ ├── ssh-key-form-fields.tsx
│ │ │ │ │ └── user-form-fields.tsx
│ │ │ │ ├── groups-dialog/
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ ├── member-attributes-dialog.tsx
│ │ │ │ │ ├── member-remove-dialog.ts
│ │ │ │ │ └── remove-dialog.ts
│ │ │ │ ├── keep-services-dialog/
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ └── remove-dialog.tsx
│ │ │ │ ├── links-dialog/
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ └── remove-dialog.tsx
│ │ │ │ ├── login-form/
│ │ │ │ │ └── login-form.tsx
│ │ │ │ ├── main-app-bar/
│ │ │ │ │ ├── account-menu.cy.js
│ │ │ │ │ ├── account-menu.tsx
│ │ │ │ │ ├── admin-menu.tsx
│ │ │ │ │ ├── anonymous-menu.tsx
│ │ │ │ │ ├── help-menu.tsx
│ │ │ │ │ ├── main-app-bar.tsx
│ │ │ │ │ └── notifications-menu.tsx
│ │ │ │ ├── main-content-bar/
│ │ │ │ │ └── main-content-bar.tsx
│ │ │ │ ├── not-found-dialog/
│ │ │ │ │ └── not-found-dialog.tsx
│ │ │ │ ├── process-cancel-dialog/
│ │ │ │ │ └── process-cancel-dialog.tsx
│ │ │ │ ├── process-input-dialog/
│ │ │ │ │ └── process-input-dialog.tsx
│ │ │ │ ├── process-remove-dialog/
│ │ │ │ │ └── process-remove-dialog.tsx
│ │ │ │ ├── process-runtime-status/
│ │ │ │ │ └── process-runtime-status.tsx
│ │ │ │ ├── projects-tree-picker/
│ │ │ │ │ ├── favorites-tree-picker.tsx
│ │ │ │ │ ├── generic-projects-tree-picker.tsx
│ │ │ │ │ ├── home-tree-picker.tsx
│ │ │ │ │ ├── projects-tree-picker.tsx
│ │ │ │ │ ├── public-favorites-tree-picker.tsx
│ │ │ │ │ ├── search-projects-picker.tsx
│ │ │ │ │ ├── shared-tree-picker.tsx
│ │ │ │ │ └── tree-picker-field.tsx
│ │ │ │ ├── property-chips/
│ │ │ │ │ ├── get-property-chips.cy.js
│ │ │ │ │ └── get-property-chips.tsx
│ │ │ │ ├── remove-dialog/
│ │ │ │ │ └── remove-dialog.tsx
│ │ │ │ ├── rename-file-dialog/
│ │ │ │ │ └── rename-file-dialog.tsx
│ │ │ │ ├── repositories-sample-git-dialog/
│ │ │ │ │ └── repositories-sample-git-dialog.tsx
│ │ │ │ ├── repository-attributes-dialog/
│ │ │ │ │ └── repository-attributes-dialog.tsx
│ │ │ │ ├── repository-remove-dialog/
│ │ │ │ │ └── repository-remove-dialog.ts
│ │ │ │ ├── resource-properties-form/
│ │ │ │ │ ├── property-chip.tsx
│ │ │ │ │ ├── property-field-common.tsx
│ │ │ │ │ ├── property-key-field.tsx
│ │ │ │ │ ├── property-value-field.tsx
│ │ │ │ │ └── resource-properties-form.tsx
│ │ │ │ ├── rich-text-editor-dialog/
│ │ │ │ │ └── rich-text-editor-dialog.tsx
│ │ │ │ ├── run-process-dialog/
│ │ │ │ │ └── change-workflow-dialog.ts
│ │ │ │ ├── search-bar/
│ │ │ │ │ ├── search-bar-advanced-properties-view.tsx
│ │ │ │ │ ├── search-bar-advanced-view.tsx
│ │ │ │ │ ├── search-bar-autocomplete-view.tsx
│ │ │ │ │ ├── search-bar-basic-view.tsx
│ │ │ │ │ ├── search-bar-recent-queries.tsx
│ │ │ │ │ ├── search-bar-save-queries.tsx
│ │ │ │ │ ├── search-bar-view.cy.js
│ │ │ │ │ ├── search-bar-view.tsx
│ │ │ │ │ └── search-bar.tsx
│ │ │ │ ├── sharing-dialog/
│ │ │ │ │ ├── participant-select.tsx
│ │ │ │ │ ├── permission-select.tsx
│ │ │ │ │ ├── select-item.tsx
│ │ │ │ │ ├── sharing-dialog-component.cy.js
│ │ │ │ │ ├── sharing-dialog-component.tsx
│ │ │ │ │ ├── sharing-dialog.tsx
│ │ │ │ │ ├── sharing-invitation-form-component.tsx
│ │ │ │ │ ├── sharing-invitation-form.tsx
│ │ │ │ │ ├── sharing-management-form-component.tsx
│ │ │ │ │ ├── sharing-management-form.tsx
│ │ │ │ │ ├── sharing-public-access-form-component.tsx
│ │ │ │ │ ├── sharing-public-access-form.tsx
│ │ │ │ │ ├── sharing-urls-component.cy.js
│ │ │ │ │ ├── sharing-urls-component.tsx
│ │ │ │ │ ├── sharing-urls.tsx
│ │ │ │ │ └── visibility-level-select.tsx
│ │ │ │ ├── side-panel/
│ │ │ │ │ ├── side-panel-collapsed.tsx
│ │ │ │ │ └── side-panel.tsx
│ │ │ │ ├── side-panel-button/
│ │ │ │ │ ├── side-panel-button.cy.js
│ │ │ │ │ └── side-panel-button.tsx
│ │ │ │ ├── side-panel-toggle/
│ │ │ │ │ └── side-panel-toggle.tsx
│ │ │ │ ├── side-panel-tree/
│ │ │ │ │ └── side-panel-tree.tsx
│ │ │ │ ├── snackbar/
│ │ │ │ │ └── snackbar.tsx
│ │ │ │ ├── ssh-keys-dialog/
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ ├── public-key-dialog.tsx
│ │ │ │ │ └── remove-dialog.tsx
│ │ │ │ ├── token-dialog/
│ │ │ │ │ ├── token-dialog.cy.js
│ │ │ │ │ └── token-dialog.tsx
│ │ │ │ ├── tree-picker/
│ │ │ │ │ ├── tree-picker.cy.js
│ │ │ │ │ └── tree-picker.ts
│ │ │ │ ├── user-dialog/
│ │ │ │ │ ├── activate-dialog.tsx
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ ├── deactivate-dialog.tsx
│ │ │ │ │ └── setup-dialog.tsx
│ │ │ │ ├── virtual-machines-dialog/
│ │ │ │ │ ├── add-login-dialog.tsx
│ │ │ │ │ ├── attributes-dialog.tsx
│ │ │ │ │ ├── group-array-input.tsx
│ │ │ │ │ ├── remove-dialog.tsx
│ │ │ │ │ └── remove-login-dialog.tsx
│ │ │ │ ├── webdav-s3-dialog/
│ │ │ │ │ ├── webdav-s3-dialog.cy.js
│ │ │ │ │ └── webdav-s3-dialog.tsx
│ │ │ │ └── workflow-remove-dialog/
│ │ │ │ └── workflow-remove-dialog.tsx
│ │ │ └── websocket/
│ │ │ ├── resource-event-message.ts
│ │ │ ├── websocket-service.cy.js
│ │ │ ├── websocket-service.ts
│ │ │ └── websocket.ts
│ │ ├── tools/
│ │ │ ├── arvados_config.yml
│ │ │ ├── example-vocabulary.json
│ │ │ ├── run-integration-tests.sh
│ │ │ └── setup-docker-volume.sh
│ │ ├── tsconfig.json
│ │ ├── tsconfig.prod.json
│ │ ├── tsconfig.test.json
│ │ ├── tslint.json
│ │ ├── typings/
│ │ │ ├── global.d.ts
│ │ │ └── images.d.ts
│ │ └── version-at-commit.sh
│ └── ws/
│ ├── doc.go
│ ├── event.go
│ ├── event_source.go
│ ├── event_source_test.go
│ ├── event_test.go
│ ├── gocheck_test.go
│ ├── handler.go
│ ├── permission.go
│ ├── permission_test.go
│ ├── router.go
│ ├── service.go
│ ├── service_test.go
│ ├── session.go
│ ├── session_v0.go
│ ├── session_v0_test.go
│ └── session_v1.go
└── tools/
├── ansible/
│ ├── README.md
│ ├── build-compute-image.yml
│ ├── build-debian-nspawn-vm.yml
│ ├── build-docker-image.yml
│ ├── examples/
│ │ ├── full-cluster-inventory.yml
│ │ ├── simple-cluster-config.yml
│ │ └── simple-cluster-inventory.yml
│ ├── files/
│ │ ├── default-test-config.yml
│ │ └── development-docker-images.yml
│ ├── filter_plugins/
│ │ └── arvados.py
│ ├── group_vars/
│ │ ├── all/
│ │ │ └── vars.yml
│ │ └── arvados_postgresql/
│ │ └── database.yml
│ ├── install-ansible.sh
│ ├── install-arvados-cluster.yml
│ ├── install-dev-tools.yml
│ ├── privilege-nspawn-vm.yml
│ ├── requirements.txt
│ ├── requirements.yml
│ ├── roles/
│ │ ├── arvados_alloy/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_ansible/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_api/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ └── cluster.conf.j2
│ │ ├── arvados_apt/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ └── arvados.pref.j2
│ │ ├── arvados_aws_secret/
│ │ │ ├── files/
│ │ │ │ └── arvados-aws-secret.sh
│ │ │ ├── tasks/
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ └── arvados_aws_secret.service.j2
│ │ ├── arvados_compute/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_controller/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_database/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_dispatch_cloud/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_dispatch_local/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_docker/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── files/
│ │ │ │ └── arvados-docker.pref
│ │ │ └── tasks/
│ │ │ ├── apt.yml
│ │ │ ├── dnf.yml
│ │ │ └── main.yml
│ │ ├── arvados_go/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_grafana/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_keep_web/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_keepbalance/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_keepproxy/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_keepstore/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_loki/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_nginx_base/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── handlers/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ ├── arvados-nginx-http.conf.j2
│ │ │ └── nginx-core.conf.j2
│ │ ├── arvados_nginx_frontend/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── files/
│ │ │ │ └── aws_secret.conf
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ ├── install_cert_file.yml
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ ├── arvados-nginx-controller.conf.j2
│ │ │ ├── arvados-nginx-keepproxy.conf.j2
│ │ │ ├── arvados-nginx-site.conf.j2
│ │ │ ├── arvados-nginx-webdav.conf.j2
│ │ │ ├── arvados-nginx-websocket.conf.j2
│ │ │ └── arvados-nginx-workbench2.conf.j2
│ │ ├── arvados_nodejs/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_postgresql/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ ├── main.yml
│ │ │ │ └── setup_service.yml
│ │ │ └── templates/
│ │ │ └── arvados-ansible.conf.j2
│ │ ├── arvados_prometheus/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_python/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ ├── install_from_source.yml
│ │ │ └── main.yml
│ │ ├── arvados_ruby/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ ├── install_from_source.yml
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ └── bundler.sh.j2
│ │ ├── arvados_service/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_shell/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── files/
│ │ │ │ ├── arvados-login-sync.service
│ │ │ │ └── arvados-login-sync.timer
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ ├── login_sync.yml
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ └── login-sync.env.j2
│ │ ├── arvados_websocket/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── arvados_workbench/
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── compute_amd_rocm/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── files/
│ │ │ │ └── arvados-amd-rocm.pref
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── compute_docker/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── handlers/
│ │ │ │ └── main.yml
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── compute_encrypt_tmp/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── files/
│ │ │ │ ├── arvados-ensure-encrypted-partitions.service
│ │ │ │ ├── ebs-autoscale.conf
│ │ │ │ └── ensure-encrypted-partitions.sh
│ │ │ └── tasks/
│ │ │ ├── aws_ebs.yml
│ │ │ └── main.yml
│ │ ├── compute_nvidia/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── files/
│ │ │ │ └── arvados-nvidia.pref
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── compute_singularity/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── compute_user/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── distro_apt/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ ├── handlers/
│ │ │ │ └── main.yml
│ │ │ ├── tasks/
│ │ │ │ └── main.yml
│ │ │ └── templates/
│ │ │ └── 65arvados-ansible-unattended-upgrades.j2
│ │ ├── distro_bootstrap/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── distro_dnf/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── distro_grafana/
│ │ │ ├── files/
│ │ │ │ └── arvados-grafana.pref
│ │ │ ├── meta/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ ├── distro_packages/
│ │ │ ├── defaults/
│ │ │ │ └── main.yml
│ │ │ └── tasks/
│ │ │ └── main.yml
│ │ └── distro_postgresql/
│ │ ├── defaults/
│ │ │ └── main.yml
│ │ ├── meta/
│ │ │ └── main.yml
│ │ └── tasks/
│ │ └── main.yml
│ └── setup-package-tests.yml
├── cluster-activity/
│ ├── MANIFEST.in
│ ├── README.rst
│ ├── agpl-3.0.txt
│ ├── arvados_cluster_activity/
│ │ ├── __init__.py
│ │ ├── dygraphs.js
│ │ ├── main.py
│ │ ├── prometheus.py
│ │ ├── report.py
│ │ ├── reportchart.py
│ │ ├── sortable.js
│ │ └── synchronizer.js
│ ├── arvados_version.py
│ ├── cluster-activity.cwl
│ ├── fpm-info.sh
│ ├── pyproject.toml
│ ├── pytest.ini
│ ├── setup.py
│ └── tests/
│ ├── test_prometheus.py
│ ├── test_report.csv
│ ├── test_report.html
│ └── test_report.py
├── compute-images/
│ ├── .gitignore
│ ├── README.md
│ ├── aws_config.example.json
│ ├── aws_template.json
│ ├── azure_config.example.json
│ ├── azure_template.json
│ └── host_config.example.yml
├── copy-tutorial/
│ └── copy-tutorial.sh
├── crunchstat-summary/
│ ├── MANIFEST.in
│ ├── README.rst
│ ├── agpl-3.0.txt
│ ├── arvados_version.py
│ ├── bin/
│ │ └── crunchstat-summary
│ ├── crunchstat_summary/
│ │ ├── __init__.py
│ │ ├── command.py
│ │ ├── dygraphs.js
│ │ ├── dygraphs.py
│ │ ├── reader.py
│ │ ├── summarizer.py
│ │ └── synchronizer.js
│ ├── fpm-info.sh
│ ├── pyproject.toml
│ ├── setup.py
│ └── tests/
│ ├── __init__.py
│ ├── container_9tee4-dz642-lymtndkpy39eibk.txt.gz.report
│ ├── container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y-arv-mount.txt.gz.report
│ ├── container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y-crunchstat.txt.gz.report
│ ├── container_request_9tee4-xvhdp-kk0ja1cl8b2kr1y.txt.gz.report
│ ├── crunchstat_error_messages.txt
│ └── test_examples.py
├── jenkins/
│ └── submit-ci-dev.sh
├── keep-xref/
│ └── keep-xref.py
├── python-metapackage/
│ ├── LICENSE-2.0.txt
│ ├── README.md
│ ├── agpl-3.0.txt
│ ├── arvados_version.py
│ ├── pyproject.toml
│ └── setup.py
├── salt-install/
│ ├── .gitignore
│ ├── README.md
│ ├── Vagrantfile
│ ├── common.sh
│ ├── config_examples/
│ │ ├── multi_host/
│ │ │ └── aws/
│ │ │ ├── README.md
│ │ │ ├── certs/
│ │ │ │ └── README.md
│ │ │ ├── dashboards/
│ │ │ │ ├── arvados_logs.json
│ │ │ │ ├── arvados_overview.json
│ │ │ │ ├── node-exporter-full_rev30.json
│ │ │ │ ├── postgresql_exporter.json
│ │ │ │ └── ssl-certificate-monitor.json
│ │ │ ├── pillars/
│ │ │ │ ├── alloy.sls
│ │ │ │ ├── arvados.sls
│ │ │ │ ├── aws_credentials.sls
│ │ │ │ ├── docker.sls
│ │ │ │ ├── grafana.sls
│ │ │ │ ├── letsencrypt.sls
│ │ │ │ ├── letsencrypt_balancer_configuration.sls
│ │ │ │ ├── letsencrypt_controller_configuration.sls
│ │ │ │ ├── letsencrypt_grafana_configuration.sls
│ │ │ │ ├── letsencrypt_keepproxy_configuration.sls
│ │ │ │ ├── letsencrypt_keepweb_configuration.sls
│ │ │ │ ├── letsencrypt_loki_configuration.sls
│ │ │ │ ├── letsencrypt_prometheus_configuration.sls
│ │ │ │ ├── letsencrypt_webshell_configuration.sls
│ │ │ │ ├── letsencrypt_websocket_configuration.sls
│ │ │ │ ├── letsencrypt_workbench2_configuration.sls
│ │ │ │ ├── letsencrypt_workbench_configuration.sls
│ │ │ │ ├── locale.sls
│ │ │ │ ├── logrotate.sls
│ │ │ │ ├── logrotate_api.sls
│ │ │ │ ├── logrotate_wb1.sls
│ │ │ │ ├── loki.sls
│ │ │ │ ├── nginx.sls
│ │ │ │ ├── nginx_api_configuration.sls
│ │ │ │ ├── nginx_balancer_configuration.sls
│ │ │ │ ├── nginx_collections_configuration.sls
│ │ │ │ ├── nginx_controller_configuration.sls
│ │ │ │ ├── nginx_download_configuration.sls
│ │ │ │ ├── nginx_grafana_configuration.sls
│ │ │ │ ├── nginx_keepproxy_configuration.sls
│ │ │ │ ├── nginx_keepweb_configuration.sls
│ │ │ │ ├── nginx_loki_configuration.sls
│ │ │ │ ├── nginx_prometheus_configuration.sls
│ │ │ │ ├── nginx_snippets.sls
│ │ │ │ ├── nginx_webshell_configuration.sls
│ │ │ │ ├── nginx_websocket_configuration.sls
│ │ │ │ ├── nginx_workbench2_configuration.sls
│ │ │ │ ├── nginx_workbench_configuration.sls
│ │ │ │ ├── postgresql.sls
│ │ │ │ ├── postgresql_external.sls
│ │ │ │ ├── prometheus_node_exporter.sls
│ │ │ │ ├── prometheus_pg_exporter.sls
│ │ │ │ ├── prometheus_server.sls
│ │ │ │ └── ssl_key_encrypted.sls
│ │ │ ├── states/
│ │ │ │ ├── alloy_install.sls
│ │ │ │ ├── aws_credentials.sls
│ │ │ │ ├── custom_certs.sls
│ │ │ │ ├── grafana_admin_user.sls
│ │ │ │ ├── grafana_dashboards.sls
│ │ │ │ ├── grafana_datasource.sls
│ │ │ │ ├── host_entries.sls
│ │ │ │ ├── loki_install.sls
│ │ │ │ ├── nginx_prometheus_configuration.sls
│ │ │ │ ├── passenger_rvm.sls
│ │ │ │ ├── postgresql_external.sls
│ │ │ │ ├── prometheus_pg_exporter.sls
│ │ │ │ ├── railsapi_passenger_configs.sls
│ │ │ │ ├── shell_cron_add_login_sync.sls
│ │ │ │ ├── shell_sudo_passwordless.sls
│ │ │ │ ├── ssl_key_encrypted.sls
│ │ │ │ └── workbench1_uninstall.sls
│ │ │ └── tofs/
│ │ │ └── arvados/
│ │ │ └── shell/
│ │ │ └── config/
│ │ │ └── files/
│ │ │ └── default/
│ │ │ ├── shell-pam-shellinabox.tmpl.jinja
│ │ │ └── shell-shellinabox.tmpl.jinja
│ │ └── single_host/
│ │ ├── multiple_hostnames/
│ │ │ ├── README.md
│ │ │ ├── pillars/
│ │ │ │ ├── arvados.sls
│ │ │ │ ├── docker.sls
│ │ │ │ ├── locale.sls
│ │ │ │ ├── logrotate.sls
│ │ │ │ ├── logrotate_api.sls
│ │ │ │ ├── logrotate_wb1.sls
│ │ │ │ ├── nginx.sls
│ │ │ │ ├── nginx_api_configuration.sls
│ │ │ │ ├── nginx_controller_configuration.sls
│ │ │ │ ├── nginx_keepproxy_configuration.sls
│ │ │ │ ├── nginx_keepweb_configuration.sls
│ │ │ │ ├── nginx_webshell_configuration.sls
│ │ │ │ ├── nginx_websocket_configuration.sls
│ │ │ │ ├── nginx_workbench2_configuration.sls
│ │ │ │ ├── nginx_workbench_configuration.sls
│ │ │ │ └── postgresql.sls
│ │ │ └── states/
│ │ │ ├── custom_certs.sls
│ │ │ ├── dns.sls
│ │ │ ├── host_entries.sls
│ │ │ ├── keep_volume.sls
│ │ │ ├── passenger_rvm.sls
│ │ │ ├── railsapi_passenger_configs.sls
│ │ │ ├── snakeoil_certs.sls
│ │ │ └── workbench1_uninstall.sls
│ │ └── single_hostname/
│ │ ├── README.md
│ │ ├── pillars/
│ │ │ ├── arvados.sls
│ │ │ ├── aws_credentials.sls
│ │ │ ├── docker.sls
│ │ │ ├── letsencrypt.sls
│ │ │ ├── locale.sls
│ │ │ ├── logrotate.sls
│ │ │ ├── logrotate_api.sls
│ │ │ ├── logrotate_wb1.sls
│ │ │ ├── nginx.sls
│ │ │ ├── nginx_api_configuration.sls
│ │ │ ├── nginx_controller_configuration.sls
│ │ │ ├── nginx_keepproxy_configuration.sls
│ │ │ ├── nginx_keepweb_configuration.sls
│ │ │ ├── nginx_webshell_configuration.sls
│ │ │ ├── nginx_websocket_configuration.sls
│ │ │ ├── nginx_workbench2_configuration.sls
│ │ │ ├── nginx_workbench_configuration.sls
│ │ │ └── postgresql.sls
│ │ └── states/
│ │ ├── custom_certs.sls
│ │ ├── dns.sls
│ │ ├── host_entries.sls
│ │ ├── keep_volume.sls
│ │ ├── passenger_rvm.sls
│ │ ├── railsapi_passenger_configs.sls
│ │ ├── shell_cron_add_login_sync.sls
│ │ ├── shell_sudo_passwordless.sls
│ │ ├── snakeoil_certs.sls
│ │ └── workbench1_uninstall.sls
│ ├── installer.sh
│ ├── local.params.example.multiple_hosts
│ ├── local.params.example.single_host_multiple_hostnames
│ ├── local.params.example.single_host_single_hostname
│ ├── local.params.secrets.example
│ ├── provision.sh
│ ├── terraform/
│ │ └── aws/
│ │ ├── .gitignore
│ │ ├── assumerolepolicy.json
│ │ ├── data-storage/
│ │ │ ├── .terraform.lock.hcl
│ │ │ ├── data.tf
│ │ │ ├── locals.tf
│ │ │ ├── main.tf
│ │ │ ├── outputs.tf
│ │ │ ├── terraform.tfvars
│ │ │ └── variables.tf
│ │ ├── services/
│ │ │ ├── .terraform.lock.hcl
│ │ │ ├── data.tf
│ │ │ ├── locals.tf
│ │ │ ├── main.tf
│ │ │ ├── outputs.tf
│ │ │ ├── terraform.tfvars
│ │ │ ├── user_data.sh
│ │ │ └── variables.tf
│ │ └── vpc/
│ │ ├── .terraform.lock.hcl
│ │ ├── data.tf
│ │ ├── locals.tf
│ │ ├── main.tf
│ │ ├── outputs.tf
│ │ ├── terraform.tfvars
│ │ └── variables.tf
│ └── tests/
│ ├── hasher-workflow-job.yml
│ ├── hasher-workflow.cwl
│ ├── hasher.cwl
│ ├── run-test.sh
│ └── test.txt
├── terraform/
│ └── .gitignore
├── test-collection-create/
│ └── test-collection-create.py
├── user-activity/
│ ├── MANIFEST.in
│ ├── README.rst
│ ├── agpl-3.0.txt
│ ├── arvados_user_activity/
│ │ ├── __init__.py
│ │ └── main.py
│ ├── arvados_version.py
│ ├── bin/
│ │ └── arv-user-activity
│ ├── fpm-info.sh
│ ├── pyproject.toml
│ └── setup.py
└── vocabulary-migrate/
└── vocabulary-migrate.py
Showing preview only (1,556K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (16804 symbols across 1671 files)
FILE: build/build_docker_image.py
function _log_cmd (line 27) | def _log_cmd(level, msg, *args):
function _log_and_run (line 33) | def _log_and_run(cmd, *, level=logging.DEBUG, check=True, **kwargs):
class OptionError (line 38) | class OptionError(ValueError):
class DockerImage (line 42) | class DockerImage:
method register (line 47) | def register(cls, subcls):
method build_from_args (line 55) | def build_from_args(cls, args):
method __init__ (line 63) | def __init__(self, args):
method __enter__ (line 73) | def __enter__(self):
method __exit__ (line 78) | def __exit__(self, exc_type, exc_value, exc_tb):
method build_docker_image (line 82) | def build_docker_image(self):
method dev_version (line 95) | def dev_version(self):
class PythonVenvImage (line 99) | class PythonVenvImage(DockerImage):
method __init__ (line 104) | def __init__(self, args):
method dev_version (line 109) | def dev_version(self):
method build_python_wheel (line 112) | def build_python_wheel(self, src_dir):
method build_requirements (line 117) | def build_requirements(self):
method build_docker_image (line 128) | def build_docker_image(self):
class ClusterActivityImage (line 145) | class ClusterActivityImage(PythonVenvImage):
class JobsImage (line 159) | class JobsImage(PythonVenvImage):
class Environments (line 169) | class Environments:
method production (line 171) | def production(args):
method development (line 178) | def development(args):
method parse_argument (line 190) | def parse_argument(cls, s):
class UploadActions (line 197) | class UploadActions:
method to_arvados (line 199) | def to_arvados(tag):
method to_docker_hub (line 209) | def to_docker_hub(tag):
method parse_argument (line 232) | def parse_argument(cls, s):
class ArgumentParser (line 239) | class ArgumentParser(argparse.ArgumentParser):
method __init__ (line 240) | def __init__(self):
method _parse_loglevel (line 306) | def _parse_loglevel(self, s):
function main (line 313) | def main(args):
FILE: build/pypkg_info.py
class RawFormat (line 20) | class RawFormat:
method format_metadata (line 21) | def format_metadata(self, key, value):
method format_path (line 24) | def format_path(self, path):
class FPMFormat (line 28) | class FPMFormat(RawFormat):
method format_metadata (line 33) | def format_metadata(self, key, value):
class Formats (line 39) | class Formats(enum.Enum):
method from_arg (line 44) | def from_arg(cls, arg):
function report_binfiles (line 51) | def report_binfiles(args):
function report_metadata (line 61) | def report_metadata(args):
function unescape_str (line 67) | def unescape_str(arg):
function parse_arguments (line 71) | def parse_arguments(arglist=None):
function main (line 112) | def main(arglist=None):
FILE: cmd/arvados-server/cmd.go
function main (line 70) | func main() {
type wb2command (line 74) | type wb2command struct
method RunCommand (line 76) | func (wb2command) RunCommand(prog string, args []string, stdin io.Read...
FILE: contrib/arvados-bootstrap/src/arv_bootstrap/export_import.py
class ArgumentParser (line 20) | class ArgumentParser(argparse.ArgumentParser):
method _base_options (line 22) | def _base_options(cls, cmdname=sys.argv[0]):
method _common_options (line 39) | def _common_options(cls, verb):
method _import_options (line 79) | def _import_options(cls):
method _set_common_defaults (line 104) | def _set_common_defaults(self):
method export_parser (line 118) | def export_parser(cls):
method import_parser (line 133) | def import_parser(cls):
function setup_logging (line 142) | def setup_logging(name, args):
function transfer (line 153) | def transfer(src_arv, dst_arv, args, verb):
function export_main (line 171) | def export_main(arglist=None):
function import_main (line 179) | def import_main(arglist=None):
FILE: contrib/arvados-bootstrap/src/arv_bootstrap/federation_migrate.py
function connect_clusters (line 30) | def connect_clusters(args):
function fetch_users (line 91) | def fetch_users(clusters, loginCluster):
function read_migrations (line 148) | def read_migrations(args, by_email, by_username):
function update_username (line 167) | def update_username(args, email, user_uuid, username, migratecluster, mi...
function choose_new_user (line 185) | def choose_new_user(args, by_email, email, userhome, username, old_user_...
function activate_remote_user (line 240) | def activate_remote_user(args, email, homearv, migratearv, old_user_uuid...
function migrate_user (line 299) | def migrate_user(args, migratearv, email, new_user_uuid, old_user_uuid):
function main (line 324) | def main():
FILE: contrib/arvados-bootstrap/src/arv_bootstrap/seed.py
function is_mapping (line 27) | def is_mapping(arg):
class ExceptHook (line 32) | class ExceptHook:
method __call__ (line 36) | def __call__(self, exc_type, exc_value, exc_tb):
method using_exit_code (line 44) | def using_exit_code(self, exit_code):
class Path (line 53) | class Path(pathlib.Path):
method __format__ (line 56) | def __format__(self, format_spec=''):
class ArvadosResources (line 64) | class ArvadosResources:
method from_client (line 68) | def from_client(cls, arv_client):
method _sep_caps (line 72) | def _sep_caps(match):
method singular_name (line 75) | def singular_name(self, name):
method canonical_name (line 83) | def canonical_name(self, name):
method parameters (line 97) | def parameters(self, resource_name, method_name):
class DirectoryLoader (line 102) | class DirectoryLoader:
method from_args (line 112) | def from_args(cls, args):
method _load_defaults (line 121) | def _load_defaults(self, instance_defaults, path):
method _create_from (line 133) | def _create_from(self, json_path, base, base_params):
method build_from (line 150) | def build_from(self, dir_path):
class ConfigLoader (line 170) | class ConfigLoader:
method _load_yaml (line 175) | def _load_yaml(cls, path):
method _cluster_config_path (line 186) | def _cluster_config_path(cls):
method _from_one_cluster (line 190) | def _from_one_cluster(cls, config):
method from_cluster (line 208) | def from_cluster(cls, arg):
method from_cluster_id (line 236) | def from_cluster_id(cls, arg):
method from_env (line 246) | def from_env(cls, arg):
method from_user (line 251) | def from_user(cls, arg):
method parse_arg (line 255) | def parse_arg(cls, arg):
method default_config (line 266) | def default_config(cls):
function parse_loglevel (line 273) | def parse_loglevel(arg):
function validate_mapping (line 280) | def validate_mapping(arg):
function parse_arguments (line 287) | def parse_arguments(arglist=None):
function add_log_handlers (line 341) | def add_log_handlers(logger, stderr=sys.stderr):
function main (line 354) | def main(
FILE: contrib/arvados-bootstrap/src/arv_bootstrap/stubapi.py
class DeferExecution (line 24) | class DeferExecution:
method __init__ (line 25) | def __init__(self, fn):
method execute (line 28) | def execute(self, *, num_retries=None):
function defer_execution (line 32) | def defer_execution(f):
class StubKeepClient (line 39) | class StubKeepClient:
method __init__ (line 40) | def __init__(self, basedir):
method get (line 43) | def get(self, locator):
method put (line 49) | def put(self, data, copies=2, num_retries=None, request_id=None, class...
function match_filter (line 64) | def match_filter(fl, obj):
class StubArvadosResources (line 74) | class StubArvadosResources:
method __init__ (line 75) | def __init__(self, basedir, resource_type):
method get (line 81) | def get(self, *, uuid=""):
method create (line 86) | def create(self, *, body=None, ensure_unique_name=None):
method update (line 95) | def update(self, *, uuid="", body=None):
method list (line 110) | def list(self, *, filters=None, limit=None, count=None, order=None):
class StubArvadosAPI (line 144) | class StubArvadosAPI:
method __init__ (line 145) | def __init__(self, basedir):
method for_cwd (line 157) | def for_cwd(cls):
method collections (line 160) | def collections(self):
method links (line 163) | def links(self):
method groups (line 166) | def groups(self):
method workflows (line 169) | def workflows(self):
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/BaseApiClient.java
class BaseApiClient (line 28) | abstract class BaseApiClient {
method BaseApiClient (line 36) | BaseApiClient(ConfigProvider config) {
method getRequestBuilder (line 46) | Request.Builder getRequestBuilder() {
method newCall (line 52) | String newCall(Request request) {
method newFileCall (line 56) | byte[] newFileCall(Request request) {
method getResponseBody (line 60) | private Object getResponseBody(Request request, Command command) {
type Command (line 84) | private interface Command {
method readResponseBody (line 85) | Object readResponseBody(ResponseBody body) throws IOException;
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/BaseStandardApiClient.java
class BaseStandardApiClient (line 28) | public abstract class BaseStandardApiClient<T extends Item, L extends It...
method BaseStandardApiClient (line 33) | BaseStandardApiClient(ConfigProvider config) {
method list (line 37) | public L list(ListArgument listArguments) {
method list (line 46) | public L list() {
method get (line 50) | public T get(String uuid) {
method create (line 57) | public T create(T type) {
method delete (line 65) | public T delete(String uuid) {
method update (line 72) | public T update(T type) {
method getRequestBuilder (line 82) | @Override
method getUrlBuilder (line 87) | HttpUrl.Builder getUrlBuilder() {
method call (line 97) | <TL> TL call(Request request, Class<TL> cls) {
method mapToObject (line 106) | private <TL> TL mapToObject(String content, Class<TL> cls) throws IOEx...
method mapToJson (line 110) | protected <TL> String mapToJson(TL type) {
method callForType (line 120) | T callForType(Request request) {
method callForList (line 124) | L callForList(Request request) {
method getResource (line 128) | abstract String getResource();
method getType (line 130) | abstract Class<T> getType();
method getListType (line 132) | abstract Class<L> getListType();
method getNoArgumentMethodRequest (line 134) | Request getNoArgumentMethodRequest(String method) {
method getJsonRequestBody (line 139) | RequestBody getJsonRequestBody(Object object) {
method addQueryParameters (line 143) | void addQueryParameters(Builder urlBuilder, Object object) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/CollectionsApiClient.java
class CollectionsApiClient (line 20) | public class CollectionsApiClient extends BaseStandardApiClient<Collecti...
method CollectionsApiClient (line 26) | public CollectionsApiClient(ConfigProvider config) {
method create (line 30) | @Override
method update (line 37) | public Collection update(String collectionUUID, CollectionReplaceFiles...
method getResource (line 45) | @Override
method getType (line 50) | @Override
method getListType (line 55) | @Override
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/ConfigApiClient.java
class ConfigApiClient (line 23) | public class ConfigApiClient {
method ConfigApiClient (line 32) | public ConfigApiClient(String protocol, String host, int port, boolean...
method fetchConfig (line 41) | public ArvadosConfig fetchConfig() throws ArvadosApiException {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/CountingFileRequestBody.java
class CountingFileRequestBody (line 20) | public class CountingFileRequestBody extends CountingRequestBody<File> {
method CountingFileRequestBody (line 22) | CountingFileRequestBody(final File file, final ProgressListener listen...
method contentLength (line 26) | @Override
method writeTo (line 31) | @Override
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/CountingRequestBody.java
class CountingRequestBody (line 14) | abstract class CountingRequestBody<T> extends RequestBody {
method CountingRequestBody (line 23) | CountingRequestBody(T file, final ProgressListener listener) {
method contentType (line 28) | @Override
class TransferData (line 33) | static class TransferData {
method TransferData (line 39) | TransferData(long totalSize) {
method updateTransferProgress (line 44) | void updateTransferProgress(long transferred) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/CountingStreamRequestBody.java
class CountingStreamRequestBody (line 18) | public class CountingStreamRequestBody extends CountingRequestBody<Input...
method CountingStreamRequestBody (line 20) | CountingStreamRequestBody(final InputStream inputStream, final Progres...
method contentLength (line 24) | @Override
method writeTo (line 29) | @Override
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/GroupsApiClient.java
class GroupsApiClient (line 22) | public class GroupsApiClient extends BaseStandardApiClient<Group, GroupL...
method GroupsApiClient (line 27) | public GroupsApiClient(ConfigProvider config) {
method contents (line 31) | public GroupList contents(ContentsGroup contentsGroup) {
method contents (line 40) | public GroupList contents(ListArgument listArguments) {
method untrash (line 49) | public Group untrash(UntrashGroup untrashGroup) {
method getResource (line 57) | @Override
method getType (line 62) | @Override
method getListType (line 67) | @Override
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/KeepWebApiClient.java
class KeepWebApiClient (line 22) | public class KeepWebApiClient extends BaseApiClient {
method KeepWebApiClient (line 24) | public KeepWebApiClient(ConfigProvider config) {
method download (line 28) | public byte[] download(String collectionUuid, String filePathName) {
method get (line 37) | public InputStream get(String collectionUuid, String filePathName, lon...
method delete (line 58) | public String delete(String collectionUuid, String filePathName) {
method upload (line 67) | public String upload(String collectionUuid, File file, ProgressListene...
method upload (line 77) | public String upload(String collectionUuid, InputStream inputStream, S...
method getUrlBuilder (line 87) | private HttpUrl.Builder getUrlBuilder(String collectionUuid, String fi...
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/LinksApiClient.java
class LinksApiClient (line 14) | public class LinksApiClient extends BaseStandardApiClient<Link, LinkList> {
method LinksApiClient (line 18) | public LinksApiClient(ConfigProvider config) {
method getResource (line 22) | @Override
method getType (line 27) | @Override
method getListType (line 32) | @Override
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/ProgressListener.java
type ProgressListener (line 10) | @FunctionalInterface
method updateProgress (line 13) | void updateProgress(long uploadedBytes);
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/UsersApiClient.java
class UsersApiClient (line 16) | public class UsersApiClient extends BaseStandardApiClient<User, UserList> {
method UsersApiClient (line 21) | public UsersApiClient(ConfigProvider config) {
method current (line 25) | public User current() {
method system (line 31) | public User system() {
method getResource (line 37) | @Override
method getType (line 42) | @Override
method getListType (line 47) | @Override
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/factory/OkHttpClientFactory.java
class OkHttpClientFactory (line 29) | public final class OkHttpClientFactory {
method OkHttpClientFactory (line 36) | private OkHttpClientFactory() { /* singleton */}
method create (line 38) | public OkHttpClient create(boolean apiHostInsecure) {
method getDefaultClient (line 45) | public OkHttpClient getDefaultClient() {
method getDefaultUnsecureClient (line 53) | public OkHttpClient getDefaultUnsecureClient() {
method getDefaultClientBuilder (line 60) | public OkHttpClient.Builder getDefaultClientBuilder() {
method getDefaultUnsecureClientBuilder (line 68) | public OkHttpClient.Builder getDefaultUnsecureClientBuilder() {
method getDefaultClientAcceptingAllCertificates (line 72) | private OkHttpClient getDefaultClientAcceptingAllCertificates() {
method createX509TrustManager (line 94) | private static X509TrustManager createX509TrustManager() {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/ApiError.java
class ApiError (line 17) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getErrors (line 27) | public List<String> getErrors() {
method getErrorToken (line 31) | public String getErrorToken() {
method setErrors (line 35) | public void setErrors(List<String> errors) {
method setErrorToken (line 39) | public void setErrorToken(String errorToken) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/ArvadosConfig.java
class ArvadosConfig (line 13) | @JsonIgnoreProperties(ignoreUnknown = true)
method getServices (line 19) | public Services getServices() {
method setServices (line 23) | public void setServices(Services services) {
class Services (line 27) | @JsonIgnoreProperties(ignoreUnknown = true)
method getWebDAVDownload (line 33) | public WebDAVDownload getWebDAVDownload() {
method setWebDAVDownload (line 37) | public void setWebDAVDownload(WebDAVDownload webDAVDownload) {
class WebDAVDownload (line 42) | @JsonIgnoreProperties(ignoreUnknown = true)
method getExternalURL (line 48) | public String getExternalURL() {
method setExternalURL (line 52) | public void setExternalURL(String externalURL) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/Collection.java
class Collection (line 17) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getPortableDataHash (line 46) | public String getPortableDataHash() {
method getReplicationDesired (line 50) | public Integer getReplicationDesired() {
method getReplicationConfirmedAt (line 54) | public LocalDateTime getReplicationConfirmedAt() {
method getReplicationConfirmed (line 58) | public Integer getReplicationConfirmed() {
method getManifestText (line 62) | public String getManifestText() {
method getName (line 66) | public String getName() {
method getDescription (line 70) | public String getDescription() {
method getProperties (line 74) | public Object getProperties() {
method getDeleteAt (line 78) | public LocalDateTime getDeleteAt() {
method getTrashAt (line 82) | public LocalDateTime getTrashAt() {
method getTrashed (line 86) | public Boolean getTrashed() {
method setPortableDataHash (line 90) | public void setPortableDataHash(String portableDataHash) {
method setReplicationDesired (line 94) | public void setReplicationDesired(Integer replicationDesired) {
method setReplicationConfirmedAt (line 98) | public void setReplicationConfirmedAt(LocalDateTime replicationConfirm...
method setReplicationConfirmed (line 102) | public void setReplicationConfirmed(Integer replicationConfirmed) {
method setManifestText (line 106) | public void setManifestText(String manifestText) {
method setName (line 110) | public void setName(String name) {
method setDescription (line 114) | public void setDescription(String description) {
method setProperties (line 118) | public void setProperties(Object properties) {
method setDeleteAt (line 122) | public void setDeleteAt(LocalDateTime deleteAt) {
method setTrashAt (line 126) | public void setTrashAt(LocalDateTime trashAt) {
method setTrashed (line 130) | public void setTrashed(Boolean trashed) {
method toString (line 134) | public String toString() {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/CollectionList.java
class CollectionList (line 17) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getItems (line 25) | public List<Collection> getItems() {
method setItems (line 29) | public void setItems(List<Collection> items) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/CollectionReplaceFiles.java
class CollectionReplaceFiles (line 17) | @JsonInclude(JsonInclude.Include.NON_NULL)
method CollectionReplaceFiles (line 27) | public CollectionReplaceFiles() {
method addFileReplacement (line 32) | public void addFileReplacement(String targetPath, String sourcePath) {
class CollectionOptions (line 36) | @JsonInclude(JsonInclude.Include.NON_NULL)
method CollectionOptions (line 42) | public CollectionOptions() {
method isPreserveVersion (line 46) | public boolean isPreserveVersion() {
method setPreserveVersion (line 50) | public void setPreserveVersion(boolean preserveVersion) {
method getCollectionOptions (line 55) | public CollectionOptions getCollectionOptions() {
method setCollectionOptions (line 59) | public void setCollectionOptions(CollectionOptions collectionOptions) {
method getReplaceFiles (line 63) | public Map<String, String> getReplaceFiles() {
method setReplaceFiles (line 67) | public void setReplaceFiles(Map<String, String> replaceFiles) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/Group.java
class Group (line 18) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getName (line 84) | public String getName() {
method getGroupClass (line 88) | public String getGroupClass() {
method getDescription (line 92) | public String getDescription() {
method getWritableBy (line 96) | public List<String> getWritableBy() {
method getDeleteAt (line 100) | public LocalDateTime getDeleteAt() {
method getTrashAt (line 104) | public LocalDateTime getTrashAt() {
method getIsTrashed (line 108) | public Boolean getIsTrashed() {
method getCommand (line 112) | public List<String> getCommand() {
method getContainerCount (line 116) | public Integer getContainerCount() {
method getContainerCountMax (line 120) | public Integer getContainerCountMax() {
method getContainerImage (line 124) | public String getContainerImage() {
method getContainerUuid (line 128) | public String getContainerUuid() {
method getCwd (line 132) | public String getCwd() {
method getEnvironment (line 136) | public Object getEnvironment() {
method getExpiresAt (line 140) | public LocalDateTime getExpiresAt() {
method getFilters (line 144) | public List<String> getFilters() {
method getLogUuid (line 148) | public String getLogUuid() {
method getMounts (line 152) | public Object getMounts() {
method getOutputName (line 156) | public String getOutputName() {
method getOutputPath (line 160) | public String getOutputPath() {
method getOutputUuid (line 164) | public String getOutputUuid() {
method getOutputTtl (line 168) | public Integer getOutputTtl() {
method getPriority (line 172) | public Integer getPriority() {
method getProperties (line 176) | public Object getProperties() {
method getRequestingContainerUuid (line 180) | public String getRequestingContainerUuid() {
method getRuntimeConstraints (line 184) | public RuntimeConstraints getRuntimeConstraints() {
method getSchedulingParameters (line 188) | public Object getSchedulingParameters() {
method getState (line 192) | public String getState() {
method getUseExisting (line 196) | public Boolean getUseExisting() {
method setName (line 200) | public void setName(String name) {
method setGroupClass (line 204) | public void setGroupClass(String groupClass) {
method setDescription (line 208) | public void setDescription(String description) {
method setWritableBy (line 212) | public void setWritableBy(List<String> writableBy) {
method setDeleteAt (line 216) | public void setDeleteAt(LocalDateTime deleteAt) {
method setTrashAt (line 220) | public void setTrashAt(LocalDateTime trashAt) {
method setIsTrashed (line 224) | public void setIsTrashed(Boolean isTrashed) {
method setCommand (line 228) | public void setCommand(List<String> command) {
method setContainerCount (line 232) | public void setContainerCount(Integer containerCount) {
method setContainerCountMax (line 236) | public void setContainerCountMax(Integer containerCountMax) {
method setContainerImage (line 240) | public void setContainerImage(String containerImage) {
method setContainerUuid (line 244) | public void setContainerUuid(String containerUuid) {
method setCwd (line 248) | public void setCwd(String cwd) {
method setEnvironment (line 252) | public void setEnvironment(Object environment) {
method setExpiresAt (line 256) | public void setExpiresAt(LocalDateTime expiresAt) {
method setFilters (line 260) | public void setFilters(List<String> filters) {
method setLogUuid (line 264) | public void setLogUuid(String logUuid) {
method setMounts (line 268) | public void setMounts(Object mounts) {
method setOutputName (line 272) | public void setOutputName(String outputName) {
method setOutputPath (line 276) | public void setOutputPath(String outputPath) {
method setOutputUuid (line 280) | public void setOutputUuid(String outputUuid) {
method setOutputTtl (line 284) | public void setOutputTtl(Integer outputTtl) {
method setPriority (line 288) | public void setPriority(Integer priority) {
method setProperties (line 292) | public void setProperties(Object properties) {
method setRequestingContainerUuid (line 296) | public void setRequestingContainerUuid(String requestingContainerUuid) {
method setRuntimeConstraints (line 300) | public void setRuntimeConstraints(RuntimeConstraints runtimeConstraint...
method setSchedulingParameters (line 304) | public void setSchedulingParameters(Object schedulingParameters) {
method setState (line 308) | public void setState(String state) {
method setUseExisting (line 312) | public void setUseExisting(Boolean useExisting) {
method toString (line 316) | public String toString() {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/GroupList.java
class GroupList (line 17) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getItems (line 25) | public List<Group> getItems() {
method setItems (line 29) | public void setItems(List<Group> items) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/Item.java
class Item (line 17) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getKind (line 42) | public String getKind() {
method getEtag (line 46) | public String getEtag() {
method getUuid (line 50) | public String getUuid() {
method getOwnerUuid (line 54) | public String getOwnerUuid() {
method getCreatedAt (line 58) | public LocalDateTime getCreatedAt() {
method getModifiedByClientUuid (line 62) | public String getModifiedByClientUuid() {
method getModifiedByUserUuid (line 66) | public String getModifiedByUserUuid() {
method getModifiedAt (line 70) | public LocalDateTime getModifiedAt() {
method getUpdatedAt (line 74) | public LocalDateTime getUpdatedAt() {
method setKind (line 78) | public void setKind(String kind) {
method setEtag (line 82) | public void setEtag(String etag) {
method setUuid (line 86) | public void setUuid(String uuid) {
method setOwnerUuid (line 90) | public void setOwnerUuid(String ownerUuid) {
method setCreatedAt (line 94) | public void setCreatedAt(LocalDateTime createdAt) {
method setModifiedByClientUuid (line 98) | public void setModifiedByClientUuid(String modifiedByClientUuid) {
method setModifiedByUserUuid (line 102) | public void setModifiedByUserUuid(String modifiedByUserUuid) {
method setModifiedAt (line 106) | public void setModifiedAt(LocalDateTime modifiedAt) {
method setUpdatedAt (line 110) | public void setUpdatedAt(LocalDateTime updatedAt) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/ItemList.java
class ItemList (line 15) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getKind (line 31) | public String getKind() {
method getEtag (line 35) | public String getEtag() {
method getOffset (line 39) | public Object getOffset() {
method getLimit (line 43) | public Object getLimit() {
method getItemsAvailable (line 47) | public Integer getItemsAvailable() {
method setKind (line 51) | public void setKind(String kind) {
method setEtag (line 55) | public void setEtag(String etag) {
method setOffset (line 59) | public void setOffset(Object offset) {
method setLimit (line 63) | public void setLimit(Object limit) {
method setItemsAvailable (line 67) | public void setItemsAvailable(Integer itemsAvailable) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/KeepService.java
class KeepService (line 12) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getServiceHost (line 30) | public String getServiceHost() {
method getServicePort (line 34) | public Integer getServicePort() {
method getServiceSslFlag (line 38) | public Boolean getServiceSslFlag() {
method getServiceType (line 42) | public String getServiceType() {
method getReadOnly (line 46) | public Boolean getReadOnly() {
method getServiceRoot (line 50) | public String getServiceRoot() {
method setServiceHost (line 54) | public void setServiceHost(String serviceHost) {
method setServicePort (line 58) | public void setServicePort(Integer servicePort) {
method setServiceSslFlag (line 62) | public void setServiceSslFlag(Boolean serviceSslFlag) {
method setServiceType (line 66) | public void setServiceType(String serviceType) {
method setReadOnly (line 70) | public void setReadOnly(Boolean readOnly) {
method setServiceRoot (line 74) | public void setServiceRoot(String serviceRoot) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/KeepServiceList.java
class KeepServiceList (line 17) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getItems (line 25) | public List<KeepService> getItems() {
method setItems (line 29) | public void setItems(List<KeepService> items) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/Link.java
class Link (line 16) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getName (line 34) | public String getName() {
method getHeadKind (line 38) | public String getHeadKind() {
method getHeadUuid (line 42) | public String getHeadUuid() {
method getTailUuid (line 46) | public String getTailUuid() {
method getTailKind (line 50) | public String getTailKind() {
method getLinkClass (line 54) | public String getLinkClass() {
method setName (line 58) | public void setName(String name) {
method setHeadKind (line 62) | public void setHeadKind(String headKind) {
method setHeadUuid (line 66) | public void setHeadUuid(String headUuid) {
method setTailUuid (line 70) | public void setTailUuid(String tailUuid) {
method setTailKind (line 74) | public void setTailKind(String tailKind) {
method setLinkClass (line 78) | public void setLinkClass(String linkClass) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/LinkList.java
class LinkList (line 17) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getItems (line 25) | public List<Link> getItems() {
method setItems (line 29) | public void setItems(List<Link> items) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/RuntimeConstraints.java
class RuntimeConstraints (line 15) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getApi (line 29) | public Boolean getApi() {
method getVcpus (line 33) | public Integer getVcpus() {
method getRam (line 37) | public Long getRam() {
method getKeepCacheRam (line 41) | public Long getKeepCacheRam() {
method setApi (line 45) | public void setApi(Boolean api) {
method setVcpus (line 49) | public void setVcpus(Integer vcpus) {
method setRam (line 53) | public void setRam(Long ram) {
method setKeepCacheRam (line 57) | public void setKeepCacheRam(Long keepCacheRam) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/User.java
class User (line 17) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getEmail (line 46) | public String getEmail() {
method getUsername (line 50) | public String getUsername() {
method getFullName (line 54) | public String getFullName() {
method getFirstName (line 58) | public String getFirstName() {
method getLastName (line 62) | public String getLastName() {
method getIdentityUrl (line 66) | public String getIdentityUrl() {
method getIsActive (line 70) | public Boolean getIsActive() {
method getIsAdmin (line 74) | public Boolean getIsAdmin() {
method getIsInvited (line 78) | public Boolean getIsInvited() {
method getPrefs (line 82) | public Object getPrefs() {
method getWritableBy (line 86) | public List<String> getWritableBy() {
method setEmail (line 90) | public void setEmail(String email) {
method setUsername (line 94) | public void setUsername(String username) {
method setFullName (line 98) | public void setFullName(String fullName) {
method setFirstName (line 102) | public void setFirstName(String firstName) {
method setLastName (line 106) | public void setLastName(String lastName) {
method setIdentityUrl (line 110) | public void setIdentityUrl(String identityUrl) {
method setIsActive (line 114) | public void setIsActive(Boolean isActive) {
method setIsAdmin (line 118) | public void setIsAdmin(Boolean isAdmin) {
method setIsInvited (line 122) | public void setIsInvited(Boolean isInvited) {
method setPrefs (line 126) | public void setPrefs(Object prefs) {
method setWritableBy (line 130) | public void setWritableBy(List<String> writableBy) {
method toString (line 134) | public String toString() {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/UserList.java
class UserList (line 17) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getItems (line 25) | public List<User> getItems() {
method setItems (line 29) | public void setItems(List<User> items) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/argument/Argument.java
class Argument (line 12) | public abstract class Argument {
method getUuid (line 17) | public String getUuid() {
method setUuid (line 21) | public void setUuid(String uuid) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/argument/ContentsGroup.java
class ContentsGroup (line 16) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getLimit (line 32) | public Integer getLimit() {
method getOrder (line 36) | public String getOrder() {
method getFilters (line 40) | public List<String> getFilters() {
method getRecursive (line 44) | public Boolean getRecursive() {
method setLimit (line 48) | public void setLimit(Integer limit) {
method setOrder (line 52) | public void setOrder(String order) {
method setFilters (line 56) | public void setFilters(List<String> filters) {
method setRecursive (line 60) | public void setRecursive(Boolean recursive) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/argument/Filter.java
class Filter (line 15) | @JsonFormat(shape = JsonFormat.Shape.ARRAY)
method Filter (line 29) | private Filter(String attribute, Operator operator, Object operand) {
method of (line 35) | public static Filter of(String attribute, Operator operator, Object op...
method getAttribute (line 39) | public String getAttribute() {
method getOperator (line 43) | public Operator getOperator() {
method getOperand (line 47) | public Object getOperand() {
method equals (line 51) | public boolean equals(Object o) {
method hashCode (line 67) | public int hashCode() {
method toString (line 79) | public String toString() {
type Operator (line 83) | public enum Operator {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/argument/ListArgument.java
class ListArgument (line 16) | @JsonInclude(JsonInclude.Include.NON_NULL)
method ListArgument (line 50) | ListArgument(
method builder (line 67) | public static ListArgumentBuilder builder() {
type Count (line 71) | public enum Count {
class ListArgumentBuilder (line 80) | public static class ListArgumentBuilder {
method ListArgumentBuilder (line 92) | ListArgumentBuilder() {
method limit (line 95) | public ListArgumentBuilder limit(Integer limit) {
method offset (line 100) | public ListArgumentBuilder offset(Integer offset) {
method filters (line 105) | public ListArgumentBuilder filters(List<Filter> filters) {
method order (line 110) | public ListArgumentBuilder order(List<String> order) {
method select (line 115) | public ListArgumentBuilder select(List<String> select) {
method distinct (line 120) | public ListArgumentBuilder distinct(Boolean distinct) {
method count (line 125) | public ListArgumentBuilder count(Count count) {
method excludeHomeProject (line 130) | public ListArgument.ListArgumentBuilder excludeHomeProject(Boolean e...
method includeOldVersions (line 135) | public ListArgument.ListArgumentBuilder includeOldVersions(Boolean i...
method includeTrash (line 140) | public ListArgument.ListArgumentBuilder includeTrash(Boolean include...
method build (line 145) | public ListArgument build() {
method toString (line 149) | public String toString() {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/argument/UntrashGroup.java
class UntrashGroup (line 14) | @JsonInclude(JsonInclude.Include.NON_NULL)
method getEnsureUniqueName (line 21) | public Boolean getEnsureUniqueName() {
method setEnsureUniqueName (line 25) | public void setEnsureUniqueName(Boolean ensureUniqueName) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/common/Characters.java
class Characters (line 10) | public final class Characters {
method Characters (line 12) | private Characters() {}
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/common/Headers.java
class Headers (line 10) | public final class Headers {
method Headers (line 12) | private Headers() {}
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/common/Patterns.java
class Patterns (line 10) | public final class Patterns {
method Patterns (line 18) | private Patterns() {}
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/config/ConfigProvider.java
type ConfigProvider (line 12) | public interface ConfigProvider {
method isApiHostInsecure (line 15) | boolean isApiHostInsecure();
method getKeepWebHost (line 17) | String getKeepWebHost();
method getKeepWebPort (line 19) | int getKeepWebPort();
method getApiHost (line 21) | String getApiHost();
method getApiPort (line 23) | int getApiPort();
method getApiToken (line 25) | String getApiToken();
method getApiProtocol (line 27) | String getApiProtocol();
method getConnectTimeout (line 29) | int getConnectTimeout();
method getReadTimeout (line 31) | int getReadTimeout();
method getWriteTimeout (line 33) | int getWriteTimeout();
method getFileSplitSize (line 36) | int getFileSplitSize();
method getFileSplitDirectory (line 38) | File getFileSplitDirectory();
method getNumberOfCopies (line 40) | int getNumberOfCopies();
method getNumberOfRetries (line 42) | int getNumberOfRetries();
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/config/ExternalConfigProvider.java
class ExternalConfigProvider (line 15) | public class ExternalConfigProvider implements ConfigProvider {
method ExternalConfigProvider (line 37) | ExternalConfigProvider(boolean apiHostInsecure, String keepWebHost, in...
method ExternalConfigProvider (line 56) | ExternalConfigProvider(boolean apiHostInsecure, String keepWebHost, in...
method builder (line 76) | public static ExternalConfigProviderBuilder builder() {
method toString (line 80) | @Override
method isApiHostInsecure (line 97) | public boolean isApiHostInsecure() {
method getKeepWebHost (line 101) | public String getKeepWebHost() {
method getKeepWebPort (line 105) | public int getKeepWebPort() {
method getApiHost (line 109) | public String getApiHost() {
method getApiPort (line 113) | public int getApiPort() {
method getApiToken (line 117) | public String getApiToken() {
method getApiProtocol (line 121) | public String getApiProtocol() {
method getFileSplitSize (line 125) | public int getFileSplitSize() {
method getFileSplitDirectory (line 129) | public File getFileSplitDirectory() {
method getNumberOfCopies (line 133) | public int getNumberOfCopies() {
method getNumberOfRetries (line 137) | public int getNumberOfRetries() {
method getConnectTimeout (line 141) | public int getConnectTimeout() {
method getReadTimeout (line 145) | public int getReadTimeout() {
method getWriteTimeout (line 149) | public int getWriteTimeout() {
class ExternalConfigProviderBuilder (line 153) | public static class ExternalConfigProviderBuilder {
method ExternalConfigProviderBuilder (line 170) | ExternalConfigProviderBuilder() {
method apiHostInsecure (line 173) | public ExternalConfigProvider.ExternalConfigProviderBuilder apiHostI...
method keepWebHost (line 178) | public ExternalConfigProvider.ExternalConfigProviderBuilder keepWebH...
method keepWebPort (line 183) | public ExternalConfigProvider.ExternalConfigProviderBuilder keepWebP...
method apiHost (line 188) | public ExternalConfigProvider.ExternalConfigProviderBuilder apiHost(...
method apiPort (line 193) | public ExternalConfigProvider.ExternalConfigProviderBuilder apiPort(...
method apiToken (line 198) | public ExternalConfigProvider.ExternalConfigProviderBuilder apiToken...
method apiProtocol (line 203) | public ExternalConfigProvider.ExternalConfigProviderBuilder apiProto...
method fileSplitSize (line 208) | public ExternalConfigProvider.ExternalConfigProviderBuilder fileSpli...
method fileSplitDirectory (line 213) | public ExternalConfigProvider.ExternalConfigProviderBuilder fileSpli...
method numberOfCopies (line 218) | public ExternalConfigProvider.ExternalConfigProviderBuilder numberOf...
method numberOfRetries (line 223) | public ExternalConfigProvider.ExternalConfigProviderBuilder numberOf...
method connectTimeout (line 228) | public ExternalConfigProvider.ExternalConfigProviderBuilder connectT...
method readTimeout (line 233) | public ExternalConfigProvider.ExternalConfigProviderBuilder readTime...
method writeTimeout (line 238) | public ExternalConfigProvider.ExternalConfigProviderBuilder writeTim...
method autoFetchWebDAV (line 243) | public ExternalConfigProvider.ExternalConfigProviderBuilder autoFetc...
method build (line 248) | public ExternalConfigProvider build() {
method shouldAutoFetchWebDAV (line 262) | private boolean shouldAutoFetchWebDAV() {
method autoFetchWebDAVConfiguration (line 267) | private void autoFetchWebDAVConfiguration() {
method validateWebDAVConfiguration (line 280) | private void validateWebDAVConfiguration() {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/config/FileConfigProvider.java
class FileConfigProvider (line 15) | public class FileConfigProvider implements ConfigProvider {
method FileConfigProvider (line 20) | public FileConfigProvider() {
method FileConfigProvider (line 24) | public FileConfigProvider(final String configFile) {
method getConfig (line 29) | public Config getConfig() {
method getFile (line 33) | private File getFile(String path) {
method getInt (line 37) | private int getInt(String path) {
method getBoolean (line 41) | private boolean getBoolean(String path) {
method getString (line 45) | private String getString(String path) {
method isApiHostInsecure (line 49) | @Override
method getKeepWebHost (line 54) | @Override
method getKeepWebPort (line 59) | @Override
method getApiHost (line 64) | @Override
method getApiPort (line 69) | @Override
method getApiToken (line 74) | @Override
method getApiProtocol (line 79) | @Override
method getFileSplitSize (line 84) | @Override
method getFileSplitDirectory (line 89) | @Override
method getNumberOfCopies (line 94) | @Override
method getNumberOfRetries (line 99) | @Override
method getIntegrationTestProjectUuid (line 104) | public String getIntegrationTestProjectUuid() {
method getConnectTimeout (line 108) | @Override
method getReadTimeout (line 113) | @Override
method getWriteTimeout (line 118) | @Override
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/config/WebDAVConfigFetcher.java
class WebDAVConfigFetcher (line 19) | public class WebDAVConfigFetcher {
method WebDAVConfigFetcher (line 30) | public WebDAVConfigFetcher(String apiProtocol, String apiHost, int api...
method fetch (line 37) | public WebDAVConfig fetch() {
method isConfigured (line 69) | private boolean isConfigured() {
method fetchArvadosConfig (line 73) | private ArvadosConfig fetchArvadosConfig() throws ArvadosApiException {
method extractWebDAVUrl (line 80) | private String extractWebDAVUrl(ArvadosConfig config) {
method parseWebDAVUrl (line 93) | private WebDAVConfig parseWebDAVUrl(String webDavUrl) {
class WebDAVConfig (line 117) | public static class WebDAVConfig {
method WebDAVConfig (line 121) | public WebDAVConfig(String host, int port) {
method getHost (line 126) | public String getHost() {
method getPort (line 130) | public int getPort() {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/exception/ArvadosApiException.java
class ArvadosApiException (line 10) | public class ArvadosApiException extends ArvadosClientException {
method ArvadosApiException (line 14) | public ArvadosApiException(String message) {
method ArvadosApiException (line 18) | public ArvadosApiException(String message, Throwable cause) {
method ArvadosApiException (line 22) | public ArvadosApiException(Throwable cause) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/exception/ArvadosClientException.java
class ArvadosClientException (line 14) | public class ArvadosClientException extends RuntimeException {
method ArvadosClientException (line 16) | public ArvadosClientException(String message) {
method ArvadosClientException (line 20) | public ArvadosClientException(String message, Throwable cause) {
method ArvadosClientException (line 24) | public ArvadosClientException(Throwable cause) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/facade/ArvadosFacade.java
class ArvadosFacade (line 32) | public class ArvadosFacade {
method ArvadosFacade (line 44) | public ArvadosFacade(ConfigProvider config) {
method ArvadosFacade (line 49) | public ArvadosFacade() {
method setFacadeFields (line 54) | private void setFacadeFields() {
method downloadFile (line 78) | public File downloadFile(String filePathName, String collectionUuid, S...
method downloadCollectionFiles (line 98) | public List<File> downloadCollectionFiles(String collectionUuid, Strin...
method listFileInfoFromCollection (line 113) | public List<FileToken> listFileInfoFromCollection(String collectionUui...
method upload (line 125) | public Collection upload(List<File> files) {
method upload (line 137) | public Collection upload(File file) {
method upload (line 155) | public Collection upload(List<File> sourceFiles, String collectionName...
method uploadToExistingCollection (line 168) | public Collection uploadToExistingCollection(File file, String collect...
method uploadToExistingCollection (line 181) | public Collection uploadToExistingCollection(List<File> files, String ...
method createEmptyCollection (line 196) | public Collection createEmptyCollection(String collectionName, String ...
method updateWithReplaceFiles (line 212) | public Collection updateWithReplaceFiles(String collectionUUID, Map<St...
method getCurrentUser (line 224) | public User getCurrentUser() {
method showGroupsOwnedByCurrentUser (line 235) | public GroupList showGroupsOwnedByCurrentUser() {
method showGroupsAccessibleByCurrentUser (line 255) | public GroupList showGroupsAccessibleByCurrentUser() {
method getCollectionsFromProjectByName (line 281) | public CollectionList getCollectionsFromProjectByName(String collectio...
method getProjectByUuid (line 299) | public Group getProjectByUuid(String projectUuid) {
method createNewProject (line 312) | public Group createNewProject(String projectName) {
method createNewSubProject (line 330) | public Group createNewSubProject(String ownerUuid, String projectName) {
method deleteCollection (line 347) | public Collection deleteCollection(String collectionUuid) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/collection/CollectionFactory.java
class CollectionFactory (line 23) | public class CollectionFactory {
method CollectionFactory (line 32) | private CollectionFactory(ConfigProvider config, String name, String p...
method builder (line 39) | public static CollectionFactoryBuilder builder() {
method setApiClients (line 43) | private void setApiClients() {
method create (line 50) | public Collection create() {
method getNameOrDefault (line 58) | private String getNameOrDefault(String name) {
method getDesiredProjectUuid (line 66) | public String getDesiredProjectUuid(String projectUuid) {
class CollectionFactoryBuilder (line 81) | public static class CollectionFactoryBuilder {
method CollectionFactoryBuilder (line 86) | CollectionFactoryBuilder() {
method config (line 89) | public CollectionFactoryBuilder config(ConfigProvider config) {
method name (line 94) | public CollectionFactoryBuilder name(String name) {
method projectUuid (line 99) | public CollectionFactoryBuilder projectUuid(String projectUuid) {
method build (line 104) | public CollectionFactory build() {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/collection/FileToken.java
class FileToken (line 13) | public class FileToken {
method FileToken (line 20) | public FileToken(String fileTokenInfo) {
method FileToken (line 24) | public FileToken(String fileTokenInfo, String path) {
method splitFileTokenInfo (line 29) | private void splitFileTokenInfo(String fileTokenInfo) {
method toString (line 36) | @Override
method getFullPath (line 41) | public String getFullPath() {
method getFilePosition (line 45) | public long getFilePosition() {
method getFileSize (line 49) | public long getFileSize() {
method getFileName (line 53) | public String getFileName() {
method getPath (line 57) | public String getPath() {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/collection/ManifestDecoder.java
class ManifestDecoder (line 24) | public class ManifestDecoder {
method decode (line 26) | public List<ManifestStream> decode(String manifestText) {
method decodeSingleManifestStream (line 42) | private ManifestStream decodeSingleManifestStream(String manifestStrea...
method getKeepLocator (line 66) | private KeepLocator getKeepLocator(String locatorString ) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/collection/ManifestFactory.java
class ManifestFactory (line 18) | public class ManifestFactory {
method ManifestFactory (line 23) | ManifestFactory(Collection<File> files, List<String> locators) {
method builder (line 28) | public static ManifestFactoryBuilder builder() {
method create (line 32) | public String create() {
class ManifestFactoryBuilder (line 45) | public static class ManifestFactoryBuilder {
method ManifestFactoryBuilder (line 49) | ManifestFactoryBuilder() {
method files (line 52) | public ManifestFactory.ManifestFactoryBuilder files(Collection<File>...
method locators (line 57) | public ManifestFactory.ManifestFactoryBuilder locators(List<String> ...
method build (line 62) | public ManifestFactory build() {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/collection/ManifestStream.java
class ManifestStream (line 16) | public class ManifestStream {
method ManifestStream (line 22) | public ManifestStream(String streamName, List<KeepLocator> keepLocator...
method toString (line 28) | @Override
method getStreamName (line 34) | public String getStreamName() {
method getKeepLocators (line 38) | public List<KeepLocator> getKeepLocators() {
method getFileTokens (line 42) | public List<FileToken> getFileTokens() {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/keep/FileDownloader.java
class FileDownloader (line 35) | public class FileDownloader {
method FileDownloader (line 42) | public FileDownloader(ManifestDecoder manifestDecoder, CollectionsApiC...
method listFileInfoFromCollection (line 48) | public List<FileToken> listFileInfoFromCollection(String collectionUui...
method downloadSingleFileUsingKeepWeb (line 59) | public File downloadSingleFileUsingKeepWeb(String filePathName, String...
method downloadFileWithResume (line 74) | public File downloadFileWithResume(String collectionUuid, String fileN...
method downloadFilesFromCollectionUsingKeepWeb (line 105) | public List<File> downloadFilesFromCollectionUsingKeepWeb(String colle...
method getFileTokenFromCollection (line 120) | private FileToken getFileTokenFromCollection(String filePathName, Stri...
method checkIfFileExistsInTargetLocation (line 128) | private File checkIfFileExistsInTargetLocation(FileToken fileToken, St...
method downloadOneFileFromCollectionUsingKeepWeb (line 139) | private File downloadOneFileFromCollectionUsingKeepWeb(FileToken fileT...
method downloadFilesFromCollection (line 152) | public List<File> downloadFilesFromCollection(String collectionUuid, S...
method setTargetDirectory (line 176) | private File setTargetDirectory(String collectionUUID, String pathToDo...
method downloadFilesFromSingleManifestStream (line 187) | private List<File> downloadFilesFromSingleManifestStream(String collec...
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/keep/FileUploader.java
class FileUploader (line 20) | public class FileUploader {
method FileUploader (line 27) | public FileUploader(KeepWebApiClient keepWebApiClient, CollectionsApiC...
method upload (line 33) | public Collection upload(List<File> sourceFiles, String collectionName...
method uploadFile (line 49) | private void uploadFile(String collectionUuid, File file) {
method uploadToExistingCollection (line 53) | public Collection uploadToExistingCollection(List<File> files, String ...
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/keep/KeepLocator.java
class KeepLocator (line 25) | public class KeepLocator {
method KeepLocator (line 33) | public KeepLocator(String locatorString) {
method getHints (line 50) | public List<String> getHints() {
method getMd5sum (line 54) | public String getMd5sum() {
method toString (line 58) | @Override
method stripped (line 65) | public String stripped() {
method permissionHint (line 69) | public String permissionHint() {
method parsePermissionHint (line 79) | private void parsePermissionHint(String hint) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/keep/exception/DownloadFolderAlreadyExistsException.java
class DownloadFolderAlreadyExistsException (line 18) | public class DownloadFolderAlreadyExistsException extends ArvadosClientE...
method DownloadFolderAlreadyExistsException (line 20) | public DownloadFolderAlreadyExistsException(String message) {
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/keep/exception/FileAlreadyExistsException.java
class FileAlreadyExistsException (line 19) | public class FileAlreadyExistsException extends ArvadosClientException {
method FileAlreadyExistsException (line 21) | public FileAlreadyExistsException(String message) { super(message); }
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/utils/FileMerge.java
class FileMerge (line 17) | public class FileMerge {
method merge (line 19) | public static void merge(Collection<File> files, File targetFile) thro...
FILE: contrib/java-sdk-v2/src/main/java/org/arvados/client/utils/FileSplit.java
class FileSplit (line 20) | public class FileSplit {
method split (line 22) | public static List<File> split(File f, File dir, int splitSize) throws...
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/BaseStandardApiClientTest.java
class BaseStandardApiClientTest (line 21) | @RunWith(MockitoJUnitRunner.class)
method getResource (line 26) | @Override
method getType (line 31) | @Override
method getListType (line 36) | @Override
method urlBuilderBuildsExpectedUrlFormat (line 42) | @Test
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/CollectionsApiClientTest.java
class CollectionsApiClientTest (line 29) | public class CollectionsApiClientTest extends ArvadosClientMockedWebServ...
method setUp (line 37) | @Before
method listCollections (line 44) | @Test
method getCollection (line 61) | @Test
method createCollection (line 81) | @Test
method createCollectionWithManifest (line 105) | @Test
method testUpdateWithReplaceFiles (line 131) | @Test
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/GroupsApiClientTest.java
class GroupsApiClientTest (line 25) | public class GroupsApiClientTest extends ArvadosClientMockedWebServerTest {
method listGroups (line 29) | @Test
method listProjectsByOwner (line 46) | @Test
method getGroup (line 72) | @Test
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/KeepWebApiClientTest.java
class KeepWebApiClientTest (line 27) | public class KeepWebApiClientTest extends ArvadosClientMockedWebServerTe...
method uploadFile (line 31) | @Test
method downloadPartialIsPerformedSuccessfully (line 47) | @Test
method inputStreamToByteArray (line 70) | private byte[] inputStreamToByteArray(InputStream inputStream) throws ...
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/LinkApiClientTest.java
class LinkApiClientTest (line 24) | public class LinkApiClientTest extends ArvadosClientMockedWebServerTest {
method listLinks (line 30) | @Test
method getLink (line 46) | @Test
method createLink (line 70) | @Test
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/UsersApiClientTest.java
class UsersApiClientTest (line 21) | public class UsersApiClientTest extends ArvadosClientMockedWebServerTest {
method listUsers (line 28) | @Test
method getUser (line 45) | @Test
method getCurrentUser (line 62) | @Test
method getSystemUser (line 79) | @Test
method createUser (line 96) | @Test
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/factory/OkHttpClientFactoryTest.java
class OkHttpClientFactoryTest (line 28) | @RunWith(MockitoJUnitRunner.class)
method secureOkHttpClientIsCreated (line 31) | @Test(expected = javax.net.ssl.SSLHandshakeException.class)
method insecureOkHttpClientIsCreated (line 50) | @Test
method getSSLSocketFactoryWithSelfSignedCertificate (line 78) | public SSLSocketFactory getSSLSocketFactoryWithSelfSignedCertificate()...
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/config/ExternalConfigProviderTest.java
class ExternalConfigProviderTest (line 20) | public class ExternalConfigProviderTest {
method setUp (line 24) | @Before
method tearDown (line 30) | @After
method testAutoFetchWebDAVConfiguration (line 35) | @Test
method testAutoFetchWebDAVConfigurationWithDefaultHttpsPort (line 64) | @Test
method testAutoFetchWebDAVConfigurationWithDefaultHttpPort (line 93) | @Test
method testManualConfigurationTakesPrecedence (line 122) | @Test
method testAutoFetchDisabled (line 153) | @Test
method testHandlesApiError (line 169) | @Test
method testHandlesMalformedResponse (line 189) | @Test
method testHandlesMissingWebDAVInResponse (line 210) | @Test
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/config/WebDAVConfigFetcherTest.java
class WebDAVConfigFetcherTest (line 20) | public class WebDAVConfigFetcherTest {
method setUp (line 24) | @Before
method tearDown (line 30) | @After
method testFetchWithValidConfig (line 35) | @Test
method testFetchWithDefaultHttpsPort (line 63) | @Test
method testFetchWithDefaultHttpPort (line 91) | @Test
method testFetchWithApiError (line 119) | @Test
method testFetchWithMalformedJson (line 136) | @Test
method testFetchWithMissingWebDAVSection (line 154) | @Test
method testFetchWithNullApiHost (line 177) | @Test
method testFetchWithEmptyApiHost (line 189) | @Test
method testFetchWithInvalidWebDAVUrl (line 201) | @Test
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/facade/ArvadosFacadeIntegrationTest.java
class ArvadosFacadeIntegrationTest (line 36) | @Category(IntegrationTests.class)
method setUp (line 43) | @Before
method uploadOfFileIsPerformedSuccessfully (line 49) | @Test
method uploadOfFilesIsPerformedSuccessfully (line 63) | @Test
method uploadToExistingCollectionIsPerformedSuccessfully (line 78) | @Test
method uploadWithExternalConfigProviderWorksProperly (line 92) | @Test
method creationOfEmptyCollectionPerformedSuccesfully (line 107) | @Test
method fileTokensAreListedFromCollection (line 121) | @Test
method downloadOfFilesPerformedSuccessfully (line 136) | @Test
method downloadOfFilesPerformedSuccessfullyUsingKeepWeb (line 154) | @Test
method singleFileIsDownloadedSuccessfullyUsingKeepWeb (line 172) | @Test
method downloadOfOneFileSplittedToMultipleLocatorsPerformedSuccesfully (line 185) | @Test
method downloadWithExternalConfigProviderWorksProperly (line 196) | @Test
method buildExternalConfig (line 212) | private ExternalConfigProvider buildExternalConfig() {
method createTestCollection (line 232) | private Collection createTestCollection() {
method uploadTestFiles (line 238) | private List<File> uploadTestFiles() throws Exception{
method uploadSingleTestFile (line 245) | private File uploadSingleTestFile(boolean bigFile) throws Exception{
method tearDown (line 253) | @After
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/facade/ArvadosFacadeTest.java
class ArvadosFacadeTest (line 40) | public class ArvadosFacadeTest extends ArvadosClientMockedWebServerTest {
method setUp (line 44) | @Before
method uploadIsPerformedSuccessfullyUsingDiskOnlyKeepServices (line 50) | @Test
method uploadIsPerformedSuccessfully (line 75) | @Test
method downloadOfWholeCollectionIsPerformedSuccessfully (line 100) | @Test
method downloadOfWholeCollectionUsingKeepWebPerformedSuccessfully (line 125) | @Test
method downloadOfSingleFilePerformedSuccessfully (line 147) | @Test
method setMockedServerPortToKeepServices (line 167) | private String setMockedServerPortToKeepServices(String jsonPath) thro...
method addAll (line 183) | private byte[] addAll(byte[] array1, byte[] array2) {
method tearDown (line 190) | @After
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/junit/categories/IntegrationTests.java
type IntegrationTests (line 10) | public interface IntegrationTests {}
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/logic/collection/FileTokenTest.java
class FileTokenTest (line 14) | public class FileTokenTest {
method tokenInfoIsDividedCorrectly (line 25) | @Test
method toStringReturnsOriginalFileTokenInfo (line 32) | @Test
method fullPathIsReturnedProperly (line 37) | @Test
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/logic/collection/ManifestDecoderTest.java
class ManifestDecoderTest (line 18) | public class ManifestDecoderTest {
method allLocatorsAndFileTokensAreExtractedFromSimpleManifest (line 36) | @Test
method allLocatorsAndFileTokensAreExtractedFromComplexManifest (line 52) | @Test
method manifestTextWithInvalidStreamNameThrowsException (line 71) | @Test
method emptyManifestTextThrowsException (line 83) | @Test
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/logic/collection/ManifestFactoryTest.java
class ManifestFactoryTest (line 20) | public class ManifestFactoryTest {
method manifestIsCreatedAsExpected (line 22) | @Test
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/logic/collection/ManifestStreamTest.java
class ManifestStreamTest (line 16) | public class ManifestStreamTest {
method toStringReturnsProperlyConnectedManifestStream (line 20) | @Test
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/logic/keep/FileDownloaderTest.java
class FileDownloaderTest (line 46) | @RunWith(MockitoJUnitRunner.class)
method setUp (line 62) | @Before
method downloadingAllFilesFromCollectionWorksProperly (line 71) | @Test
method downloadingSingleFileFromKeepWebWorksCorrectly (line 107) | @Test
method testDownloadFileWithResume (line 126) | @Test
method tearDown (line 149) | @After
method prepareCollection (line 155) | private Collection prepareCollection() throws IOException {
method prepareManifestStream (line 162) | private ManifestStream prepareManifestStream() throws Exception {
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/logic/keep/KeepLocatorTest.java
class KeepLocatorTest (line 14) | public class KeepLocatorTest {
method md5sumIsExtracted (line 18) | @Test
method locatorIsStrippedWithMd5sumAndSize (line 31) | @Test
method locatorToStringProperlyShowing (line 45) | @Test
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/test/utils/ApiClientTestUtils.java
class ApiClientTestUtils (line 21) | public final class ApiClientTestUtils {
method ApiClientTestUtils (line 25) | private ApiClientTestUtils() {}
method getResponse (line 27) | public static MockResponse getResponse(String filename) throws IOExcep...
method assertAuthorizationHeader (line 34) | public static void assertAuthorizationHeader(RecordedRequest request) {
method assertRequestPath (line 38) | public static void assertRequestPath(RecordedRequest request, String s...
method assertRequestMethod (line 42) | public static void assertRequestMethod(RecordedRequest request, Reques...
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/test/utils/ArvadosClientIntegrationTest.java
class ArvadosClientIntegrationTest (line 16) | public class ArvadosClientIntegrationTest {
method validateConfiguration (line 22) | @BeforeClass
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/test/utils/ArvadosClientMockedWebServerTest.java
class ArvadosClientMockedWebServerTest (line 14) | public class ArvadosClientMockedWebServerTest extends ArvadosClientUnitT...
method setUpServer (line 18) | @Before
method tearDownServer (line 23) | @After
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/test/utils/ArvadosClientUnitTest.java
class ArvadosClientUnitTest (line 15) | public class ArvadosClientUnitTest {
method validateConfiguration (line 19) | @BeforeClass
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/test/utils/FileTestUtils.java
class FileTestUtils (line 18) | public class FileTestUtils {
method createDirectory (line 28) | public static void createDirectory(String path) throws Exception {
method cleanDirectory (line 32) | public static void cleanDirectory(String directory) throws Exception {
method generateFile (line 36) | public static File generateFile(String path, long length) throws IOExc...
method generatePredefinedFiles (line 43) | public static List<File> generatePredefinedFiles() throws IOException {
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/test/utils/RequestMethod.java
type RequestMethod (line 10) | public enum RequestMethod {
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/utils/FileMergeTest.java
class FileMergeTest (line 21) | public class FileMergeTest {
method setUp (line 23) | @Before
method fileChunksAreMergedIntoOneFile (line 28) | @Test
method tearDown (line 44) | @After
FILE: contrib/java-sdk-v2/src/test/java/org/arvados/client/utils/FileSplitTest.java
class FileSplitTest (line 21) | public class FileSplitTest {
method setUp (line 23) | @Before
method fileIsDividedIntoSmallerChunks (line 28) | @Test
method tearDown (line 44) | @After
FILE: doc/js/bootstrap.js
function transitionEnd (line 24) | function transitionEnd() {
function removeElement (line 101) | function removeElement() {
function clearMenus (line 716) | function clearMenus(e) {
function getParent (line 728) | function getParent($this) {
function complete (line 1296) | function complete() {
function ScrollSpy (line 1550) | function ScrollSpy(element, options) {
function next (line 1746) | function next() {
FILE: doc/pysdk_pdoc.py
function main (line 51) | def main(arglist=None):
FILE: doc/zenweb-fix-body.rb
type ZenwebTextile (line 3) | module ZenwebTextile
type Zenweb (line 7) | module Zenweb
class Page (line 8) | class Page
method body (line 10) | def body
FILE: doc/zenweb-liquid.rb
type ZenwebLiquid (line 8) | module ZenwebLiquid
type Zenweb (line 12) | module Zenweb
class Page (line 14) | class Page
method render_liquid (line 16) | def render_liquid page, content
method liquid (line 22) | def liquid template, content, page, binding = TOPLEVEL_BINDING
class LiquidCode (line 46) | class LiquidCode < Liquid::Include
method initialize (line 49) | def initialize(tag_name, markup, tokens)
method render (line 61) | def render(context)
class LiquidCodeBlock (line 82) | class LiquidCodeBlock < Liquid::Block
method initialize (line 85) | def initialize(tag_name, markup, tokens)
method render (line 96) | def render(context)
FILE: doc/zenweb-textile.rb
type ZenwebTextile (line 7) | module ZenwebTextile
type Zenweb (line 11) | module Zenweb
class Page (line 12) | class Page
method render_textile (line 16) | def render_textile page, content
FILE: lib/boot/cert.go
constant stagingDirectoryURL (line 28) | stagingDirectoryURL = "https://acme-staging-v02.api.letsencrypt.org/dire...
type createCertificates (line 32) | type createCertificates struct
method String (line 34) | func (createCertificates) String() string {
method Run (line 38) | func (createCertificates) Run(ctx context.Context, fail func(error), s...
function bootAutoCert (line 62) | func bootAutoCert(ctx context.Context, fail func(error), super *Supervis...
function writeCert (line 130) | func writeCert(outdir, keyfile, certfile string, cert *tls.Certificate) ...
function createSelfSignedCert (line 203) | func createSelfSignedCert(ctx context.Context, fail func(error), super *...
FILE: lib/boot/cmd.go
type supervisedTask (line 23) | type supervisedTask interface
type bootCommand (line 36) | type bootCommand struct
method RunCommand (line 38) | func (bcmd bootCommand) RunCommand(prog string, args []string, stdin i...
method run (line 56) | func (bcmd bootCommand) run(ctx context.Context, prog string, args []s...
FILE: lib/boot/helpers.go
method ClientsWithToken (line 21) | func (super *Supervisor) ClientsWithToken(clusterID, token string) (cont...
method UserClients (line 46) | func (super *Supervisor) UserClients(clusterID string, rootctx context.C...
method RootClients (line 81) | func (super *Supervisor) RootClients(clusterID string) (context.Context,...
method AnonymousClients (line 87) | func (super *Supervisor) AnonymousClients(clusterID string) (context.Con...
method Conn (line 93) | func (super *Supervisor) Conn(clusterID string) *rpc.Conn {
FILE: lib/boot/nginx.go
type runNginx (line 26) | type runNginx struct
method String (line 28) | func (runNginx) String() string {
method Run (line 32) | func (runNginx) Run(ctx context.Context, fail func(error), super *Supe...
function internalSubnets (line 164) | func internalSubnets(logger logrus.FieldLogger) string {
FILE: lib/boot/passenger.go
type installPassenger (line 31) | type installPassenger struct
method String (line 37) | func (runner installPassenger) String() string {
method Run (line 41) | func (runner installPassenger) Run(ctx context.Context, fail func(erro...
type runPassenger (line 119) | type runPassenger struct
method String (line 126) | func (runner runPassenger) String() string {
method Run (line 130) | func (runner runPassenger) Run(ctx context.Context, fail func(error), ...
FILE: lib/boot/postgresql.go
type runPostgreSQL (line 26) | type runPostgreSQL struct
method String (line 28) | func (runPostgreSQL) String() string {
method Run (line 32) | func (runPostgreSQL) Run(ctx context.Context, fail func(error), super ...
FILE: lib/boot/rails_db.go
type railsDatabase (line 20) | type railsDatabase struct
method String (line 22) | func (runner railsDatabase) String() string {
method Run (line 30) | func (runner railsDatabase) Run(ctx context.Context, fail func(error),...
function migrationList (line 103) | func migrationList(dir string, log logrus.FieldLogger) (map[string]bool,...
FILE: lib/boot/rails_db_test.go
type railsDBSuite (line 16) | type railsDBSuite struct
method TestMigrationList (line 21) | func (s *railsDBSuite) TestMigrationList(c *check.C) {
FILE: lib/boot/service.go
type runServiceCommand (line 22) | type runServiceCommand struct
method String (line 28) | func (runner runServiceCommand) String() string {
method Run (line 32) | func (runner runServiceCommand) Run(ctx context.Context, fail func(err...
type runGoProgram (line 65) | type runGoProgram struct
method String (line 71) | func (runner runGoProgram) String() string {
method Run (line 76) | func (runner runGoProgram) Run(ctx context.Context, fail func(error), ...
FILE: lib/boot/supervisor.go
type Supervisor (line 39) | type Supervisor struct
method Clusters (line 90) | func (super *Supervisor) Clusters() map[string]*arvados.Cluster {
method Cluster (line 101) | func (super *Supervisor) Cluster(id string) *arvados.Cluster {
method Start (line 109) | func (super *Supervisor) Start(ctx context.Context) {
method Wait (line 196) | func (super *Supervisor) Wait() error {
method startFederation (line 204) | func (super *Supervisor) startFederation(cfg *arvados.Config) {
method runCluster (line 236) | func (super *Supervisor) runCluster() error {
method wait (line 434) | func (super *Supervisor) wait(ctx context.Context, tasks ...supervised...
method Stop (line 462) | func (super *Supervisor) Stop() {
method WaitReady (line 469) | func (super *Supervisor) WaitReady() bool {
method prependEnv (line 515) | func (super *Supervisor) prependEnv(key, prepend string) {
method cleanEnv (line 525) | func (super *Supervisor) cleanEnv(prefixes []string) {
method setEnv (line 542) | func (super *Supervisor) setEnv(key, val string) {
method installGoProgram (line 569) | func (super *Supervisor) installGoProgram(ctx context.Context, srcpath...
method setupRubyEnv (line 579) | func (super *Supervisor) setupRubyEnv() error {
method lookPath (line 612) | func (super *Supervisor) lookPath(prog string) string {
method RunProgram (line 641) | func (super *Supervisor) RunProgram(ctx context.Context, dir string, o...
method autofillConfig (line 771) | func (super *Supervisor) autofillConfig() error {
function dedupEnv (line 553) | func dedupEnv(in []string) []string {
type runOptions (line 626) | type runOptions struct
function addrIsLocal (line 938) | func addrIsLocal(addr string) (bool, error) {
function randomHexString (line 955) | func randomHexString(chars int) string {
function internalPort (line 964) | func internalPort(svc arvados.Service) (host, port string, err error) {
function externalPort (line 983) | func externalPort(svc arvados.Service) (string, error) {
function AvailablePort (line 1000) | func AvailablePort(host string) (string, error) {
function waitForConnect (line 1015) | func waitForConnect(ctx context.Context, addr string) error {
function copyConfig (line 1030) | func copyConfig(cfg *arvados.Config) *arvados.Config {
function watchConfig (line 1047) | func watchConfig(ctx context.Context, logger logrus.FieldLogger, cfgPath...
FILE: lib/boot/supervisor_test.go
function Test (line 15) | func Test(t *testing.T) {
type supervisorSuite (line 19) | type supervisorSuite struct
method TestAddrIsLocal (line 23) | func (s *supervisorSuite) TestAddrIsLocal(c *check.C) {
FILE: lib/boot/workbench2.go
type runWorkbench2 (line 19) | type runWorkbench2 struct
method String (line 23) | func (runner runWorkbench2) String() string {
method Run (line 27) | func (runner runWorkbench2) Run(ctx context.Context, fail func(error),...
FILE: lib/cli/external.go
function legacyFlagsToFront (line 40) | func legacyFlagsToFront(subcommand string, argsin []string) (argsout []s...
type apiCallCmd (line 51) | type apiCallCmd struct
method RunCommand (line 53) | func (cmd apiCallCmd) RunCommand(prog string, args []string, stdin io....
type rubyArvCmd (line 63) | type rubyArvCmd struct
method RunCommand (line 67) | func (rc rubyArvCmd) RunCommand(prog string, args []string, stdin io.R...
type externalCmd (line 72) | type externalCmd struct
method RunCommand (line 76) | func (ec externalCmd) RunCommand(prog string, args []string, stdin io....
FILE: lib/cli/flags.go
type LegacyFlagValues (line 14) | type LegacyFlagValues struct
function LegacyFlagSet (line 21) | func LegacyFlagSet() (cmd.FlagSet, *LegacyFlagValues) {
FILE: lib/cli/get.go
type getCmd (line 19) | type getCmd struct
method RunCommand (line 21) | func (getCmd) RunCommand(prog string, args []string, stdin io.Reader, ...
FILE: lib/cli/get_test.go
function Test (line 17) | func Test(t *testing.T) {
type GetSuite (line 23) | type GetSuite struct
method TestGetCollectionJSON (line 25) | func (s *GetSuite) TestGetCollectionJSON(c *check.C) {
FILE: lib/cloud/azure/azure.go
type azureInstanceSetConfig (line 39) | type azureInstanceSetConfig struct
type containerWrapper (line 59) | type containerWrapper interface
type virtualMachinesClientWrapper (line 64) | type virtualMachinesClientWrapper interface
type virtualMachinesClientImpl (line 73) | type virtualMachinesClientImpl struct
method createOrUpdate (line 77) | func (cl *virtualMachinesClientImpl) createOrUpdate(ctx context.Context,
method delete (line 91) | func (cl *virtualMachinesClientImpl) delete(ctx context.Context, resou...
method listComplete (line 100) | func (cl *virtualMachinesClientImpl) listComplete(ctx context.Context,...
type interfacesClientWrapper (line 105) | type interfacesClientWrapper interface
type interfacesClientImpl (line 114) | type interfacesClientImpl struct
method delete (line 118) | func (cl *interfacesClientImpl) delete(ctx context.Context, resourceGr...
method createOrUpdate (line 127) | func (cl *interfacesClientImpl) createOrUpdate(ctx context.Context,
method listComplete (line 141) | func (cl *interfacesClientImpl) listComplete(ctx context.Context, reso...
type disksClientWrapper (line 146) | type disksClientWrapper interface
type disksClientImpl (line 151) | type disksClientImpl struct
method listByResourceGroup (line 155) | func (cl *disksClientImpl) listByResourceGroup(ctx context.Context, re...
method delete (line 160) | func (cl *disksClientImpl) delete(ctx context.Context, resourceGroupNa...
type azureRateLimitError (line 167) | type azureRateLimitError struct
method EarliestRetry (line 172) | func (ar *azureRateLimitError) EarliestRetry() time.Time {
type azureQuotaError (line 176) | type azureQuotaError struct
method IsQuotaError (line 180) | func (ar *azureQuotaError) IsQuotaError() bool {
function wrapAzureError (line 184) | func wrapAzureError(err error) error {
type azureInstanceSet (line 222) | type azureInstanceSet struct
method setup (line 259) | func (az *azureInstanceSet) setup(azcfg azureInstanceSetConfig, dispat...
method cleanupNic (line 379) | func (az *azureInstanceSet) cleanupNic(nic network.Interface) {
method Create (line 386) | func (az *azureInstanceSet) Create(
method Instances (line 574) | func (az *azureInstanceSet) Instances(cloud.InstanceTags) ([]cloud.Ins...
method manageNics (line 607) | func (az *azureInstanceSet) manageNics() (map[string]network.Interface...
method manageBlobs (line 648) | func (az *azureInstanceSet) manageBlobs() {
method manageDisks (line 683) | func (az *azureInstanceSet) manageDisks() {
method InstanceQuotaGroup (line 711) | func (az *azureInstanceSet) InstanceQuotaGroup(arvados.InstanceType) c...
method Stop (line 716) | func (az *azureInstanceSet) Stop() {
function newAzureInstanceSet (line 242) | func newAzureInstanceSet(config json.RawMessage, dispatcherID cloud.Inst...
type azureInstance (line 724) | type azureInstance struct
method ID (line 730) | func (ai *azureInstance) ID() cloud.InstanceID {
method String (line 734) | func (ai *azureInstance) String() string {
method ProviderType (line 738) | func (ai *azureInstance) ProviderType() string {
method SetTags (line 742) | func (ai *azureInstance) SetTags(newTags cloud.InstanceTags) error {
method Tags (line 767) | func (ai *azureInstance) Tags() cloud.InstanceTags {
method Destroy (line 775) | func (ai *azureInstance) Destroy() error {
method Address (line 783) | func (ai *azureInstance) Address() string {
method PriceHistory (line 797) | func (ai *azureInstance) PriceHistory(arvados.InstanceType) []cloud.In...
method RemoteUser (line 801) | func (ai *azureInstance) RemoteUser() string {
method VerifyHostKey (line 805) | func (ai *azureInstance) VerifyHostKey(ssh.PublicKey, *ssh.Client) err...
FILE: lib/cloud/azure/azure_test.go
function Test (line 62) | func Test(t *testing.T) {
type AzureInstanceSetSuite (line 66) | type AzureInstanceSetSuite struct
method TestCreate (line 180) | func (*AzureInstanceSetSuite) TestCreate(c *check.C) {
method TestListInstances (line 220) | func (*AzureInstanceSetSuite) TestListInstances(c *check.C) {
method TestManageNics (line 236) | func (*AzureInstanceSetSuite) TestManageNics(c *check.C) {
method TestManageBlobs (line 246) | func (*AzureInstanceSetSuite) TestManageBlobs(c *check.C) {
method TestDestroyInstances (line 256) | func (*AzureInstanceSetSuite) TestDestroyInstances(c *check.C) {
method TestDeleteFake (line 270) | func (*AzureInstanceSetSuite) TestDeleteFake(c *check.C) {
method TestWrapError (line 286) | func (*AzureInstanceSetSuite) TestWrapError(c *check.C) {
method TestSetTags (line 319) | func (*AzureInstanceSetSuite) TestSetTags(c *check.C) {
method TestSSH (line 345) | func (*AzureInstanceSetSuite) TestSSH(c *check.C) {
constant testNamePrefix (line 70) | testNamePrefix = "compute-test123-"
type VirtualMachinesClientStub (line 72) | type VirtualMachinesClientStub struct
method createOrUpdate (line 76) | func (stub *VirtualMachinesClientStub) createOrUpdate(ctx context.Cont...
method delete (line 86) | func (*VirtualMachinesClientStub) delete(ctx context.Context, resource...
method listComplete (line 90) | func (*VirtualMachinesClientStub) listComplete(ctx context.Context, re...
type InterfacesClientStub (line 94) | type InterfacesClientStub struct
method createOrUpdate (line 96) | func (*InterfacesClientStub) createOrUpdate(ctx context.Context,
method delete (line 105) | func (*InterfacesClientStub) delete(ctx context.Context, resourceGroup...
method listComplete (line 109) | func (*InterfacesClientStub) listComplete(ctx context.Context, resourc...
type BlobContainerStub (line 113) | type BlobContainerStub struct
method GetBlobReference (line 115) | func (*BlobContainerStub) GetBlobReference(name string) *storage.Blob {
method ListBlobs (line 119) | func (*BlobContainerStub) ListBlobs(params storage.ListBlobsParameters...
type testConfig (line 123) | type testConfig struct
function GetInstanceSet (line 130) | func GetInstanceSet() (*azureInstanceSet, cloud.ImageID, arvados.Cluster...
function SetupSSHClient (line 374) | func SetupSSHClient(c *check.C, inst cloud.Instance) (*ssh.Client, error) {
function filterInstances (line 414) | func filterInstances(c *check.C, instances []cloud.Instance) []cloud.Ins...
FILE: lib/cloud/cloudtest/cmd.go
type command (line 25) | type command struct
method RunCommand (line 27) | func (command) RunCommand(prog string, args []string, stdin io.Reader,...
function chooseInstanceType (line 120) | func chooseInstanceType(cluster *arvados.Cluster, name string) (arvados....
FILE: lib/cloud/cloudtest/tester.go
type tester (line 29) | type tester struct
method Run (line 63) | func (t *tester) Run() bool {
method runWithDriverParameters (line 105) | func (t *tester) runWithDriverParameters(driverParameters json.RawMess...
method showLoginInfo (line 256) | func (t *tester) showLoginInfo() {
method refreshTestInstance (line 269) | func (t *tester) refreshTestInstance() error {
method getInstances (line 303) | func (t *tester) getInstances(tags cloud.InstanceTags) ([]cloud.Instan...
method checkTags (line 325) | func (t *tester) checkTags() bool {
method waitForBoot (line 345) | func (t *tester) waitForBoot(deadline time.Time) bool {
method updateExecutor (line 360) | func (t *tester) updateExecutor() {
method runShellCommand (line 370) | func (t *tester) runShellCommand(cmd string) error {
method destroyTestInstance (line 392) | func (t *tester) destroyTestInstance() bool {
method sleepSyncInterval (line 425) | func (t *tester) sleepSyncInterval() {
method sleepProbeInterval (line 430) | func (t *tester) sleepProbeInterval() {
function randomHex (line 437) | func randomHex(n int) string {
FILE: lib/cloud/cloudtest/tester_test.go
function Test (line 21) | func Test(t *testing.T) {
type TesterSuite (line 27) | type TesterSuite struct
method SetUpTest (line 34) | func (s *TesterSuite) SetUpTest(c *check.C) {
method TestSuccess (line 79) | func (s *TesterSuite) TestSuccess(c *check.C) {
method TestBootFail (line 85) | func (s *TesterSuite) TestBootFail(c *check.C) {
method TestShellCommandFail (line 92) | func (s *TesterSuite) TestShellCommandFail(c *check.C) {
FILE: lib/cloud/ec2/ec2.go
constant throttleDelayMin (line 45) | throttleDelayMin = time.Second
constant throttleDelayMax (line 46) | throttleDelayMax = time.Minute
type ec2InstanceSetConfig (line 49) | type ec2InstanceSetConfig struct
type sliceOrSingleString (line 63) | type sliceOrSingleString
method UnmarshalJSON (line 67) | func (ss *sliceOrSingleString) UnmarshalJSON(data []byte) error {
type ec2Interface (line 96) | type ec2Interface interface
type ec2InstanceSet (line 107) | type ec2InstanceSet struct
method Create (line 258) | func (instanceSet *ec2InstanceSet) Create(
method getKeyName (line 390) | func (instanceSet *ec2InstanceSet) getKeyName(publicKey ssh.PublicKey)...
method Instances (line 424) | func (instanceSet *ec2InstanceSet) Instances(tags cloud.InstanceTags) ...
method updateSpotPrices (line 514) | func (instanceSet *ec2InstanceSet) updateSpotPrices(instances []cloud....
method Stop (line 611) | func (instanceSet *ec2InstanceSet) Stop() {
method InstanceQuotaGroup (line 614) | func (instanceSet *ec2InstanceSet) InstanceQuotaGroup(it arvados.Insta...
function newEC2InstanceSet (line 126) | func newEC2InstanceSet(confRaw json.RawMessage, instanceSetID cloud.Inst...
function awsKeyFingerprints (line 212) | func awsKeyFingerprints(pk ssh.PublicKey) ([]string, error) {
function hexFingerprint (line 250) | func hexFingerprint(sum []byte) string {
type priceKey (line 506) | type priceKey struct
type ec2Instance (line 644) | type ec2Instance struct
method ID (line 650) | func (inst *ec2Instance) ID() cloud.InstanceID {
method String (line 654) | func (inst *ec2Instance) String() string {
method ProviderType (line 658) | func (inst *ec2Instance) ProviderType() string {
method SetTags (line 662) | func (inst *ec2Instance) SetTags(newTags cloud.InstanceTags) error {
method Tags (line 679) | func (inst *ec2Instance) Tags() cloud.InstanceTags {
method Destroy (line 689) | func (inst *ec2Instance) Destroy() error {
method Address (line 696) | func (inst *ec2Instance) Address() string {
method RemoteUser (line 703) | func (inst *ec2Instance) RemoteUser() string {
method VerifyHostKey (line 707) | func (inst *ec2Instance) VerifyHostKey(ssh.PublicKey, *ssh.Client) err...
method PriceHistory (line 735) | func (inst *ec2Instance) PriceHistory(instType arvados.InstanceType) [...
type rateLimitError (line 758) | type rateLimitError struct
method EarliestRetry (line 763) | func (err rateLimitError) EarliestRetry() time.Time {
type capacityError (line 767) | type capacityError struct
method IsCapacityError (line 773) | func (er *capacityError) IsCapacityError() bool {
method IsInstanceQuotaGroupSpecific (line 777) | func (er *capacityError) IsInstanceQuotaGroupSpecific() bool {
method IsInstanceTypeSpecific (line 781) | func (er *capacityError) IsInstanceTypeSpecific() bool {
function isErrorQuota (line 798) | func isErrorQuota(err error) bool {
function isErrorSubnetSpecific (line 812) | func isErrorSubnetSpecific(err error) bool {
function isErrorCapacity (line 834) | func isErrorCapacity(err error) (instcap bool, groupcap bool) {
type ec2QuotaError (line 850) | type ec2QuotaError struct
method IsQuotaError (line 854) | func (er *ec2QuotaError) IsQuotaError() bool {
function isThrottleError (line 858) | func isThrottleError(err error) bool {
function wrapError (line 867) | func wrapError(err error, throttleValue *atomic.Value) error {
FILE: lib/cloud/ec2/ec2_test.go
function Test (line 56) | func Test(t *testing.T) {
type sliceOrStringSuite (line 60) | type sliceOrStringSuite struct
method TestUnmarshal (line 64) | func (s *sliceOrStringSuite) TestUnmarshal(c *check.C) {
type EC2InstanceSetSuite (line 88) | type EC2InstanceSetSuite struct
method TestCreate (line 260) | func (*EC2InstanceSetSuite) TestCreate(c *check.C) {
method TestCreateWithExtraScratch (line 286) | func (*EC2InstanceSetSuite) TestCreateWithExtraScratch(c *check.C) {
method TestCreatePreemptible (line 307) | func (*EC2InstanceSetSuite) TestCreatePreemptible(c *check.C) {
method TestCreateFailoverSecondSubnet (line 324) | func (*EC2InstanceSetSuite) TestCreateFailoverSecondSubnet(c *check.C) {
method TestIsErrorSubnetSpecific (line 363) | func (*EC2InstanceSetSuite) TestIsErrorSubnetSpecific(c *check.C) {
method TestCreateAllSubnetsFailing (line 414) | func (*EC2InstanceSetSuite) TestCreateAllSubnetsFailing(c *check.C) {
method TestCreateOneSubnetFailingCapacity (line 456) | func (*EC2InstanceSetSuite) TestCreateOneSubnetFailingCapacity(c *chec...
method TestTagInstances (line 487) | func (*EC2InstanceSetSuite) TestTagInstances(c *check.C) {
method TestListInstances (line 499) | func (*EC2InstanceSetSuite) TestListInstances(c *check.C) {
method TestDestroyInstances (line 515) | func (*EC2InstanceSetSuite) TestDestroyInstances(c *check.C) {
method TestInstancePriceHistory (line 525) | func (*EC2InstanceSetSuite) TestInstancePriceHistory(c *check.C) {
method TestWrapError (line 590) | func (*EC2InstanceSetSuite) TestWrapError(c *check.C) {
method TestInstanceQuotaGroup (line 636) | func (*EC2InstanceSetSuite) TestInstanceQuotaGroup(c *check.C) {
method TestAWSKeyFingerprints (line 672) | func (*EC2InstanceSetSuite) TestAWSKeyFingerprints(c *check.C) {
type testConfig (line 92) | type testConfig struct
type ec2stub (line 97) | type ec2stub struct
method ImportKeyPair (line 108) | func (e *ec2stub) ImportKeyPair(ctx context.Context, input *ec2.Import...
method DescribeKeyPairs (line 113) | func (e *ec2stub) DescribeKeyPairs(ctx context.Context, input *ec2.Des...
method RunInstances (line 118) | func (e *ec2stub) RunInstances(ctx context.Context, input *ec2.RunInst...
method DescribeInstances (line 133) | func (e *ec2stub) DescribeInstances(ctx context.Context, input *ec2.De...
method DescribeInstanceStatus (line 153) | func (e *ec2stub) DescribeInstanceStatus(ctx context.Context, input *e...
method DescribeSpotPriceHistory (line 165) | func (e *ec2stub) DescribeSpotPriceHistory(ctx context.Context, input ...
method CreateTags (line 199) | func (e *ec2stub) CreateTags(ctx context.Context, input *ec2.CreateTag...
method TerminateInstances (line 203) | func (e *ec2stub) TerminateInstances(ctx context.Context, input *ec2.T...
function GetInstanceSet (line 212) | func GetInstanceSet(c *check.C, conf string) (*ec2InstanceSet, cloud.Ima...
FILE: lib/cloud/interfaces.go
type RateLimitError (line 22) | type RateLimitError interface
type QuotaError (line 32) | type QuotaError interface
type CapacityError (line 44) | type CapacityError interface
type SharedResourceTags (line 58) | type SharedResourceTags
type InstanceSetID (line 59) | type InstanceSetID
type InstanceTags (line 60) | type InstanceTags
type InstanceID (line 61) | type InstanceID
type InstanceQuotaGroup (line 62) | type InstanceQuotaGroup
type ImageID (line 63) | type ImageID
type Executor (line 66) | type Executor interface
type ExecutorTarget (line 85) | type ExecutorTarget interface
type Instance (line 105) | type Instance interface
type InstanceSet (line 140) | type InstanceSet interface
type InstancePrice (line 178) | type InstancePrice struct
type InitCommand (line 183) | type InitCommand
type Driver (line 230) | type Driver interface
function DriverFunc (line 236) | func DriverFunc(fn func(config json.RawMessage, id InstanceSetID, tags S...
type driverFunc (line 240) | type driverFunc
method InstanceSet (line 242) | func (df driverFunc) InstanceSet(config json.RawMessage, id InstanceSe...
FILE: lib/cloud/loopback/loopback.go
type quotaError (line 37) | type quotaError
method IsQuotaError (line 39) | func (e quotaError) IsQuotaError() bool { return true }
method Error (line 40) | func (e quotaError) Error() string { return string(e) }
type instanceSet (line 42) | type instanceSet struct
method Create (line 57) | func (is *instanceSet) Create(it arvados.InstanceType, _ cloud.ImageID...
method Instances (line 107) | func (is *instanceSet) Instances(cloud.InstanceTags) ([]cloud.Instance...
method InstanceQuotaGroup (line 117) | func (is *instanceSet) InstanceQuotaGroup(arvados.InstanceType) cloud....
method Stop (line 121) | func (is *instanceSet) Stop() {
function newInstanceSet (line 49) | func newInstanceSet(config json.RawMessage, instanceSetID cloud.Instance...
type instance (line 129) | type instance struct
method ID (line 138) | func (i *instance) ID() cloud.InstanceID ...
method String (line 139) | func (i *instance) String() string ...
method ProviderType (line 140) | func (i *instance) ProviderType() string ...
method Address (line 141) | func (i *instance) Address() string ...
method PriceHistory (line 142) | func (i *instance) PriceHistory(arvados.InstanceType) []cloud.Instance...
method RemoteUser (line 143) | func (i *instance) RemoteUser() string ...
method Tags (line 144) | func (i *instance) Tags() cloud.InstanceTags ...
method SetTags (line 145) | func (i *instance) SetTags(tags cloud.InstanceTags) error {
method Destroy (line 149) | func (i *instance) Destroy() error {
method VerifyHostKey (line 155) | func (i *instance) VerifyHostKey(pubkey ssh.PublicKey, _ *ssh.Client) ...
method sshExecFunc (line 161) | func (i *instance) sshExecFunc(env map[string]string, command string, ...
FILE: lib/cloud/loopback/loopback_test.go
function Test (line 22) | func Test(t *testing.T) {
type suite (line 26) | type suite struct
method TestCreateListExecDestroy (line 30) | func (*suite) TestCreateListExecDestroy(c *check.C) {
FILE: lib/cloud/price.go
function NormalizePriceHistory (line 13) | func NormalizePriceHistory(prices []InstancePrice) []InstancePrice {
FILE: lib/cloud/price_test.go
function Test (line 14) | func Test(t *testing.T) { TestingT(t) }
type cloudSuite (line 16) | type cloudSuite struct
method TestNormalizePriceHistory (line 20) | func (s *cloudSuite) TestNormalizePriceHistory(c *C) {
FILE: lib/cmd/cmd.go
constant EXIT_INVALIDARGUMENT (line 24) | EXIT_INVALIDARGUMENT = 2
type Handler (line 26) | type Handler interface
type HandlerFunc (line 30) | type HandlerFunc
method RunCommand (line 32) | func (f HandlerFunc) RunCommand(prog string, args []string, stdin io.R...
type versionCommand (line 49) | type versionCommand struct
method String (line 51) | func (versionCommand) String() string {
method Commit (line 55) | func (versionCommand) Commit() string {
method RunCommand (line 66) | func (versionCommand) RunCommand(prog string, args []string, stdin io....
type Multi (line 86) | type Multi
method RunCommand (line 88) | func (m Multi) RunCommand(prog string, args []string, stdin io.Reader,...
method Usage (line 119) | func (m Multi) Usage(stderr io.Writer) {
method listSubcommands (line 124) | func (m Multi) listSubcommands(out io.Writer, prefix string) {
type FlagSet (line 146) | type FlagSet interface
function SubcommandToFront (line 163) | func SubcommandToFront(args []string, flagset FlagSet) []string {
type NoPrefixFormatter (line 179) | type NoPrefixFormatter struct
method Format (line 181) | func (NoPrefixFormatter) Format(entry *logrus.Entry) ([]byte, error) {
FILE: lib/cmd/cmd_test.go
function Test (line 20) | func Test(t *testing.T) {
type CmdSuite (line 26) | type CmdSuite struct
method TestHello (line 35) | func (s *CmdSuite) TestHello(c *check.C) {
method TestHelloViaProg (line 45) | func (s *CmdSuite) TestHelloViaProg(c *check.C) {
method TestUsage (line 55) | func (s *CmdSuite) TestUsage(c *check.C) {
method TestSubcommandToFront (line 65) | func (s *CmdSuite) TestSubcommandToFront(c *check.C) {
FILE: lib/cmd/parseflags.go
function ParseFlags (line 30) | func ParseFlags(f FlagSet, prog string, args []string, positional string...
FILE: lib/cmdtest/leakcheck.go
function LeakCheck (line 30) | func LeakCheck(c *check.C) func() {
FILE: lib/config/cmd.go
type dumpCommand (line 25) | type dumpCommand struct
method RunCommand (line 27) | func (dumpCommand) RunCommand(prog string, args []string, stdin io.Rea...
type checkCommand (line 63) | type checkCommand struct
method RunCommand (line 65) | func (checkCommand) RunCommand(prog string, args []string, stdin io.Re...
type defaultsCommand (line 180) | type defaultsCommand struct
method RunCommand (line 182) | func (defaultsCommand) RunCommand(prog string, args []string, stdin io...
FILE: lib/config/cmd_test.go
type CommandSuite (line 25) | type CommandSuite struct
method SetUpSuite (line 27) | func (s *CommandSuite) SetUpSuite(c *check.C) {
method TestDump_BadArg (line 33) | func (s *CommandSuite) TestDump_BadArg(c *check.C) {
method TestDump_EmptyInput (line 40) | func (s *CommandSuite) TestDump_EmptyInput(c *check.C) {
method TestCheck_NoWarnings (line 47) | func (s *CommandSuite) TestCheck_NoWarnings(c *check.C) {
method TestCheck_VocabularyErrors (line 79) | func (s *CommandSuite) TestCheck_VocabularyErrors(c *check.C) {
method TestCheck_DeprecatedKeys (line 131) | func (s *CommandSuite) TestCheck_DeprecatedKeys(c *check.C) {
method TestCheck_OldKeepstoreConfigFile (line 144) | func (s *CommandSuite) TestCheck_OldKeepstoreConfigFile(c *check.C) {
method TestCheck_UnknownKey (line 164) | func (s *CommandSuite) TestCheck_UnknownKey(c *check.C) {
method TestCheck_DuplicateWarnings (line 188) | func (s *CommandSuite) TestCheck_DuplicateWarnings(c *check.C) {
method TestDump_Formatting (line 200) | func (s *CommandSuite) TestDump_Formatting(c *check.C) {
method TestDump_UnknownKey (line 219) | func (s *CommandSuite) TestDump_UnknownKey(c *check.C) {
method TestDump_KeyOrder (line 235) | func (s *CommandSuite) TestDump_KeyOrder(c *check.C) {
method TestCheck_KeyOrder (line 261) | func (s *CommandSuite) TestCheck_KeyOrder(c *check.C) {
FILE: lib/config/default.go
function DefaultCluster (line 16) | func DefaultCluster(c *C, clusterID string) (arvados.Cluster, error) {
FILE: lib/config/deprecated.go
type deprRequestLimits (line 19) | type deprRequestLimits struct
type deprCluster (line 24) | type deprCluster struct
type deprecatedConfig (line 45) | type deprecatedConfig struct
type nodeProfile (line 49) | type nodeProfile struct
type systemServiceInstance (line 62) | type systemServiceInstance struct
method applyDeprecatedConfig (line 68) | func (ldr *Loader) applyDeprecatedConfig(cfg *arvados.Config) error {
method applyDeprecatedVolumeDriverParameters (line 131) | func (ldr *Loader) applyDeprecatedVolumeDriverParameters(cfg *arvados.Co...
function applyDeprecatedNodeProfile (line 174) | func applyDeprecatedNodeProfile(hostname string, ssi systemServiceInstan...
method loadOldConfigHelper (line 192) | func (ldr *Loader) loadOldConfigHelper(component, path string, target in...
type oldCrunchDispatchSlurmConfig (line 210) | type oldCrunchDispatchSlurmConfig struct
constant defaultCrunchDispatchSlurmConfigPath (line 234) | defaultCrunchDispatchSlurmConfigPath = "/etc/arvados/crunch-dispatch-slu...
function loadOldClientConfig (line 236) | func loadOldClientConfig(cluster *arvados.Cluster, client *arvados.Clien...
method loadOldCrunchDispatchSlurmConfig (line 264) | func (ldr *Loader) loadOldCrunchDispatchSlurmConfig(cfg *arvados.Config)...
type oldWsConfig (line 314) | type oldWsConfig struct
constant defaultWebsocketConfigPath (line 329) | defaultWebsocketConfigPath = "/etc/arvados/ws/ws.yml"
method loadOldWebsocketConfig (line 332) | func (ldr *Loader) loadOldWebsocketConfig(cfg *arvados.Config) error {
type oldKeepProxyConfig (line 383) | type oldKeepProxyConfig struct
constant defaultKeepproxyConfigPath (line 395) | defaultKeepproxyConfigPath = "/etc/arvados/keepproxy/keepproxy.yml"
method loadOldKeepproxyConfig (line 397) | func (ldr *Loader) loadOldKeepproxyConfig(cfg *arvados.Config) error {
constant defaultKeepWebConfigPath (line 455) | defaultKeepWebConfigPath = "/etc/arvados/keep-web/keep-web.yml"
type oldKeepWebConfig (line 457) | type oldKeepWebConfig struct
method loadOldKeepWebConfig (line 482) | func (ldr *Loader) loadOldKeepWebConfig(cfg *arvados.Config) error {
constant defaultKeepBalanceConfigPath (line 533) | defaultKeepBalanceConfigPath = "/etc/arvados/keep-balance/keep-balance.yml"
type oldKeepBalanceConfig (line 535) | type oldKeepBalanceConfig struct
method loadOldKeepBalanceConfig (line 548) | func (ldr *Loader) loadOldKeepBalanceConfig(cfg *arvados.Config) error {
method loadOldEnvironmentVariables (line 608) | func (ldr *Loader) loadOldEnvironmentVariables(cfg *arvados.Config) error {
FILE: lib/config/deprecated_keepstore.go
constant defaultKeepstoreConfigPath (line 25) | defaultKeepstoreConfigPath = "/etc/arvados/keepstore/keepstore.yml"
type oldKeepstoreConfig (line 27) | type oldKeepstoreConfig struct
type oldKeepstoreVolumeList (line 58) | type oldKeepstoreVolumeList
type oldKeepstoreVolume (line 60) | type oldKeepstoreVolume struct
method loadOldKeepstoreConfig (line 99) | func (ldr *Loader) loadOldKeepstoreConfig(cfg *arvados.Config) error {
method migrateOldKeepstoreVolumes (line 239) | func (ldr *Loader) migrateOldKeepstoreVolumes(cluster *arvados.Cluster, ...
method translateOldKeepstoreVolume (line 307) | func (ldr *Loader) translateOldKeepstoreVolume(oldvol oldKeepstoreVolume...
method alreadyMigrated (line 384) | func (ldr *Loader) alreadyMigrated(oldvol oldKeepstoreVolume, newvols ma...
method discoverLocalVolumes (line 420) | func (ldr *Loader) discoverLocalVolumes(cluster *arvados.Cluster, mounts...
function array2boolmap (line 484) | func array2boolmap(keys []string) map[string]bool {
function newUUID (line 492) | func newUUID(clusterID, infix string) string {
function findKeepServicesItem (line 506) | func findKeepServicesItem(cluster *arvados.Cluster, listen string) (uuid...
function keepServiceURL (line 536) | func keepServiceURL(ks arvados.KeepService) arvados.URL {
function keepServiceIsMe (line 566) | func keepServiceIsMe(ks arvados.KeepService, hostname string, listen str...
method checkPendingKeepstoreMigrations (line 588) | func (ldr *Loader) checkPendingKeepstoreMigrations(cluster *arvados.Clus...
method checkEmptyKeepstores (line 658) | func (ldr *Loader) checkEmptyKeepstores(cluster arvados.Cluster) error {
method checkUnlistedKeepstores (line 677) | func (ldr *Loader) checkUnlistedKeepstores(cluster arvados.Cluster) error {
FILE: lib/config/deprecated_keepstore_test.go
type KeepstoreMigrationSuite (line 25) | type KeepstoreMigrationSuite struct
method SetUpSuite (line 32) | func (s *KeepstoreMigrationSuite) SetUpSuite(c *check.C) {
method checkEquivalentWithKeepstoreConfig (line 70) | func (s *KeepstoreMigrationSuite) checkEquivalentWithKeepstoreConfig(c...
method TestDeprecatedKeepstoreConfig (line 85) | func (s *KeepstoreMigrationSuite) TestDeprecatedKeepstoreConfig(c *che...
method TestDiscoverLocalVolumes (line 148) | func (s *KeepstoreMigrationSuite) TestDiscoverLocalVolumes(c *check.C) {
method TestDeprecatedVolumes (line 188) | func (s *KeepstoreMigrationSuite) TestDeprecatedVolumes(c *check.C) {
method testDeprecatedVolume (line 308) | func (s *KeepstoreMigrationSuite) testDeprecatedVolume(c *check.C, old...
method TestIncrementalVolumeMigration_AlreadyMigrated (line 358) | func (s *KeepstoreMigrationSuite) TestIncrementalVolumeMigration_Alrea...
method TestIncrementalVolumeMigration_UpdateUUID (line 373) | func (s *KeepstoreMigrationSuite) TestIncrementalVolumeMigration_Updat...
method TestIncrementalVolumeMigration_AddCloudVolume (line 397) | func (s *KeepstoreMigrationSuite) TestIncrementalVolumeMigration_AddCl...
method TestIncrementalVolumeMigration_AddLocalVolume (line 425) | func (s *KeepstoreMigrationSuite) TestIncrementalVolumeMigration_AddLo...
method TestIncrementalVolumeMigration_LocalVolumeAlreadyMigrated (line 445) | func (s *KeepstoreMigrationSuite) TestIncrementalVolumeMigration_Local...
method TestIncrementalVolumeMigration_AddMultipleCloudVolumes (line 458) | func (s *KeepstoreMigrationSuite) TestIncrementalVolumeMigration_AddMu...
method TestIncrementalVolumeMigration_UpdateWithReadOnly (line 502) | func (s *KeepstoreMigrationSuite) TestIncrementalVolumeMigration_Updat...
method TestIncrementalVolumeMigration_UpdateAlreadyWritable (line 530) | func (s *KeepstoreMigrationSuite) TestIncrementalVolumeMigration_Updat...
method TestIncrementalVolumeMigration_AddReadOnly (line 557) | func (s *KeepstoreMigrationSuite) TestIncrementalVolumeMigration_AddRe...
method TestPendingKeepstoreMigrations (line 582) | func (s *KeepstoreMigrationSuite) TestPendingKeepstoreMigrations(c *ch...
method loadWithKeepstoreConfig (line 687) | func (s *KeepstoreMigrationSuite) loadWithKeepstoreConfig(c *check.C, ...
method logsWithKeepstoreConfig (line 707) | func (s *KeepstoreMigrationSuite) logsWithKeepstoreConfig(c *check.C, ...
method clusterConfigYAML (line 723) | func (s *KeepstoreMigrationSuite) clusterConfigYAML(c *check.C) string {
method findAddedVolumes (line 743) | func (s *KeepstoreMigrationSuite) findAddedVolumes(c *check.C, before,...
method getTestKeepstorePortAndMatchingVolumeUUID (line 755) | func (s *KeepstoreMigrationSuite) getTestKeepstorePortAndMatchingVolum...
method TestKeepServiceIsMe (line 764) | func (s *KeepstoreMigrationSuite) TestKeepServiceIsMe(c *check.C) {
constant clusterConfigForKeepstoreMigrationTest (line 610) | clusterConfigForKeepstoreMigrationTest = `
FILE: lib/config/deprecated_test.go
constant TestServerManagementToken (line 19) | TestServerManagementToken = "e687950a23c3a9bceec28c6223a06c79"
function testLoadLegacyConfig (line 21) | func testLoadLegacyConfig(content []byte, mungeFlag string, c *check.C) ...
method TestOldEmailConfiguration (line 52) | func (s *LoadSuite) TestOldEmailConfiguration(c *check.C) {
method TestLegacyVolumeDriverParameters (line 72) | func (s *LoadSuite) TestLegacyVolumeDriverParameters(c *check.C) {
method TestDeprecatedNodeProfilesToServices (line 114) | func (s *LoadSuite) TestDeprecatedNodeProfilesToServices(c *check.C) {
method TestDeprecatedLoginBackend (line 156) | func (s *LoadSuite) TestDeprecatedLoginBackend(c *check.C) {
method TestLegacyKeepWebConfig (line 191) | func (s *LoadSuite) TestLegacyKeepWebConfig(c *check.C) {
method TestLegacyKeepWebConfigDoesntDisableMissingItems (line 234) | func (s *LoadSuite) TestLegacyKeepWebConfigDoesntDisableMissingItems(c *...
method TestLegacyKeepproxyConfig (line 250) | func (s *LoadSuite) TestLegacyKeepproxyConfig(c *check.C) {
function fmtKeepproxyConfig (line 287) | func fmtKeepproxyConfig(param string, debugLog bool) string {
method TestLegacyKeepBalanceConfig (line 306) | func (s *LoadSuite) TestLegacyKeepBalanceConfig(c *check.C) {
function fmtKeepBalanceConfig (line 342) | func fmtKeepBalanceConfig(param string) string {
method TestDeprecatedCUDA (line 363) | func (s *LoadSuite) TestDeprecatedCUDA(c *check.C) {
FILE: lib/config/export.go
function ExportJSON (line 19) | func ExportJSON(w io.Writer, cluster *arvados.Cluster) error {
function redactUnsafe (line 306) | func redactUnsafe(m map[string]interface{}, mPrefix, lookupPrefix string...
FILE: lib/config/export_test.go
type ExportSuite (line 17) | type ExportSuite struct
method TestExport (line 19) | func (s *ExportSuite) TestExport(c *check.C) {
FILE: lib/config/load.go
type Loader (line 38) | type Loader struct
method SetupFlags (line 82) | func (ldr *Loader) SetupFlags(flagset *flag.FlagSet) {
method MungeLegacyConfigArgs (line 110) | func (ldr *Loader) MungeLegacyConfigArgs(lgr logrus.FieldLogger, args ...
method loadBytes (line 176) | func (ldr *Loader) loadBytes(path string) (buf []byte, sourceTime, loa...
method Load (line 197) | func (ldr *Loader) Load() (*arvados.Config, error) {
method checkClusterID (line 361) | func (ldr *Loader) checkClusterID(label, clusterID string, emptyString...
method checkToken (line 373) | func (ldr *Loader) checkToken(label, token string, mandatory bool, acc...
method checkEnum (line 409) | func (ldr *Loader) checkEnum(label, value string, accepted ...string) ...
method setLoopbackInstanceType (line 418) | func (ldr *Loader) setLoopbackInstanceType(cfg *arvados.Config) error {
method setImplicitStorageClasses (line 480) | func (ldr *Loader) setImplicitStorageClasses(cfg *arvados.Config) error {
method checkLocalKeepBlobBuffers (line 503) | func (ldr *Loader) checkLocalKeepBlobBuffers(cc arvados.Cluster) error {
method checkStorageClasses (line 521) | func (ldr *Loader) checkStorageClasses(cc arvados.Cluster) error {
method checkGPUVersions (line 549) | func (ldr *Loader) checkGPUVersions(cc arvados.Cluster) error {
method logExtraKeys (line 595) | func (ldr *Loader) logExtraKeys(expected, supplied map[string]interfac...
method autofillPreemptible (line 640) | func (ldr *Loader) autofillPreemptible(label string, cc *arvados.Clust...
method RegisterMetrics (line 664) | func (ldr *Loader) RegisterMetrics(reg *prometheus.Registry) {
function NewLoader (line 64) | func NewLoader(stdin io.Reader, logger logrus.FieldLogger) *Loader {
function getFilesystemSize (line 453) | func getFilesystemSize(path string) (arvados.ByteSize, error) {
function getHostRAM (line 464) | func getHostRAM() (arvados.ByteSize, error) {
function checkKeyConflict (line 563) | func checkKeyConflict(label string, m map[string]string) error {
function removeNullKeys (line 575) | func removeNullKeys(m map[string]interface{}) {
function removeSampleKeys (line 586) | func removeSampleKeys(m map[string]interface{}) {
function LoadSSHKey (line 687) | func LoadSSHKey(confvalue string) (ssh.Signer, error) {
FILE: lib/config/load_test.go
function Test (line 32) | func Test(t *testing.T) {
function testLoader (line 43) | func testLoader(c *check.C, configdata string, logdst io.Writer) *Loader {
type LoadSuite (line 55) | type LoadSuite struct
method SetUpSuite (line 57) | func (s *LoadSuite) SetUpSuite(c *check.C) {
method TestEmpty (line 63) | func (s *LoadSuite) TestEmpty(c *check.C) {
method TestNoConfigs (line 69) | func (s *LoadSuite) TestNoConfigs(c *check.C) {
method TestNullKeyDoesNotOverrideDefault (line 80) | func (s *LoadSuite) TestNullKeyDoesNotOverrideDefault(c *check.C) {
method TestMungeLegacyConfigArgs (line 92) | func (s *LoadSuite) TestMungeLegacyConfigArgs(c *check.C) {
method TestSampleKeys (line 179) | func (s *LoadSuite) TestSampleKeys(c *check.C) {
method TestMultipleClusters (line 197) | func (s *LoadSuite) TestMultipleClusters(c *check.C) {
method TestDeprecatedOrUnknownWarning (line 210) | func (s *LoadSuite) TestDeprecatedOrUnknownWarning(c *check.C) {
method checkSAMPLEKeys (line 252) | func (s *LoadSuite) checkSAMPLEKeys(c *check.C, path string, x interfa...
method TestDefaultConfigHasAllSAMPLEKeys (line 282) | func (s *LoadSuite) TestDefaultConfigHasAllSAMPLEKeys(c *check.C) {
method TestNoUnrecognizedKeysInDefaultConfig (line 290) | func (s *LoadSuite) TestNoUnrecognizedKeysInDefaultConfig(c *check.C) {
method TestNoWarningsForDumpedConfig (line 312) | func (s *LoadSuite) TestNoWarningsForDumpedConfig(c *check.C) {
method TestUnacceptableTokens (line 342) | func (s *LoadSuite) TestUnacceptableTokens(c *check.C) {
method TestPostgreSQLKeyConflict (line 363) | func (s *LoadSuite) TestPostgreSQLKeyConflict(c *check.C) {
method TestBadClusterIDs (line 375) | func (s *LoadSuite) TestBadClusterIDs(c *check.C) {
method TestBadType (line 414) | func (s *LoadSuite) TestBadType(c *check.C) {
method TestMovedKeys (line 450) | func (s *LoadSuite) TestMovedKeys(c *check.C) {
method TestListKeys (line 569) | func (s *LoadSuite) TestListKeys(c *check.C) {
method TestLoopbackInstanceTypes (line 605) | func (s *LoadSuite) TestLoopbackInstanceTypes(c *check.C) {
method TestWarnUnusedLocalKeep (line 654) | func (s *LoadSuite) TestWarnUnusedLocalKeep(c *check.C) {
method TestImplicitStorageClasses (line 679) | func (s *LoadSuite) TestImplicitStorageClasses(c *check.C) {
method TestPreemptiblePriceFactor (line 791) | func (s *LoadSuite) TestPreemptiblePriceFactor(c *check.C) {
method TestSourceTimestamp (line 860) | func (s *LoadSuite) TestSourceTimestamp(c *check.C) {
method TestGetHostRAM (line 898) | func (s *LoadSuite) TestGetHostRAM(c *check.C) {
method TestGetFilesystemSize (line 904) | func (s *LoadSuite) TestGetFilesystemSize(c *check.C) {
method TestLoadSSHKey (line 911) | func (s *LoadSuite) TestLoadSSHKey(c *check.C) {
method TestLoadSSHKeyTypes (line 918) | func (s *LoadSuite) TestLoadSSHKeyTypes(c *check.C) {
function checkEquivalent (line 482) | func checkEquivalent(c *check.C, goty, expectedy string) string {
function checkEqualYAML (line 490) | func checkEqualYAML(c *check.C, got, expected interface{}) {
function checkEquivalentLoaders (line 515) | func checkEquivalentLoaders(c *check.C, gotldr, expectedldr *Loader) {
function checkListKeys (line 529) | func checkListKeys(path string, x interface{}) (err error) {
FILE: lib/config/uptodate_test.go
function TestUpToDate (line 13) | func TestUpToDate(t *testing.T) {
FILE: lib/controller/api/routable.go
type RoutableFunc (line 17) | type RoutableFunc
type RoutableFuncWrapper (line 19) | type RoutableFuncWrapper
function ComposeWrappers (line 23) | func ComposeWrappers(wraps ...RoutableFuncWrapper) RoutableFuncWrapper {
FILE: lib/controller/auth_test.go
type AuthSuite (line 28) | type AuthSuite struct
method SetUpTest (line 46) | func (s *AuthSuite) SetUpTest(c *check.C) {
method TestLocalOIDCAccessToken (line 110) | func (s *AuthSuite) TestLocalOIDCAccessToken(c *check.C) {
FILE: lib/controller/cmd.go
function newHandler (line 19) | func newHandler(ctx context.Context, cluster *arvados.Cluster, _ string,...
FILE: lib/controller/dblock/dblock.go
type DBLocker (line 31) | type DBLocker struct
method Lock (line 42) | func (dbl *DBLocker) Lock(ctx context.Context, getdb func(context.Cont...
method Check (line 117) | func (dbl *DBLocker) Check() bool {
method Unlock (line 136) | func (dbl *DBLocker) Unlock() {
FILE: lib/controller/dblock/dblock_test.go
function Test (line 23) | func Test(t *testing.T) {
type suite (line 29) | type suite struct
method SetUpSuite (line 37) | func (s *suite) SetUpSuite(c *check.C) {
method TestLock (line 46) | func (s *suite) TestLock(c *check.C) {
FILE: lib/controller/fed_generic.go
type federatedRequestDelegate (line 20) | type federatedRequestDelegate
type genericFederatedRequestHandler (line 29) | type genericFederatedRequestHandler struct
method remoteQueryUUIDs (line 36) | func (h *genericFederatedRequestHandler) remoteQueryUUIDs(w http.Respo...
method handleMultiClusterQuery (line 113) | func (h *genericFederatedRequestHandler) handleMultiClusterQuery(w htt...
method ServeHTTP (line 257) | func (h *genericFederatedRequestHandler) ServeHTTP(w http.ResponseWrit...
type multiClusterQueryResponseCollector (line 311) | type multiClusterQueryResponseCollector struct
method collectResponse (line 318) | func (c *multiClusterQueryResponseCollector) collectResponse(resp *htt...
FILE: lib/controller/federation.go
method remoteClusterRequest (line 34) | func (h *Handler) remoteClusterRequest(remoteID string, req *http.Reques...
function loadParamsFromForm (line 64) | func loadParamsFromForm(req *http.Request) error {
method setupProxyRemoteCluster (line 92) | func (h *Handler) setupProxyRemoteCluster(next http.Handler) http.Handler {
type CurrentUser (line 126) | type CurrentUser struct
method validateAPItoken (line 143) | func (h *Handler) validateAPItoken(req *http.Request, token string) (*Cu...
method createAPItoken (line 188) | func (h *Handler) createAPItoken(req *http.Request, userUUID string, sco...
method saltAuthToken (line 231) | func (h *Handler) saltAuthToken(req *http.Request, remote string) (updat...
FILE: lib/controller/federation/collection_test.go
type collectionSuite (line 23) | type collectionSuite struct
method TestMultipleBackendFailureStatus (line 27) | func (s *collectionSuite) TestMultipleBackendFailureStatus(c *check.C) {
FILE: lib/controller/federation/conn.go
type Conn (line 31) | type Conn struct
method chooseBackend (line 132) | func (conn *Conn) chooseBackend(id string) backend {
method localOrLoginCluster (line 149) | func (conn *Conn) localOrLoginCluster() backend {
method tryLocalThenRemotes (line 164) | func (conn *Conn) tryLocalThenRemotes(ctx context.Context, forwardedFo...
method CollectionCreate (line 208) | func (conn *Conn) CollectionCreate(ctx context.Context, options arvado...
method CollectionUpdate (line 212) | func (conn *Conn) CollectionUpdate(ctx context.Context, options arvado...
method ConfigGet (line 222) | func (conn *Conn) ConfigGet(ctx context.Context) (json.RawMessage, err...
method VocabularyGet (line 228) | func (conn *Conn) VocabularyGet(ctx context.Context) (arvados.Vocabula...
method DiscoveryDocument (line 232) | func (conn *Conn) DiscoveryDocument(ctx context.Context) (arvados.Disc...
method Login (line 236) | func (conn *Conn) Login(ctx context.Context, options arvados.LoginOpti...
method Logout (line 264) | func (conn *Conn) Logout(ctx context.Context, options arvados.LogoutOp...
method AuthorizedKeyCreate (line 309) | func (conn *Conn) AuthorizedKeyCreate(ctx context.Context, options arv...
method AuthorizedKeyUpdate (line 313) | func (conn *Conn) AuthorizedKeyUpdate(ctx context.Context, options arv...
method AuthorizedKeyGet (line 317) | func (conn *Conn) AuthorizedKeyGet(ctx context.Context, options arvado...
method AuthorizedKeyList (line 321) | func (conn *Conn) AuthorizedKeyList(ctx context.Context, options arvad...
method AuthorizedKeyDelete (line 325) | func (conn *Conn) AuthorizedKeyDelete(ctx context.Context, options arv...
method CollectionGet (line 329) | func (conn *Conn) CollectionGet(ctx context.Context, options arvados.G...
method CollectionList (line 388) | func (conn *Conn) CollectionList(ctx context.Context, options arvados....
method CollectionProvenance (line 392) | func (conn *Conn) CollectionProvenance(ctx context.Context, options ar...
method CollectionUsedBy (line 396) | func (conn *Conn) CollectionUsedBy(ctx context.Context, options arvado...
method CollectionDelete (line 400) | func (conn *Conn) CollectionDelete(ctx context.Context, options arvado...
method CollectionTrash (line 404) | func (conn *Conn) CollectionTrash(ctx context.Context, options arvados...
method CollectionUntrash (line 408) | func (conn *Conn) CollectionUntrash(ctx context.Context, options arvad...
method ComputedPermissionList (line 412) | func (conn *Conn) ComputedPermissionList(ctx context.Context, options ...
method ContainerList (line 416) | func (conn *Conn) ContainerList(ctx context.Context, options arvados.L...
method ContainerCreate (line 420) | func (conn *Conn) ContainerCreate(ctx context.Context, options arvados...
method ContainerUpdate (line 424) | func (conn *Conn) ContainerUpdate(ctx context.Context, options arvados...
method ContainerPriorityUpdate (line 428) | func (conn *Conn) ContainerPriorityUpdate(ctx context.Context, options...
method ContainerGet (line 432) | func (conn *Conn) ContainerGet(ctx context.Context, options arvados.Ge...
method ContainerDelete (line 436) | func (conn *Conn) ContainerDelete(ctx context.Context, options arvados...
method ContainerLock (line 440) | func (conn *Conn) ContainerLock(ctx context.Context, options arvados.G...
method ContainerUnlock (line 444) | func (conn *Conn) ContainerUnlock(ctx context.Context, options arvados...
method ContainerHTTPProxy (line 448) | func (conn *Conn) ContainerHTTPProxy(ctx context.Context, options arva...
method ContainerSSH (line 456) | func (conn *Conn) ContainerSSH(ctx context.Context, options arvados.Co...
method ContainerGatewayTunnel (line 460) | func (conn *Conn) ContainerGatewayTunnel(ctx context.Context, options ...
method ContainerRequestList (line 464) | func (conn *Conn) ContainerRequestList(ctx context.Context, options ar...
method ContainerRequestCreate (line 468) | func (conn *Conn) ContainerRequestCreate(ctx context.Context, options ...
method ContainerRequestUpdate (line 514) | func (conn *Conn) ContainerRequestUpdate(ctx context.Context, options ...
method ContainerRequestGet (line 518) | func (conn *Conn) ContainerRequestGet(ctx context.Context, options arv...
method ContainerRequestDelete (line 522) | func (conn *Conn) ContainerRequestDelete(ctx context.Context, options ...
method ContainerRequestContainerStatus (line 526) | func (conn *Conn) ContainerRequestContainerStatus(ctx context.Context,...
method ContainerRequestLog (line 530) | func (conn *Conn) ContainerRequestLog(ctx context.Context, options arv...
method GroupCreate (line 534) | func (conn *Conn) GroupCreate(ctx context.Context, options arvados.Cre...
method GroupUpdate (line 538) | func (conn *Conn) GroupUpdate(ctx context.Context, options arvados.Upd...
method GroupGet (line 542) | func (conn *Conn) GroupGet(ctx context.Context, options arvados.GetOpt...
method GroupList (line 546) | func (conn *Conn) GroupList(ctx context.Context, options arvados.ListO...
method GroupContents (line 552) | func (conn *Conn) GroupContents(ctx context.Context, options arvados.G...
method GroupShared (line 565) | func (conn *Conn) GroupShared(ctx context.Context, options arvados.Lis...
method GroupDelete (line 569) | func (conn *Conn) GroupDelete(ctx context.Context, options arvados.Del...
method GroupTrash (line 573) | func (conn *Conn) GroupTrash(ctx context.Context, options arvados.Dele...
method GroupUntrash (line 577) | func (conn *Conn) GroupUntrash(ctx context.Context, options arvados.Un...
method LinkCreate (line 581) | func (conn *Conn) LinkCreate(ctx context.Context, options arvados.Crea...
method LinkUpdate (line 585) | func (conn *Conn) LinkUpdate(ctx context.Context, options arvados.Upda...
method LinkGet (line 589) | func (conn *Conn) LinkGet(ctx context.Context, options arvados.GetOpti...
method LinkList (line 593) | func (conn *Conn) LinkList(ctx context.Context, options arvados.ListOp...
method LinkDelete (line 597) | func (conn *Conn) LinkDelete(ctx context.Context, options arvados.Dele...
method LogCreate (line 601) | func (conn *Conn) LogCreate(ctx context.Context, options arvados.Creat...
method LogUpdate (line 605) | func (conn *Conn) LogUpdate(ctx context.Context, options arvados.Updat...
method LogGet (line 609) | func (conn *Conn) LogGet(ctx context.Context, options arvados.GetOptio...
method LogList (line 613) | func (conn *Conn) LogList(ctx context.Context, options arvados.ListOpt...
method LogDelete (line 617) | func (conn *Conn) LogDelete(ctx context.Context, options arvados.Delet...
method SysTrashSweep (line 621) | func (conn *Conn) SysTrashSweep(ctx context.Context, options struct{})...
method batchUpdateUsers (line 650) | func (conn *Conn) batchUpdateUsers(ctx context.Context,
method includeAdminAndInvitedInBatchUpdate (line 717) | func (conn *Conn) includeAdminAndInvitedInBatchUpdate(ctx context.Cont...
method UserList (line 746) | func (conn *Conn) UserList(ctx context.Context, options arvados.ListOp...
method UserCreate (line 766) | func (conn *Conn) UserCreate(ctx context.Context, options arvados.Crea...
method UserUpdate (line 770) | func (conn *Conn) UserUpdate(ctx context.Context, options arvados.Upda...
method UserMerge (line 793) | func (conn *Conn) UserMerge(ctx context.Context, options arvados.UserM...
method UserActivate (line 797) | func (conn *Conn) UserActivate(ctx context.Context, options arvados.Us...
method UserSetup (line 801) | func (conn *Conn) UserSetup(ctx context.Context, options arvados.UserS...
method UserUnsetup (line 827) | func (conn *Conn) UserUnsetup(ctx context.Context, options arvados.Get...
method UserGet (line 831) | func (conn *Conn) UserGet(ctx context.Context, options arvados.GetOpti...
method UserGetCurrent (line 853) | func (conn *Conn) UserGetCurrent(ctx context.Context, options arvados....
method UserGetSystem (line 857) | func (conn *Conn) UserGetSystem(ctx context.Context, options arvados.G...
method UserDelete (line 861) | func (conn *Conn) UserDelete(ctx context.Context, options arvados.Dele...
method UserBatchUpdate (line 865) | func (conn *Conn) UserBatchUpdate(ctx context.Context, options arvados...
method UserAuthenticate (line 869) | func (conn *Conn) UserAuthenticate(ctx context.Context, options arvado...
method APIClientAuthorizationCurrent (line 873) | func (conn *Conn) APIClientAuthorizationCurrent(ctx context.Context, o...
method APIClientAuthorizationCreate (line 877) | func (conn *Conn) APIClientAuthorizationCreate(ctx context.Context, op...
method APIClientAuthorizationUpdate (line 888) | func (conn *Conn) APIClientAuthorizationUpdate(ctx context.Context, op...
method APIClientAuthorizationDelete (line 895) | func (conn *Conn) APIClientAuthorizationDelete(ctx context.Context, op...
method APIClientAuthorizationList (line 899) | func (conn *Conn) APIClientAuthorizationList(ctx context.Context, opti...
method APIClientAuthorizationGet (line 906) | func (conn *Conn) APIClientAuthorizationGet(ctx context.Context, optio...
function New (line 38) | func New(bgCtx context.Context, cluster *arvados.Cluster, healthFuncs *m...
function saltedTokenProvider (line 69) | func saltedTokenProvider(cluster *arvados.Cluster, local backend, remote...
function rewriteManifest (line 216) | func rewriteManifest(mt, remoteID string) string {
type backend (line 910) | type backend interface
type notFoundError (line 915) | type notFoundError struct
method HTTPStatus (line 917) | func (notFoundError) HTTPStatus() int { return http.StatusNotFound }
method Error (line 918) | func (notFoundError) Error() string { return "not found" }
function errStatus (line 920) | func errStatus(err error) int {
FILE: lib/controller/federation/federation_test.go
function Test (line 27) | func Test(t *testing.T) {
type FederationSuite (line 33) | type FederationSuite struct
method SetUpSuite (line 41) | func (s *FederationSuite) SetUpSuite(c *check.C) {
method SetUpTest (line 48) | func (s *FederationSuite) SetUpTest(c *check.C) {
method TearDownTest (line 76) | func (s *FederationSuite) TearDownTest(c *check.C) {
method addDirectRemote (line 80) | func (s *FederationSuite) addDirectRemote(c *check.C, id string, backe...
method addHTTPRemote (line 87) | func (s *FederationSuite) addHTTPRemote(c *check.C, id string, backend...
FILE: lib/controller/federation/generate.go
function main (line 19) | func main() {
FILE: lib/controller/federation/generated.go
method generated_AuthorizedKeyList (line 20) | func (conn *Conn) generated_AuthorizedKeyList(ctx context.Context, optio...
method generated_ContainerList (line 61) | func (conn *Conn) generated_ContainerList(ctx context.Context, options a...
method generated_ContainerRequestList (line 102) | func (conn *Conn) generated_ContainerRequestList(ctx context.Context, op...
method generated_GroupList (line 143) | func (conn *Conn) generated_GroupList(ctx context.Context, options arvad...
method generated_UserList (line 184) | func (conn *Conn) generated_UserList(ctx context.Context, options arvado...
method generated_LinkList (line 225) | func (conn *Conn) generated_LinkList(ctx context.Context, options arvado...
method generated_LogList (line 266) | func (conn *Conn) generated_LogList(ctx context.Context, options arvados...
method generated_APIClientAuthorizationList (line 307) | func (conn *Conn) generated_APIClientAuthorizationList(ctx context.Conte...
FILE: lib/controller/federation/generated_test.go
type UptodateSuite (line 15) | type UptodateSuite struct
method TestUpToDate (line 17) | func (*UptodateSuite) TestUpToDate(c *check.C) {
FILE: lib/controller/federation/group_test.go
type GroupSuite (line 18) | type GroupSuite struct
function makeConn (line 22) | func makeConn() (*Conn, *arvadostest.APIStub, *arvadostest.APIStub) {
method TestGroupContents (line 28) | func (s *UserSuite) TestGroupContents(c *check.C) {
FILE: lib/controller/federation/list.go
method generated_CollectionList (line 24) | func (conn *Conn) generated_CollectionList(ctx context.Context, options ...
method splitListRequest (line 109) | func (conn *Conn) splitListRequest(ctx context.Context, opts arvados.Lis...
function httpErrorf (line 296) | func httpErrorf(code int, format string, args ...interface{}) error {
FILE: lib/controller/federation/list_test.go
type collectionLister (line 21) | type collectionLister struct
method matchFilters (line 27) | func (cl *collectionLister) matchFilters(c arvados.Collection, filters...
method CollectionList (line 55) | func (cl *collectionLister) CollectionList(ctx context.Context, option...
type CollectionListSuite (line 78) | type CollectionListSuite struct
method SetUpTest (line 85) | func (s *CollectionListSuite) SetUpTest(c *check.C) {
method TestCollectionListNoUUIDFilters (line 128) | func (s *CollectionListSuite) TestCollectionListNoUUIDFilters(c *check...
method TestCollectionListOneLocal (line 137) | func (s *CollectionListSuite) TestCollectionListOneLocal(c *check.C) {
method TestCollectionListOneRemote (line 147) | func (s *CollectionListSuite) TestCollectionListOneRemote(c *check.C) {
method TestCollectionListOneLocalDeselectingUUID (line 157) | func (s *CollectionListSuite) TestCollectionListOneLocalDeselectingUUI...
method TestCollectionListOneLocalUsingInOperator (line 168) | func (s *CollectionListSuite) TestCollectionListOneLocalUsingInOperato...
method TestCollectionListOneRemoteUsingInOperator (line 178) | func (s *CollectionListSuite) TestCollectionListOneRemoteUsingInOperat...
method TestCollectionListOneRemoteDeselectingUUID (line 188) | func (s *CollectionListSuite) TestCollectionListOneRemoteDeselectingUU...
method TestCollectionListOneLocalOneRemote (line 199) | func (s *CollectionListSuite) TestCollectionListOneLocalOneRemote(c *c...
method TestCollectionListOneLocalOneRemoteDeselectingUUID (line 209) | func (s *CollectionListSuite) TestCollectionListOneLocalOneRemoteDesel...
method TestCollectionListTwoRemotes (line 220) | func (s *CollectionListSuite) TestCollectionListTwoRemotes(c *check.C) {
method TestCollectionListSatisfyAllFilters (line 230) | func (s *CollectionListSuite) TestCollectionListSatisfyAllFilters(c *c...
method TestCollectionListEmptySet (line 244) | func (s *CollectionListSuite) TestCollectionListEmptySet(c *check.C) {
method TestCollectionListUnmatchableUUID (line 254) | func (s *CollectionListSuite) TestCollectionListUnmatchableUUID(c *che...
method TestCollectionListMultiPage (line 268) | func (s *CollectionListSuite) TestCollectionListMultiPage(c *check.C) {
method TestCollectionListMultiSiteExtraFilters (line 287) | func (s *CollectionListSuite) TestCollectionListMultiSiteExtraFilters(...
method TestCollectionListMultiSiteWithCount (line 301) | func (s *CollectionListSuite) TestCollectionListMultiSiteWithCount(c *...
method TestCollectionListMultiSiteWithLimit (line 317) | func (s *CollectionListSuite) TestCollectionListMultiSiteWithLimit(c *...
method TestCollectionListMultiSiteWithHighLimit (line 333) | func (s *CollectionListSuite) TestCollectionListMultiSiteWithHighLimit...
method TestCollectionListMultiSiteWithOffset (line 349) | func (s *CollectionListSuite) TestCollectionListMultiSiteWithOffset(c ...
method TestCollectionListMultiSiteWithOrder (line 363) | func (s *CollectionListSuite) TestCollectionListMultiSiteWithOrder(c *...
method TestCollectionListInvalidFilters (line 377) | func (s *CollectionListSuite) TestCollectionListInvalidFilters(c *chec...
method TestCollectionListRemoteUnknown (line 389) | func (s *CollectionListSuite) TestCollectionListRemoteUnknown(c *check...
method TestCollectionListRemoteError (line 400) | func (s *CollectionListSuite) TestCollectionListRemoteError(c *check.C) {
method test (line 412) | func (s *CollectionListSuite) test(c *check.C, trial listTrial) {
type listTrial (line 116) | type listTrial struct
FILE: lib/controller/federation/login_test.go
type LoginSuite (line 18) | type LoginSuite struct
method TestDeferToLoginCluster (line 22) | func (s *LoginSuite) TestDeferToLoginCluster(c *check.C) {
FILE: lib/controller/federation/logout_test.go
type LogoutStub (line 23) | type LogoutStub struct
method CheckCalls (line 28) | func (as *LogoutStub) CheckCalls(c *check.C, returnURL *url.URL) bool {
method Logout (line 43) | func (as *LogoutStub) Logout(ctx context.Context, options arvados.Logo...
type LogoutSuite (line 54) | type LogoutSuite struct
method badReturnURL (line 58) | func (s *LogoutSuite) badReturnURL(path string) *url.URL {
method goodReturnURL (line 66) | func (s *LogoutSuite) goodReturnURL(path string) *url.URL {
method setupFederation (line 72) | func (s *LogoutSuite) setupFederation(loginCluster string) {
method setupStub (line 82) | func (s *LogoutSuite) setupStub(c *check.C, id string, stubURL *url.UR...
method v2Token (line 95) | func (s *LogoutSuite) v2Token(clusterID string) string {
method TestLocalLogoutOK (line 99) | func (s *LogoutSuite) TestLocalLogoutOK(c *check.C) {
method TestLocalLogoutRedirect (line 106) | func (s *LogoutSuite) TestLocalLogoutRedirect(c *check.C) {
method TestLocalLogoutBadRequestError (line 115) | func (s *LogoutSuite) TestLocalLogoutBadRequestError(c *check.C) {
method TestRemoteLogoutRedirect (line 123) | func (s *LogoutSuite) TestRemoteLogoutRedirect(c *check.C) {
method TestRemoteLogoutError (line 134) | func (s *LogoutSuite) TestRemoteLogoutError(c *check.C) {
method TestRemoteLogoutLocalRedirect (line 144) | func (s *LogoutSuite) TestRemoteLogoutLocalRedirect(c *check.C) {
method TestRemoteLogoutLocalError (line 157) | func (s *LogoutSuite) TestRemoteLogoutLocalError(c *check.C) {
method TestV2TokenRedirect (line 168) | func (s *LogoutSuite) TestV2TokenRedirect(c *check.C) {
method TestV2TokenError (line 183) | func (s *LogoutSuite) TestV2TokenError(c *check.C) {
method TestV2TokenLocalRedirect (line 196) | func (s *LogoutSuite) TestV2TokenLocalRedirect(c *check.C) {
method TestV2TokenLocalError (line 210) | func (s *LogoutSuite) TestV2TokenLocalError(c *check.C) {
method TestV2LocalTokenRedirect (line 223) | func (s *LogoutSuite) TestV2LocalTokenRedirect(c *check.C) {
method TestV2LocalTokenError (line 236) | func (s *LogoutSuite) TestV2LocalTokenError(c *check.C) {
FILE: lib/controller/federation/user_test.go
type UserSuite (line 27) | type UserSuite struct
method TestLoginClusterUserList (line 31) | func (s *UserSuite) TestLoginClusterUserList(c *check.C) {
method TestLoginClusterUserGet (line 121) | func (s *UserSuite) TestLoginClusterUserGet(c *check.C) {
method TestLoginClusterUserListBypassFederation (line 175) | func (s *UserSuite) TestLoginClusterUserListBypassFederation(c *check....
method TestUserAttrsUpdateWhitelist (line 207) | func (s *UserSuite) TestUserAttrsUpdateWhitelist(c *check.C) {
FILE: lib/controller/federation_test.go
type FederationSuite (line 34) | type FederationSuite struct
method SetUpTest (line 53) | func (s *FederationSuite) SetUpTest(c *check.C) {
method remoteMockHandler (line 105) | func (s *FederationSuite) remoteMockHandler(w http.ResponseWriter, req...
method TearDownTest (line 115) | func (s *FederationSuite) TearDownTest(c *check.C) {
method testRequest (line 125) | func (s *FederationSuite) testRequest(req *http.Request) *httptest.Res...
method TestLocalRequest (line 131) | func (s *FederationSuite) TestLocalRequest(c *check.C) {
method checkHandledLocally (line 137) | func (s *FederationSuite) checkHandledLocally(c *check.C, resp *http.R...
method TestNoAuth (line 146) | func (s *FederationSuite) TestNoAuth(c *check.C) {
method TestBadAuth (line 153) | func (s *FederationSuite) TestBadAuth(c *check.C) {
method TestNoAccess (line 161) | func (s *FederationSuite) TestNoAccess(c *check.C) {
method TestGetUnknownRemote (line 169) | func (s *FederationSuite) TestGetUnknownRemote(c *check.C) {
method TestRemoteError (line 177) | func (s *FederationSuite) TestRemoteError(c *check.C) {
method TestGetRemoteWorkflow (line 189) | func (s *FederationSuite) TestGetRemoteWorkflow(c *check.C) {
method TestOptionsMethod (line 200) | func (s *FederationSuite) TestOptionsMethod(c *check.C) {
method TestRemoteWithTokenInQuery (line 217) | func (s *FederationSuite) TestRemoteWithTokenInQuery(c *check.C) {
method TestLocalTokenSalted (line 227) | func (s *FederationSuite) TestLocalTokenSalted(c *check.C) {
method TestRemoteTokenNotSalted (line 251) | func (s *FederationSuite) TestRemoteTokenNotSalted(c *check.C) {
method TestWorkflowCRUD (line 275) | func (s *FederationSuite) TestWorkflowCRUD(c *check.C) {
method checkResponseOK (line 333) | func (s *FederationSuite) checkResponseOK(c *check.C, resp *http.Respo...
method checkJSONErrorMatches (line 341) | func (s *FederationSuite) checkJSONErrorMatches(c *check.C, resp *http...
method localServiceHandler (line 349) | func (s *FederationSuite) localServiceHandler(c *check.C, h http.Handl...
method localServiceReturns404 (line 360) | func (s *FederationSuite) localServiceReturns404(c *check.C) *httpserv...
method TestGetLocalCollection (line 380) | func (s *FederationSuite) TestGetLocalCollection(c *check.C) {
method TestGetRemoteCollection (line 416) | func (s *FederationSuite) TestGetRemoteCollection(c *check.C) {
method TestGetRemoteCollectionError (line 431) | func (s *FederationSuite) TestGetRemoteCollectionError(c *check.C) {
method TestSignedLocatorPattern (line 440) | func (s *FederationSuite) TestSignedLocatorPattern(c *check.C) {
method TestGetLocalCollectionByPDH (line 453) | func (s *FederationSuite) TestGetLocalCollectionByPDH(c *check.C) {
method TestGetRemoteCollectionByPDH (line 469) | func (s *FederationSuite) TestGetRemoteCollectionByPDH(c *check.C) {
method TestGetCollectionByPDHError (line 486) | func (s *FederationSuite) TestGetCollectionByPDHError(c *check.C) {
method TestGetCollectionByPDHErrorBadHash (line 502) | func (s *FederationSuite) TestGetCollectionByPDHErrorBadHash(c *check....
method TestSaltedTokenGetCollectionByPDH (line 545) | func (s *FederationSuite) TestSaltedTokenGetCollectionByPDH(c *check.C) {
method TestSaltedTokenGetCollectionByPDHError (line 561) | func (s *FederationSuite) TestSaltedTokenGetCollectionByPDHError(c *ch...
method TestGetRemoteContainerRequest (line 575) | func (s *FederationSuite) TestGetRemoteContainerRequest(c *check.C) {
method TestUpdateRemoteContainerRequest (line 587) | func (s *FederationSuite) TestUpdateRemoteContainerRequest(c *check.C) {
method TestCreateContainerRequestBadToken (line 605) | func (s *FederationSuite) TestCreateContainerRequestBadToken(c *check....
method TestCreateRemoteContainerRequest (line 620) | func (s *FederationSuite) TestCreateRemoteContainerRequest(c *check.C) {
method getCRfromMockRequest (line 649) | func (s *FederationSuite) getCRfromMockRequest(c *check.C) arvados.Con...
method TestCreateRemoteContainerRequestCheckRuntimeToken (line 681) | func (s *FederationSuite) TestCreateRemoteContainerRequestCheckRuntime...
method TestCreateRemoteContainerRequestCheckSetRuntimeToken (line 736) | func (s *FederationSuite) TestCreateRemoteContainerRequestCheckSetRunt...
method TestCreateRemoteContainerRequestError (line 767) | func (s *FederationSuite) TestCreateRemoteContainerRequestError(c *che...
method TestGetRemoteContainer (line 789) | func (s *FederationSuite) TestGetRemoteContainer(c *check.C) {
method TestListRemoteContainer (line 800) | func (s *FederationSuite) TestListRemoteContainer(c *check.C) {
method TestListMultiRemoteContainers (line 813) | func (s *FederationSuite) TestListMultiRemoteContainers(c *check.C) {
method TestListMultiRemoteContainerError (line 841) | func (s *FederationSuite) TestListMultiRemoteContainerError(c *check.C) {
method TestListMultiRemoteContainersPaged (line 854) | func (s *FederationSuite) TestListMultiRemoteContainersPaged(c *check....
method TestListMultiRemoteContainersMissing (line 890) | func (s *FederationSuite) TestListMultiRemoteContainersMissing(c *chec...
method TestListMultiRemoteContainerPageSizeError (line 925) | func (s *FederationSuite) TestListMultiRemoteContainerPageSizeError(c ...
method TestListMultiRemoteContainerLimitError (line 937) | func (s *FederationSuite) TestListMultiRemoteContainerLimitError(c *ch...
method TestListMultiRemoteContainerOffsetError (line 948) | func (s *FederationSuite) TestListMultiRemoteContainerOffsetError(c *c...
method TestListMultiRemoteContainerOrderError (line 959) | func (s *FederationSuite) TestListMultiRemoteContainerOrderError(c *ch...
method TestListMultiRemoteContainerSelectError (line 970) | func (s *FederationSuite) TestListMultiRemoteContainerSelectError(c *c...
FILE: lib/controller/handler.go
type Handler (line 37) | type Handler struct
method ServeHTTP (line 53) | func (h *Handler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
method CheckHealth (line 81) | func (h *Handler) CheckHealth() error {
method Done (line 105) | func (h *Handler) Done() <-chan struct{} {
method setup (line 111) | func (h *Handler) setup() {
method localClusterRequest (line 197) | func (h *Handler) localClusterRequest(req *http.Request) (*http.Respon...
method routeContainerEndpoints (line 226) | func (h *Handler) routeContainerEndpoints(rtr http.Handler) middleware...
method routeServiceContainerPorts (line 241) | func (h *Handler) routeServiceContainerPorts(rtr http.Handler) middlew...
method proxyRailsAPI (line 369) | func (h *Handler) proxyRailsAPI(w http.ResponseWriter, req *http.Reque...
function neverRedirect (line 109) | func neverRedirect(*http.Request, []*http.Request) error { return http.E...
type middlewareFunc (line 189) | type middlewareFunc
function prepend (line 191) | func prepend(next http.Handler, middleware middlewareFunc) http.Handler {
type cacheEnt (line 253) | type cacheEnt struct
method refresh (line 268) | func (ent *cacheEnt) refresh(path string, do func(*http.Request) (*htt...
method response (line 334) | func (ent *cacheEnt) response() (http.Header, []byte, bool) {
method ServeHTTP (line 343) | func (ent *cacheEnt) ServeHTTP(ctx context.Context, w http.ResponseWri...
constant cacheTTL (line 264) | cacheTTL = 5 * time.Minute
constant cacheExpire (line 265) | cacheExpire = 24 * time.Hour
function findRailsAPI (line 383) | func findRailsAPI(cluster *arvados.Cluster) (*url.URL, bool, error) {
function validateDiscoveryDoc (line 398) | func validateDiscoveryDoc(body []byte) error {
FILE: lib/controller/handler_test.go
function Test (line 35) | func Test(t *testing.T) {
type HandlerSuite (line 41) | type HandlerSuite struct
method SetUpTest (line 50) | func (s *HandlerSuite) SetUpTest(c *check.C) {
method TearDownTest (line 67) | func (s *HandlerSuite) TearDownTest(c *check.C) {
method TestConfigExport (line 90) | func (s *HandlerSuite) TestConfigExport(c *check.C) {
method TestDiscoveryDocCache (line 120) | func (s *HandlerSuite) TestDiscoveryDocCache(c *check.C) {
method TestVocabularyExport (line 338) | func (s *HandlerSuite) TestVocabularyExport(c *check.C) {
method TestVocabularyFailedCheckStatus (line 388) | func (s *HandlerSuite) TestVocabularyFailedCheckStatus(c *check.C) {
method TestProxyDiscoveryDoc (line 436) | func (s *HandlerSuite) TestProxyDiscoveryDoc(c *check.C) {
method TestRequestCancel (line 453) | func (s *HandlerSuite) TestRequestCancel(c *check.C) {
method TestProxyWithoutToken (line 467) | func (s *HandlerSuite) TestProxyWithoutToken(c *check.C) {
method TestProxyWithToken (line 478) | func (s *HandlerSuite) TestProxyWithToken(c *check.C) {
method TestProxyWithTokenInRequestBody (line 490) | func (s *HandlerSuite) TestProxyWithTokenInRequestBody(c *check.C) {
method TestProxyNotFound (line 505) | func (s *HandlerSuite) TestProxyNotFound(c *check.C) {
method TestLogoutGoogle (line 516) | func (s *HandlerSuite) TestLogoutGoogle(c *check.C) {
method TestValidateV1APIToken (line 529) | func (s *HandlerSuite) TestValidateV1APIToken(c *check.C) {
method TestValidateV2APIToken (line 541) | func (s *HandlerSuite) TestValidateV2APIToken(c *check.C) {
method TestValidateRemoteToken (line 554) | func (s *HandlerSuite) TestValidateRemoteToken(c *check.C) {
method TestLogTokenUUID (line 574) | func (s *HandlerSuite) TestLogTokenUUID(c *check.C) {
method TestCreateAPIToken (line 584) | func (s *HandlerSuite) TestCreateAPIToken(c *check.C) {
method CheckObjectType (line 601) | func (s *HandlerSuite) CheckObjectType(c *check.C, url string, token s...
method TestGetObjects (line 657) | func (s *HandlerSuite) TestGetObjects(c *check.C) {
method TestRedactRailsAPIHostFromErrors (line 708) | func (s *HandlerSuite) TestRedactRailsAPIHostFromErrors(c *check.C) {
method TestTrashSweep (line 724) | func (s *HandlerSuite) TestTrashSweep(c *check.C) {
method TestContainerLogSweep (line 751) | func (s *HandlerSuite) TestContainerLogSweep(c *check.C) {
method TestLogActivity (line 780) | func (s *HandlerSuite) TestLogActivity(c *check.C) {
FILE: lib/controller/integration_test.go
type IntegrationSuite (line 38) | type IntegrationSuite struct
method SetUpSuite (line 43) | func (s *IntegrationSuite) SetUpSuite(c *check.C) {
method TearDownSuite (line 166) | func (s *IntegrationSuite) TearDownSuite(c *check.C) {
method TestDefaultStorageClassesOnCollections (line 173) | func (s *IntegrationSuite) TestDefaultStorageClassesOnCollections(c *c...
method createTestCollectionManifest (line 183) | func (s *IntegrationSuite) createTestCollectionManifest(c *check.C, ac...
method TestGetCollectionByPDH (line 197) | func (s *IntegrationSuite) TestGetCollectionByPDH(c *check.C) {
method TestFederation_Write1Read2 (line 225) | func (s *IntegrationSuite) TestFederation_Write1Read2(c *check.C) {
method TestFederation_Write2Read1 (line 229) | func (s *IntegrationSuite) TestFederation_Write2Read1(c *check.C) {
method TestFederation_Write2Read3 (line 233) | func (s *IntegrationSuite) TestFederation_Write2Read3(c *check.C) {
method testFederationCollectionAccess (line 237) | func (s *IntegrationSuite) testFederationCollectionAccess(c *check.C, ...
method TestRemoteUserAndTokenCacheRace (line 272) | func (s *IntegrationSuite) TestRemoteUserAndTokenCacheRace(c *check.C) {
method TestLogoutUsingLoginCluster (line 317) | func (s *IntegrationSuite) TestLogoutUsingLoginCluster(c *check.C) {
method TestS3WithFederatedToken (line 346) | func (s *IntegrationSuite) TestS3WithFederatedToken(c *check.C) {
method TestGetCollectionAsAnonymous (line 419) | func (s *IntegrationSuite) TestGetCollectionAsAnonymous(c *check.C) {
method TestForwardAnonymousTokenToLoginCluster (line 497) | func (s *IntegrationSuite) TestForwardAnonymousTokenToLoginCluster(c *...
method TestCreateContainerRequestWithFedToken (line 535) | func (s *IntegrationSuite) TestCreateContainerRequestWithFedToken(c *c...
method TestCreateContainerRequestWithBadToken (line 611) | func (s *IntegrationSuite) TestCreateContainerRequestWithBadToken(c *c...
method TestRequestIDHeader (line 656) | func (s *IntegrationSuite) TestRequestIDHeader(c *check.C) {
method dbConn (line 727) | func (s *IntegrationSuite) dbConn(c *check.C, clusterID string) (*sql....
method TestRuntimeTokenInCR (line 745) | func (s *IntegrationSuite) TestRuntimeTokenInCR(c *check.C) {
method TestIntermediateCluster (line 806) | func (s *IntegrationSuite) TestIntermediateCluster(c *check.C) {
method TestFederatedApiClientAuthHandling (line 844) | func (s *IntegrationSuite) TestFederatedApiClientAuthHandling(c *check...
method TestStaleCachedUserRecord (line 894) | func (s *IntegrationSuite) TestStaleCachedUserRecord(c *check.C) {
method TestListUsers (line 973) | func (s *IntegrationSuite) TestListUsers(c *check.C) {
method TestSetupUserWithVM (line 1041) | func (s *IntegrationSuite) TestSetupUserWithVM(c *check.C) {
method TestOIDCAccessTokenAuth (line 1105) | func (s *IntegrationSuite) TestOIDCAccessTokenAuth(c *check.C) {
method TestForwardRuntimeTokenToLoginCluster (line 1170) | func (s *IntegrationSuite) TestForwardRuntimeTokenToLoginCluster(c *ch...
method TestRunTrivialContainer (line 1231) | func (s *IntegrationSuite) TestRunTrivialContainer(c *check.C) {
method TestContainerHTTPProxy (line 1255) | func (s *IntegrationSuite) TestContainerHTTPProxy(c *check.C) {
method TestContainerInputOnDifferentCluster (line 1324) | func (s *IntegrationSuite) TestContainerInputOnDifferentCluster(c *che...
method runContainer (line 1359) | func (s *IntegrationSuite) runContainer(c *check.C, clusterID string, ...
method TestCUDAContainerReuse (line 1481) | func (s *IntegrationSuite) TestCUDAContainerReuse(c *check.C) {
method TestGPUContainerReuse (line 1532) | func (s *IntegrationSuite) TestGPUContainerReuse(c *check.C) {
FILE: lib/controller/localdb/authorized_key.go
method AuthorizedKeyCreate (line 21) | func (conn *Conn) AuthorizedKeyCreate(ctx context.Context, opts arvados....
method AuthorizedKeyUpdate (line 30) | func (conn *Conn) AuthorizedKeyUpdate(ctx context.Context, opts arvados....
function validateKey (line 37) | func validateKey(attrs map[string]interface{}) error {
FILE: lib/controller/localdb/authorized_key_test.go
type authorizedKeySuite (line 23) | type authorizedKeySuite struct
method TestAuthorizedKeyCreate (line 30) | func (s *authorizedKeySuite) TestAuthorizedKeyCreate(c *C) {
FILE: lib/controller/localdb/collection.go
method CollectionGet (line 25) | func (conn *Conn) CollectionGet(ctx context.Context, opts arvados.GetOpt...
method CollectionList (line 43) | func (conn *Conn) CollectionList(ctx context.Context, opts arvados.ListO...
method CollectionCreate (line 63) | func (conn *Conn) CollectionCreate(ctx context.Context, opts arvados.Cre...
method CollectionUpdate (line 91) | func (conn *Conn) CollectionUpdate(ctx context.Context, opts arvados.Upd...
method signCollection (line 121) | func (conn *Conn) signCollection(ctx context.Context, coll *arvados.Coll...
method lockUUID (line 140) | func (conn *Conn) lockUUID(ctx context.Context, uuid string) error {
method applyReplaceFilesOption (line 158) | func (conn *Conn) applyReplaceFilesOption(ctx context.Context, fromUUID ...
method applyReplaceSegmentsOption (line 347) | func (conn *Conn) applyReplaceSegmentsOption(ctx context.Context, fromUU...
FILE: lib/controller/localdb/collection_test.go
type CollectionSuite (line 32) | type CollectionSuite struct
method TestCollectionCreateAndUpdateWithProperties (line 36) | func (s *CollectionSuite) TestCollectionCreateAndUpdateWithProperties(...
method TestSignatures (line 83) | func (s *CollectionSuite) TestSignatures(c *check.C) {
method checkSignatureExpiry (line 156) | func (s *CollectionSuite) checkSignatureExpiry(c *check.C, manifestTex...
method TestSignaturesDisabled (line 166) | func (s *CollectionSuite) TestSignaturesDisabled(c *check.C) {
type replaceFilesSuite (line 175) | type replaceFilesSuite struct
method SetUpSuite (line 184) | func (s *replaceFilesSuite) SetUpSuite(c *check.C) {
method SetUpTest (line 194) | func (s *replaceFilesSuite) SetUpTest(c *check.C) {
method TestCollectionReplaceFiles (line 220) | func (s *replaceFilesSuite) TestCollectionReplaceFiles(c *check.C) {
method TestMultipleRename (line 330) | func (s *replaceFilesSuite) TestMultipleRename(c *check.C) {
method TestNonexistentCurrentFile (line 354) | func (s *replaceFilesSuite) TestNonexistentCurrentFile(c *check.C) {
method TestConcurrentCopyFromPDH (line 371) | func (s *replaceFilesSuite) TestConcurrentCopyFromPDH(c *check.C) {
method TestConcurrentCopyFromProvidedManifestText (line 401) | func (s *replaceFilesSuite) TestConcurrentCopyFromProvidedManifestText...
method TestUnusedManifestText_Create (line 434) | func (s *replaceFilesSuite) TestUnusedManifestText_Create(c *check.C) {
method TestUnusedManifestText_Update (line 446) | func (s *replaceFilesSuite) TestUnusedManifestText_Update(c *check.C) {
method TestConcurrentRename (line 459) | func (s *replaceFilesSuite) TestConcurrentRename(c *check.C) {
method expectFiles (line 509) | func (s *replaceFilesSuite) expectFiles(c *check.C, coll arvados.Colle...
method expectFileSizes (line 521) | func (s *replaceFilesSuite) expectFileSizes(c *check.C, coll arvados.C...
type replaceSegmentsSuite (line 567) | type replaceSegmentsSuite struct
method SetUpSuite (line 576) | func (s *replaceSegmentsSuite) SetUpSuite(c *check.C) {
method SetUpTest (line 587) | func (s *replaceSegmentsSuite) SetUpTest(c *check.C) {
method checkCollectionNotModified (line 606) | func (s *replaceSegmentsSuite) checkCollectionNotModified(c *check.C) {
method Test2to1_Simple (line 614) | func (s *replaceSegmentsSuite) Test2to1_Simple(c *check.C) {
method TestCreate (line 627) | func (s *replaceSegmentsSuite) TestCreate(c *check.C) {
method TestSignatureCheck (line 640) | func (s *replaceSegmentsSuite) TestSignatureCheck(c *check.C) {
method Test2to1_Reordered (line 669) | func (s *replaceSegmentsSuite) Test2to1_Reordered(c *check.C) {
method Test2to1_MultipleReferences (line 680) | func (s *replaceSegmentsSuite) Test2to1_MultipleReferences(c *check.C) {
method TestSkipUnreferenced (line 702) | func (s *replaceSegmentsSuite) TestSkipUnreferenced(c *check.C) {
method TestLengthMismatch (line 725) | func (s *replaceSegmentsSuite) TestLengthMismatch(c *check.C) {
method TestInvalidReplacementOffset (line 739) | func (s *replaceSegmentsSuite) TestInvalidReplacementOffset(c *check.C) {
method TestInvalidReplacementLength (line 753) | func (s *replaceSegmentsSuite) TestInvalidReplacementLength(c *check.C) {
function stripSignatures (line 767) | func stripSignatures(manifest string) string {
FILE: lib/controller/localdb/conn.go
type Conn (line 29) | type Conn struct
method checkProperties (line 61) | func (conn *Conn) checkProperties(ctx context.Context, properties inte...
method maybeRefreshVocabularyCache (line 88) | func (conn *Conn) maybeRefreshVocabularyCache(logger logrus.FieldLogge...
method loadVocabularyFile (line 113) | func (conn *Conn) loadVocabularyFile() error {
method LastVocabularyError (line 133) | func (conn *Conn) LastVocabularyError() error {
method VocabularyGet (line 139) | func (conn *Conn) VocabularyGet(ctx context.Context) (arvados.Vocabula...
method Logout (line 162) | func (conn *Conn) Logout(ctx context.Context, opts arvados.LogoutOptio...
method Login (line 167) | func (conn *Conn) Login(ctx context.Context, opts arvados.LoginOptions...
method UserAuthenticate (line 172) | func (conn *Conn) UserAuthenticate(ctx context.Context, opts arvados.U...
function NewConn (line 47) | func NewConn(bgCtx context.Context, cluster *arvados.Cluster, getdb func...
function httpErrorf (line 196) | func httpErrorf(code int, format string, args ...interface{}) error {
FILE: lib/controller/localdb/container.go
method ContainerUpdate (line 21) | func (conn *Conn) ContainerUpdate(ctx context.Context, opts arvados.Upda...
method runContainerPriorityUpdateThread (line 38) | func (conn *Conn) runContainerPriorityUpdateThread(ctx context.Context) {
method containerPriorityUpdate (line 56) | func (conn *Conn) containerPriorityUpdate(ctx context.Context, log logru...
FILE: lib/controller/localdb/container_gateway.go
method ContainerRequestLog (line 97) | func (conn *Conn) ContainerRequestLog(ctx context.Context, opts arvados....
method serveContainerRequestLogViaKeepWeb (line 188) | func (conn *Conn) serveContainerRequestLogViaKeepWeb(opts arvados.Contai...
function gatewayProxy (line 258) | func gatewayProxy(dial gatewayDialer, responseWriter http.ResponseWriter...
function preemptivelyDeduplicateHeaders (line 345) | func preemptivelyDeduplicateHeaders(dst, src http.Header) {
method serveEmptyDir (line 355) | func (conn *Conn) serveEmptyDir(path string, w http.ResponseWriter, r *h...
method ContainerSSH (line 375) | func (conn *Conn) ContainerSSH(ctx context.Context, opts arvados.Contain...
method checkContainerLoginPermission (line 484) | func (conn *Conn) checkContainerLoginPermission(ctx context.Context, use...
method ContainerHTTPProxy (line 506) | func (conn *Conn) ContainerHTTPProxy(ctx context.Context, opts arvados.C...
function containerHTTPProxyRedirect (line 720) | func containerHTTPProxyRedirect(needClearSiteData bool) http.Handler {
method ContainerGatewayTunnel (line 768) | func (conn *Conn) ContainerGatewayTunnel(ctx context.Context, opts arvad...
type gatewayDialer (line 817) | type gatewayDialer
method findGateway (line 827) | func (conn *Conn) findGateway(ctx context.Context, ctr arvados.Container...
method dialGatewayTLS (line 905) | func (conn *Conn) dialGatewayTLS(ctx context.Context, ctr arvados.Contai...
FILE: lib/controller/localdb/container_gateway_test.go
type ContainerGatewaySuite (line 48) | type ContainerGatewaySuite struct
method SetUpSuite (line 64) | func (s *ContainerGatewaySuite) SetUpSuite(c *check.C) {
method TearDownSuite (line 129) | func (s *ContainerGatewaySuite) TearDownSuite(c *check.C) {
method SetUpTest (line 137) | func (s *ContainerGatewaySuite) SetUpTest(c *check.C) {
method TearDownTest (line 200) | func (s *ContainerGatewaySuite) TearDownTest(c *check.C) {
method TestConfig (line 215) | func (s *ContainerGatewaySuite) TestConfig(c *check.C) {
method TestDirectTCP (line 254) | func (s *ContainerGatewaySuite) TestDirectTCP(c *check.C) {
method TestContainerHTTPProxy_Direct (line 318) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_Direct(c *check...
method TestContainerHTTPProxy_Direct_ContainerRequestUUID (line 324) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_Direct_Containe...
method TestContainerHTTPProxy_Tunnel (line 329) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_Tunnel(c *check...
method TestContainerHTTPProxy_ProxyTunnel (line 336) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_ProxyTunnel(c *...
method TestContainerHTTPProxy_DynamicPort (line 342) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_DynamicPort(c *...
method testContainerHTTPProxy (line 346) | func (s *ContainerGatewaySuite) testContainerHTTPProxy(c *check.C, tar...
method vhostAndTargetForWildcard (line 398) | func (s *ContainerGatewaySuite) vhostAndTargetForWildcard(c *check.C, ...
method vhostAndTargetForDynamicPort (line 407) | func (s *ContainerGatewaySuite) vhostAndTargetForDynamicPort(c *check....
method TestContainerHTTPProxyError_NoToken_Unlisted (line 419) | func (s *ContainerGatewaySuite) TestContainerHTTPProxyError_NoToken_Un...
method TestContainerHTTPProxyError_NoToken_Private (line 423) | func (s *ContainerGatewaySuite) TestContainerHTTPProxyError_NoToken_Pr...
method TestContainerHTTPProxyError_InvalidToken (line 427) | func (s *ContainerGatewaySuite) TestContainerHTTPProxyError_InvalidTok...
method TestContainerHTTPProxyError_AnonymousToken_Unlisted (line 431) | func (s *ContainerGatewaySuite) TestContainerHTTPProxyError_AnonymousT...
method TestContainerHTTPProxyError_AnonymousToken_Private (line 435) | func (s *ContainerGatewaySuite) TestContainerHTTPProxyError_AnonymousT...
method TestContainerHTTPProxyError_CRsDifferentUsers (line 439) | func (s *ContainerGatewaySuite) TestContainerHTTPProxyError_CRsDiffere...
method TestContainerHTTPProxyError_ContainerNotReadable (line 448) | func (s *ContainerGatewaySuite) TestContainerHTTPProxyError_ContainerN...
method TestContainerHTTPProxyError_DynamicPort (line 452) | func (s *ContainerGatewaySuite) TestContainerHTTPProxyError_DynamicPor...
method testContainerHTTPProxyError (line 456) | func (s *ContainerGatewaySuite) testContainerHTTPProxyError(c *check.C...
method TestContainerHTTPProxy_Curl_CookieAuth (line 473) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_Curl_CookieAuth...
method TestContainerHTTPProxy_Curl_CookieAuth_POST (line 477) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_Curl_CookieAuth...
method TestContainerHTTPProxy_Curl_QueryAuth (line 481) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_Curl_QueryAuth(...
method TestContainerHTTPProxy_Curl_QueryAuth_Tunnel (line 485) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_Curl_QueryAuth_...
method TestContainerHTTPProxy_Curl_QueryAuth_ProxyTunnel (line 490) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_Curl_QueryAuth_...
method TestContainerHTTPProxy_Curl_Anonymous (line 496) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_Curl_Anonymous(...
method TestContainerHTTPProxy_Curl_Anonymous_OPTIONS (line 500) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_Curl_Anonymous_...
method TestContainerHTTPProxy_Curl_QueryAuth_PreserveQuery (line 510) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_Curl_QueryAuth_...
method TestContainerHTTPProxy_Curl_Patch (line 515) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_Curl_Patch(c *c...
method testContainerHTTPProxyUsingCurl (line 524) | func (s *ContainerGatewaySuite) testContainerHTTPProxyUsingCurl(c *che...
method TestContainerHTTPProxy_ReusedPort_FollowRedirs_RejectPOST (line 580) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_ReusedPort_Foll...
method TestContainerHTTPProxy_ReusedPort_FollowRedirs_WithoutToken_ClearApplicationCookie (line 590) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_ReusedPort_Foll...
method TestContainerHTTPProxy_ReusedPort_FollowRedirs_WithToken_ClearApplicationCookie (line 601) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_ReusedPort_Foll...
method testContainerHTTPProxy_ReusedPort_FollowRedirs (line 613) | func (s *ContainerGatewaySuite) testContainerHTTPProxy_ReusedPort_Foll...
method TestContainerHTTPProxy_ReusedPort_QueryToken (line 679) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_ReusedPort_Quer...
method TestContainerHTTPProxy_ReusedPort_CookieToken (line 682) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_ReusedPort_Cook...
method TestContainerHTTPProxy_ReusedPort_NoToken (line 685) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_ReusedPort_NoTo...
method testContainerHTTPProxy_ReusedPort (line 688) | func (s *ContainerGatewaySuite) testContainerHTTPProxy_ReusedPort(c *c...
method TestContainerHTTPProxy_PublishedPortByName_ProxyTunnel (line 765) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_PublishedPortBy...
method TestContainerHTTPProxy_PublishedPortByName (line 771) | func (s *ContainerGatewaySuite) TestContainerHTTPProxy_PublishedPortBy...
method testContainerHTTPProxy_PublishedPortByName (line 775) | func (s *ContainerGatewaySuite) testContainerHTTPProxy_PublishedPortBy...
method setupLogCollection (line 816) | func (s *ContainerGatewaySuite) setupLogCollection(c *check.C) {
method saveLogAndCloseGateway (line 845) | func (s *ContainerGatewaySuite) saveLogAndCloseGateway(c *check.C) {
method TestContainerRequestLogViaTunnel (line 873) | func (s *ContainerGatewaySuite) TestContainerRequestLogViaTunnel(c *ch...
method TestContainerRequestLogViaGateway (line 912) | func (s *ContainerGatewaySuite) TestContainerRequestLogViaGateway(c *c...
method TestContainerRequestLogViaKeepWeb (line 917) | func (s *ContainerGatewaySuite) TestContainerRequestLogViaKeepWeb(c *c...
method testContainerRequestLog (line 923) | func (s *ContainerGatewaySuite) testContainerRequestLog(c *check.C) {
method TestContainerRequestLogViaCadaver (line 1051) | func (s *ContainerGatewaySuite) TestContainerRequestLogViaCadaver(c *c...
method runCadaver (line 1067) | func (s *ContainerGatewaySuite) runCadaver(c *check.C, password, path,...
method TestConnect (line 1104) | func (s *ContainerGatewaySuite) TestConnect(c *check.C) {
method TestConnectFail_NoToken (line 1142) | func (s *ContainerGatewaySuite) TestConnectFail_NoToken(c *check.C) {
method TestConnectFail_AnonymousToken (line 1148) | func (s *ContainerGatewaySuite) TestConnectFail_AnonymousToken(c *chec...
method TestCreateTunnel (line 1154) | func (s *ContainerGatewaySuite) TestCreateTunnel(c *check.C) {
method TestConnectThroughTunnelWithProxyOK (line 1179) | func (s *ContainerGatewaySuite) TestConnectThroughTunnelWithProxyOK(c ...
method TestConnectThroughTunnelWithProxyError (line 1184) | func (s *ContainerGatewaySuite) TestConnectThroughTunnelWithProxyError...
method TestConnectThroughTunnelNoProxyOK (line 1190) | func (s *ContainerGatewaySuite) TestConnectThroughTunnelNoProxyOK(c *c...
method setupGatewayWithTunnel (line 1194) | func (s *ContainerGatewaySuite) setupGatewayWithTunnel(c *check.C) *cr...
method testConnectThroughTunnel (line 1241) | func (s *ContainerGatewaySuite) testConnectThroughTunnel(c *check.C, e...
constant testDynamicPortMin (line 60) | testDynamicPortMin = 10000
constant testDynamicPortMax (line 61) | testDynamicPortMax = 20000
type testReusedPortFollowRedirs (line 569) | type testReusedPortFollowRedirs struct
function getCookie (line 1285) | func getCookie(resp *http.Response, name string) *http.Cookie {
FILE: lib/controller/localdb/container_request.go
method ContainerRequestCreate (line 22) | func (conn *Conn) ContainerRequestCreate(ctx context.Context, opts arvad...
method ContainerRequestUpdate (line 37) | func (conn *Conn) ContainerRequestUpdate(ctx context.Context, opts arvad...
method ContainerRequestGet (line 50) | func (conn *Conn) ContainerRequestGet(ctx context.Context, opts arvados....
method ContainerRequestList (line 55) | func (conn *Conn) ContainerRequestList(ctx context.Context, opts arvados...
method ContainerRequestDelete (line 60) | func (conn *Conn) ContainerRequestDelete(ctx context.Context, opts arvad...
method ContainerRequestContainerStatus (line 65) | func (conn *Conn) ContainerRequestContainerStatus(ctx context.Context, o...
FILE: lib/controller/localdb/container_request_test.go
type ContainerRequestSuite (line 14) | type ContainerRequestSuite struct
method TestCRCreateWithProperties (line 18) | func (s *ContainerRequestSuite) TestCRCreateWithProperties(c *check.C) {
method TestCRUpdateWithProperties (line 63) | func (s *ContainerRequestSuite) TestCRUpdateWithProperties(c *check.C) {
FILE: lib/controller/localdb/container_test.go
type containerSuite (line 25) | type containerSuite struct
method crAttrs (line 32) | func (s *containerSuite) crAttrs(c *C) map[string]interface{} {
method SetUpTest (line 50) | func (s *containerSuite) SetUpTest(c *C) {
method TearDownTest (line 63) | func (s *containerSuite) TearDownTest(c *C) {
method syncUpdatePriority (line 68) | func (s *containerSuite) syncUpdatePriority(c *C) {
method TestUpdatePriorityShouldBeNonZero (line 79) | func (s *containerSuite) TestUpdatePriorityShouldBeNonZero(c *C) {
method TestUpdatePriorityShouldBeZero (line 91) | func (s *containerSuite) TestUpdatePriorityShouldBeZero(c *C) {
method TestUpdatePriorityMultiLevelWorkflow (line 103) | func (s *containerSuite) TestUpdatePriorityMultiLevelWorkflow(c *C) {
FILE: lib/controller/localdb/docker_test.go
type tcpProxy (line 16) | type tcpProxy struct
method Port (line 57) | func (proxy *tcpProxy) Port() string {
function newTCPProxy (line 28) | func newTCPProxy(c *check.C, listenAddr, host, port string) *tcpProxy {
function newPgProxy (line 63) | func newPgProxy(c *check.C, cluster *arvados.Cluster, listenAddr string)...
function newInternalProxy (line 76) | func newInternalProxy(c *check.C, service arvados.Service, listenAddr st...
FILE: lib/controller/localdb/group.go
method GroupCreate (line 17) | func (conn *Conn) GroupCreate(ctx context.Context, opts arvados.CreateOp...
method GroupGet (line 30) | func (conn *Conn) GroupGet(ctx context.Context, opts arvados.GetOptions)...
method GroupUpdate (line 37) | func (conn *Conn) GroupUpdate(ctx context.Context, opts arvados.UpdateOp...
method GroupList (line 50) | func (conn *Conn) GroupList(ctx context.Context, opts arvados.ListOption...
method GroupDelete (line 55) | func (conn *Conn) GroupDelete(ctx context.Context, opts arvados.DeleteOp...
method GroupContents (line 60) | func (conn *Conn) GroupContents(ctx context.Context, options arvados.Gro...
FILE: lib/controller/localdb/group_test.go
type GroupSuite (line 16) | type GroupSuite struct
method TestGroupCreateWithProperties (line 20) | func (s *GroupSuite) TestGroupCreateWithProperties(c *check.C) {
method TestGroupUpdateWithProperties (line 51) | func (s *GroupSuite) TestGroupUpdateWithProperties(c *check.C) {
method TestCanWriteCanManageResponses (line 87) | func (s *GroupSuite) TestCanWriteCanManageResponses(c *check.C) {
FILE: lib/controller/localdb/link.go
method LinkCreate (line 15) | func (conn *Conn) LinkCreate(ctx context.Context, opts arvados.CreateOpt...
method LinkUpdate (line 29) | func (conn *Conn) LinkUpdate(ctx context.Context, opts arvados.UpdateOpt...
FILE: lib/controller/localdb/link_test.go
type LinkSuite (line 15) | type LinkSuite struct
method TestLinkCreateWithProperties (line 19) | func (s *LinkSuite) TestLinkCreateWithProperties(c *check.C) {
method TestLinkUpdateWithProperties (line 52) | func (s *LinkSuite) TestLinkUpdateWithProperties(c *check.C) {
FILE: lib/controller/localdb/localdb_test.go
type localdbSuite (line 21) | type localdbSuite struct
method SetUpSuite (line 34) | func (s *localdbSuite) SetUpSuite(c *check.C) {
method TearDownSuite (line 38) | func (s *localdbSuite) TearDownSuite(c *check.C) {
method SetUpTest (line 45) | func (s *localdbSuite) SetUpTest(c *check.C) {
method TearDownTest (line 68) | func (s *localdbSuite) TearDownTest(c *check.C) {
method setUpVocabulary (line 84) | func (s *localdbSuite) setUpVocabulary(c *check.C, testVocabulary stri...
FILE: lib/controller/localdb/log_activity.go
method logActivity (line 18) | func (conn *Conn) logActivity(ctx context.Context) {
function alignedPeriod (line 117) | func alignedPeriod(now time.Time, p time.Duration) time.Time {
FILE: lib/controller/localdb/log_activity_test.go
type activityPeriodSuite (line 18) | type activityPeriodSuite struct
method TestPeriod (line 22) | func (*activityPeriodSuite) TestPeriod(c *check.C) {
method TestLogActivity (line 51) | func (s *CollectionSuite) TestLogActivity(c *check.C) {
FILE: lib/controller/localdb/login.go
type loginController (line 25) | type loginController interface
function chooseLoginController (line 31) | func chooseLoginController(cluster *arvados.Cluster, parent *Conn) login...
function countTrue (line 84) | func countTrue(vals ...bool) int {
type errorLoginController (line 94) | type errorLoginController struct
method Login (line 96) | func (ctrl errorLoginController) Login(context.Context, arvados.LoginO...
method Logout (line 99) | func (ctrl errorLoginController) Logout(context.Context, arvados.Logou...
method UserAuthenticate (line 102) | func (ctrl errorLoginController) UserAuthenticate(context.Context, arv...
type federatedLoginController (line 106) | type federatedLoginController struct
method Login (line 110) | func (ctrl federatedLoginController) Login(context.Context, arvados.Lo...
method Logout (line 113) | func (ctrl federatedLoginController) Logout(ctx context.Context, opts ...
method UserAuthenticate (line 116) | func (ctrl federatedLoginController) UserAuthenticate(context.Context,...
method CreateAPIClientAuthorization (line 120) | func (conn *Conn) CreateAPIClientAuthorization(ctx context.Context, root...
function validateLoginRedirectTarget (line 169) | func validateLoginRedirectTarget(cluster *arvados.Cluster, returnTo stri...
function origin (line 218) | func origin(u url.URL) string {
FILE: lib/controller/localdb/login_docker_test.go
type LoginDockerSuite (line 32) | type LoginDockerSuite struct
method setUpDockerNetwork (line 41) | func (s *LoginDockerSuite) setUpDockerNetwork() (string, error) {
method ipFromCmd (line 53) | func (s *LoginDockerSuite) ipFromCmd(cmd *exec.Cmd) (string, error) {
method SetUpSuite (line 74) | func (s *LoginDockerSuite) SetUpSuite(c *check.C) {
method TearDownSuite (line 91) | func (s *LoginDockerSuite) TearDownSuite(c *check.C) {
method setUpConfig (line 103) | func (s *LoginDockerSuite) setUpConfig(c *check.C) {
method updateConfig (line 134) | func (s *LoginDockerSuite) updateConfig(expr string, arg map[string]in...
method enableLogin (line 147) | func (s *LoginDockerSuite) enableLogin(key string) error {
method SetUpTest (line 158) | func (s *LoginDockerSuite) SetUpTest(c *check.C) {
method TearDownTest (line 168) | func (s *LoginDockerSuite) TearDownTest(c *check.C) {
method startController (line 184) | func (s *LoginDockerSuite) startController(args ...string) (*url.URL, ...
method parseResponse (line 197) | func (s *LoginDockerSuite) parseResponse(resp *http.Response, body any...
method authenticate (line 219) | func (s *LoginDockerSuite) authenticate(server *url.URL, username, pas...
method getCurrentUser (line 234) | func (s *LoginDockerSuite) getCurrentUser(server *url.URL, token strin...
method TestLoginPAM (line 250) | func (s *LoginDockerSuite) TestLoginPAM(c *check.C) {
method TestLoginLDAPBuiltin (line 276) | func (s *LoginDockerSuite) TestLoginLDAPBuiltin(c *check.C) {
FILE: lib/controller/localdb/login_ldap.go
type ldapLoginController (line 23) | type ldapLoginController struct
method Logout (line 28) | func (ctrl *ldapLoginController) Logout(ctx context.Context, opts arva...
method Login (line 32) | func (ctrl *ldapLoginController) Login(ctx context.Context, opts arvad...
method UserAuthenticate (line 36) | func (ctrl *ldapLoginController) UserAuthenticate(ctx context.Context,...
FILE: lib/controller/localdb/login_oidc.go
type tokenCacheEnt (line 52) | type tokenCacheEnt struct
type oidcLoginController (line 57) | type oidcLoginController struct
method setup (line 84) | func (ctrl *oidcLoginController) setup() error {
method Logout (line 131) | func (ctrl *oidcLoginController) Logout(ctx context.Context, opts arva...
method Login (line 152) | func (ctrl *oidcLoginController) Login(ctx context.Context, opts arvad...
method UserAuthenticate (line 233) | func (ctrl *oidcLoginController) UserAuthenticate(ctx context.Context,...
method getAuthInfo (line 247) | func (ctrl *oidcLoginController) getAuthInfo(ctx context.Context, toke...
method newOAuth2State (line 356) | func (ctrl *oidcLoginController) newOAuth2State(key []byte, remote, re...
method parseOAuth2State (line 373) | func (ctrl *oidcLoginController) parseOAuth2State(encoded string) (s o...
type claimser (line 239) | type claimser interface
function loginError (line 347) | func loginError(sendError error) (resp arvados.LoginResponse, err error) {
type oauth2State (line 366) | type oauth2State struct
method verify (line 388) | func (s oauth2State) verify(key []byte) bool {
method String (line 395) | func (s oauth2State) String() string {
method computeHMAC (line 403) | func (s oauth2State) computeHMAC(key []byte) []byte {
function OIDCAccessTokenAuthorizer (line 409) | func OIDCAccessTokenAuthorizer(cluster *arvados.Cluster, getdb func(cont...
type oidcTokenAuthorizer (line 425) | type oidcTokenAuthorizer struct
method Middleware (line 431) | func (ta *oidcTokenAuthorizer) Middleware(w http.ResponseWriter, r *ht...
method WrapCalls (line 444) | func (ta *oidcTokenAuthorizer) WrapCalls(origFunc api.RoutableFunc) ap...
method registerToken (line 474) | func (ta *oidcTokenAuthorizer) registerToken(ctx context.Context, tok ...
method checkAccessTokenScope (line 644) | func (ta *oidcTokenAuthorizer) checkAccessTokenScope(ctx context.Conte...
FILE: lib/controller/localdb/login_oidc_test.go
function Test (line 35) | func Test(t *testing.T) {
type OIDCLoginSuite (line 41) | type OIDCLoginSuite struct
method SetUpTest (line 47) | func (s *OIDCLoginSuite) SetUpTest(c *check.C) {
method TestGoogleLogout (line 78) | func (s *OIDCLoginSuite) TestGoogleLogout(c *check.C) {
method checkRPInitiatedLogout (line 101) | func (s *OIDCLoginSuite) checkRPInitiatedLogout(c *check.C, returnTo s...
method TestRPInitiatedLogoutWithoutReturnTo (line 139) | func (s *OIDCLoginSuite) TestRPInitiatedLogoutWithoutReturnTo(c *check...
method TestRPInitiatedLogoutWithReturnTo (line 144) | func (s *OIDCLoginSuite) TestRPInitiatedLogoutWithReturnTo(c *check.C) {
method TestEndSessionEndpointBadScheme (line 151) | func (s *OIDCLoginSuite) TestEndSessionEndpointBadScheme(c *check.C) {
method TestNoRPInitiatedLogoutWithoutToken (line 160) | func (s *OIDCLoginSuite) TestNoRPInitiatedLogoutWithoutToken(c *check....
method TestGoogleLogin_Start_Bogus (line 170) | func (s *OIDCLoginSuite) TestGoogleLogin_Start_Bogus(c *check.C) {
method TestGoogleLogin_Start (line 177) | func (s *OIDCLoginSuite) TestGoogleLogin_Start(c *check.C) {
method TestGoogleLogin_UnknownClient (line 195) | func (s *OIDCLoginSuite) TestGoogleLogin_UnknownClient(c *check.C) {
method TestGoogleLogin_InvalidCode (line 202) | func (s *OIDCLoginSuite) TestGoogleLogin_InvalidCode(c *check.C) {
method TestGoogleLogin_InvalidState (line 213) | func (s *OIDCLoginSuite) TestGoogleLogin_InvalidState(c *check.C) {
method setupPeopleAPIError (line 224) | func (s *OIDCLoginSuite) setupPeopleAPIError(c *check.C) {
method TestGoogleLogin_PeopleAPIDisabled (line 232) | func (s *OIDCLoginSuite) TestGoogleLogin_PeopleAPIDisabled(c *check.C) {
method TestConfig (line 246) | func (s *OIDCLoginSuite) TestConfig(c *check.C) {
method TestGoogleLogin_PeopleAPIError (line 278) | func (s *OIDCLoginSuite) TestGoogleLogin_PeopleAPIError(c *check.C) {
method TestOIDCAuthorizer (line 289) | func (s *OIDCLoginSuite) TestOIDCAuthorizer(c *check.C) {
method TestGenericOIDCLogin (line 472) | func (s *OIDCLoginSuite) TestGenericOIDCLogin(c *check.C) {
method TestGoogleLogin_Success (line 570) | func (s *OIDCLoginSuite) TestGoogleLogin_Success(c *check.C) {
method TestGoogleLogin_RealName (line 614) | func (s *OIDCLoginSuite) TestGoogleLogin_RealName(c *check.C) {
method TestGoogleLogin_OIDCNameWithoutGivenAndFamilyNames (line 642) | func (s *OIDCLoginSuite) TestGoogleLogin_OIDCNameWithoutGivenAndFamily...
method TestGoogleLogin_AlternateEmailAddresses (line 659) | func (s *OIDCLoginSuite) TestGoogleLogin_AlternateEmailAddresses(c *ch...
method TestGoogleLogin_AlternateEmailAddresses_Primary (line 688) | func (s *OIDCLoginSuite) TestGoogleLogin_AlternateEmailAddresses_Prima...
method TestGoogleLogin_NoPrimaryEmailAddress (line 717) | func (s *OIDCLoginSuite) TestGoogleLogin_NoPrimaryEmailAddress(c *chec...
method startLogin (line 744) | func (s *OIDCLoginSuite) startLogin(c *check.C, checks ...func(url.Val...
method TestValidateLoginRedirectTarget (line 764) | func (s *OIDCLoginSuite) TestValidateLoginRedirectTarget(c *check.C) {
function getCallbackAuthInfo (line 815) | func getCallbackAuthInfo(c *check.C, railsSpy *arvadostest.Proxy) (authi...
FILE: lib/controller/localdb/login_pam.go
type pamLoginController (line 24) | type pamLoginController struct
method Logout (line 29) | func (ctrl *pamLoginController) Logout(ctx context.Context, opts arvad...
method Login (line 33) | func (ctrl *pamLoginController) Login(ctx context.Context, opts arvado...
method UserAuthenticate (line 37) | func (ctrl *pamLoginController) UserAuthenticate(ctx context.Context, ...
FILE: lib/controller/localdb/login_pam_static.go
type pamLoginController (line 16) | type pamLoginController struct
method Logout (line 21) | func (ctrl *pamLoginController) Logout(ctx context.Context, opts arvad...
method Login (line 25) | func (ctrl *pamLoginController) Login(ctx context.Context, opts arvado...
method UserAuthenticate (line 29) | func (ctrl *pamLoginController) UserAuthenticate(ctx context.Context, ...
FILE: lib/controller/localdb/login_test.go
type loginSuite (line 16) | type loginSuite struct
method TestValidateLoginRedirectTarget (line 18) | func (s *loginSuite) TestValidateLoginRedirectTarget(c *check.C) {
FILE: lib/controller/localdb/login_testuser.go
type testLoginController (line 19) | type testLoginController struct
method Logout (line 24) | func (ctrl *testLoginController) Logout(ctx context.Context, opts arva...
method Login (line 28) | func (ctrl *testLoginController) Login(ctx context.Context, opts arvad...
method UserAuthenticate (line 41) | func (ctrl *testLoginController) UserAuthenticate(ctx context.Context,...
constant loginform (line 57) | loginform = `
FILE: lib/controller/localdb/login_testuser_test.go
type TestUserSuite (line 18) | type TestUserSuite struct
method SetUpTest (line 22) | func (s *TestUserSuite) SetUpTest(c *check.C) {
method TestLogin (line 34) | func (s *TestUserSuite) TestLogin(c *check.C) {
method TestLoginForm (line 67) | func (s *TestUserSuite) TestLoginForm(c *check.C) {
method TestExpireTokenOnLogout (line 76) | func (s *TestUserSuite) TestExpireTokenOnLogout(c *check.C) {
FILE: lib/controller/localdb/logout.go
function logout (line 22) | func logout(ctx context.Context, cluster *arvados.Cluster, opts arvados....
function expireAPIClientAuthorization (line 42) | func expireAPIClientAuthorization(ctx context.Context) error {
FILE: lib/controller/proxy.go
type proxy (line 15) | type proxy struct
method Do (line 58) | func (p *proxy) Do(
method ForwardResponse (line 95) | func (p *proxy) ForwardResponse(w http.ResponseWriter, resp *http.Resp...
type HTTPError (line 19) | type HTTPError struct
method Error (line 24) | func (h HTTPError) Error() string {
type ResponseFilter (line 55) | type ResponseFilter
FILE: lib/controller/rails_restart_test.go
type railsRestartSuite (line 27) | type railsRestartSuite struct
method TestConfigReload (line 33) | func (s *railsRestartSuite) TestConfigReload(c *check.C) {
FILE: lib/controller/railsproxy/railsproxy.go
function FindRailsAPI (line 19) | func FindRailsAPI(cluster *arvados.Cluster) (*url.URL, bool, error) {
function NewConn (line 34) | func NewConn(cluster *arvados.Cluster) *rpc.Conn {
FILE: lib/controller/router/checker_test.go
type chkIsMethodNamed (line 26) | type chkIsMethodNamed struct
method Check (line 28) | func (*chkIsMethodNamed) Check(params []interface{}, names []string) (...
FILE: lib/controller/router/error.go
type errorWithStatus (line 7) | type errorWithStatus struct
method HTTPStatus (line 12) | func (err errorWithStatus) HTTPStatus() int {
function httpError (line 16) | func httpError(code int, err error) error {
FILE: lib/controller/router/request.go
function guessAndParse (line 19) | func guessAndParse(k, v string) (interface{}, error) {
method loadRequestParams (line 63) | func (rtr *router) loadRequestParams(req *http.Request, attrsKey string,...
method transcode (line 181) | func (rtr *router) transcode(src interface{}, dst interface{}) error {
function stringToBool (line 214) | func stringToBool(s string) bool {
FILE: lib/controller/router/request_test.go
type testReq (line 21) | type testReq struct
method Request (line 44) | func (tr *testReq) Request() *http.Request {
constant noToken (line 42) | noToken = "(no token)"
method TestAttrsInBody (line 135) | func (s *RouterSuite) TestAttrsInBody(c *check.C) {
method TestBoolParam (line 164) | func (s *RouterSuite) TestBoolParam(c *check.C) {
method TestStringOrArrayParam (line 209) | func (s *RouterSuite) TestStringOrArrayParam(c *check.C) {
FILE: lib/controller/router/response.go
constant rfc3339NanoFixed (line 19) | rfc3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00"
type responseOptions (line 21) | type responseOptions struct
method responseOptions (line 26) | func (rtr *router) responseOptions(opts interface{}) (responseOptions, e...
function applySelectParam (line 45) | func applySelectParam(selectParam []string, orig map[string]interface{})...
method sendResponse (line 64) | func (rtr *router) sendResponse(w http.ResponseWriter, req *http.Request...
method sendError (line 132) | func (rtr *router) sendError(w http.ResponseWriter, err error) {
function kind (line 162) | func kind(resp interface{}) string {
method mungeItemFields (line 176) | func (rtr *router) mungeItemFields(tmp map[string]interface{}) {
FILE: lib/controller/router/router.go
type router (line 25) | type router struct
method addRoutes (line 60) | func (rtr *router) addRoutes() {
method addRoute (line 654) | func (rtr *router) addRoute(endpoint arvados.APIEndpoint, defaultOpts ...
method ServeHTTP (line 717) | func (rtr *router) ServeHTTP(w http.ResponseWriter, r *http.Request) {
method serveContainerHTTPProxy (line 818) | func (rtr *router) serveContainerHTTPProxy(w http.ResponseWriter, req ...
type Config (line 31) | type Config struct
function New (line 50) | func New(backend arvados.API, config Config) *router {
function ContainerHTTPProxyTarget (line 768) | func ContainerHTTPProxyTarget(svc *arvados.ServiceWithPortRange, req *ht...
FILE: lib/controller/router/router_test.go
function Test (line 28) | func Test(t *testing.T) {
type RouterSuite (line 34) | type RouterSuite struct
method SetUpTest (line 39) | func (s *RouterSuite) SetUpTest(c *check.C) {
method TestOptions (line 55) | func (s *RouterSuite) TestOptions(c *check.C) {
type RouterIntegrationSuite (line 358) | type RouterIntegrationSuite struct
method SetUpTest (line 362) | func (s *RouterIntegrationSuite) SetUpTest(c *check.C) {
method TearDownSuite (line 371) | func (s *RouterIntegrationSuite) TearDownSuite(c *check.C) {
method TestCollectionResponses (line 376) | func (s *RouterIntegrationSuite) TestCollectionResponses(c *check.C) {
method TestMaxRequestSize (line 428) | func (s *RouterIntegrationSuite) TestMaxRequestSize(c *check.C) {
method TestContainerList (line 456) | func (s *RouterIntegrationSuite) TestContainerList(c *check.C) {
method TestContainerLock (line 500) | func (s *RouterIntegrationSuite) TestContainerLock(c *check.C) {
method TestWritableBy (line 527) | func (s *RouterIntegrationSuite) TestWritableBy(c *check.C) {
method TestFullTimestampsInResponse (line 534) | func (s *RouterIntegrationSuite) TestFullTimestampsInResponse(c *check...
method TestSelectParam (line 556) | func (s *RouterIntegrationSuite) TestSelectParam(c *check.C) {
method TestIncluded (line 599) | func (s *RouterIntegrationSuite) TestIncluded(c *check.C) {
method TestHEAD (line 633) | func (s *RouterIntegrationSuite) TestHEAD(c *check.C) {
method TestRouteNotFound (line 638) | func (s *RouterIntegrationSuite) TestRouteNotFound(c *check.C) {
method TestCORS (line 657) | func (s *RouterIntegrationSuite) TestCORS(c *check.C) {
method TestComputedPermissionList (line 706) | func (s *RouterIntegrationSuite) TestComputedPermissionList(c *check.C) {
function doRequest (line 722) | func doRequest(c *check.C, rtr http.Handler, token, method, path string,...
FILE: lib/controller/rpc/conn.go
constant rfc3339NanoFixed (line 32) | rfc3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00"
type TokenProvider (line 34) | type TokenProvider
function PassthroughTokenProvider (line 36) | func PassthroughTokenProvider(ctx context.Context) ([]string, error) {
type Conn (line 44) | type Conn struct
method requestAndDecode (line 91) | func (conn *Conn) requestAndDecode(ctx context.Context, dst interface{...
method BaseURL (line 182) | func (conn *Conn) BaseURL() url.URL {
method ConfigGet (line 186) | func (conn *Conn) ConfigGet(ctx context.Context) (json.RawMessage, err...
method VocabularyGet (line 193) | func (conn *Conn) VocabularyGet(ctx context.Context) (arvados.Vocabula...
method DiscoveryDocument (line 200) | func (conn *Conn) DiscoveryDocument(ctx context.Context) (arvados.Disc...
method Login (line 216) | func (conn *Conn) Login(ctx context.Context, options arvados.LoginOpti...
method Logout (line 224) | func (conn *Conn) Logout(ctx context.Context, options arvados.LogoutOp...
method relativeToBaseURL (line 235) | func (conn *Conn) relativeToBaseURL(location string) string {
method AuthorizedKeyCreate (line 247) | func (conn *Conn) AuthorizedKeyCreate(ctx context.Context, options arv...
method AuthorizedKeyUpdate (line 254) | func (conn *Conn) AuthorizedKeyUpdate(ctx context.Context, options arv...
method AuthorizedKeyGet (line 261) | func (conn *Conn) AuthorizedKeyGet(ctx context.Context, options arvado...
method AuthorizedKeyList (line 268) | func (conn *Conn) AuthorizedKeyList(ctx context.Context, options arvad...
method AuthorizedKeyDelete (line 275) | func (conn *Conn) AuthorizedKeyDelete(ctx context.Context, options arv...
method CollectionCreate (line 282) | func (conn *Conn) CollectionCreate(ctx context.Context, options arvado...
method CollectionUpdate (line 289) | func (conn *Conn) CollectionUpdate(ctx context.Context, options arvado...
method CollectionGet (line 296) | func (conn *Conn) CollectionGet(ctx context.Context, options arvados.G...
method CollectionList (line 303) | func (conn *Conn) CollectionList(ctx context.Context, options arvados....
method CollectionProvenance (line 310) | func (conn *Conn) CollectionProvenance(ctx context.Context, options ar...
method CollectionUsedBy (line 317) | func (conn *Conn) CollectionUsedBy(ctx context.Context, options arvado...
method CollectionDelete (line 324) | func (conn *Conn) CollectionDelete(ctx context.Context, options arvado...
method CollectionTrash (line 331) | func (conn *Conn) CollectionTrash(ctx context.Context, options arvados...
method CollectionUntrash (line 338) | func (conn *Conn) CollectionUntrash(ctx context.Context, options arvad...
method ComputedPermissionList (line 345) | func (conn *Conn) ComputedPermissionList(ctx context.Context, options ...
method ContainerCreate (line 352) | func (conn *Conn) ContainerCreate(ctx context.Context, options arvados...
method ContainerUpdate (line 359) | func (conn *Conn) ContainerUpdate(ctx context.Context, options arvados...
method ContainerPriorityUpdate (line 366) | func (conn *Conn) ContainerPriorityUpdate(ctx context.Context, options...
method ContainerGet (line 373) | func (conn *Conn) ContainerGet(ctx context.Context, options arvados.Ge...
method ContainerList (line 380) | func (conn *Conn) ContainerList(ctx context.Context, options arvados.L...
method ContainerDelete (line 387) | func (conn *Conn) ContainerDelete(ctx context.Context, options arvados...
method ContainerLock (line 394) | func (conn *Conn) ContainerLock(ctx context.Context, options arvados.G...
method ContainerUnlock (line 401) | func (conn *Conn) ContainerUnlock(ctx context.Context, options arvados...
method ContainerHTTPProxy (line 408) | func (conn *Conn) ContainerHTTPProxy(ctx context.Context, options arva...
method ContainerSSH (line 415) | func (conn *Conn) ContainerSSH(ctx context.Context, options arvados.Co...
method ContainerGatewayTunnel (line 431) | func (conn *Conn) ContainerGatewayTunnel(ctx context.Context, options ...
method socket (line 444) | func (conn *Conn) socket(ctx context.Context, u *url.URL, upgradeHeade...
method ContainerRequestCreate (line 509) | func (conn *Conn) ContainerRequestCreate(ctx context.Context, options ...
method ContainerRequestUpdate (line 516) | func (conn *Conn) ContainerRequestUpdate(ctx context.Context, options ...
method ContainerRequestGet (line 523) | func (conn *Conn) ContainerRequestGet(ctx context.Context, options arv...
method ContainerRequestList (line 530) | func (conn *Conn) ContainerRequestList(ctx context.Context, options ar...
method ContainerRequestDelete (line 537) | func (conn *Conn) ContainerRequestDelete(ctx context.Context, options ...
method ContainerRequestContainerStatus (line 544) | func (conn *Conn) ContainerRequestContainerStatus(ctx context.Context,...
method ContainerRequestLog (line 551) | func (conn *Conn) ContainerRequestLog(ctx context.Context, options arv...
method reverseProxy (line 555) | func (conn *Conn) reverseProxy(setRawQuery string, setHeader http.Head...
method GroupCreate (line 572) | func (conn *Conn) GroupCreate(ctx context.Context, options arvados.Cre...
method GroupUpdate (line 579) | func (conn *Conn) GroupUpdate(ctx context.Context, options arvados.Upd...
method GroupGet (line 586) | func (conn *Conn) GroupGet(ctx context.Context, options arvados.GetOpt...
method GroupList (line 593) | func (conn *Conn) GroupList(ctx context.Context, options arvados.ListO...
method GroupContents (line 600) | func (conn *Conn) GroupContents(ctx context.Context, options arvados.G...
method GroupShared (line 607) | func (conn *Conn) GroupShared(ctx context.Context, options arvados.Lis...
method GroupDelete (line 614) | func (conn *Conn) GroupDelete(ctx context.Context, options arvados.Del...
method GroupTrash (line 621) | func (conn *Conn) GroupTrash(ctx context.Context, options arvados.Dele...
method GroupUntrash (line 628) | func (conn *Conn) GroupUntrash(ctx context.Context, options arvados.Un...
method LinkCreate (line 635) | func (conn *Conn) LinkCreate(ctx context.Context, options arvados.Crea...
method LinkUpdate (line 642) | func (conn *Conn) LinkUpdate(ctx context.Context, options arvados.Upda...
method LinkGet (line 649) | func (conn *Conn) LinkGet(ctx context.Context, options arvados.GetOpti...
method LinkList (line 656) | func (conn *Conn) LinkList(ctx context.Context, options arvados.ListOp...
method LinkDelete (line
Copy disabled (too large)
Download .json
Condensed preview — 3341 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (20,635K chars).
[
{
"path": ".gitignore",
"chars": 1025,
"preview": ".bundle\n.rvmrc\n*~\n*.pyc\n*.egg\n*.egg-info\n.eggs\n*.pid\n*.pid.lock\n*.gem\n*.rpm\n*.deb\ndocker/*/generated\ndocker/config.yml\n/"
},
{
"path": ".licenseignore",
"chars": 3797,
"preview": "*agpl-3.0.html\n*agpl-3.0.txt\napache-2.0.txt\nAUTHORS\n*/bootstrap.css\n*/bootstrap.js\n*bootstrap-theme.css\n*by-sa-3.0.html\n"
},
{
"path": "AUTHORS",
"chars": 843,
"preview": "# Names should be added to this file with this pattern:\n#\n# For individuals:\n# Name <email address>\n#\n# For organizati"
},
{
"path": "CITATION.cff",
"chars": 1206,
"preview": "cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n- name: \"The Arvados Authors\"\n"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 4886,
"preview": "Arvados Code of Conduct\n=======================\n\nThe Arvados Project is dedicated to providing a harassment-free experie"
},
{
"path": "CONTRIBUTING.md",
"chars": 8096,
"preview": "[comment]: # (Copyright © The Arvados Authors. All rights reserved.)\n[comment]: # ()\n[comment]: # (SPDX-License-Identifi"
},
{
"path": "COPYING",
"chars": 68200,
"preview": "Unless indicated otherwise in the header of the file, the files in this\nrepository are distributed under one of three di"
},
{
"path": "Makefile",
"chars": 691,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nexport WORKSPACE?=$(she"
},
{
"path": "README.md",
"chars": 4190,
"preview": "[comment]: # (Copyright © The Arvados Authors. All rights reserved.)\n[comment]: # ()\n[comment]: # (SPDX-License-Identifi"
},
{
"path": "SECURITY.md",
"chars": 1725,
"preview": "# Arvados Project Security Policy\n\n## Supported Versions\n\nThe Arvados project will issue security fixes by making point "
},
{
"path": "agpl-3.0.txt",
"chars": 34520,
"preview": " GNU AFFERO GENERAL PUBLIC LICENSE\n Version 3, 19 November 2007\n\n Copyright (C)"
},
{
"path": "apache-2.0.txt",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "build/README",
"chars": 3788,
"preview": "Prerequisites\n=============\n\nIn order to build packages, you will need:\n\n* Ansible installed following the instructions "
},
{
"path": "build/build_docker_image.py",
"chars": 10950,
"preview": "#!/usr/bin/env python3\n# build_docker_image.py - Build a Docker image with Python source packages\n#\n# Copyright (C) The "
},
{
"path": "build/check-copyright-notices",
"chars": 5371,
"preview": "#!/bin/bash\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nset -e\n\nfix"
},
{
"path": "build/create-plot-data-from-log.sh",
"chars": 2043,
"preview": "#!/bin/bash\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nbuild=$1\nfi"
},
{
"path": "build/docker/python-venv.Dockerfile",
"chars": 1227,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n#\n# Build this with `b"
},
{
"path": "build/go-python-package-scripts/postinst",
"chars": 2106,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nset -e\n\n# Det"
},
{
"path": "build/go-python-package-scripts/prerm",
"chars": 1002,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nset -e\n\n# Det"
},
{
"path": "build/package-testing/common-test-packages.sh",
"chars": 535,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nset -eu\n\nFAIL"
},
{
"path": "build/package-testing/deb-common-test-packages.sh",
"chars": 2349,
"preview": "#!/bin/bash\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\nset -eu\n\n# S"
},
{
"path": "build/package-testing/rpm-common-test-packages.sh",
"chars": 1492,
"preview": "#!/bin/bash\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nset -eu\n\n# "
},
{
"path": "build/package-testing/test-package-arvados-api-server.sh",
"chars": 2107,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nset -e\n\nPACKA"
},
{
"path": "build/package-testing/test-package-arvados-client.sh",
"chars": 150,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nset -e\n\narvad"
},
{
"path": "build/package-testing/test-package-arvados-docker-cleaner.sh",
"chars": 152,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nset -e\n\narvad"
},
{
"path": "build/package-testing/test-package-python3-arvados-cwl-runner.sh",
"chars": 155,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nset -e\n\narvad"
},
{
"path": "build/package-testing/test-package-python3-arvados-python-client.sh",
"chars": 270,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\narv-put --ver"
},
{
"path": "build/package-testing/test-package-python3-crunchstat-summary.sh",
"chars": 148,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nset -e\n\ncrunc"
},
{
"path": "build/package-testing/test-package-python3-python-arvados-fuse.sh",
"chars": 135,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nset -e\n\narv-m"
},
{
"path": "build/pypkg_info.py",
"chars": 3386,
"preview": "#!/usr/bin/env python3\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\""
},
{
"path": "build/rails-package-scripts/README.md",
"chars": 713,
"preview": "[//]: # Copyright (C) The Arvados Authors. All rights reserved.\n[//]: #\n[//]: # SPDX-License-Identifier: AGPL-3.0\n\nWhen "
},
{
"path": "build/rails-package-scripts/arvados-api-server.sh",
"chars": 463,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n# This file d"
},
{
"path": "build/rails-package-scripts/postinst.sh",
"chars": 10189,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n# This code r"
},
{
"path": "build/rails-package-scripts/postrm.sh",
"chars": 657,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n# This code r"
},
{
"path": "build/rails-package-scripts/prerm.sh",
"chars": 749,
"preview": "#!/bin/sh\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n# This code r"
},
{
"path": "build/requirements.build-packages.txt",
"chars": 179,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n#\n# Python requirements "
},
{
"path": "build/requirements.build.txt",
"chars": 438,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n#\n# Common requirements "
},
{
"path": "build/requirements.tests.txt",
"chars": 784,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n#\n# Python requirements "
},
{
"path": "build/run-build-packages-all-targets.sh",
"chars": 2590,
"preview": "#!/bin/bash\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nread -rd \"\\"
},
{
"path": "build/run-build-packages-one-target.sh",
"chars": 11662,
"preview": "#!/bin/bash\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nread -rd \"\\"
},
{
"path": "build/run-build-packages-python-and-ruby.sh",
"chars": 6038,
"preview": "#!/bin/bash\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nCOLUMNS=80\n"
},
{
"path": "build/run-build-packages.sh",
"chars": 9809,
"preview": "#!/bin/bash\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n. \"$(dirnam"
},
{
"path": "build/run-build-test-packages-one-target.sh",
"chars": 4644,
"preview": "#!/bin/bash\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nread -rd \"\\"
},
{
"path": "build/run-library.sh",
"chars": 36851,
"preview": "#!/bin/bash -xe\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n# A lib"
},
{
"path": "build/run-tests.sh",
"chars": 39406,
"preview": "#!/bin/bash\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nCOLUMNS=80\n"
},
{
"path": "build/version-at-commit.sh",
"chars": 4020,
"preview": "#!/bin/bash\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\nset -e -o p"
},
{
"path": "cc-by-sa-3.0.txt",
"chars": 21155,
"preview": "\nAttribution-ShareAlike 3.0 Unported\n\n CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERV"
},
{
"path": "cmd/arvados-server/arvados-controller.service",
"chars": 468,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n[Unit]\nDescription=Arva"
},
{
"path": "cmd/arvados-server/arvados-dispatch-cloud.service",
"chars": 931,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n[Unit]\nDescription=arva"
},
{
"path": "cmd/arvados-server/arvados-dispatch-lsf.service",
"chars": 472,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n[Unit]\nDescription=arva"
},
{
"path": "cmd/arvados-server/arvados-health.service",
"chars": 472,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n[Unit]\nDescription=Arva"
},
{
"path": "cmd/arvados-server/arvados-ws.service",
"chars": 424,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n[Unit]\nDescription=Arva"
},
{
"path": "cmd/arvados-server/cmd.go",
"chars": 4129,
"preview": "// Copyright (C) The Arvados Authors. All rights reserved.\n//\n// SPDX-License-Identifier: AGPL-3.0\n\npackage main\n\nimport"
},
{
"path": "cmd/arvados-server/crunch-dispatch-slurm.service",
"chars": 488,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n[Unit]\nDescription=Arva"
},
{
"path": "cmd/arvados-server/keep-balance.service",
"chars": 714,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n[Unit]\nDescription=Arva"
},
{
"path": "cmd/arvados-server/keep-web.service",
"chars": 474,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n[Unit]\nDescription=Arva"
},
{
"path": "cmd/arvados-server/keepproxy.service",
"chars": 459,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n[Unit]\nDescription=Arva"
},
{
"path": "cmd/arvados-server/keepstore.service",
"chars": 720,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n[Unit]\nDescription=Arva"
},
{
"path": "contrib/R-sdk/.Rbuildignore",
"chars": 45,
"preview": "^.*\\.Rproj$\n^\\.Rproj\\.user$\n^docs$\n^pkgdown$\n"
},
{
"path": "contrib/R-sdk/.gitignore",
"chars": 34,
"preview": "ArvadosR_*.tar.*\nman/\nR/Arvados.R\n"
},
{
"path": "contrib/R-sdk/ArvadosR.Rproj",
"chars": 356,
"preview": "Version: 1.0\n\nRestoreWorkspace: Default\nSaveWorkspace: Default\nAlwaysSaveHistory: Default\n\nEnableCodeIndexing: Yes\nUseSp"
},
{
"path": "contrib/R-sdk/DESCRIPTION",
"chars": 832,
"preview": "Package: ArvadosR\nType: Package\nTitle: Arvados R SDK\nVersion: 3.2.1\nAuthors@R: c(person(\"Fuad\", \"Muhic\", role = c(\"aut\","
},
{
"path": "contrib/R-sdk/Makefile",
"chars": 1153,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\n# NOTE: `R CMD check`"
},
{
"path": "contrib/R-sdk/NAMESPACE",
"chars": 224,
"preview": "# Generated by roxygen2: do not edit by hand\n\nS3method(print,ArvadosFile)\nS3method(print,Collection)\nS3method(print,Subc"
},
{
"path": "contrib/R-sdk/R/ArvadosFile.R",
"chars": 11774,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\n#' R6 Class Represent"
},
{
"path": "contrib/R-sdk/R/ArvadosR.R",
"chars": 871,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\r\n#\r\n# SPDX-License-Identifier: Apache-2.0\r\n\r\n#' @title Arvados"
},
{
"path": "contrib/R-sdk/R/Collection.R",
"chars": 18795,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\n#' R6 Class Represent"
},
{
"path": "contrib/R-sdk/R/CollectionTree.R",
"chars": 3548,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nCollectionTree <- R6:"
},
{
"path": "contrib/R-sdk/R/HttpParser.R",
"chars": 1725,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nHttpParser <- R6::R6C"
},
{
"path": "contrib/R-sdk/R/HttpRequest.R",
"chars": 2149,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nHttpRequest <- R6::R6"
},
{
"path": "contrib/R-sdk/R/RESTService.R",
"chars": 9017,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nRESTService <- R6::R6"
},
{
"path": "contrib/R-sdk/R/Subcollection.R",
"chars": 12634,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\n#' R6 Class Represent"
},
{
"path": "contrib/R-sdk/R/util.R",
"chars": 2451,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\n#' listAll\n#'\n#' List"
},
{
"path": "contrib/R-sdk/R/zzz.R",
"chars": 490,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\n.onLoad <- function(l"
},
{
"path": "contrib/R-sdk/README.md",
"chars": 9894,
"preview": "[comment]: # (Copyright © The Arvados Authors. All rights reserved.)\n[comment]: # ()\n[comment]: # (SPDX-License-Identifi"
},
{
"path": "contrib/R-sdk/arvados-v1-discovery.json",
"chars": 224105,
"preview": "{\n \"auth\": {\n \"oauth2\": {\n \"scopes\": {\n \"https://api.arvados.org/auth/arvados\": {\n \"description"
},
{
"path": "contrib/R-sdk/generateApi.R",
"chars": 24017,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nlibrary(jsonlite)\n\nge"
},
{
"path": "contrib/R-sdk/install_deps.R",
"chars": 528,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\noptions(repos=structu"
},
{
"path": "contrib/R-sdk/run_test.R",
"chars": 247,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\ndevtools::check()\n\nre"
},
{
"path": "contrib/R-sdk/tests/testthat/fakes/FakeArvados.R",
"chars": 1065,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nFakeArvados <- R6::R6"
},
{
"path": "contrib/R-sdk/tests/testthat/fakes/FakeHttpParser.R",
"chars": 1470,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nFakeHttpParser <- R6:"
},
{
"path": "contrib/R-sdk/tests/testthat/fakes/FakeHttpRequest.R",
"chars": 6383,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nFakeHttpRequest <- R6"
},
{
"path": "contrib/R-sdk/tests/testthat/fakes/FakeRESTService.R",
"chars": 6084,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nFakeRESTService <- R6"
},
{
"path": "contrib/R-sdk/tests/testthat/test-ArvadosFile.R",
"chars": 10746,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nsource(\"fakes/FakeRES"
},
{
"path": "contrib/R-sdk/tests/testthat/test-Collection.R",
"chars": 10109,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nsource(\"fakes/FakeRES"
},
{
"path": "contrib/R-sdk/tests/testthat/test-CollectionTree.R",
"chars": 3766,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\ncontext(\"CollectionTr"
},
{
"path": "contrib/R-sdk/tests/testthat/test-HttpParser.R",
"chars": 3967,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\ncontext(\"Http Parser\""
},
{
"path": "contrib/R-sdk/tests/testthat/test-HttpRequest.R",
"chars": 3392,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\ncontext(\"Http Request"
},
{
"path": "contrib/R-sdk/tests/testthat/test-RESTService.R",
"chars": 15211,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nsource(\"fakes/FakeArv"
},
{
"path": "contrib/R-sdk/tests/testthat/test-Subcollection.R",
"chars": 13730,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nsource(\"fakes/FakeRES"
},
{
"path": "contrib/R-sdk/tests/testthat/test-util.R",
"chars": 3318,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\ncontext(\"Utility func"
},
{
"path": "contrib/R-sdk/tests/testthat.R",
"chars": 159,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nlibrary(testthat)\nlib"
},
{
"path": "contrib/README.md",
"chars": 759,
"preview": "## Arvados Client Contributions\n\n<!--\nCopyright (C) The Arvados Authors. All rights reserved.\n\nSPDX-License-Identifier: "
},
{
"path": "contrib/arvados-bootstrap/LICENSE-2.0.txt",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "contrib/arvados-bootstrap/README.md",
"chars": 9935,
"preview": "# Arvados Bootstrap Tools\n\n<!--\nCopyright (C) The Arvados Authors. All rights reserved.\n\nSPDX-License-Identifier: Apache"
},
{
"path": "contrib/arvados-bootstrap/pyproject.toml",
"chars": 1421,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\n[build-system]\nrequir"
},
{
"path": "contrib/arvados-bootstrap/src/arv_bootstrap/__init__.py",
"chars": 98,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n"
},
{
"path": "contrib/arvados-bootstrap/src/arv_bootstrap/export_import.py",
"chars": 6364,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nimport argparse\nimpor"
},
{
"path": "contrib/arvados-bootstrap/src/arv_bootstrap/federation_migrate.py",
"chars": 18667,
"preview": "#!/usr/bin/env python3\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0"
},
{
"path": "contrib/arvados-bootstrap/src/arv_bootstrap/seed.py",
"chars": 12676,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nimport argparse\nimpor"
},
{
"path": "contrib/arvados-bootstrap/src/arv_bootstrap/stubapi.py",
"chars": 5236,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: Apache-2.0\n\nimport functools\nimpo"
},
{
"path": "contrib/arvbash/arvbash.sh",
"chars": 2925,
"preview": "#!/bin/bash\n# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0\n\n# bash func"
},
{
"path": "contrib/java-sdk-v2/.gitignore",
"chars": 80,
"preview": "/.gradle/\n/bin/\n/build/\n.project\n.classpath\n/.settings/\n.DS_Store\n/.idea/\n/out/\n"
},
{
"path": "contrib/java-sdk-v2/.licenseignore",
"chars": 50,
"preview": ".licenseignore\nagpl-3.0.txt\napache-2.0.txt\nCOPYING"
},
{
"path": "contrib/java-sdk-v2/COPYING",
"chars": 578,
"preview": "Unless indicated otherwise in the header of the file, the files in this\nrepository are dual-licensed AGPL-3.0 and Apache"
},
{
"path": "contrib/java-sdk-v2/README.md",
"chars": 5028,
"preview": "```\nCopyright (C) The Arvados Authors. All rights reserved.\n \nSPDX-License-Identifier: CC-BY-SA-3.0\n```\n\n# Arvados Java "
},
{
"path": "contrib/java-sdk-v2/agpl-3.0.txt",
"chars": 34520,
"preview": " GNU AFFERO GENERAL PUBLIC LICENSE\n Version 3, 19 November 2007\n\n Copyright (C)"
},
{
"path": "contrib/java-sdk-v2/apache-2.0.txt",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "contrib/java-sdk-v2/build.gradle",
"chars": 3138,
"preview": "apply plugin: 'java-library'\napply plugin: 'eclipse'\napply plugin: 'idea'\napply plugin: 'maven'\napply plugin: 'signing'\n"
},
{
"path": "contrib/java-sdk-v2/gradle.properties",
"chars": 152,
"preview": "/*\n Copyright (C) The Arvados Authors. All rights reserved.\n\n SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n*/\n\nossrhU"
},
{
"path": "contrib/java-sdk-v2/settings.gradle",
"chars": 38,
"preview": "rootProject.name = 'arvados-java-sdk'\n"
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/BaseApiClient.java",
"chars": 3193,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/BaseStandardApiClient.java",
"chars": 5240,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/CollectionsApiClient.java",
"chars": 1776,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/ConfigApiClient.java",
"chars": 2405,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/CountingFileRequestBody.java",
"chars": 1148,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/CountingRequestBody.java",
"chars": 1485,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/CountingStreamRequestBody.java",
"chars": 1173,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/GroupsApiClient.java",
"chars": 2457,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/KeepWebApiClient.java",
"chars": 3264,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/LinksApiClient.java",
"chars": 751,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/ProgressListener.java",
"chars": 268,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/UsersApiClient.java",
"chars": 1287,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/client/factory/OkHttpClientFactory.java",
"chars": 4107,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/ApiError.java",
"chars": 1033,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/ArvadosConfig.java",
"chars": 1348,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/Collection.java",
"chars": 4198,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/CollectionList.java",
"chars": 809,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/CollectionReplaceFiles.java",
"chars": 1930,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/Group.java",
"chars": 9339,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/GroupList.java",
"chars": 789,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/Item.java",
"chars": 2863,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/ItemList.java",
"chars": 1620,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/KeepService.java",
"chars": 1890,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/KeepServiceList.java",
"chars": 812,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/Link.java",
"chars": 1943,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/LinkList.java",
"chars": 785,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/RuntimeConstraints.java",
"chars": 1376,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/User.java",
"chars": 3608,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/UserList.java",
"chars": 785,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/argument/Argument.java",
"chars": 437,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/argument/ContentsGroup.java",
"chars": 1371,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/argument/Filter.java",
"chars": 3451,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/argument/ListArgument.java",
"chars": 4839,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/api/model/argument/UntrashGroup.java",
"chars": 762,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/common/Characters.java",
"chars": 541,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/common/Headers.java",
"chars": 306,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/common/Patterns.java",
"chars": 639,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/config/ConfigProvider.java",
"chars": 655,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/config/ExternalConfigProvider.java",
"chars": 9855,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/config/FileConfigProvider.java",
"chars": 2705,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/config/WebDAVConfigFetcher.java",
"chars": 4400,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/exception/ArvadosApiException.java",
"chars": 556,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/exception/ArvadosClientException.java",
"chars": 631,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/facade/ArvadosFacade.java",
"chars": 16781,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/collection/CollectionFactory.java",
"chars": 3640,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/collection/FileToken.java",
"chars": 1444,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/collection/ManifestDecoder.java",
"chars": 2491,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/collection/ManifestFactory.java",
"chars": 1905,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/collection/ManifestStream.java",
"chars": 1189,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/keep/FileDownloader.java",
"chars": 9745,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/keep/FileUploader.java",
"chars": 2084,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/keep/KeepLocator.java",
"chars": 2538,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/keep/exception/DownloadFolderAlreadyExistsException.java",
"chars": 711,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/logic/keep/exception/FileAlreadyExistsException.java",
"chars": 651,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/utils/FileMerge.java",
"chars": 721,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/java/org/arvados/client/utils/FileSplit.java",
"chars": 1329,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/main/resources/reference.conf",
"chars": 704,
"preview": "# Copyright (C) The Arvados Authors. All rights reserved.\n#\n# SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n#\n# Arvado"
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/BaseStandardApiClientTest.java",
"chars": 1280,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/CollectionsApiClientTest.java",
"chars": 6259,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/GroupsApiClientTest.java",
"chars": 3325,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/KeepWebApiClientTest.java",
"chars": 2626,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/LinkApiClientTest.java",
"chars": 3478,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/UsersApiClientTest.java",
"chars": 3940,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/api/client/factory/OkHttpClientFactoryTest.java",
"chars": 3624,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/config/ExternalConfigProviderTest.java",
"chars": 8413,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/config/WebDAVConfigFetcherTest.java",
"chars": 7298,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/facade/ArvadosFacadeIntegrationTest.java",
"chars": 9773,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/facade/ArvadosFacadeTest.java",
"chars": 7953,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/junit/categories/IntegrationTests.java",
"chars": 207,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/logic/collection/FileTokenTest.java",
"chars": 1376,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/logic/collection/ManifestDecoderTest.java",
"chars": 3505,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/logic/collection/ManifestFactoryTest.java",
"chars": 1067,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/logic/collection/ManifestStreamTest.java",
"chars": 777,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/logic/keep/FileDownloaderTest.java",
"chars": 7431,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/logic/keep/KeepLocatorTest.java",
"chars": 1402,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/test/utils/ApiClientTestUtils.java",
"chars": 1538,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/test/utils/ArvadosClientIntegrationTest.java",
"chars": 959,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/test/utils/ArvadosClientMockedWebServerTest.java",
"chars": 650,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/test/utils/ArvadosClientUnitTest.java",
"chars": 703,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/test/utils/FileTestUtils.java",
"chars": 1675,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/test/utils/RequestMethod.java",
"chars": 226,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/utils/FileMergeTest.java",
"chars": 1221,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/java/org/arvados/client/utils/FileSplitTest.java",
"chars": 1260,
"preview": "/*\n * Copyright (C) The Arvados Authors. All rights reserved.\n *\n * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0\n *\n "
},
{
"path": "contrib/java-sdk-v2/src/test/resources/application.conf",
"chars": 200,
"preview": "# configuration for unit tests\n\narvados {\n api {\n port = 9000\n keepweb-port = 9000\n token = 1m69"
},
{
"path": "contrib/java-sdk-v2/src/test/resources/integration-tests-application.conf",
"chars": 557,
"preview": "# Configuration for integration tests\n#\n# Remarks:\n# * For example see integration-tests-application.conf.example\n# * Wh"
},
{
"path": "contrib/java-sdk-v2/src/test/resources/integration-tests-application.conf.example",
"chars": 374,
"preview": "# example configuration for integration tests\n\narvados {\n api {\n keepweb-host = collections.ardev.mycompany.co"
},
{
"path": "contrib/java-sdk-v2/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker",
"chars": 17,
"preview": "mock-maker-inline"
},
{
"path": "contrib/java-sdk-v2/src/test/resources/org/arvados/client/api/client/collections-create-manifest.json",
"chars": 845,
"preview": "{\n \"kind\": \"arvados#collection\",\n \"etag\": \"bqoujj7oybdx0jybwvtsebj7y\",\n \"uuid\": \"112ci-4zz18-12tncxzptzbec1p\",\n"
},
{
"path": "contrib/java-sdk-v2/src/test/resources/org/arvados/client/api/client/collections-create-simple.json",
"chars": 741,
"preview": "{\n \"kind\": \"arvados#collection\",\n \"etag\": \"bqoujj7oybdx0jybwvtsebj7y\",\n \"uuid\": \"112ci-4zz18-12tncxzptzbec1p\",\n"
}
]
// ... and 3141 more files (download for full content)
About this extraction
This page contains the full source code of the curoverse/arvados GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3341 files (18.6 MB), approximately 5.1M tokens, and a symbol index with 16804 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.