From de8cd4c6a56cac85dbcf7fe1fcb29abe98fe9f18 Mon Sep 17 00:00:00 2001 From: AnetaSta22 <107112384+AnetaSta22@users.noreply.github.com> Date: Tue, 16 Aug 2022 12:34:07 +0200 Subject: [PATCH] 19704: Merge contributed updates to R SDK * Add roxygen documentation * Add readArvFile() function * Add files via upload * New README * Add parameter relativePath in getCollectionContent() Contributed by Aneta Stanczyk Arvados-DCO-1.1-Signed-off-by: Peter Amstutz --- sdk/R/DESCRIPTION | 6 +- sdk/R/R/Arvados.R | 7270 ++++++++--------- sdk/R/R/ArvadosFile.R | 128 +- sdk/R/R/ArvadosR.R | 25 + sdk/R/R/Collection.R | 284 +- sdk/R/R/HttpRequest.R | 1 - sdk/R/R/RESTService.R | 13 +- sdk/R/R/Subcollection.R | 82 +- sdk/R/README.Rmd | 339 - sdk/R/README.md | 293 + sdk/R/man/Arvados.Rd | 3117 ++++++- sdk/R/man/ArvadosFile.Rd | 493 +- sdk/R/man/ArvadosR.Rd | 22 + sdk/R/man/Collection.Rd | 480 +- sdk/R/man/Subcollection.Rd | 299 +- sdk/R/man/api_client_authorizations.create.Rd | 20 - ...lient_authorizations.create_system_auth.Rd | 20 - .../man/api_client_authorizations.current.Rd | 14 - sdk/R/man/api_client_authorizations.delete.Rd | 17 - sdk/R/man/api_client_authorizations.get.Rd | 17 - sdk/R/man/api_client_authorizations.list.Rd | 34 - sdk/R/man/api_client_authorizations.update.Rd | 20 - sdk/R/man/api_clients.create.Rd | 20 - sdk/R/man/api_clients.delete.Rd | 17 - sdk/R/man/api_clients.get.Rd | 17 - sdk/R/man/api_clients.list.Rd | 34 - sdk/R/man/api_clients.update.Rd | 20 - sdk/R/man/authorized_keys.create.Rd | 20 - sdk/R/man/authorized_keys.delete.Rd | 17 - sdk/R/man/authorized_keys.get.Rd | 17 - sdk/R/man/authorized_keys.list.Rd | 34 - sdk/R/man/authorized_keys.update.Rd | 20 - sdk/R/man/collections.create.Rd | 20 - sdk/R/man/collections.delete.Rd | 17 - sdk/R/man/collections.get.Rd | 17 - sdk/R/man/collections.list.Rd | 36 - sdk/R/man/collections.provenance.Rd | 17 - sdk/R/man/collections.trash.Rd | 17 - sdk/R/man/collections.untrash.Rd | 17 - sdk/R/man/collections.update.Rd | 20 - sdk/R/man/collections.used_by.Rd | 17 - sdk/R/man/container_requests.create.Rd | 20 - sdk/R/man/container_requests.delete.Rd | 17 - sdk/R/man/container_requests.get.Rd | 17 - sdk/R/man/container_requests.list.Rd | 34 - sdk/R/man/container_requests.update.Rd | 20 - sdk/R/man/containers.auth.Rd | 17 - sdk/R/man/containers.create.Rd | 20 - sdk/R/man/containers.current.Rd | 14 - sdk/R/man/containers.delete.Rd | 17 - sdk/R/man/containers.get.Rd | 17 - sdk/R/man/containers.list.Rd | 34 - sdk/R/man/containers.lock.Rd | 17 - sdk/R/man/containers.secret_mounts.Rd | 17 - sdk/R/man/containers.unlock.Rd | 17 - sdk/R/man/containers.update.Rd | 20 - sdk/R/man/figures/dax.png | Bin 0 -> 66943 bytes sdk/R/man/groups.contents.Rd | 38 - sdk/R/man/groups.create.Rd | 19 - sdk/R/man/groups.delete.Rd | 17 - sdk/R/man/groups.get.Rd | 17 - sdk/R/man/groups.list.Rd | 36 - sdk/R/man/groups.trash.Rd | 17 - sdk/R/man/groups.untrash.Rd | 17 - sdk/R/man/groups.update.Rd | 19 - sdk/R/man/humans.create.Rd | 19 - sdk/R/man/humans.delete.Rd | 17 - sdk/R/man/humans.get.Rd | 17 - sdk/R/man/humans.list.Rd | 34 - sdk/R/man/humans.update.Rd | 19 - sdk/R/man/job_tasks.create.Rd | 19 - sdk/R/man/job_tasks.delete.Rd | 17 - sdk/R/man/job_tasks.get.Rd | 17 - sdk/R/man/job_tasks.list.Rd | 34 - sdk/R/man/job_tasks.update.Rd | 19 - sdk/R/man/jobs.cancel.Rd | 17 - sdk/R/man/jobs.create.Rd | 29 - sdk/R/man/jobs.delete.Rd | 17 - sdk/R/man/jobs.get.Rd | 17 - sdk/R/man/jobs.list.Rd | 33 - sdk/R/man/jobs.lock.Rd | 17 - sdk/R/man/jobs.queue.Rd | 34 - sdk/R/man/jobs.queue_size.Rd | 14 - sdk/R/man/jobs.update.Rd | 19 - sdk/R/man/keep_disks.create.Rd | 20 - sdk/R/man/keep_disks.delete.Rd | 17 - sdk/R/man/keep_disks.get.Rd | 17 - sdk/R/man/keep_disks.list.Rd | 34 - sdk/R/man/keep_disks.ping.Rd | 31 - sdk/R/man/keep_disks.update.Rd | 20 - sdk/R/man/keep_services.accessible.Rd | 14 - sdk/R/man/keep_services.create.Rd | 20 - sdk/R/man/keep_services.delete.Rd | 17 - sdk/R/man/keep_services.get.Rd | 17 - sdk/R/man/keep_services.list.Rd | 34 - sdk/R/man/keep_services.update.Rd | 20 - sdk/R/man/links.create.Rd | 19 - sdk/R/man/links.delete.Rd | 17 - sdk/R/man/links.get.Rd | 17 - sdk/R/man/links.get_permissions.Rd | 17 - sdk/R/man/links.list.Rd | 34 - sdk/R/man/links.update.Rd | 19 - sdk/R/man/listAll.Rd | 44 +- sdk/R/man/logs.create.Rd | 19 - sdk/R/man/logs.delete.Rd | 17 - sdk/R/man/logs.get.Rd | 17 - sdk/R/man/logs.list.Rd | 33 - sdk/R/man/logs.update.Rd | 19 - sdk/R/man/nodes.create.Rd | 22 - sdk/R/man/nodes.delete.Rd | 17 - sdk/R/man/nodes.get.Rd | 17 - sdk/R/man/nodes.list.Rd | 34 - sdk/R/man/nodes.ping.Rd | 19 - sdk/R/man/nodes.update.Rd | 21 - sdk/R/man/pipeline_instances.cancel.Rd | 17 - sdk/R/man/pipeline_instances.create.Rd | 20 - sdk/R/man/pipeline_instances.delete.Rd | 17 - sdk/R/man/pipeline_instances.get.Rd | 17 - sdk/R/man/pipeline_instances.list.Rd | 34 - sdk/R/man/pipeline_instances.update.Rd | 20 - sdk/R/man/pipeline_templates.create.Rd | 20 - sdk/R/man/pipeline_templates.delete.Rd | 17 - sdk/R/man/pipeline_templates.get.Rd | 17 - sdk/R/man/pipeline_templates.list.Rd | 34 - sdk/R/man/pipeline_templates.update.Rd | 20 - sdk/R/man/print.ArvadosFile.Rd | 32 +- sdk/R/man/print.Collection.Rd | 32 +- sdk/R/man/print.Subcollection.Rd | 32 +- sdk/R/man/projects.create.Rd | 19 - sdk/R/man/projects.delete.Rd | 17 - sdk/R/man/projects.get.Rd | 17 - sdk/R/man/projects.list.Rd | 38 - sdk/R/man/projects.update.Rd | 19 - sdk/R/man/repositories.create.Rd | 20 - sdk/R/man/repositories.delete.Rd | 17 - sdk/R/man/repositories.get.Rd | 17 - sdk/R/man/repositories.get_all_permissions.Rd | 14 - sdk/R/man/repositories.list.Rd | 34 - sdk/R/man/repositories.update.Rd | 20 - sdk/R/man/specimens.create.Rd | 20 - sdk/R/man/specimens.delete.Rd | 17 - sdk/R/man/specimens.get.Rd | 17 - sdk/R/man/specimens.list.Rd | 34 - sdk/R/man/specimens.update.Rd | 20 - sdk/R/man/traits.create.Rd | 19 - sdk/R/man/traits.delete.Rd | 17 - sdk/R/man/traits.get.Rd | 17 - sdk/R/man/traits.list.Rd | 34 - sdk/R/man/traits.update.Rd | 19 - sdk/R/man/user_agreements.create.Rd | 20 - sdk/R/man/user_agreements.delete.Rd | 17 - sdk/R/man/user_agreements.get.Rd | 17 - sdk/R/man/user_agreements.list.Rd | 34 - sdk/R/man/user_agreements.new.Rd | 14 - sdk/R/man/user_agreements.sign.Rd | 14 - sdk/R/man/user_agreements.signatures.Rd | 14 - sdk/R/man/user_agreements.update.Rd | 20 - sdk/R/man/users.activate.Rd | 17 - sdk/R/man/users.create.Rd | 19 - sdk/R/man/users.current.Rd | 14 - sdk/R/man/users.delete.Rd | 17 - sdk/R/man/users.get.Rd | 17 - sdk/R/man/users.list.Rd | 34 - sdk/R/man/users.merge.Rd | 22 - sdk/R/man/users.setup.Rd | 26 - sdk/R/man/users.system.Rd | 14 - sdk/R/man/users.unsetup.Rd | 17 - sdk/R/man/users.update.Rd | 19 - sdk/R/man/virtual_machines.create.Rd | 20 - sdk/R/man/virtual_machines.delete.Rd | 17 - sdk/R/man/virtual_machines.get.Rd | 17 - sdk/R/man/virtual_machines.get_all_logins.Rd | 14 - sdk/R/man/virtual_machines.list.Rd | 34 - sdk/R/man/virtual_machines.logins.Rd | 17 - sdk/R/man/virtual_machines.update.Rd | 20 - sdk/R/man/workflows.create.Rd | 20 - sdk/R/man/workflows.delete.Rd | 17 - sdk/R/man/workflows.get.Rd | 17 - sdk/R/man/workflows.list.Rd | 34 - sdk/R/man/workflows.update.Rd | 20 - 180 files changed, 8079 insertions(+), 8247 deletions(-) create mode 100644 sdk/R/R/ArvadosR.R delete mode 100644 sdk/R/README.Rmd create mode 100644 sdk/R/README.md create mode 100644 sdk/R/man/ArvadosR.Rd delete mode 100644 sdk/R/man/api_client_authorizations.create.Rd delete mode 100644 sdk/R/man/api_client_authorizations.create_system_auth.Rd delete mode 100644 sdk/R/man/api_client_authorizations.current.Rd delete mode 100644 sdk/R/man/api_client_authorizations.delete.Rd delete mode 100644 sdk/R/man/api_client_authorizations.get.Rd delete mode 100644 sdk/R/man/api_client_authorizations.list.Rd delete mode 100644 sdk/R/man/api_client_authorizations.update.Rd delete mode 100644 sdk/R/man/api_clients.create.Rd delete mode 100644 sdk/R/man/api_clients.delete.Rd delete mode 100644 sdk/R/man/api_clients.get.Rd delete mode 100644 sdk/R/man/api_clients.list.Rd delete mode 100644 sdk/R/man/api_clients.update.Rd delete mode 100644 sdk/R/man/authorized_keys.create.Rd delete mode 100644 sdk/R/man/authorized_keys.delete.Rd delete mode 100644 sdk/R/man/authorized_keys.get.Rd delete mode 100644 sdk/R/man/authorized_keys.list.Rd delete mode 100644 sdk/R/man/authorized_keys.update.Rd delete mode 100644 sdk/R/man/collections.create.Rd delete mode 100644 sdk/R/man/collections.delete.Rd delete mode 100644 sdk/R/man/collections.get.Rd delete mode 100644 sdk/R/man/collections.list.Rd delete mode 100644 sdk/R/man/collections.provenance.Rd delete mode 100644 sdk/R/man/collections.trash.Rd delete mode 100644 sdk/R/man/collections.untrash.Rd delete mode 100644 sdk/R/man/collections.update.Rd delete mode 100644 sdk/R/man/collections.used_by.Rd delete mode 100644 sdk/R/man/container_requests.create.Rd delete mode 100644 sdk/R/man/container_requests.delete.Rd delete mode 100644 sdk/R/man/container_requests.get.Rd delete mode 100644 sdk/R/man/container_requests.list.Rd delete mode 100644 sdk/R/man/container_requests.update.Rd delete mode 100644 sdk/R/man/containers.auth.Rd delete mode 100644 sdk/R/man/containers.create.Rd delete mode 100644 sdk/R/man/containers.current.Rd delete mode 100644 sdk/R/man/containers.delete.Rd delete mode 100644 sdk/R/man/containers.get.Rd delete mode 100644 sdk/R/man/containers.list.Rd delete mode 100644 sdk/R/man/containers.lock.Rd delete mode 100644 sdk/R/man/containers.secret_mounts.Rd delete mode 100644 sdk/R/man/containers.unlock.Rd delete mode 100644 sdk/R/man/containers.update.Rd create mode 100644 sdk/R/man/figures/dax.png delete mode 100644 sdk/R/man/groups.contents.Rd delete mode 100644 sdk/R/man/groups.create.Rd delete mode 100644 sdk/R/man/groups.delete.Rd delete mode 100644 sdk/R/man/groups.get.Rd delete mode 100644 sdk/R/man/groups.list.Rd delete mode 100644 sdk/R/man/groups.trash.Rd delete mode 100644 sdk/R/man/groups.untrash.Rd delete mode 100644 sdk/R/man/groups.update.Rd delete mode 100644 sdk/R/man/humans.create.Rd delete mode 100644 sdk/R/man/humans.delete.Rd delete mode 100644 sdk/R/man/humans.get.Rd delete mode 100644 sdk/R/man/humans.list.Rd delete mode 100644 sdk/R/man/humans.update.Rd delete mode 100644 sdk/R/man/job_tasks.create.Rd delete mode 100644 sdk/R/man/job_tasks.delete.Rd delete mode 100644 sdk/R/man/job_tasks.get.Rd delete mode 100644 sdk/R/man/job_tasks.list.Rd delete mode 100644 sdk/R/man/job_tasks.update.Rd delete mode 100644 sdk/R/man/jobs.cancel.Rd delete mode 100644 sdk/R/man/jobs.create.Rd delete mode 100644 sdk/R/man/jobs.delete.Rd delete mode 100644 sdk/R/man/jobs.get.Rd delete mode 100644 sdk/R/man/jobs.list.Rd delete mode 100644 sdk/R/man/jobs.lock.Rd delete mode 100644 sdk/R/man/jobs.queue.Rd delete mode 100644 sdk/R/man/jobs.queue_size.Rd delete mode 100644 sdk/R/man/jobs.update.Rd delete mode 100644 sdk/R/man/keep_disks.create.Rd delete mode 100644 sdk/R/man/keep_disks.delete.Rd delete mode 100644 sdk/R/man/keep_disks.get.Rd delete mode 100644 sdk/R/man/keep_disks.list.Rd delete mode 100644 sdk/R/man/keep_disks.ping.Rd delete mode 100644 sdk/R/man/keep_disks.update.Rd delete mode 100644 sdk/R/man/keep_services.accessible.Rd delete mode 100644 sdk/R/man/keep_services.create.Rd delete mode 100644 sdk/R/man/keep_services.delete.Rd delete mode 100644 sdk/R/man/keep_services.get.Rd delete mode 100644 sdk/R/man/keep_services.list.Rd delete mode 100644 sdk/R/man/keep_services.update.Rd delete mode 100644 sdk/R/man/links.create.Rd delete mode 100644 sdk/R/man/links.delete.Rd delete mode 100644 sdk/R/man/links.get.Rd delete mode 100644 sdk/R/man/links.get_permissions.Rd delete mode 100644 sdk/R/man/links.list.Rd delete mode 100644 sdk/R/man/links.update.Rd delete mode 100644 sdk/R/man/logs.create.Rd delete mode 100644 sdk/R/man/logs.delete.Rd delete mode 100644 sdk/R/man/logs.get.Rd delete mode 100644 sdk/R/man/logs.list.Rd delete mode 100644 sdk/R/man/logs.update.Rd delete mode 100644 sdk/R/man/nodes.create.Rd delete mode 100644 sdk/R/man/nodes.delete.Rd delete mode 100644 sdk/R/man/nodes.get.Rd delete mode 100644 sdk/R/man/nodes.list.Rd delete mode 100644 sdk/R/man/nodes.ping.Rd delete mode 100644 sdk/R/man/nodes.update.Rd delete mode 100644 sdk/R/man/pipeline_instances.cancel.Rd delete mode 100644 sdk/R/man/pipeline_instances.create.Rd delete mode 100644 sdk/R/man/pipeline_instances.delete.Rd delete mode 100644 sdk/R/man/pipeline_instances.get.Rd delete mode 100644 sdk/R/man/pipeline_instances.list.Rd delete mode 100644 sdk/R/man/pipeline_instances.update.Rd delete mode 100644 sdk/R/man/pipeline_templates.create.Rd delete mode 100644 sdk/R/man/pipeline_templates.delete.Rd delete mode 100644 sdk/R/man/pipeline_templates.get.Rd delete mode 100644 sdk/R/man/pipeline_templates.list.Rd delete mode 100644 sdk/R/man/pipeline_templates.update.Rd delete mode 100644 sdk/R/man/projects.create.Rd delete mode 100644 sdk/R/man/projects.delete.Rd delete mode 100644 sdk/R/man/projects.get.Rd delete mode 100644 sdk/R/man/projects.list.Rd delete mode 100644 sdk/R/man/projects.update.Rd delete mode 100644 sdk/R/man/repositories.create.Rd delete mode 100644 sdk/R/man/repositories.delete.Rd delete mode 100644 sdk/R/man/repositories.get.Rd delete mode 100644 sdk/R/man/repositories.get_all_permissions.Rd delete mode 100644 sdk/R/man/repositories.list.Rd delete mode 100644 sdk/R/man/repositories.update.Rd delete mode 100644 sdk/R/man/specimens.create.Rd delete mode 100644 sdk/R/man/specimens.delete.Rd delete mode 100644 sdk/R/man/specimens.get.Rd delete mode 100644 sdk/R/man/specimens.list.Rd delete mode 100644 sdk/R/man/specimens.update.Rd delete mode 100644 sdk/R/man/traits.create.Rd delete mode 100644 sdk/R/man/traits.delete.Rd delete mode 100644 sdk/R/man/traits.get.Rd delete mode 100644 sdk/R/man/traits.list.Rd delete mode 100644 sdk/R/man/traits.update.Rd delete mode 100644 sdk/R/man/user_agreements.create.Rd delete mode 100644 sdk/R/man/user_agreements.delete.Rd delete mode 100644 sdk/R/man/user_agreements.get.Rd delete mode 100644 sdk/R/man/user_agreements.list.Rd delete mode 100644 sdk/R/man/user_agreements.new.Rd delete mode 100644 sdk/R/man/user_agreements.sign.Rd delete mode 100644 sdk/R/man/user_agreements.signatures.Rd delete mode 100644 sdk/R/man/user_agreements.update.Rd delete mode 100644 sdk/R/man/users.activate.Rd delete mode 100644 sdk/R/man/users.create.Rd delete mode 100644 sdk/R/man/users.current.Rd delete mode 100644 sdk/R/man/users.delete.Rd delete mode 100644 sdk/R/man/users.get.Rd delete mode 100644 sdk/R/man/users.list.Rd delete mode 100644 sdk/R/man/users.merge.Rd delete mode 100644 sdk/R/man/users.setup.Rd delete mode 100644 sdk/R/man/users.system.Rd delete mode 100644 sdk/R/man/users.unsetup.Rd delete mode 100644 sdk/R/man/users.update.Rd delete mode 100644 sdk/R/man/virtual_machines.create.Rd delete mode 100644 sdk/R/man/virtual_machines.delete.Rd delete mode 100644 sdk/R/man/virtual_machines.get.Rd delete mode 100644 sdk/R/man/virtual_machines.get_all_logins.Rd delete mode 100644 sdk/R/man/virtual_machines.list.Rd delete mode 100644 sdk/R/man/virtual_machines.logins.Rd delete mode 100644 sdk/R/man/virtual_machines.update.Rd delete mode 100644 sdk/R/man/workflows.create.Rd delete mode 100644 sdk/R/man/workflows.delete.Rd delete mode 100644 sdk/R/man/workflows.get.Rd delete mode 100644 sdk/R/man/workflows.list.Rd delete mode 100644 sdk/R/man/workflows.update.Rd diff --git a/sdk/R/DESCRIPTION b/sdk/R/DESCRIPTION index 9c682412a0..6ea78ceecc 100644 --- a/sdk/R/DESCRIPTION +++ b/sdk/R/DESCRIPTION @@ -3,13 +3,15 @@ Type: Package Title: Arvados R SDK Version: 2.4.0 Authors@R: c(person("Fuad", "Muhic", role = c("aut", "ctr"), email = "fmuhic@capeannenterprises.com"), - person("Peter", "Amstutz", role = c("cre"), email = "peter.amstutz@curii.com")) + person("Peter", "Amstutz", role = c("cre"), email = "peter.amstutz@curii.com"), + person("Piotr", "Nowosielski", role = c("aut"), email = "piotr.nowosielski@contractors.roche.com"), + person("Aneta", "Stanczyk", role = c("aut"), email = "aneta.stanczyk@contractors.roche.com")) Description: This is the Arvados R SDK URL: http://doc.arvados.org License: Apache-2.0 Encoding: UTF-8 LazyData: true -RoxygenNote: 6.0.1.9000 +RoxygenNote: 7.1.1 Imports: R6, httr, diff --git a/sdk/R/R/Arvados.R b/sdk/R/R/Arvados.R index 52d6c95f5e..882e272c36 100644 --- a/sdk/R/R/Arvados.R +++ b/sdk/R/R/Arvados.R @@ -2,4012 +2,3274 @@ # # SPDX-License-Identifier: Apache-2.0 -#' api_clients.get +#' R6 Class Representing a Arvados #' -#' api_clients.get is a method defined in Arvados class. -#' -#' @usage arv$api_clients.get(uuid) -#' @param uuid The UUID of the ApiClient in question. -#' @return ApiClient object. -#' @name api_clients.get -NULL - -#' api_clients.create -#' -#' api_clients.create is a method defined in Arvados class. -#' -#' @usage arv$api_clients.create(apiclient, -#' ensure_unique_name = "false", cluster_id = NULL) -#' @param apiClient ApiClient object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return ApiClient object. -#' @name api_clients.create -NULL - -#' api_clients.update -#' -#' api_clients.update is a method defined in Arvados class. -#' -#' @usage arv$api_clients.update(apiclient, -#' uuid) -#' @param apiClient ApiClient object. -#' @param uuid The UUID of the ApiClient in question. -#' @return ApiClient object. -#' @name api_clients.update -NULL - -#' api_clients.delete -#' -#' api_clients.delete is a method defined in Arvados class. -#' -#' @usage arv$api_clients.delete(uuid) -#' @param uuid The UUID of the ApiClient in question. -#' @return ApiClient object. -#' @name api_clients.delete -NULL - -#' api_clients.list -#' -#' api_clients.list is a method defined in Arvados class. -#' -#' @usage arv$api_clients.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @return ApiClientList object. -#' @name api_clients.list -NULL - -#' api_client_authorizations.get -#' -#' api_client_authorizations.get is a method defined in Arvados class. -#' -#' @usage arv$api_client_authorizations.get(uuid) -#' @param uuid The UUID of the ApiClientAuthorization in question. -#' @return ApiClientAuthorization object. -#' @name api_client_authorizations.get -NULL - -#' api_client_authorizations.create -#' -#' api_client_authorizations.create is a method defined in Arvados class. -#' -#' @usage arv$api_client_authorizations.create(apiclientauthorization, -#' ensure_unique_name = "false", cluster_id = NULL) -#' @param apiClientAuthorization ApiClientAuthorization object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return ApiClientAuthorization object. -#' @name api_client_authorizations.create -NULL - -#' api_client_authorizations.update -#' -#' api_client_authorizations.update is a method defined in Arvados class. -#' -#' @usage arv$api_client_authorizations.update(apiclientauthorization, -#' uuid) -#' @param apiClientAuthorization ApiClientAuthorization object. -#' @param uuid The UUID of the ApiClientAuthorization in question. -#' @return ApiClientAuthorization object. -#' @name api_client_authorizations.update -NULL - -#' api_client_authorizations.delete -#' -#' api_client_authorizations.delete is a method defined in Arvados class. -#' -#' @usage arv$api_client_authorizations.delete(uuid) -#' @param uuid The UUID of the ApiClientAuthorization in question. -#' @return ApiClientAuthorization object. -#' @name api_client_authorizations.delete -NULL - -#' api_client_authorizations.create_system_auth -#' -#' api_client_authorizations.create_system_auth is a method defined in Arvados class. -#' -#' @usage arv$api_client_authorizations.create_system_auth(api_client_id = NULL, -#' scopes = NULL) -#' @param api_client_id -#' @param scopes -#' @return ApiClientAuthorization object. -#' @name api_client_authorizations.create_system_auth -NULL - -#' api_client_authorizations.current -#' -#' api_client_authorizations.current is a method defined in Arvados class. -#' -#' @usage arv$api_client_authorizations.current(NULL) -#' @return ApiClientAuthorization object. -#' @name api_client_authorizations.current -NULL - -#' api_client_authorizations.list -#' -#' api_client_authorizations.list is a method defined in Arvados class. -#' -#' @usage arv$api_client_authorizations.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @return ApiClientAuthorizationList object. -#' @name api_client_authorizations.list -NULL - -#' authorized_keys.get -#' -#' authorized_keys.get is a method defined in Arvados class. -#' -#' @usage arv$authorized_keys.get(uuid) -#' @param uuid The UUID of the AuthorizedKey in question. -#' @return AuthorizedKey object. -#' @name authorized_keys.get -NULL - -#' authorized_keys.create -#' -#' authorized_keys.create is a method defined in Arvados class. -#' -#' @usage arv$authorized_keys.create(authorizedkey, -#' ensure_unique_name = "false", cluster_id = NULL) -#' @param authorizedKey AuthorizedKey object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return AuthorizedKey object. -#' @name authorized_keys.create -NULL - -#' authorized_keys.update -#' -#' authorized_keys.update is a method defined in Arvados class. -#' -#' @usage arv$authorized_keys.update(authorizedkey, -#' uuid) -#' @param authorizedKey AuthorizedKey object. -#' @param uuid The UUID of the AuthorizedKey in question. -#' @return AuthorizedKey object. -#' @name authorized_keys.update -NULL - -#' authorized_keys.delete -#' -#' authorized_keys.delete is a method defined in Arvados class. -#' -#' @usage arv$authorized_keys.delete(uuid) -#' @param uuid The UUID of the AuthorizedKey in question. -#' @return AuthorizedKey object. -#' @name authorized_keys.delete -NULL - -#' authorized_keys.list -#' -#' authorized_keys.list is a method defined in Arvados class. -#' -#' @usage arv$authorized_keys.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @return AuthorizedKeyList object. -#' @name authorized_keys.list -NULL - -#' collections.get -#' -#' collections.get is a method defined in Arvados class. -#' -#' @usage arv$collections.get(uuid) -#' @param uuid The UUID of the Collection in question. -#' @return Collection object. -#' @name collections.get -NULL - -#' collections.create -#' -#' collections.create is a method defined in Arvados class. -#' -#' @usage arv$collections.create(collection, -#' ensure_unique_name = "false", cluster_id = NULL) -#' @param collection Collection object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return Collection object. -#' @name collections.create -NULL - -#' collections.update -#' -#' collections.update is a method defined in Arvados class. -#' -#' @usage arv$collections.update(collection, -#' uuid) -#' @param collection Collection object. -#' @param uuid The UUID of the Collection in question. -#' @return Collection object. -#' @name collections.update -NULL - -#' collections.delete -#' -#' collections.delete is a method defined in Arvados class. -#' -#' @usage arv$collections.delete(uuid) -#' @param uuid The UUID of the Collection in question. -#' @return Collection object. -#' @name collections.delete -NULL - -#' collections.provenance -#' -#' collections.provenance is a method defined in Arvados class. -#' -#' @usage arv$collections.provenance(uuid) -#' @param uuid -#' @return Collection object. -#' @name collections.provenance -NULL - -#' collections.used_by -#' -#' collections.used_by is a method defined in Arvados class. -#' -#' @usage arv$collections.used_by(uuid) -#' @param uuid -#' @return Collection object. -#' @name collections.used_by -NULL - -#' collections.trash -#' -#' collections.trash is a method defined in Arvados class. -#' -#' @usage arv$collections.trash(uuid) -#' @param uuid -#' @return Collection object. -#' @name collections.trash -NULL - -#' collections.untrash -#' -#' collections.untrash is a method defined in Arvados class. -#' -#' @usage arv$collections.untrash(uuid) -#' @param uuid -#' @return Collection object. -#' @name collections.untrash -NULL - -#' collections.list -#' -#' collections.list is a method defined in Arvados class. -#' -#' @usage arv$collections.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL, -#' include_trash = NULL, include_old_versions = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @param include_trash Include collections whose is_trashed attribute is true. -#' @param include_old_versions Include past collection versions. -#' @return CollectionList object. -#' @name collections.list -NULL - -#' containers.get -#' -#' containers.get is a method defined in Arvados class. -#' -#' @usage arv$containers.get(uuid) -#' @param uuid The UUID of the Container in question. -#' @return Container object. -#' @name containers.get -NULL - -#' containers.create -#' -#' containers.create is a method defined in Arvados class. -#' -#' @usage arv$containers.create(container, -#' ensure_unique_name = "false", cluster_id = NULL) -#' @param container Container object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return Container object. -#' @name containers.create -NULL - -#' containers.update -#' -#' containers.update is a method defined in Arvados class. -#' -#' @usage arv$containers.update(container, -#' uuid) -#' @param container Container object. -#' @param uuid The UUID of the Container in question. -#' @return Container object. -#' @name containers.update -NULL - -#' containers.delete -#' -#' containers.delete is a method defined in Arvados class. -#' -#' @usage arv$containers.delete(uuid) -#' @param uuid The UUID of the Container in question. -#' @return Container object. -#' @name containers.delete -NULL - -#' containers.auth -#' -#' containers.auth is a method defined in Arvados class. -#' -#' @usage arv$containers.auth(uuid) -#' @param uuid -#' @return Container object. -#' @name containers.auth -NULL - -#' containers.lock -#' -#' containers.lock is a method defined in Arvados class. -#' -#' @usage arv$containers.lock(uuid) -#' @param uuid -#' @return Container object. -#' @name containers.lock -NULL - -#' containers.unlock -#' -#' containers.unlock is a method defined in Arvados class. -#' -#' @usage arv$containers.unlock(uuid) -#' @param uuid -#' @return Container object. -#' @name containers.unlock -NULL - -#' containers.secret_mounts -#' -#' containers.secret_mounts is a method defined in Arvados class. -#' -#' @usage arv$containers.secret_mounts(uuid) -#' @param uuid -#' @return Container object. -#' @name containers.secret_mounts -NULL - -#' containers.current -#' -#' containers.current is a method defined in Arvados class. -#' -#' @usage arv$containers.current(NULL) -#' @return Container object. -#' @name containers.current -NULL - -#' containers.list -#' -#' containers.list is a method defined in Arvados class. -#' -#' @usage arv$containers.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @return ContainerList object. -#' @name containers.list -NULL - -#' container_requests.get -#' -#' container_requests.get is a method defined in Arvados class. -#' -#' @usage arv$container_requests.get(uuid) -#' @param uuid The UUID of the ContainerRequest in question. -#' @return ContainerRequest object. -#' @name container_requests.get -NULL - -#' container_requests.create -#' -#' container_requests.create is a method defined in Arvados class. -#' -#' @usage arv$container_requests.create(containerrequest, -#' ensure_unique_name = "false", cluster_id = NULL) -#' @param containerRequest ContainerRequest object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return ContainerRequest object. -#' @name container_requests.create -NULL - -#' container_requests.update -#' -#' container_requests.update is a method defined in Arvados class. -#' -#' @usage arv$container_requests.update(containerrequest, -#' uuid) -#' @param containerRequest ContainerRequest object. -#' @param uuid The UUID of the ContainerRequest in question. -#' @return ContainerRequest object. -#' @name container_requests.update -NULL - -#' container_requests.delete -#' -#' container_requests.delete is a method defined in Arvados class. -#' -#' @usage arv$container_requests.delete(uuid) -#' @param uuid The UUID of the ContainerRequest in question. -#' @return ContainerRequest object. -#' @name container_requests.delete -NULL - -#' container_requests.list -#' -#' container_requests.list is a method defined in Arvados class. -#' -#' @usage arv$container_requests.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL, -#' include_trash = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @param include_trash Include container requests whose owner project is trashed. -#' @return ContainerRequestList object. -#' @name container_requests.list -NULL - -#' groups.get -#' -#' groups.get is a method defined in Arvados class. -#' -#' @usage arv$groups.get(uuid) -#' @param uuid The UUID of the Group in question. -#' @return Group object. -#' @name groups.get -NULL - -#' groups.create -#' -#' groups.create is a method defined in Arvados class. -#' -#' @usage arv$groups.create(group, ensure_unique_name = "false", -#' cluster_id = NULL, async = "false") -#' @param group Group object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @param async defer permissions update -#' @return Group object. -#' @name groups.create -NULL - -#' groups.update -#' -#' groups.update is a method defined in Arvados class. -#' -#' @usage arv$groups.update(group, uuid, -#' async = "false") -#' @param group Group object. -#' @param uuid The UUID of the Group in question. -#' @param async defer permissions update -#' @return Group object. -#' @name groups.update -NULL - -#' groups.delete -#' -#' groups.delete is a method defined in Arvados class. -#' -#' @usage arv$groups.delete(uuid) -#' @param uuid The UUID of the Group in question. -#' @return Group object. -#' @name groups.delete -NULL - -#' groups.contents -#' -#' groups.contents is a method defined in Arvados class. -#' -#' @usage arv$groups.contents(filters = NULL, -#' where = NULL, order = NULL, distinct = NULL, -#' limit = "100", offset = "0", count = "exact", -#' cluster_id = NULL, bypass_federation = NULL, -#' include_trash = NULL, uuid = NULL, recursive = NULL, -#' include = NULL) -#' @param filters -#' @param where -#' @param order -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @param include_trash Include items whose is_trashed attribute is true. -#' @param uuid -#' @param recursive Include contents from child groups recursively. -#' @param include Include objects referred to by listed field in "included" (only owner_uuid) -#' @return Group object. -#' @name groups.contents -NULL - -#' groups.shared -#' -#' groups.shared is a method defined in Arvados class. -#' -#' @usage arv$groups.shared(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL, -#' include_trash = NULL, include = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @param include_trash Include items whose is_trashed attribute is true. -#' @param include -#' @return Group object. -#' @name groups.shared -NULL - -#' groups.trash -#' -#' groups.trash is a method defined in Arvados class. -#' -#' @usage arv$groups.trash(uuid) -#' @param uuid -#' @return Group object. -#' @name groups.trash -NULL - -#' groups.untrash -#' -#' groups.untrash is a method defined in Arvados class. -#' -#' @usage arv$groups.untrash(uuid) -#' @param uuid -#' @return Group object. -#' @name groups.untrash -NULL - -#' groups.list -#' -#' groups.list is a method defined in Arvados class. -#' -#' @usage arv$groups.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL, -#' include_trash = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @param include_trash Include items whose is_trashed attribute is true. -#' @return GroupList object. -#' @name groups.list -NULL - -#' keep_services.get -#' -#' keep_services.get is a method defined in Arvados class. -#' -#' @usage arv$keep_services.get(uuid) -#' @param uuid The UUID of the KeepService in question. -#' @return KeepService object. -#' @name keep_services.get -NULL - -#' keep_services.create -#' -#' keep_services.create is a method defined in Arvados class. -#' -#' @usage arv$keep_services.create(keepservice, -#' ensure_unique_name = "false", cluster_id = NULL) -#' @param keepService KeepService object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return KeepService object. -#' @name keep_services.create -NULL - -#' keep_services.update -#' -#' keep_services.update is a method defined in Arvados class. -#' -#' @usage arv$keep_services.update(keepservice, -#' uuid) -#' @param keepService KeepService object. -#' @param uuid The UUID of the KeepService in question. -#' @return KeepService object. -#' @name keep_services.update -NULL - -#' keep_services.delete -#' -#' keep_services.delete is a method defined in Arvados class. -#' -#' @usage arv$keep_services.delete(uuid) -#' @param uuid The UUID of the KeepService in question. -#' @return KeepService object. -#' @name keep_services.delete -NULL - -#' keep_services.accessible -#' -#' keep_services.accessible is a method defined in Arvados class. -#' -#' @usage arv$keep_services.accessible(NULL) -#' @return KeepService object. -#' @name keep_services.accessible -NULL - -#' keep_services.list -#' -#' keep_services.list is a method defined in Arvados class. -#' -#' @usage arv$keep_services.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @return KeepServiceList object. -#' @name keep_services.list -NULL - -#' links.get -#' -#' links.get is a method defined in Arvados class. -#' -#' @usage arv$links.get(uuid) -#' @param uuid The UUID of the Link in question. -#' @return Link object. -#' @name links.get -NULL - -#' links.create -#' -#' links.create is a method defined in Arvados class. -#' -#' @usage arv$links.create(link, ensure_unique_name = "false", -#' cluster_id = NULL) -#' @param link Link object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return Link object. -#' @name links.create -NULL - -#' links.update -#' -#' links.update is a method defined in Arvados class. -#' -#' @usage arv$links.update(link, uuid) -#' @param link Link object. -#' @param uuid The UUID of the Link in question. -#' @return Link object. -#' @name links.update -NULL - -#' links.delete -#' -#' links.delete is a method defined in Arvados class. -#' -#' @usage arv$links.delete(uuid) -#' @param uuid The UUID of the Link in question. -#' @return Link object. -#' @name links.delete -NULL - -#' links.list -#' -#' links.list is a method defined in Arvados class. -#' -#' @usage arv$links.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @return LinkList object. -#' @name links.list -NULL - -#' links.get_permissions -#' -#' links.get_permissions is a method defined in Arvados class. -#' -#' @usage arv$links.get_permissions(uuid) -#' @param uuid -#' @return Link object. -#' @name links.get_permissions -NULL - -#' logs.get -#' -#' logs.get is a method defined in Arvados class. -#' -#' @usage arv$logs.get(uuid) -#' @param uuid The UUID of the Log in question. -#' @return Log object. -#' @name logs.get -NULL - -#' logs.create -#' -#' logs.create is a method defined in Arvados class. -#' -#' @usage arv$logs.create(log, ensure_unique_name = "false", -#' cluster_id = NULL) -#' @param log Log object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return Log object. -#' @name logs.create -NULL - -#' logs.update -#' -#' logs.update is a method defined in Arvados class. -#' -#' @usage arv$logs.update(log, uuid) -#' @param log Log object. -#' @param uuid The UUID of the Log in question. -#' @return Log object. -#' @name logs.update -NULL - -#' logs.delete -#' -#' logs.delete is a method defined in Arvados class. -#' -#' @usage arv$logs.delete(uuid) -#' @param uuid The UUID of the Log in question. -#' @return Log object. -#' @name logs.delete -NULL - -#' logs.list -#' -#' logs.list is a method defined in Arvados class. -#' -#' @usage arv$logs.list(filters = NULL, where = NULL, -#' order = NULL, select = NULL, distinct = NULL, -#' limit = "100", offset = "0", count = "exact", -#' cluster_id = NULL, bypass_federation = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @return LogList object. -#' @name logs.list -NULL - -#' users.get -#' -#' users.get is a method defined in Arvados class. -#' -#' @usage arv$users.get(uuid) -#' @param uuid The UUID of the User in question. -#' @return User object. -#' @name users.get -NULL - -#' users.create -#' -#' users.create is a method defined in Arvados class. -#' -#' @usage arv$users.create(user, ensure_unique_name = "false", -#' cluster_id = NULL) -#' @param user User object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return User object. -#' @name users.create -NULL - -#' users.update -#' -#' users.update is a method defined in Arvados class. -#' -#' @usage arv$users.update(user, uuid, bypass_federation = NULL) -#' @param user User object. -#' @param uuid The UUID of the User in question. -#' @param bypass_federation -#' @return User object. -#' @name users.update -NULL - -#' users.delete -#' -#' users.delete is a method defined in Arvados class. -#' -#' @usage arv$users.delete(uuid) -#' @param uuid The UUID of the User in question. -#' @return User object. -#' @name users.delete -NULL - -#' users.current -#' -#' users.current is a method defined in Arvados class. -#' -#' @usage arv$users.current(NULL) -#' @return User object. -#' @name users.current -NULL - -#' users.system -#' -#' users.system is a method defined in Arvados class. -#' -#' @usage arv$users.system(NULL) -#' @return User object. -#' @name users.system -NULL - -#' users.activate -#' -#' users.activate is a method defined in Arvados class. -#' -#' @usage arv$users.activate(uuid) -#' @param uuid -#' @return User object. -#' @name users.activate -NULL - -#' users.setup -#' -#' users.setup is a method defined in Arvados class. -#' -#' @usage arv$users.setup(uuid = NULL, user = NULL, -#' repo_name = NULL, vm_uuid = NULL, send_notification_email = "false") -#' @param uuid -#' @param user -#' @param repo_name -#' @param vm_uuid -#' @param send_notification_email -#' @return User object. -#' @name users.setup -NULL - -#' users.unsetup -#' -#' users.unsetup is a method defined in Arvados class. -#' -#' @usage arv$users.unsetup(uuid) -#' @param uuid -#' @return User object. -#' @name users.unsetup -NULL - -#' users.merge -#' -#' users.merge is a method defined in Arvados class. -#' -#' @usage arv$users.merge(new_owner_uuid, -#' new_user_token = NULL, redirect_to_new_user = NULL, -#' old_user_uuid = NULL, new_user_uuid = NULL) -#' @param new_owner_uuid -#' @param new_user_token -#' @param redirect_to_new_user -#' @param old_user_uuid -#' @param new_user_uuid -#' @return User object. -#' @name users.merge -NULL - -#' users.list -#' -#' users.list is a method defined in Arvados class. -#' -#' @usage arv$users.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @return UserList object. -#' @name users.list -NULL - -#' repositories.get -#' -#' repositories.get is a method defined in Arvados class. -#' -#' @usage arv$repositories.get(uuid) -#' @param uuid The UUID of the Repository in question. -#' @return Repository object. -#' @name repositories.get -NULL - -#' repositories.create -#' -#' repositories.create is a method defined in Arvados class. -#' -#' @usage arv$repositories.create(repository, -#' ensure_unique_name = "false", cluster_id = NULL) -#' @param repository Repository object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return Repository object. -#' @name repositories.create -NULL - -#' repositories.update -#' -#' repositories.update is a method defined in Arvados class. -#' -#' @usage arv$repositories.update(repository, -#' uuid) -#' @param repository Repository object. -#' @param uuid The UUID of the Repository in question. -#' @return Repository object. -#' @name repositories.update -NULL - -#' repositories.delete -#' -#' repositories.delete is a method defined in Arvados class. -#' -#' @usage arv$repositories.delete(uuid) -#' @param uuid The UUID of the Repository in question. -#' @return Repository object. -#' @name repositories.delete -NULL - -#' repositories.get_all_permissions -#' -#' repositories.get_all_permissions is a method defined in Arvados class. -#' -#' @usage arv$repositories.get_all_permissions(NULL) -#' @return Repository object. -#' @name repositories.get_all_permissions -NULL - -#' repositories.list -#' -#' repositories.list is a method defined in Arvados class. -#' -#' @usage arv$repositories.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @return RepositoryList object. -#' @name repositories.list -NULL - -#' virtual_machines.get -#' -#' virtual_machines.get is a method defined in Arvados class. -#' -#' @usage arv$virtual_machines.get(uuid) -#' @param uuid The UUID of the VirtualMachine in question. -#' @return VirtualMachine object. -#' @name virtual_machines.get -NULL - -#' virtual_machines.create -#' -#' virtual_machines.create is a method defined in Arvados class. -#' -#' @usage arv$virtual_machines.create(virtualmachine, -#' ensure_unique_name = "false", cluster_id = NULL) -#' @param virtualMachine VirtualMachine object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return VirtualMachine object. -#' @name virtual_machines.create -NULL - -#' virtual_machines.update -#' -#' virtual_machines.update is a method defined in Arvados class. -#' -#' @usage arv$virtual_machines.update(virtualmachine, -#' uuid) -#' @param virtualMachine VirtualMachine object. -#' @param uuid The UUID of the VirtualMachine in question. -#' @return VirtualMachine object. -#' @name virtual_machines.update -NULL - -#' virtual_machines.delete -#' -#' virtual_machines.delete is a method defined in Arvados class. -#' -#' @usage arv$virtual_machines.delete(uuid) -#' @param uuid The UUID of the VirtualMachine in question. -#' @return VirtualMachine object. -#' @name virtual_machines.delete -NULL - -#' virtual_machines.logins -#' -#' virtual_machines.logins is a method defined in Arvados class. -#' -#' @usage arv$virtual_machines.logins(uuid) -#' @param uuid -#' @return VirtualMachine object. -#' @name virtual_machines.logins -NULL - -#' virtual_machines.get_all_logins -#' -#' virtual_machines.get_all_logins is a method defined in Arvados class. -#' -#' @usage arv$virtual_machines.get_all_logins(NULL) -#' @return VirtualMachine object. -#' @name virtual_machines.get_all_logins -NULL - -#' virtual_machines.list -#' -#' virtual_machines.list is a method defined in Arvados class. -#' -#' @usage arv$virtual_machines.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @return VirtualMachineList object. -#' @name virtual_machines.list -NULL - -#' workflows.get -#' -#' workflows.get is a method defined in Arvados class. -#' -#' @usage arv$workflows.get(uuid) -#' @param uuid The UUID of the Workflow in question. -#' @return Workflow object. -#' @name workflows.get -NULL - -#' workflows.create -#' -#' workflows.create is a method defined in Arvados class. -#' -#' @usage arv$workflows.create(workflow, -#' ensure_unique_name = "false", cluster_id = NULL) -#' @param workflow Workflow object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return Workflow object. -#' @name workflows.create -NULL - -#' workflows.update -#' -#' workflows.update is a method defined in Arvados class. -#' -#' @usage arv$workflows.update(workflow, -#' uuid) -#' @param workflow Workflow object. -#' @param uuid The UUID of the Workflow in question. -#' @return Workflow object. -#' @name workflows.update -NULL - -#' workflows.delete -#' -#' workflows.delete is a method defined in Arvados class. -#' -#' @usage arv$workflows.delete(uuid) -#' @param uuid The UUID of the Workflow in question. -#' @return Workflow object. -#' @name workflows.delete -NULL - -#' workflows.list -#' -#' workflows.list is a method defined in Arvados class. -#' -#' @usage arv$workflows.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @return WorkflowList object. -#' @name workflows.list -NULL - -#' user_agreements.get -#' -#' user_agreements.get is a method defined in Arvados class. -#' -#' @usage arv$user_agreements.get(uuid) -#' @param uuid The UUID of the UserAgreement in question. -#' @return UserAgreement object. -#' @name user_agreements.get -NULL - -#' user_agreements.create -#' -#' user_agreements.create is a method defined in Arvados class. -#' -#' @usage arv$user_agreements.create(useragreement, -#' ensure_unique_name = "false", cluster_id = NULL) -#' @param userAgreement UserAgreement object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @param cluster_id Create object on a remote federated cluster instead of the current one. -#' @return UserAgreement object. -#' @name user_agreements.create -NULL - -#' user_agreements.update -#' -#' user_agreements.update is a method defined in Arvados class. -#' -#' @usage arv$user_agreements.update(useragreement, -#' uuid) -#' @param userAgreement UserAgreement object. -#' @param uuid The UUID of the UserAgreement in question. -#' @return UserAgreement object. -#' @name user_agreements.update -NULL - -#' user_agreements.delete -#' -#' user_agreements.delete is a method defined in Arvados class. -#' -#' @usage arv$user_agreements.delete(uuid) -#' @param uuid The UUID of the UserAgreement in question. -#' @return UserAgreement object. -#' @name user_agreements.delete -NULL - -#' user_agreements.signatures -#' -#' user_agreements.signatures is a method defined in Arvados class. -#' -#' @usage arv$user_agreements.signatures(NULL) -#' @return UserAgreement object. -#' @name user_agreements.signatures -NULL +#' @description +#' Arvados class gives users ability to access Arvados REST API. It also allowes user to manipulate collections (and projects?) -#' user_agreements.sign -#' -#' user_agreements.sign is a method defined in Arvados class. -#' -#' @usage arv$user_agreements.sign(NULL) -#' @return UserAgreement object. -#' @name user_agreements.sign -NULL - -#' user_agreements.list -#' -#' user_agreements.list is a method defined in Arvados class. -#' -#' @usage arv$user_agreements.list(filters = NULL, -#' where = NULL, order = NULL, select = NULL, -#' distinct = NULL, limit = "100", offset = "0", -#' count = "exact", cluster_id = NULL, bypass_federation = NULL) -#' @param filters -#' @param where -#' @param order -#' @param select -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param cluster_id List objects on a remote federated cluster instead of the current one. -#' @param bypass_federation bypass federation behavior, list items from local instance database only -#' @return UserAgreementList object. -#' @name user_agreements.list -NULL - -#' user_agreements.new -#' -#' user_agreements.new is a method defined in Arvados class. -#' -#' @usage arv$user_agreements.new(NULL) -#' @return UserAgreement object. -#' @name user_agreements.new -NULL - -#' configs.get -#' -#' configs.get is a method defined in Arvados class. -#' -#' @usage arv$configs.get(NULL) -#' @return object. -#' @name configs.get -NULL - -#' project.get -#' -#' projects.get is equivalent to groups.get method. -#' -#' @usage arv$projects.get(uuid) -#' @param uuid The UUID of the Group in question. -#' @return Group object. -#' @name projects.get -NULL - -#' project.create -#' -#' projects.create wrapps groups.create method by setting group_class attribute to "project". -#' -#' @usage arv$projects.create(group, ensure_unique_name = "false") -#' @param group Group object. -#' @param ensure_unique_name Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision. -#' @return Group object. -#' @name projects.create -NULL - -#' project.update -#' -#' projects.update wrapps groups.update method by setting group_class attribute to "project". -#' -#' @usage arv$projects.update(group, uuid) -#' @param group Group object. -#' @param uuid The UUID of the Group in question. -#' @return Group object. -#' @name projects.update -NULL - -#' project.delete -#' -#' projects.delete is equivalent to groups.delete method. -#' -#' @usage arv$project.delete(uuid) -#' @param uuid The UUID of the Group in question. -#' @return Group object. -#' @name projects.delete -NULL - -#' project.list -#' -#' projects.list wrapps groups.list method by setting group_class attribute to "project". -#' -#' @usage arv$projects.list(filters = NULL, -#' where = NULL, order = NULL, distinct = NULL, -#' limit = "100", offset = "0", count = "exact", -#' include_trash = NULL, uuid = NULL, recursive = NULL) -#' @param filters -#' @param where -#' @param order -#' @param distinct -#' @param limit -#' @param offset -#' @param count -#' @param include_trash Include items whose is_trashed attribute is true. -#' @param uuid -#' @param recursive Include contents from child groups recursively. -#' @return Group object. -#' @name projects.list -NULL - -#' Arvados -#' -#' Arvados class gives users ability to access Arvados REST API. -#' -#' @section Usage: -#' \preformatted{arv = Arvados$new(authToken = NULL, hostName = NULL, numRetries = 0)} -#' -#' @section Arguments: -#' \describe{ -#' \item{authToken}{Authentification token. If not specified ARVADOS_API_TOKEN environment variable will be used.} -#' \item{hostName}{Host name. If not specified ARVADOS_API_HOST environment variable will be used.} -#' \item{numRetries}{Number which specifies how many times to retry failed service requests.} -#' } -#' -#' @section Methods: -#' \describe{ -#' \item{}{\code{\link{api_client_authorizations.create}}} -#' \item{}{\code{\link{api_client_authorizations.create_system_auth}}} -#' \item{}{\code{\link{api_client_authorizations.current}}} -#' \item{}{\code{\link{api_client_authorizations.delete}}} -#' \item{}{\code{\link{api_client_authorizations.get}}} -#' \item{}{\code{\link{api_client_authorizations.list}}} -#' \item{}{\code{\link{api_client_authorizations.update}}} -#' \item{}{\code{\link{api_clients.create}}} -#' \item{}{\code{\link{api_clients.delete}}} -#' \item{}{\code{\link{api_clients.get}}} -#' \item{}{\code{\link{api_clients.list}}} -#' \item{}{\code{\link{api_clients.update}}} -#' \item{}{\code{\link{authorized_keys.create}}} -#' \item{}{\code{\link{authorized_keys.delete}}} -#' \item{}{\code{\link{authorized_keys.get}}} -#' \item{}{\code{\link{authorized_keys.list}}} -#' \item{}{\code{\link{authorized_keys.update}}} -#' \item{}{\code{\link{collections.create}}} -#' \item{}{\code{\link{collections.delete}}} -#' \item{}{\code{\link{collections.get}}} -#' \item{}{\code{\link{collections.list}}} -#' \item{}{\code{\link{collections.provenance}}} -#' \item{}{\code{\link{collections.trash}}} -#' \item{}{\code{\link{collections.untrash}}} -#' \item{}{\code{\link{collections.update}}} -#' \item{}{\code{\link{collections.used_by}}} -#' \item{}{\code{\link{configs.get}}} -#' \item{}{\code{\link{container_requests.create}}} -#' \item{}{\code{\link{container_requests.delete}}} -#' \item{}{\code{\link{container_requests.get}}} -#' \item{}{\code{\link{container_requests.list}}} -#' \item{}{\code{\link{container_requests.update}}} -#' \item{}{\code{\link{containers.auth}}} -#' \item{}{\code{\link{containers.create}}} -#' \item{}{\code{\link{containers.current}}} -#' \item{}{\code{\link{containers.delete}}} -#' \item{}{\code{\link{containers.get}}} -#' \item{}{\code{\link{containers.list}}} -#' \item{}{\code{\link{containers.lock}}} -#' \item{}{\code{\link{containers.secret_mounts}}} -#' \item{}{\code{\link{containers.unlock}}} -#' \item{}{\code{\link{containers.update}}} -#' \item{}{\code{\link{groups.contents}}} -#' \item{}{\code{\link{groups.create}}} -#' \item{}{\code{\link{groups.delete}}} -#' \item{}{\code{\link{groups.get}}} -#' \item{}{\code{\link{groups.list}}} -#' \item{}{\code{\link{groups.shared}}} -#' \item{}{\code{\link{groups.trash}}} -#' \item{}{\code{\link{groups.untrash}}} -#' \item{}{\code{\link{groups.update}}} -#' \item{}{\code{\link{keep_services.accessible}}} -#' \item{}{\code{\link{keep_services.create}}} -#' \item{}{\code{\link{keep_services.delete}}} -#' \item{}{\code{\link{keep_services.get}}} -#' \item{}{\code{\link{keep_services.list}}} -#' \item{}{\code{\link{keep_services.update}}} -#' \item{}{\code{\link{links.create}}} -#' \item{}{\code{\link{links.delete}}} -#' \item{}{\code{\link{links.get}}} -#' \item{}{\code{\link{links.get_permissions}}} -#' \item{}{\code{\link{links.list}}} -#' \item{}{\code{\link{links.update}}} -#' \item{}{\code{\link{logs.create}}} -#' \item{}{\code{\link{logs.delete}}} -#' \item{}{\code{\link{logs.get}}} -#' \item{}{\code{\link{logs.list}}} -#' \item{}{\code{\link{logs.update}}} -#' \item{}{\code{\link{projects.create}}} -#' \item{}{\code{\link{projects.delete}}} -#' \item{}{\code{\link{projects.get}}} -#' \item{}{\code{\link{projects.list}}} -#' \item{}{\code{\link{projects.update}}} -#' \item{}{\code{\link{repositories.create}}} -#' \item{}{\code{\link{repositories.delete}}} -#' \item{}{\code{\link{repositories.get}}} -#' \item{}{\code{\link{repositories.get_all_permissions}}} -#' \item{}{\code{\link{repositories.list}}} -#' \item{}{\code{\link{repositories.update}}} -#' \item{}{\code{\link{user_agreements.create}}} -#' \item{}{\code{\link{user_agreements.delete}}} -#' \item{}{\code{\link{user_agreements.get}}} -#' \item{}{\code{\link{user_agreements.list}}} -#' \item{}{\code{\link{user_agreements.new}}} -#' \item{}{\code{\link{user_agreements.sign}}} -#' \item{}{\code{\link{user_agreements.signatures}}} -#' \item{}{\code{\link{user_agreements.update}}} -#' \item{}{\code{\link{users.activate}}} -#' \item{}{\code{\link{users.create}}} -#' \item{}{\code{\link{users.current}}} -#' \item{}{\code{\link{users.delete}}} -#' \item{}{\code{\link{users.get}}} -#' \item{}{\code{\link{users.list}}} -#' \item{}{\code{\link{users.merge}}} -#' \item{}{\code{\link{users.setup}}} -#' \item{}{\code{\link{users.system}}} -#' \item{}{\code{\link{users.unsetup}}} -#' \item{}{\code{\link{users.update}}} -#' \item{}{\code{\link{virtual_machines.create}}} -#' \item{}{\code{\link{virtual_machines.delete}}} -#' \item{}{\code{\link{virtual_machines.get}}} -#' \item{}{\code{\link{virtual_machines.get_all_logins}}} -#' \item{}{\code{\link{virtual_machines.list}}} -#' \item{}{\code{\link{virtual_machines.logins}}} -#' \item{}{\code{\link{virtual_machines.update}}} -#' \item{}{\code{\link{workflows.create}}} -#' \item{}{\code{\link{workflows.delete}}} -#' \item{}{\code{\link{workflows.get}}} -#' \item{}{\code{\link{workflows.list}}} -#' \item{}{\code{\link{workflows.update}}} -#' } -#' -#' @name Arvados -#' @examples -#' \dontrun{ -#' arv <- Arvados$new("your Arvados token", "example.arvadosapi.com") -#' -#' collection <- arv$collections.get("uuid") -#' -#' collectionList <- arv$collections.list(list(list("name", "like", "Test%"))) -#' collectionList <- listAll(arv$collections.list, list(list("name", "like", "Test%"))) -#' -#' deletedCollection <- arv$collections.delete("uuid") -#' -#' updatedCollection <- arv$collections.update(list(name = "New name", description = "New description"), -#' "uuid") -#' -#' createdCollection <- arv$collections.create(list(name = "Example", -#' description = "This is a test collection")) -#' } -NULL - -#' @export +#' @export Arvados Arvados <- R6::R6Class( - "Arvados", - - public = list( - - initialize = function(authToken = NULL, hostName = NULL, numRetries = 0) - { - if(!is.null(hostName)) - Sys.setenv(ARVADOS_API_HOST = hostName) - - if(!is.null(authToken)) - Sys.setenv(ARVADOS_API_TOKEN = authToken) - - hostName <- Sys.getenv("ARVADOS_API_HOST") - token <- Sys.getenv("ARVADOS_API_TOKEN") - - if(hostName == "" | token == "") - stop(paste("Please provide host name and authentification token", - "or set ARVADOS_API_HOST and ARVADOS_API_TOKEN", - "environment variables.")) - - private$token <- token - private$host <- paste0("https://", hostName, "/arvados/v1/") - private$numRetries <- numRetries - private$REST <- RESTService$new(token, hostName, - HttpRequest$new(), HttpParser$new(), - numRetries) - - }, - - projects.get = function(uuid) - { - self$groups.get(uuid) - }, - - projects.create = function(group, ensure_unique_name = "false") - { - group <- c("group_class" = "project", group) - self$groups.create(group, ensure_unique_name) - }, - - projects.update = function(group, uuid) - { - group <- c("group_class" = "project", group) - self$groups.update(group, uuid) - }, - - projects.list = function(filters = NULL, where = NULL, - order = NULL, select = NULL, distinct = NULL, - limit = "100", offset = "0", count = "exact", - include_trash = NULL) - { - filters[[length(filters) + 1]] <- list("group_class", "=", "project") - self$groups.list(filters, where, order, select, distinct, - limit, offset, count, include_trash) - }, - - projects.delete = function(uuid) - { - self$groups.delete(uuid) - }, - - api_clients.get = function(uuid) - { - endPoint <- stringr::str_interp("api_clients/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - api_clients.create = function(apiclient, - ensure_unique_name = "false", cluster_id = NULL) - { - endPoint <- stringr::str_interp("api_clients") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(apiclient) > 0) - body <- jsonlite::toJSON(list(apiclient = apiclient), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - api_clients.update = function(apiclient, uuid) - { - endPoint <- stringr::str_interp("api_clients/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - if(length(apiclient) > 0) - body <- jsonlite::toJSON(list(apiclient = apiclient), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - api_clients.delete = function(uuid) - { - endPoint <- stringr::str_interp("api_clients/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - api_clients.list = function(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact", cluster_id = NULL, bypass_federation = NULL) - { - endPoint <- stringr::str_interp("api_clients") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - api_client_authorizations.get = function(uuid) - { - endPoint <- stringr::str_interp("api_client_authorizations/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - api_client_authorizations.create = function(apiclientauthorization, - ensure_unique_name = "false", cluster_id = NULL) - { - endPoint <- stringr::str_interp("api_client_authorizations") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(apiclientauthorization) > 0) - body <- jsonlite::toJSON(list(apiclientauthorization = apiclientauthorization), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - api_client_authorizations.update = function(apiclientauthorization, uuid) - { - endPoint <- stringr::str_interp("api_client_authorizations/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - if(length(apiclientauthorization) > 0) - body <- jsonlite::toJSON(list(apiclientauthorization = apiclientauthorization), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - api_client_authorizations.delete = function(uuid) - { - endPoint <- stringr::str_interp("api_client_authorizations/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - api_client_authorizations.create_system_auth = function(api_client_id = NULL, scopes = NULL) - { - endPoint <- stringr::str_interp("api_client_authorizations/create_system_auth") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(api_client_id = api_client_id, - scopes = scopes) - - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - api_client_authorizations.current = function() - { - endPoint <- stringr::str_interp("api_client_authorizations/current") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - api_client_authorizations.list = function(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact", cluster_id = NULL, bypass_federation = NULL) - { - endPoint <- stringr::str_interp("api_client_authorizations") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - authorized_keys.get = function(uuid) - { - endPoint <- stringr::str_interp("authorized_keys/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - authorized_keys.create = function(authorizedkey, - ensure_unique_name = "false", cluster_id = NULL) - { - endPoint <- stringr::str_interp("authorized_keys") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(authorizedkey) > 0) - body <- jsonlite::toJSON(list(authorizedkey = authorizedkey), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - authorized_keys.update = function(authorizedkey, uuid) - { - endPoint <- stringr::str_interp("authorized_keys/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - if(length(authorizedkey) > 0) - body <- jsonlite::toJSON(list(authorizedkey = authorizedkey), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - authorized_keys.delete = function(uuid) - { - endPoint <- stringr::str_interp("authorized_keys/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - authorized_keys.list = function(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact", cluster_id = NULL, bypass_federation = NULL) - { - endPoint <- stringr::str_interp("authorized_keys") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - collections.get = function(uuid) - { - endPoint <- stringr::str_interp("collections/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - collections.create = function(collection, - ensure_unique_name = "false", cluster_id = NULL) - { - endPoint <- stringr::str_interp("collections") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(collection) > 0) - body <- jsonlite::toJSON(list(collection = collection), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - collections.update = function(collection, uuid) - { - endPoint <- stringr::str_interp("collections/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - if(length(collection) > 0) - body <- jsonlite::toJSON(list(collection = collection), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - collections.delete = function(uuid) - { - endPoint <- stringr::str_interp("collections/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - collections.provenance = function(uuid) - { - endPoint <- stringr::str_interp("collections/${uuid}/provenance") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - collections.used_by = function(uuid) - { - endPoint <- stringr::str_interp("collections/${uuid}/used_by") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - collections.trash = function(uuid) - { - endPoint <- stringr::str_interp("collections/${uuid}/trash") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - collections.untrash = function(uuid) - { - endPoint <- stringr::str_interp("collections/${uuid}/untrash") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - collections.list = function(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact", cluster_id = NULL, bypass_federation = NULL, - include_trash = NULL, include_old_versions = NULL) - { - endPoint <- stringr::str_interp("collections") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation, - include_trash = include_trash, include_old_versions = include_old_versions) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - containers.get = function(uuid) - { - endPoint <- stringr::str_interp("containers/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - containers.create = function(container, ensure_unique_name = "false", - cluster_id = NULL) - { - endPoint <- stringr::str_interp("containers") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(container) > 0) - body <- jsonlite::toJSON(list(container = container), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - containers.update = function(container, uuid) - { - endPoint <- stringr::str_interp("containers/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - if(length(container) > 0) - body <- jsonlite::toJSON(list(container = container), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - containers.delete = function(uuid) - { - endPoint <- stringr::str_interp("containers/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - containers.auth = function(uuid) - { - endPoint <- stringr::str_interp("containers/${uuid}/auth") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - containers.lock = function(uuid) - { - endPoint <- stringr::str_interp("containers/${uuid}/lock") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - containers.unlock = function(uuid) - { - endPoint <- stringr::str_interp("containers/${uuid}/unlock") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - containers.secret_mounts = function(uuid) - { - endPoint <- stringr::str_interp("containers/${uuid}/secret_mounts") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - containers.current = function() - { - endPoint <- stringr::str_interp("containers/current") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - containers.list = function(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact", cluster_id = NULL, bypass_federation = NULL) - { - endPoint <- stringr::str_interp("containers") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - container_requests.get = function(uuid) - { - endPoint <- stringr::str_interp("container_requests/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - container_requests.create = function(containerrequest, - ensure_unique_name = "false", cluster_id = NULL) - { - endPoint <- stringr::str_interp("container_requests") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(containerrequest) > 0) - body <- jsonlite::toJSON(list(containerrequest = containerrequest), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - container_requests.update = function(containerrequest, uuid) - { - endPoint <- stringr::str_interp("container_requests/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - if(length(containerrequest) > 0) - body <- jsonlite::toJSON(list(containerrequest = containerrequest), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - container_requests.delete = function(uuid) - { - endPoint <- stringr::str_interp("container_requests/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - container_requests.list = function(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact", cluster_id = NULL, bypass_federation = NULL, - include_trash = NULL) - { - endPoint <- stringr::str_interp("container_requests") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation, - include_trash = include_trash) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - groups.get = function(uuid) - { - endPoint <- stringr::str_interp("groups/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - groups.create = function(group, ensure_unique_name = "false", - cluster_id = NULL, async = "false") - { - endPoint <- stringr::str_interp("groups") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id, async = async) - - if(length(group) > 0) - body <- jsonlite::toJSON(list(group = group), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - groups.update = function(group, uuid, async = "false") - { - endPoint <- stringr::str_interp("groups/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(async = async) - - if(length(group) > 0) - body <- jsonlite::toJSON(list(group = group), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - groups.delete = function(uuid) - { - endPoint <- stringr::str_interp("groups/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - groups.contents = function(filters = NULL, - where = NULL, order = NULL, distinct = NULL, - limit = "100", offset = "0", count = "exact", - cluster_id = NULL, bypass_federation = NULL, - include_trash = NULL, uuid = NULL, recursive = NULL, - include = NULL) - { - endPoint <- stringr::str_interp("groups/contents") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, distinct = distinct, limit = limit, - offset = offset, count = count, cluster_id = cluster_id, - bypass_federation = bypass_federation, include_trash = include_trash, - uuid = uuid, recursive = recursive, include = include) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - groups.shared = function(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact", cluster_id = NULL, bypass_federation = NULL, - include_trash = NULL, include = NULL) - { - endPoint <- stringr::str_interp("groups/shared") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation, - include_trash = include_trash, include = include) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - groups.trash = function(uuid) - { - endPoint <- stringr::str_interp("groups/${uuid}/trash") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - groups.untrash = function(uuid) - { - endPoint <- stringr::str_interp("groups/${uuid}/untrash") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - groups.list = function(filters = NULL, where = NULL, - order = NULL, select = NULL, distinct = NULL, - limit = "100", offset = "0", count = "exact", - cluster_id = NULL, bypass_federation = NULL, - include_trash = NULL) - { - endPoint <- stringr::str_interp("groups") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation, - include_trash = include_trash) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - keep_services.get = function(uuid) - { - endPoint <- stringr::str_interp("keep_services/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - keep_services.create = function(keepservice, - ensure_unique_name = "false", cluster_id = NULL) - { - endPoint <- stringr::str_interp("keep_services") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(keepservice) > 0) - body <- jsonlite::toJSON(list(keepservice = keepservice), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - keep_services.update = function(keepservice, uuid) - { - endPoint <- stringr::str_interp("keep_services/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - if(length(keepservice) > 0) - body <- jsonlite::toJSON(list(keepservice = keepservice), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - keep_services.delete = function(uuid) - { - endPoint <- stringr::str_interp("keep_services/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - keep_services.accessible = function() - { - endPoint <- stringr::str_interp("keep_services/accessible") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - keep_services.list = function(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact", cluster_id = NULL, bypass_federation = NULL) - { - endPoint <- stringr::str_interp("keep_services") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - links.get = function(uuid) - { - endPoint <- stringr::str_interp("links/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - links.create = function(link, ensure_unique_name = "false", - cluster_id = NULL) - { - endPoint <- stringr::str_interp("links") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(link) > 0) - body <- jsonlite::toJSON(list(link = link), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - links.update = function(link, uuid) - { - endPoint <- stringr::str_interp("links/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - if(length(link) > 0) - body <- jsonlite::toJSON(list(link = link), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - links.delete = function(uuid) - { - endPoint <- stringr::str_interp("links/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - links.list = function(filters = NULL, where = NULL, - order = NULL, select = NULL, distinct = NULL, - limit = "100", offset = "0", count = "exact", - cluster_id = NULL, bypass_federation = NULL) - { - endPoint <- stringr::str_interp("links") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - links.get_permissions = function(uuid) - { - endPoint <- stringr::str_interp("permissions/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - logs.get = function(uuid) - { - endPoint <- stringr::str_interp("logs/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - logs.create = function(log, ensure_unique_name = "false", - cluster_id = NULL) - { - endPoint <- stringr::str_interp("logs") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(log) > 0) - body <- jsonlite::toJSON(list(log = log), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - logs.update = function(log, uuid) - { - endPoint <- stringr::str_interp("logs/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - if(length(log) > 0) - body <- jsonlite::toJSON(list(log = log), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - logs.delete = function(uuid) - { - endPoint <- stringr::str_interp("logs/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - logs.list = function(filters = NULL, where = NULL, - order = NULL, select = NULL, distinct = NULL, - limit = "100", offset = "0", count = "exact", - cluster_id = NULL, bypass_federation = NULL) - { - endPoint <- stringr::str_interp("logs") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - users.get = function(uuid) - { - endPoint <- stringr::str_interp("users/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - users.create = function(user, ensure_unique_name = "false", - cluster_id = NULL) - { - endPoint <- stringr::str_interp("users") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(user) > 0) - body <- jsonlite::toJSON(list(user = user), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - users.update = function(user, uuid, bypass_federation = NULL) - { - endPoint <- stringr::str_interp("users/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(bypass_federation = bypass_federation) - - if(length(user) > 0) - body <- jsonlite::toJSON(list(user = user), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - users.delete = function(uuid) - { - endPoint <- stringr::str_interp("users/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - users.current = function() - { - endPoint <- stringr::str_interp("users/current") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - users.system = function() - { - endPoint <- stringr::str_interp("users/system") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - users.activate = function(uuid) - { - endPoint <- stringr::str_interp("users/${uuid}/activate") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - users.setup = function(uuid = NULL, user = NULL, - repo_name = NULL, vm_uuid = NULL, send_notification_email = "false") - { - endPoint <- stringr::str_interp("users/setup") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(uuid = uuid, user = user, - repo_name = repo_name, vm_uuid = vm_uuid, - send_notification_email = send_notification_email) - - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - users.unsetup = function(uuid) - { - endPoint <- stringr::str_interp("users/${uuid}/unsetup") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - users.merge = function(new_owner_uuid, new_user_token = NULL, - redirect_to_new_user = NULL, old_user_uuid = NULL, - new_user_uuid = NULL) - { - endPoint <- stringr::str_interp("users/merge") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(new_owner_uuid = new_owner_uuid, - new_user_token = new_user_token, redirect_to_new_user = redirect_to_new_user, - old_user_uuid = old_user_uuid, new_user_uuid = new_user_uuid) - - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - users.list = function(filters = NULL, where = NULL, - order = NULL, select = NULL, distinct = NULL, - limit = "100", offset = "0", count = "exact", - cluster_id = NULL, bypass_federation = NULL) - { - endPoint <- stringr::str_interp("users") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - repositories.get = function(uuid) - { - endPoint <- stringr::str_interp("repositories/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - repositories.create = function(repository, - ensure_unique_name = "false", cluster_id = NULL) - { - endPoint <- stringr::str_interp("repositories") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(repository) > 0) - body <- jsonlite::toJSON(list(repository = repository), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - repositories.update = function(repository, uuid) - { - endPoint <- stringr::str_interp("repositories/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - if(length(repository) > 0) - body <- jsonlite::toJSON(list(repository = repository), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - repositories.delete = function(uuid) - { - endPoint <- stringr::str_interp("repositories/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - repositories.get_all_permissions = function() - { - endPoint <- stringr::str_interp("repositories/get_all_permissions") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - repositories.list = function(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact", cluster_id = NULL, bypass_federation = NULL) - { - endPoint <- stringr::str_interp("repositories") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - virtual_machines.get = function(uuid) - { - endPoint <- stringr::str_interp("virtual_machines/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - virtual_machines.create = function(virtualmachine, - ensure_unique_name = "false", cluster_id = NULL) - { - endPoint <- stringr::str_interp("virtual_machines") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(virtualmachine) > 0) - body <- jsonlite::toJSON(list(virtualmachine = virtualmachine), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - virtual_machines.update = function(virtualmachine, uuid) - { - endPoint <- stringr::str_interp("virtual_machines/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - if(length(virtualmachine) > 0) - body <- jsonlite::toJSON(list(virtualmachine = virtualmachine), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - virtual_machines.delete = function(uuid) - { - endPoint <- stringr::str_interp("virtual_machines/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - virtual_machines.logins = function(uuid) - { - endPoint <- stringr::str_interp("virtual_machines/${uuid}/logins") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - virtual_machines.get_all_logins = function() - { - endPoint <- stringr::str_interp("virtual_machines/get_all_logins") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - virtual_machines.list = function(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact", cluster_id = NULL, bypass_federation = NULL) - { - endPoint <- stringr::str_interp("virtual_machines") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - workflows.get = function(uuid) - { - endPoint <- stringr::str_interp("workflows/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - workflows.create = function(workflow, ensure_unique_name = "false", - cluster_id = NULL) - { - endPoint <- stringr::str_interp("workflows") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(workflow) > 0) - body <- jsonlite::toJSON(list(workflow = workflow), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - workflows.update = function(workflow, uuid) - { - endPoint <- stringr::str_interp("workflows/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - if(length(workflow) > 0) - body <- jsonlite::toJSON(list(workflow = workflow), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - workflows.delete = function(uuid) - { - endPoint <- stringr::str_interp("workflows/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - workflows.list = function(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact", cluster_id = NULL, bypass_federation = NULL) - { - endPoint <- stringr::str_interp("workflows") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - user_agreements.get = function(uuid) - { - endPoint <- stringr::str_interp("user_agreements/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - user_agreements.create = function(useragreement, - ensure_unique_name = "false", cluster_id = NULL) - { - endPoint <- stringr::str_interp("user_agreements") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(ensure_unique_name = ensure_unique_name, - cluster_id = cluster_id) - - if(length(useragreement) > 0) - body <- jsonlite::toJSON(list(useragreement = useragreement), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - user_agreements.update = function(useragreement, uuid) - { - endPoint <- stringr::str_interp("user_agreements/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - if(length(useragreement) > 0) - body <- jsonlite::toJSON(list(useragreement = useragreement), - auto_unbox = TRUE) - else - body <- NULL - - response <- private$REST$http$exec("PUT", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - user_agreements.delete = function(uuid) - { - endPoint <- stringr::str_interp("user_agreements/${uuid}") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("DELETE", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - user_agreements.signatures = function() - { - endPoint <- stringr::str_interp("user_agreements/signatures") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - user_agreements.sign = function() - { - endPoint <- stringr::str_interp("user_agreements/sign") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("POST", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - user_agreements.list = function(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact", cluster_id = NULL, bypass_federation = NULL) - { - endPoint <- stringr::str_interp("user_agreements") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- list(filters = filters, where = where, - order = order, select = select, distinct = distinct, - limit = limit, offset = offset, count = count, - cluster_id = cluster_id, bypass_federation = bypass_federation) - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - user_agreements.new = function() - { - endPoint <- stringr::str_interp("user_agreements/new") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - configs.get = function() - { - endPoint <- stringr::str_interp("config") - url <- paste0(private$host, endPoint) - headers <- list(Authorization = paste("Bearer", private$token), - "Content-Type" = "application/json") - queryArgs <- NULL - - body <- NULL - - response <- private$REST$http$exec("GET", url, headers, body, - queryArgs, private$numRetries) - resource <- private$REST$httpParser$parseJSONResponse(response) - - if(!is.null(resource$errors)) - stop(resource$errors) - - resource - }, - - getHostName = function() private$host, - getToken = function() private$token, - setRESTService = function(newREST) private$REST <- newREST, - getRESTService = function() private$REST - ), - - private = list( - - token = NULL, - host = NULL, - REST = NULL, - numRetries = NULL - ), - - cloneable = FALSE + "Arvados", + + public = list( + + #' @description + #' Initialize new enviroment. + #' @param authToken ARVADOS_API_TOKEN from 'Get API Token' on Arvados. + #' @param hostName ARVADOS_API_HOST from 'Get API Token' on Arvados. + #' @param numRetries Specify number of times to retry failed service requests. + #' @return A new `Arvados` object. + #' @examples + #' arv <- Arvados$new(authToken = "ARVADOS_API_TOKEN", hostName = "ARVADOS_API_HOST", numRetries = 3) + initialize = function(authToken = NULL, hostName = NULL, numRetries = 0) + { + if(!is.null(hostName)) + Sys.setenv(ARVADOS_API_HOST = hostName) + + if(!is.null(authToken)) + Sys.setenv(ARVADOS_API_TOKEN = authToken) + + hostName <- Sys.getenv("ARVADOS_API_HOST") + token <- Sys.getenv("ARVADOS_API_TOKEN") + + if(hostName == "" | token == "") + stop(paste("Please provide host name and authentification token", + "or set ARVADOS_API_HOST and ARVADOS_API_TOKEN", + "environment variables.")) + + private$token <- token + private$host <- paste0("https://", hostName, "/arvados/v1/") + private$numRetries <- numRetries + private$REST <- RESTService$new(token, hostName, + HttpRequest$new(), HttpParser$new(), + numRetries) + + }, + + #' @description + #' project_exist enables checking if the project with such a UUID exist. + #' @param uuid The UUID of a project or a file. + #' @examples + #' arv$project_exist(uuid = projectUUID) + project_exist = function(uuid) + { + proj <- self$project_list(list(list("uuid", '=', uuid))) + value <- length(proj$items) + + if (value == 1){ + cat(format('TRUE')) + } else { + cat(format('FALSE')) + } + }, + + #' @description + #' project_get returns the demanded project. + #' @param uuid The UUID of the Group in question. + #' @examples + #' project <- arv$project_get(uuid = projectUUID) + project_get = function(uuid) + { + self$groups_get(uuid) + }, + + #' @description + #' project_create creates a new project of a given name and description. + #' @param name Name of the project. + #' @param description Description of the project. + #' @param ownerUUID The UUID of the maternal project to created one. + #' @param properties List of the properties of the project. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @examples + #' Properties <- list() # should contain a list of new properties to be added + #' new_project <- arv$project_create(name = "project name", description = "project description", owner_uuid = "project UUID", properties = NULL, ensureUniqueName = "false") + project_create = function(name, description, ownerUUID, properties = NULL, ensureUniqueName = "false") + { + group <- list(name = name, description = description, owner_uuid = ownerUUID, properties = properties) + group <- c("group_class" = "project", group) + self$groups_create(group, ensureUniqueName = ensureUniqueName) + }, + + #' @description + #' project_properties_set is a method defined in Arvados class that enables setting properties. Allows to set or overwrite the properties. In case there are set already it overwrites them. + #' @param listProperties List of new properties. + #' @param uuid The UUID of a project or a file. + #' @examples + #' Properties <- list() # should contain a list of new properties to be added + #' arv$project_properties_set(Properties, uuid) + project_properties_set = function(listProperties, uuid) + { + group <- c("group_class" = "project", list("properties" = listProperties)) + self$groups_update(group, uuid) + + }, + + #' @description + #' project_properties_append is a method defined in Arvados class that enables appending properties. Allows to add new properties. + #' @param listOfNewProperties List of new properties. + #' @param uuid The UUID of a project or a file. + #' @examples + #' newProperties <- list() # should contain a list of new properties to be added + #' arv$project_properties_append(properties = newProperties, uuid) + project_properties_append = function(properties, uuid) + { + proj <- self$project_list(list(list('uuid', '=', uuid))) + projProp <- proj$items[[1]]$properties + + newListOfProperties <- c(projProp, properties) + uniqueProperties <- unique(unlist(newListOfProperties)) + newListOfProperties <- suppressWarnings(newListOfProperties[which(newListOfProperties == uniqueProperties)]) + + group <- c("group_class" = "project", list("properties" = newListOfProperties)) + self$groups_update(group, uuid); + + }, + + #' @description + #' project_properties_get is a method defined in Arvados class that returns properties. + #' @param uuid The UUID of a project or a file. + #' @examples + #' arv$project_properties_get(projectUUID) + project_properties_get = function(uuid) + { + proj <- self$project_list(list(list('uuid', '=', uuid))) + proj$items[[1]]$properties + }, + + #' @description + #' project_properties_delete is a method defined in Arvados class that deletes list of properties. + #' @param oneProp Property to be deleted. + #' @param uuid The UUID of a project or a file. + #' @examples + #' Properties <- list() # should contain a list of new properties to be added + #' arv$project_properties_delete(Properties, projectUUID) + project_properties_delete = function(oneProp, uuid) + { + proj <- self$project_list(list(list('uuid', '=', uuid))) # find project + projProp <- proj$items[[1]]$properties + for (i in 1:length(projProp)){ + solution <- identical(projProp[i],oneProp) + if (solution == TRUE) { + projProp <- projProp[names(projProp) != names(oneProp)] + self$project_properties_set(projProp, uuid) + } + } + }, + + #' @description + #' project_update enables updating project. New name, description and properties may be given. + #' @param ... Feature to be updated (name, description, properties). + #' @param uuid The UUID of a project in question. + #' @examples + #' newProperties <- list() # should contain a list of new properties to be added + #' arv$project_update(name = "new project name", properties = newProperties, uuid = projectUUID) + project_update = function(..., uuid) { + vec <- list(...) + for (i in 1:length(vec)) + { + if (names(vec[i]) == 'properties') { + solution <- self$project_properties_append(vec$properties, uuid = uuid) + } + } + vecNew <- vec[names(vec) != "properties"] + vecNew <- c("group_class" = "project", vecNew) + z <- self$groups_update(vecNew, uuid) + }, + + #' @description + #' project_list enables listing project by its name, uuid, properties, permissions. + #' @param filters + #' @param where + #' @param order + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param includeTrash Include items whose is_trashed attribute is true. + #' @param uuid The UUID of a project in question. + #' @param recursive Include contents from child groups recursively. + #' @examples + #' listOfprojects <- arv$project_list(list(list("owner_uuid", "=", projectUUID))) # Sample query which show projects within the project of a given UUID + project_list = function(filters = NULL, where = NULL, + order = NULL, select = NULL, distinct = NULL, + limit = "100", offset = "0", count = "exact", + includeTrash = NULL) + { + filters[[length(filters) + 1]] <- list("group_class", "=", "project") + self$groups_list(filters, where, order, select, distinct, + limit, offset, count, includeTrash) + }, + + #' @description + #' project_delete trashes project of a given uuid. It can be restored from trash or deleted permanently. + #' @param uuid The UUID of the Group in question. + project_delete = function(uuid) + { + self$groups_delete(uuid) + }, + + #' @description + #' api_clients_get is a method defined in Arvados class. + #' @param uuid The UUID of the apiClient in question. + api_clients_get = function(uuid) + { + endPoint <- stringr::str_interp("api_clients/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' api_clients_create is a method defined in Arvados class. + #' @param apiClient apiClient object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + api_clients_create = function(apiClient, + ensureUniqueName = "false", clusterID = NULL) + { + endPoint <- stringr::str_interp("api_clients") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + if(length(apiClient) > 0) + body <- jsonlite::toJSON(list(apiClient = apiClient), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' api_clients_update is a method defined in Arvados class. + #' @param apiClient apiClient object. + #' @param uuid The UUID of the apiClient in question. + api_clients_update = function(apiClient, uuid) + { + endPoint <- stringr::str_interp("api_clients/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + if(length(apiClient) > 0) + body <- jsonlite::toJSON(list(apiClient = apiClient), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' api_clients_delete is a method defined in Arvados class. + #' @param uuid The UUID of the apiClient in question. + api_clients_delete = function(uuid) + { + endPoint <- stringr::str_interp("api_clients/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' api_clients_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + api_clients_list = function(filters = NULL, + where = NULL, order = NULL, select = NULL, + distinct = NULL, limit = "100", offset = "0", + count = "exact", clusterID = NULL, bypassFederation = NULL) + { + endPoint <- stringr::str_interp("api_clients") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' api_client_authorizations_get is a method defined in Arvados class. + #' @param uuid The UUID of the apiClientAuthorization in question. + api_client_authorizations_get = function(uuid) + { + endPoint <- stringr::str_interp("api_client_authorizations/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' api_client_authorizations_create is a method defined in Arvados class. + #' @param apiClientAuthorization apiClientAuthorization object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error on (ownerUUID, name) collision_ + #' @param clusterID Create object on a remote federated cluster instead of the current one. + api_client_authorizations_create = function(apiClientAuthorization, + ensureUniqueName = "false", clusterID = NULL) + { + endPoint <- stringr::str_interp("api_client_authorizations") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + if(length(apiClientAuthorization) > 0) + body <- jsonlite::toJSON(list(apiClientAuthorization = apiClientAuthorization), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' api_client_authorizations_update is a method defined in Arvados class. + #' @param apiClientAuthorization apiClientAuthorization object. + #' @param uuid The UUID of the apiClientAuthorization in question. + api_client_authorizations_update = function(apiClientAuthorization, uuid) + { + endPoint <- stringr::str_interp("api_client_authorizations/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + if(length(apiClientAuthorization) > 0) + body <- jsonlite::toJSON(list(apiClientAuthorization = apiClientAuthorization), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' api_client_authorizations_delete is a method defined in Arvados class. + #' @param uuid The UUID of the apiClientAuthorization in question. + api_client_authorizations_delete = function(uuid) + { + endPoint <- stringr::str_interp("api_client_authorizations/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' api_client_authorizations_create_system_auth is a method defined in Arvados class. + #' @param apiClientID + #' @param scopes + api_client_authorizations_create_system_auth = function(apiClientID = NULL, scopes = NULL) + { + endPoint <- stringr::str_interp("api_client_authorizations/create_system_auth") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(apiClientID = apiClientID, + scopes = scopes) + + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' api_client_authorizations_current is a method defined in Arvados class. + api_client_authorizations_current = function() + { + endPoint <- stringr::str_interp("api_client_authorizations/current") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' api_client_authorizations_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + api_client_authorizations_list = function(filters = NULL, + where = NULL, order = NULL, select = NULL, + distinct = NULL, limit = "100", offset = "0", + count = "exact", clusterID = NULL, bypassFederation = NULL) + { + endPoint <- stringr::str_interp("api_client_authorizations") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' authorized_keys_get is a method defined in Arvados class. + #' @param uuid The UUID of the authorizedKey in question. + authorized_keys_get = function(uuid) + { + endPoint <- stringr::str_interp("authorized_keys/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' authorized_keys_create is a method defined in Arvados class. + #' @param authorizedKey authorizedKey object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + authorized_keys_create = function(authorizedKey, + ensureUniqueName = "false", clusterID = NULL) + { + endPoint <- stringr::str_interp("authorized_keys") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + if(length(authorizedKey) > 0) + body <- jsonlite::toJSON(list(authorizedKey = authorizedKey), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' authorized_keys_update is a method defined in Arvados class. + #' @param authorizedKey authorizedKey object. + #' @param uuid The UUID of the authorizedKey in question. + authorized_keys_update = function(authorizedKey, uuid) + { + endPoint <- stringr::str_interp("authorized_keys/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + if(length(authorizedKey) > 0) + body <- jsonlite::toJSON(list(authorizedKey = authorizedKey), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' authorized_keys_delete is a method defined in Arvados class. + #' @param uuid The UUID of the authorizedKey in question. + authorized_keys_delete = function(uuid) + { + endPoint <- stringr::str_interp("authorized_keys/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' authorized_keys_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + authorized_keys_list = function(filters = NULL, + where = NULL, order = NULL, select = NULL, + distinct = NULL, limit = "100", offset = "0", + count = "exact", clusterID = NULL, bypassFederation = NULL) + { + endPoint <- stringr::str_interp("authorized_keys") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' collections_get is a method defined in Arvados class. + #' @param uuid The UUID of the Collection in question. + #' collection <- arv$collections_get(uuid = collectionUUID) + collections_get = function(uuid) + { + endPoint <- stringr::str_interp("collections/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' collections_create is a method defined in Arvados class that enables collections creation. + #' @param name Name of the collection. + #' @param description Description of the collection. + #' @param ownerUUID UUID of the maternal project to created one. + #' @param properties Properties of the collection. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + #' @examples + #' Properties <- list() # should contain a list of new properties to be added + #' arv$collections_create(name = "collectionTitle", description = "collectionDescription", ownerUUID = "collectionOwner", properties = Properties) + collections_create = function(name, description, ownerUUID = NULL, properties = NULL, # name and description are obligatory + ensureUniqueName = "false", clusterID = NULL) + { + endPoint <- stringr::str_interp("collections") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + collection <- list(name = name, description = description, owner_uuid = ownerUUID, properties = properties) + if(length(collection) > 0) + body <- jsonlite::toJSON(list(collection = collection), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)){ + if(identical(sub('Entity:.*',"", resource$errors), "//railsapi.internal/arvados/v1/collections: 422 Unprocessable ")){ + resource <- cat(format("A collection with the given name already exists in this projects. If you want to update it use collections_update() instead")) + }else{ + stop(resource$errors) + } + } + + resource + }, + + #' @description + #' collections_update is a method defined in Arvados class. + #' @param name New name of the collection. + #' @param description New description of the collection. + #' @param ownerUUID UUID of the maternal project to created one. + #' @param properties New list of properties of the collection. + #' @param uuid The UUID of the Collection in question. + #' @examples + #' collection <- arv$collections_update(name = "newCollectionTitle", description = "newCollectionDescription", ownerUUID = "collectionOwner", properties = NULL, uuid = "collectionUUID") + collections_update = function(name, description, ownerUUID = NULL, properties = NULL, uuid) + { + endPoint <- stringr::str_interp("collections/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + collection <- list(name = name, description = description, ownerUUID = ownerUUID, properties = properties) + if(length(collection) > 0) + body <- jsonlite::toJSON(list(collection = collection), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' collections_delete is a method defined in Arvados class. + #' @param uuid The UUID of the Collection in question. + #' @examples + #' arv$collection_delete(collectionUUID) + collections_delete = function(uuid) + { + endPoint <- stringr::str_interp("collections/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' collections_provenance is a method defined in Arvados class, it returns the collection by uuid. + #' @param uuid The UUID of the Collection in question. + #' @examples + #' collection <- arv$collections_provenance(collectionUUID) + collections_provenance = function(uuid) + { + endPoint <- stringr::str_interp("collections/${uuid}/provenance") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' collections_used_by is a method defined in Arvados class, it returns collection by portable_data_hash. + #' @param uuid The UUID of the Collection in question. + collections_used_by = function(uuid) + { + endPoint <- stringr::str_interp("collections/${uuid}/used_by") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' collections_trash is a method defined in Arvados class, it moves collection to trash. + #' @param uuid The UUID of the Collection in question. + #' @examples + #' arv$collections_trash(collectionUUID) + collections_trash = function(uuid) + { + endPoint <- stringr::str_interp("collections/${uuid}/trash") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' collections_untrash is a method defined in Arvados class, it moves collection from trash to project. + #' @param uuid The UUID of the Collection in question. + #' @examples + #' arv$collections_untrash(collectionUUID) + collections_untrash = function(uuid) + { + endPoint <- stringr::str_interp("collections/${uuid}/untrash") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' collections_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + #' @param includeTrash Include collections whose is_trashed attribute is true. + #' @param includeOldVersions Include past collection versions. + #' @examples + #' collectionList <- arv$collections_list(list(list("name", "=", "Example"))) + collections_list = function(filters = NULL, + where = NULL, order = NULL, select = NULL, + distinct = NULL, limit = "100", offset = "0", + count = "exact", clusterID = NULL, bypassFederation = NULL, + includeTrash = NULL, includeOldVersions = NULL) + { + endPoint <- stringr::str_interp("collections") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation, + includeTrash = includeTrash, includeOldVersions = includeOldVersions) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' containers_get is a method defined in Arvados class. + #' @param uuid The UUID of the Container in question. + containers_get = function(uuid) + { + endPoint <- stringr::str_interp("containers/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' containers_create is a method defined in Arvados class. + #' @param container Container object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + containers_create = function(container, ensureUniqueName = "false", + clusterID = NULL) + { + endPoint <- stringr::str_interp("containers") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + if(length(container) > 0) + body <- jsonlite::toJSON(list(container = container), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' containers_update is a method defined in Arvados class. + #' @param container Container object. + #' @param uuid The UUID of the Container in question. + containers_update = function(container, uuid) + { + endPoint <- stringr::str_interp("containers/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + if(length(container) > 0) + body <- jsonlite::toJSON(list(container = container), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' containers_delete is a method defined in Arvados class. + #' @param uuid The UUID of the Container in question. + containers_delete = function(uuid) + { + endPoint <- stringr::str_interp("containers/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' containers_auth is a method defined in Arvados class. + #' @param uuid The UUID of the Container in question. + containers_auth = function(uuid) + { + endPoint <- stringr::str_interp("containers/${uuid}/auth") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' containers_lock is a method defined in Arvados class. + #' @param uuid The UUID of the Container in question. + containers_lock = function(uuid) + { + endPoint <- stringr::str_interp("containers/${uuid}/lock") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' containers_unlock is a method defined in Arvados class. + #' @param uuid The UUID of the Container in question. + containers_unlock = function(uuid) + { + endPoint <- stringr::str_interp("containers/${uuid}/unlock") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' containers_secret_mounts is a method defined in Arvados class. + #' @param uuid The UUID of the Container in question. + containers_secret_mounts = function(uuid) + { + endPoint <- stringr::str_interp("containers/${uuid}/secret_mounts") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' containers_current is a method defined in Arvados class. + containers_current = function() + { + endPoint <- stringr::str_interp("containers/current") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' containers_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + containers_list = function(filters = NULL, + where = NULL, order = NULL, select = NULL, + distinct = NULL, limit = "100", offset = "0", + count = "exact", clusterID = NULL, bypassFederation = NULL) + { + endPoint <- stringr::str_interp("containers") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' container_requests_get is a method defined in Arvados class. + #' @param uuid The UUID of the containerRequest in question. + container_requests_get = function(uuid) + { + endPoint <- stringr::str_interp("container_requests/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' container_requests_create is a method defined in Arvados class. + #' @param containerRequest containerRequest object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + container_requests_create = function(containerRequest, + ensureUniqueName = "false", clusterID = NULL) + { + endPoint <- stringr::str_interp("container_requests") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + if(length(containerRequest) > 0) + body <- jsonlite::toJSON(list(containerRequest = containerRequest), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' container_requests_update is a method defined in Arvados class. + #' @param containerRequest containerRequest object. + #' @param uuid The UUID of the containerRequest in question. + container_requests_update = function(containerRequest, uuid) + { + endPoint <- stringr::str_interp("container_requests/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + if(length(containerRequest) > 0) + body <- jsonlite::toJSON(list(containerRequest = containerRequest), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' container_requests_delete is a method defined in Arvados class. + #' @param uuid The UUID of the containerRequest in question. + container_requests_delete = function(uuid) + { + endPoint <- stringr::str_interp("container_requests/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' container_requests_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation bypass federation behavior, list items from local instance database only + #' @param includeTrash Include container requests whose owner project is trashed. + container_requests_list = function(filters = NULL, + where = NULL, order = NULL, select = NULL, + distinct = NULL, limit = "100", offset = "0", + count = "exact", clusterID = NULL, bypassFederation = NULL, + includeTrash = NULL) + { + endPoint <- stringr::str_interp("container_requests") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation, + includeTrash = includeTrash) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' groups_get is a method defined in Arvados class. + #' @param uuid The UUID of the Group in question. + groups_get = function(uuid) + { + endPoint <- stringr::str_interp("groups/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' groups_create is a method defined in Arvados class that supports project creation. + #' @param group Group object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + #' @param async Defer permissions update. + groups_create = function(group, ensureUniqueName = "false", + clusterID = NULL, async = "false") + { + endPoint <- stringr::str_interp("groups") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID, async = async) + + if(length(group) > 0) + body <- jsonlite::toJSON(list(group = group), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)){ + if (identical(sub('#.*', "", resource$errors), "//railsapi.internal/arvados/v1/groups: 422 Unprocessable Entity: ")) { + #if (identical(sub('P.*', "", resource$errors), "//railsapi.internal/arvados/v1/groups: 422 Unprocessable Entity: #\u003cActiveRecord::RecordNotUnique: ")) { + resource <- cat(format("Project of that name already exist. If you want to update it use project_update() instead")) + }else{ + stop(resource$errors) + } + } + + return(resource) + }, + + #' @description + #' groups_update is a method defined in Arvados class. + #' @param group Group object. + #' @param uuid The UUID of the Group in question. + #' @param async Defer permissions update. + groups_update = function(group, uuid, async = "false") + { + endPoint <- stringr::str_interp("groups/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + + queryArgs <- list(async = async) + + if(length(group) > 0) + body <- jsonlite::toJSON(list(group = group), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' groups_delete is a method defined in Arvados class. + #' @param uuid The UUID of the Group in question. + groups_delete = function(uuid) + { + endPoint <- stringr::str_interp("groups/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + dataTime <- gsub("T.*", "", resource$delete_at) + cat("The content will be deleted permanently at", dataTime) + + resource + }, + + #' @description + #' groups_contents is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + #' @param includeTrash Include items whose is_trashed attribute is true. + #' @param uuid + #' @param recursive Include contents from child groups recursively. + #' @param include Include objects referred to by listed field in "included" (only ownerUUID). + groups_contents = function(filters = NULL, + where = NULL, order = NULL, distinct = NULL, + limit = "100", offset = "0", count = "exact", + clusterID = NULL, bypassFederation = NULL, + includeTrash = NULL, uuid = NULL, recursive = NULL, + include = NULL) + { + endPoint <- stringr::str_interp("groups/contents") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + + queryArgs <- list(filters = filters, where = where, + order = order, distinct = distinct, limit = limit, + offset = offset, count = count, clusterID = clusterID, + bypassFederation = bypassFederation, includeTrash = includeTrash, + uuid = uuid, recursive = recursive, include = include) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' groups_shared is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + #' @param includeTrash Include items whose is_trashed attribute is true. + #' @param include + groups_shared = function(filters = NULL, + where = NULL, order = NULL, select = NULL, + distinct = NULL, limit = "100", offset = "0", + count = "exact", clusterID = NULL, bypassFederation = NULL, + includeTrash = NULL, include = NULL) + { + endPoint <- stringr::str_interp("groups/shared") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation, + includeTrash = includeTrash, include = include) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' groups_trash is a method defined in Arvados class. + #' @param uuid The UUID of the Group in question. + groups_trash = function(uuid) + { + endPoint <- stringr::str_interp("groups/${uuid}/trash") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' groups_untrash is a method defined in Arvados class. + #' @param uuid The UUID of the Group in question. + groups_untrash = function(uuid) + { + endPoint <- stringr::str_interp("groups/${uuid}/untrash") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' groups_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + #' @param includeTrash Include items whose is_trashed attribute is true. + groups_list = function(filters = NULL, where = NULL, + order = NULL, select = NULL, distinct = NULL, + limit = "100", offset = "0", count = "exact", + clusterID = NULL, bypassFederation = NULL, + includeTrash = NULL) + { + endPoint <- stringr::str_interp("groups") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation, + includeTrash = includeTrash) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' keep_services_get is a method defined in Arvados class. + #' @param uuid The UUID of the keepService in question. + keep_services_get = function(uuid) + { + endPoint <- stringr::str_interp("keep_services/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' keep_services_create is a method defined in Arvados class. + #' @param keepService keepService object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + keep_services_create = function(keepService, + ensureUniqueName = "false", clusterID = NULL) + { + endPoint <- stringr::str_interp("keep_services") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + if(length(keepService) > 0) + body <- jsonlite::toJSON(list(keepService = keepService), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' keep_services_update is a method defined in Arvados class. + #' @param keepService keepService object. + #' @param uuid The UUID of the keepService in question. + keep_services_update = function(keepService, uuid) + { + endPoint <- stringr::str_interp("keep_services/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + if(length(keepService) > 0) + body <- jsonlite::toJSON(list(keepService = keepService), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' keep_services_delete is a method defined in Arvados class. + #' @param uuid The UUID of the keepService in question. + keep_services_delete = function(uuid) + { + endPoint <- stringr::str_interp("keep_services/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' keep_services_accessible is a method defined in Arvados class. + keep_services_accessible = function() + { + endPoint <- stringr::str_interp("keep_services/accessible") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' keep_services_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + keep_services_list = function(filters = NULL, + where = NULL, order = NULL, select = NULL, + distinct = NULL, limit = "100", offset = "0", + count = "exact", clusterID = NULL, bypassFederation = NULL) + { + endPoint <- stringr::str_interp("keep_services") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' project_permission_give is a method defined in Arvados class that enables sharing files with another users. + #' @param type Possible options are can_read or can_write or can_manage. + #' @param uuid The UUID of a project or a file. + #' @param user The UUID of the person that gets the permission. + #' @examples + #' arv$project_permission_give(type = "can_read", uuid = objectUUID, user = userUUID) + project_permission_give = function(type, uuid, user) + { + endPoint <- stringr::str_interp("links") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + # it is possible to make it as pasting a list to function, not a 3 arg. What's better? + link <- list("link_class" = "permission", "name" = type, "head_uuid" = uuid, "tail_uuid" = user) + + if(length(link) > 0) + body <- jsonlite::toJSON(list(link = link), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' project_permission_refuse is a method defined in Arvados class that unables sharing files with another users. + #' @param type Possible options are can_read or can_write or can_manage. + #' @param uuid The UUID of a project or a file. + #' @param user The UUID of a person that permissions are taken from. + #' @examples + #' arv$project_permission_refuse(type = "can_read", uuid = objectUUID, user = userUUID) + project_permission_refuse = function(type, uuid, user) + { + examples <- self$links_list(list(list("head_uuid","=", uuid))) + + theUser <- examples[which(sapply(examples$items, "[[", "tail_uuid") == user)] + theType <- theUser$items[which(sapply(theUser$items, "[[", "name") == type)] + solution <- theType[which(sapply(theType, "[[", "link_class") == 'permission')] + + if (length(solution) == 0) { + cat(format('No permission granted')) + } else { + self$links_delete(solution[[1]]$uuid) + } + + }, + + #' @description + #' project_permission_update is a method defined in Arvados class that enables updating permissions. + #' @param typeNew New option like can_read or can_write or can_manage. + #' @param typeOld Old option. + #' @param uuid The UUID of a project or a file. + #' @param user The UUID of the person that the permission is being updated. + #' @examples + #' arv$project_permission_update(typeOld = "can_read", typeNew = "can_write", uuid = objectUUID, user = userUUID) + project_permission_update = function(typeOld, typeNew, uuid, user) + { + link <- list("name" = typeNew) + + examples <- self$links_list(list(list("head_uuid","=", uuid))) + + theUser <- examples[which(sapply(examples$items, "[[", "tail_uuid") == user)] + theType <- theUser$items[which(sapply(theUser$items, "[[", "name") == typeOld)] + solution <- theType[which(sapply(theType, "[[", "link_class") == 'permission')] + + if (length(solution) == 0) { + cat(format('No permission granted')) + } else { + self$links_update(link, solution[[1]]$uuid) + } + }, + + #' @description + #' project_permission_check is a method defined in Arvados class that enables checking file permissions. + #' @param uuid The UUID of a project or a file. + #' @param user The UUID of the person that the permission is being updated. + #' @param type Possible options are can_read or can_write or can_manage. + #' @examples + #' arv$project_permission_check(type = "can_read", uuid = objectUUID, user = userUUID) + project_permission_check = function(uuid, user, type = NULL) + { + examples <- self$links_list(list(list("head_uuid","=", uuid))) + + theUser <- examples[which(sapply(examples$items, "[[", "tail_uuid") == user)] + + if (length(type) == 0 ){ + theUser + } else { + theType <- theUser$items[which(sapply(theUser$items, "[[", "name") == type)] + permisions <- theType[which(sapply(theType, "[[", "link_class") == 'permission')] + print(permisions[[1]]$name) + } + }, + + #' @description + #' links_get is a method defined in Arvados class. + #' @param uuid The UUID of the Link in question. + links_get = function(uuid) + { + endPoint <- stringr::str_interp("links/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' links_create is a method defined in Arvados class. + #' @param link Link object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + links_create = function(link, ensureUniqueName = "false", + clusterID = NULL) + { + endPoint <- stringr::str_interp("links") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + if(length(link) > 0) + body <- jsonlite::toJSON(list(link = link), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' links_update is a method defined in Arvados class. + #' @param link Link object. + #' @param uuid The UUID of the Link in question. + links_update = function(link, uuid, async = "false") + { + endPoint <- stringr::str_interp("links/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(async = async) + + if(length(link) > 0) + body <- jsonlite::toJSON(list(link = link), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' links_delete is a method defined in Arvados class. + #' @param uuid The UUID of the Link in question. + links_delete = function(uuid) + { + endPoint <- stringr::str_interp("links/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' links_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + links_list = function(filters = NULL, where = NULL, + order = NULL, select = NULL, distinct = NULL, + limit = "100", offset = "0", count = "exact", + clusterID = NULL, bypassFederation = NULL) + { + endPoint <- stringr::str_interp("links") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' links_get_permissions is a method defined in Arvados class. + #' @param uuid The UUID of the Log in question. + links_get_permissions = function(uuid) + { + endPoint <- stringr::str_interp("permissions/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' logs_get is a method defined in Arvados class. + #' @param uuid The UUID of the Log in question. + logs_get = function(uuid) + { + endPoint <- stringr::str_interp("logs/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' logs_create is a method defined in Arvados class. + #' @param log Log object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + logs_create = function(log, ensureUniqueName = "false", + clusterID = NULL) + { + endPoint <- stringr::str_interp("logs") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + if(length(log) > 0) + body <- jsonlite::toJSON(list(log = log), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' logs_update is a method defined in Arvados class. + #' @param log Log object. + #' @param uuid The UUID of the Log in question. + logs_update = function(log, uuid) + { + endPoint <- stringr::str_interp("logs/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + if(length(log) > 0) + body <- jsonlite::toJSON(list(log = log), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' logs_delete is a method defined in Arvados class. + #' @param uuid The UUID of the Log in question. + logs_delete = function(uuid) + { + endPoint <- stringr::str_interp("logs/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' logs_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + logs_list = function(filters = NULL, where = NULL, + order = NULL, select = NULL, distinct = NULL, + limit = "100", offset = "0", count = "exact", + clusterID = NULL, bypassFederation = NULL) + { + endPoint <- stringr::str_interp("logs") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' users_get is a method defined in Arvados class. + #' @param uuid The UUID of the User in question. + users_get = function(uuid) + { + endPoint <- stringr::str_interp("users/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' users_create is a method defined in Arvados class. + #' @param user User object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + users_create = function(user, ensureUniqueName = "false", + clusterID = NULL) + { + endPoint <- stringr::str_interp("users") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + if(length(user) > 0) + body <- jsonlite::toJSON(list(user = user), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' users_update is a method defined in Arvados class. + #' @param user User object. + #' @param uuid The UUID of the User in question. + #' @param bypassFederation + users_update = function(user, uuid, bypassFederation = NULL) + { + endPoint <- stringr::str_interp("users/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(bypassFederation = bypassFederation) + + if(length(user) > 0) + body <- jsonlite::toJSON(list(user = user), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' users_delete is a method defined in Arvados class. + #' @param uuid The UUID of the User in question. + users_delete = function(uuid) + { + endPoint <- stringr::str_interp("users/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' users_current is a method defined in Arvados class. + users_current = function() + { + endPoint <- stringr::str_interp("users/current") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' users_system is a method defined in Arvados class. + users_system = function() + { + endPoint <- stringr::str_interp("users/system") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' users_activate is a method defined in Arvados class. + #' @param uuid The UUID of the User in question. + users_activate = function(uuid) + { + endPoint <- stringr::str_interp("users/${uuid}/activate") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' users_setup is a method defined in Arvados class. + #' @param uuid + #' @param user + #' @param repo_name + #' @param vm_uuid + #' @param send_notification_email + users_setup = function(uuid = NULL, user = NULL, + repo_name = NULL, vm_uuid = NULL, send_notification_email = "false") + { + endPoint <- stringr::str_interp("users/setup") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(uuid = uuid, user = user, + repo_name = repo_name, vm_uuid = vm_uuid, + send_notification_email = send_notification_email) + + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' users_unsetup is a method defined in Arvados class. + #' @param uuid The UUID of the User in question. + users_unsetup = function(uuid) + { + endPoint <- stringr::str_interp("users/${uuid}/unsetup") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' users_merge is a method defined in Arvados class. + #' @param newOwnerUUID + #' @param newUserToken + #' @param redirectToNewUser + #' @param oldUserUUID + #' @param newUserUUID + users_merge = function(newOwnerUUID, newUserToken = NULL, + redirectToNewUser = NULL, oldUserUUID = NULL, + newUserUUID = NULL) + { + endPoint <- stringr::str_interp("users/merge") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(newOwnerUUID = newOwnerUUID, + newUserToken = newUserToken, redirectToNewUser = redirectToNewUser, + oldUserUUID = oldUserUUID, newUserUUID = newUserUUID) + + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' users_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + users_list = function(filters = NULL, where = NULL, + order = NULL, select = NULL, distinct = NULL, + limit = "100", offset = "0", count = "exact", + clusterID = NULL, bypassFederation = NULL) + { + endPoint <- stringr::str_interp("users") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' repositories_get is a method defined in Arvados class. + #' @param uuid The UUID of the Repository in question. + repositories_get = function(uuid) + { + endPoint <- stringr::str_interp("repositories/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' repositories_create is a method defined in Arvados class. + #' @param repository Repository object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + repositories_create = function(repository, + ensureUniqueName = "false", clusterID = NULL) + { + endPoint <- stringr::str_interp("repositories") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + if(length(repository) > 0) + body <- jsonlite::toJSON(list(repository = repository), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' repositories_update is a method defined in Arvados class. + #' @param repository Repository object. + #' @param uuid The UUID of the Repository in question. + repositories_update = function(repository, uuid) + { + endPoint <- stringr::str_interp("repositories/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + if(length(repository) > 0) + body <- jsonlite::toJSON(list(repository = repository), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' repositories_delete is a method defined in Arvados class. + #' @param uuid The UUID of the Repository in question. + repositories_delete = function(uuid) + { + endPoint <- stringr::str_interp("repositories/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' repositories_get_all_permissions is a method defined in Arvados class. + repositories_get_all_permissions = function() + { + endPoint <- stringr::str_interp("repositories/get_all_permissions") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' repositories_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + repositories_list = function(filters = NULL, + where = NULL, order = NULL, select = NULL, + distinct = NULL, limit = "100", offset = "0", + count = "exact", clusterID = NULL, bypassFederation = NULL) + { + endPoint <- stringr::str_interp("repositories") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' virtual_machines_get is a method defined in Arvados class. + #' @param uuid The UUID of the virtualMachine in question. + virtual_machines_get = function(uuid) + { + endPoint <- stringr::str_interp("virtual_machines/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' virtual_machines_create is a method defined in Arvados class. + #' @param virtualMachine virtualMachine object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + virtual_machines_create = function(virtualMachine, + ensureUniqueName = "false", clusterID = NULL) + { + endPoint <- stringr::str_interp("virtual_machines") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + if(length(virtualMachine) > 0) + body <- jsonlite::toJSON(list(virtualMachine = virtualMachine), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' virtual_machines_update is a method defined in Arvados class. + #' @param virtualMachine virtualMachine object. + #' @param uuid The UUID of the virtualMachine in question. + virtual_machines_update = function(virtualMachine, uuid) + { + endPoint <- stringr::str_interp("virtual_machines/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + if(length(virtualMachine) > 0) + body <- jsonlite::toJSON(list(virtualMachine = virtualMachine), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' virtual_machines_delete is a method defined in Arvados class. + #' @param uuid The UUID of the virtualMachine in question. + virtual_machines_delete = function(uuid) + { + endPoint <- stringr::str_interp("virtual_machines/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' virtual_machines_logins is a method defined in Arvados class. + #' @param uuid The UUID of the virtualMachine in question. + virtual_machines_logins = function(uuid) + { + endPoint <- stringr::str_interp("virtual_machines/${uuid}/logins") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' virtual_machines_get_all_logins is a method defined in Arvados class. + virtual_machines_get_all_logins = function() + { + endPoint <- stringr::str_interp("virtual_machines/get_all_logins") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' virtual_machines_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation bypass federation behavior, list items from local instance database only + virtual_machines_list = function(filters = NULL, + where = NULL, order = NULL, select = NULL, + distinct = NULL, limit = "100", offset = "0", + count = "exact", clusterID = NULL, bypassFederation = NULL) + { + endPoint <- stringr::str_interp("virtual_machines") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' workflows_get is a method defined in Arvados class. + #' @param uuid The UUID of the Workflow in question. + workflows_get = function(uuid) + { + endPoint <- stringr::str_interp("workflows/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' workflows_create is a method defined in Arvados class. + #' @param workflow Workflow object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + workflows_create = function(workflow, ensureUniqueName = "false", + clusterID = NULL) + { + endPoint <- stringr::str_interp("workflows") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + if(length(workflow) > 0) + body <- jsonlite::toJSON(list(workflow = workflow), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' workflows_update is a method defined in Arvados class. + #' @param workflow Workflow object. + #' @param uuid The UUID of the Workflow in question. + workflows_update = function(workflow, uuid) + { + endPoint <- stringr::str_interp("workflows/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + if(length(workflow) > 0) + body <- jsonlite::toJSON(list(workflow = workflow), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' workflows_delete is a method defined in Arvados class. + #' @param uuid The UUID of the Workflow in question. + workflows_delete = function(uuid) + { + endPoint <- stringr::str_interp("workflows/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' workflows_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + workflows_list = function(filters = NULL, + where = NULL, order = NULL, select = NULL, + distinct = NULL, limit = "100", offset = "0", + count = "exact", clusterID = NULL, bypassFederation = NULL) + { + endPoint <- stringr::str_interp("workflows") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' user_agreements_get is a method defined in Arvados class. + #' @param uuid The UUID of the userAgreement in question. + user_agreements_get = function(uuid) + { + endPoint <- stringr::str_interp("user_agreements/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' user_agreements_create is a method defined in Arvados class. + #' @param userAgreement userAgreement object. + #' @param ensureUniqueName Adjust name to ensure uniqueness instead of returning an error. + #' @param clusterID Create object on a remote federated cluster instead of the current one. + user_agreements_create = function(userAgreement, + ensureUniqueName = "false", clusterID = NULL) + { + endPoint <- stringr::str_interp("user_agreements") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(ensureUniqueName = ensureUniqueName, + clusterID = clusterID) + + if(length(userAgreement) > 0) + body <- jsonlite::toJSON(list(userAgreement = userAgreement), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' user_agreements_update is a method defined in Arvados class. + #' @param userAgreement userAgreement object. + #' @param uuid The UUID of the userAgreement in question. + user_agreements_update = function(userAgreement, uuid) + { + endPoint <- stringr::str_interp("user_agreements/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + if(length(userAgreement) > 0) + body <- jsonlite::toJSON(list(userAgreement = userAgreement), + auto_unbox = TRUE) + else + body <- NULL + + response <- private$REST$http$exec("PUT", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' user_agreements_delete is a method defined in Arvados class. + #' @param uuid The UUID of the userAgreement in question. + user_agreements_delete = function(uuid) + { + endPoint <- stringr::str_interp("user_agreements/${uuid}") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("DELETE", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' user_agreements_signatures is a method defined in Arvados class. + user_agreements_signatures = function() + { + endPoint <- stringr::str_interp("user_agreements/signatures") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' user_agreements_sign is a method defined in Arvados class. + user_agreements_sign = function() + { + endPoint <- stringr::str_interp("user_agreements/sign") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("POST", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' user_agreements_list is a method defined in Arvados class. + #' @param filters + #' @param where + #' @param order + #' @param select + #' @param distinct + #' @param limit + #' @param offset + #' @param count + #' @param clusterID List objects on a remote federated cluster instead of the current one. + #' @param bypassFederation Bypass federation behavior, list items from local instance database only. + user_agreements_list = function(filters = NULL, + where = NULL, order = NULL, select = NULL, + distinct = NULL, limit = "100", offset = "0", + count = "exact", clusterID = NULL, bypassFederation = NULL) + { + endPoint <- stringr::str_interp("user_agreements") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- list(filters = filters, where = where, + order = order, select = select, distinct = distinct, + limit = limit, offset = offset, count = count, + clusterID = clusterID, bypassFederation = bypassFederation) + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' user_agreements_new is a method defined in Arvados class. + user_agreements_new = function() + { + endPoint <- stringr::str_interp("user_agreements/new") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + #' @description + #' configs_get is a method defined in Arvados class. + configs_get = function() + { + endPoint <- stringr::str_interp("config") + url <- paste0(private$host, endPoint) + headers <- list(Authorization = paste("Bearer", private$token), + "Content-Type" = "application/json") + queryArgs <- NULL= + + body <- NULL + + response <- private$REST$http$exec("GET", url, headers, body, + queryArgs, private$numRetries) + resource <- private$REST$httpParser$parseJSONResponse(response) + + if(!is.null(resource$errors)) + stop(resource$errors) + + resource + }, + + getHostName = function() private$host, + getToken = function() private$token, + setRESTService = function(newREST) private$REST <- newREST, + getRESTService = function() private$REST + ), + + private = list( + + token = NULL, + host = NULL, + REST = NULL, + numRetries = NULL + ), + + cloneable = FALSE ) + + diff --git a/sdk/R/R/ArvadosFile.R b/sdk/R/R/ArvadosFile.R index fb1d3b335c..938d12a7f9 100644 --- a/sdk/R/R/ArvadosFile.R +++ b/sdk/R/R/ArvadosFile.R @@ -2,55 +2,10 @@ # # SPDX-License-Identifier: Apache-2.0 -#' ArvadosFile +#' R6 Class Representing a ArvadosFile #' +#' @description #' ArvadosFile class represents a file inside Arvados collection. -#' -#' @section Usage: -#' \preformatted{file = ArvadosFile$new(name)} -#' -#' @section Arguments: -#' \describe{ -#' \item{name}{Name of the file.} -#' } -#' -#' @section Methods: -#' \describe{ -#' \item{getName()}{Returns name of the file.} -#' \item{getRelativePath()}{Returns file path relative to the root.} -#' \item{read(contentType = "raw", offset = 0, length = 0)}{Read file content.} -#' \item{write(content, contentType = "text/html")}{Write to file (override current content of the file).} -#' \item{connection(rw)}{Get connection opened in "read" or "write" mode.} -#' \item{flush()}{Write connections content to a file (override current content of the file).} -#' \item{remove(name)}{Removes ArvadosFile or Subcollection specified by name from the subcollection.} -#' \item{getSizeInBytes()}{Returns file size in bytes.} -#' \item{move(destination)}{Moves file to a new location inside collection.} -#' \item{copy(destination)}{Copies file to a new location inside collection.} -#' } -#' -#' @name ArvadosFile -#' @examples -#' \dontrun{ -#' myFile <- ArvadosFile$new("myFile") -#' -#' myFile$write("This is new file content") -#' fileContent <- myFile$read() -#' fileContent <- myFile$read("text") -#' fileContent <- myFile$read("raw", offset = 8, length = 4) -#' -#' #Write a table: -#' arvConnection <- myFile$connection("w") -#' write.table(mytable, arvConnection) -#' arvadosFile$flush() -#' -#' #Read a table: -#' arvConnection <- myFile$connection("r") -#' mytable <- read.table(arvConnection) -#' -#' myFile$move("newFolder/myFile") -#' myFile$copy("newFolder/myFile") -#' } -NULL #' @export ArvadosFile <- R6::R6Class( @@ -59,6 +14,12 @@ ArvadosFile <- R6::R6Class( public = list( + #' @description + #' Initialize new enviroment. + #' @param name Name of the new enviroment. + #' @return A new `ArvadosFile` object. + #' @examples + #' myFile <- ArvadosFile$new("myFile") initialize = function(name) { if(name == "") @@ -67,13 +28,26 @@ ArvadosFile <- R6::R6Class( private$name <- name }, + #' @description + #' Returns name of the file. + #' @examples + #' arvadosFile$getName() getName = function() private$name, + #' @description + #' Returns collections file content as character vector. + #' @param fullPath Checking if TRUE. + #' @examples + #' arvadosFile$getFileListing() getFileListing = function(fullpath = TRUE) { self$getName() }, + #' @description + #' Returns collections content size in bytes. + #' @examples + #' arvadosFile$getSizeInBytes() getSizeInBytes = function() { if(is.null(private$collection)) @@ -96,13 +70,19 @@ ArvadosFile <- R6::R6Class( return(NULL) }, + #' @description + #' Returns collection UUID. getCollection = function() private$collection, + #' @description + #' Sets new collection. setCollection = function(collection, setRecursively = TRUE) { private$collection <- collection }, + #' @description + #' Returns file path relative to the root. getRelativePath = function() { relativePath <- c(private$name) @@ -118,10 +98,23 @@ ArvadosFile <- R6::R6Class( paste0(relativePath, collapse = "/") }, + #' @description + #' Returns project UUID. getParent = function() private$parent, + #' @description + #' Sets project collection. setParent = function(newParent) private$parent <- newParent, + #' @description + #' Read file content. + #' @param contentType Type of content. Possible is "text", "raw". + #' @param offset Describes the location of a piece of data compared to another location + #' @param length Length of content + #' @examples + #' collection <- Collection$new(arv, collectionUUID) + #' arvadosFile <- collection$get(fileName) + #' fileContent <- arvadosFile$read("text") read = function(contentType = "raw", offset = 0, length = 0) { if(is.null(private$collection)) @@ -138,6 +131,13 @@ ArvadosFile <- R6::R6Class( fileContent }, + #' @description + #' Get connection opened in "read" or "write" mode. + #' @param rw Type of connection. + #' @examples + #' collection <- Collection$new(arv, collectionUUID) + #' arvadosFile <- collection$get(fileName) + #' arvConnection <- arvadosFile$connection("w") connection = function(rw) { if (rw == "r" || rw == "rb") @@ -155,6 +155,13 @@ ArvadosFile <- R6::R6Class( } }, + #' @description + #' Write connections content to a file or override current content of the file. + #' @examples + #' collection <- Collection$new(arv, collectionUUID) + #' arvadosFile <- collection$get(fileName) + #' myFile$write("This is new file content") + #' arvadosFile$flush() flush = function() { v <- textConnectionValue(private$buffer) @@ -162,6 +169,14 @@ ArvadosFile <- R6::R6Class( self$write(paste(v, collapse='\n')) }, + #' @description + #' Write to file or override current content of the file. + #' @param content File to write. + #' @param contentType Type of content. Possible is "text", "raw". + #' @examples + #' collection <- Collection$new(arv, collectionUUID) + #' arvadosFile <- collection$get(fileName) + #' myFile$write("This is new file content") write = function(content, contentType = "text/html") { if(is.null(private$collection)) @@ -175,6 +190,11 @@ ArvadosFile <- R6::R6Class( writeResult }, + #' @description + #' Moves file to a new location inside collection. + #' @param destination Path to new folder. + #' @examples + #' arvadosFile$move(newPath) move = function(destination) { if(is.null(private$collection)) @@ -207,6 +227,11 @@ ArvadosFile <- R6::R6Class( self }, + #' @description + #' Copies file to a new location inside collection. + #' @param destination Path to new folder. + #' @examples + #' arvadosFile$copy("NewName.format") copy = function(destination) { if(is.null(private$collection)) @@ -238,6 +263,9 @@ ArvadosFile <- R6::R6Class( newFile }, + #' @description + #' Duplicate file and gives it a new name. + #' @param newName New name for duplicated file. duplicate = function(newName = NULL) { name <- if(!is.null(newName)) newName else private$name @@ -261,7 +289,10 @@ ArvadosFile <- R6::R6Class( # We also need to set content's collection to NULL because # add method throws exception if we try to add content that already # belongs to a collection. + parentsCollection <- newParent$getCollection() + #parent$.__enclos_env__$private$children <- c(parent$.__enclos_env__$private$children, self) + #private$parent <- parent content$setCollection(NULL, setRecursively = FALSE) newParent$setCollection(NULL, setRecursively = FALSE) newParent$add(content) @@ -273,6 +304,9 @@ ArvadosFile <- R6::R6Class( { # We temporary set parents collection to NULL. This will ensure that # remove method doesn't remove this file from REST. + + #private$parent$.__enclos_env__$private$removeChild(private$name) + #private$parent <- NULL parent <- private$parent parentsCollection <- parent$getCollection() parent$setCollection(NULL, setRecursively = FALSE) diff --git a/sdk/R/R/ArvadosR.R b/sdk/R/R/ArvadosR.R new file mode 100644 index 0000000000..892053dbab --- /dev/null +++ b/sdk/R/R/ArvadosR.R @@ -0,0 +1,25 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + +#' @title ArvadosR +#' +#' @description +#' \if{html}{\figure{dax.png}{options: style='float: right' alt='logo' width='120'}} +#' +#' Arvados 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. +#' +#' @author \itemize{ +#' \item Lucas Di Pentima +#' \item Ward Vandewege +#' \item Fuad Muhic +#' \item Peter Amstutz +#' \item Aneta Stanczyk +#' \item Piotr Nowosielski} +#' +#' @seealso \itemize{ +#' \item \code{\link{https://github.com/arvados/arvados/blob/main/README.md}} +#' \item \code{\link{https://github.com/arvados/arvados/tree/main/sdk/R}}} +#' +#' @name ArvadosR +NULL diff --git a/sdk/R/R/Collection.R b/sdk/R/R/Collection.R index 9ed758c0a4..e362de6041 100644 --- a/sdk/R/R/Collection.R +++ b/sdk/R/R/Collection.R @@ -2,62 +2,43 @@ # # SPDX-License-Identifier: Apache-2.0 -#' Collection +#' R6 Class Representing Arvados Collection #' -#' Collection class provides interface for working with Arvados collections. +#' @description +#' Collection class provides interface for working with Arvados collections, +#' for exaplme actions like creating, updating, moving or removing are possible. #' -#' @section Usage: -#' \preformatted{collection = Collection$new(arv, uuid)} +#' @seealso +#' \code{\link{https://github.com/arvados/arvados/tree/main/sdk/R}} #' -#' @section Arguments: -#' \describe{ -#' \item{arv}{Arvados object.} -#' \item{uuid}{UUID of a collection.} -#' } -#' -#' @section Methods: -#' \describe{ -#' \item{add(content)}{Adds ArvadosFile or Subcollection specified by content to the collection.} -#' \item{create(files)}{Creates one or more ArvadosFiles and adds them to the collection at specified path.} -#' \item{remove(fileNames)}{Remove one or more files from the collection.} -#' \item{move(content, destination)}{Moves ArvadosFile or Subcollection to another location in the collection.} -#' \item{copy(content, destination)}{Copies ArvadosFile or Subcollection to another location in the collection.} -#' \item{getFileListing()}{Returns collections file content as character vector.} -#' \item{get(relativePath)}{If relativePath is valid, returns ArvadosFile or Subcollection specified by relativePath, else returns NULL.} -#' } -#' -#' @name Collection -#' @examples -#' \dontrun{ -#' arv <- Arvados$new("your Arvados token", "example.arvadosapi.com") -#' collection <- Collection$new(arv, "uuid") -#' -#' createdFiles <- collection$create(c("main.cpp", lib.dll), "cpp/src/") -#' -#' collection$remove("location/to/my/file.cpp") -#' -#' collection$move("folder/file.cpp", "file.cpp") -#' -#' arvadosFile <- collection$get("location/to/my/file.cpp") -#' arvadosSubcollection <- collection$get("location/to/my/directory/") -#' } -NULL - #' @export + Collection <- R6::R6Class( "Collection", public = list( - uuid = NULL, - - initialize = function(api, uuid) + #' @field uuid Autentic for Collection UUID. + uuid = NULL, + + #' @description + #' Initialize new enviroment. + #' @param api Arvados enviroment. + #' @param uuid The UUID Autentic for Collection UUID. + #' @return A new `Collection` object. + #' @examples + #' collection <- Collection$new(arv, CollectionUUID) + initialize = function(api, uuid) { private$REST <- api$getRESTService() self$uuid <- uuid }, + #' @description + #' Adds ArvadosFile or Subcollection specified by content to the collection. Used only with ArvadosFile or Subcollection. + #' @param content Content to be added. + #' @param relativePath Path to add content. add = function(content, relativePath = "") { if(is.null(private$tree)) @@ -98,6 +79,180 @@ Collection <- R6::R6Class( } }, + #' @description + #' Read file content. + #' @param file Name of the file. + #' @param col Collection from which the file is read. + #' @param sep Separator used in reading tsv, csv file format. + #' @param istable Used in reading txt file to check if the file is table or not. + #' @param fileclass Used in reading fasta file to set file class. + #' @param Ncol Used in reading binary file to set numbers of columns in data.frame. + #' @param Nrow Used in reading binary file to set numbers of rows in data.frame size. + #' @examples + #' collection <- Collection$new(arv, collectionUUID) + #' readFile <- collection$readArvFile(arvadosFile, istable = 'yes') # table + #' readFile <- collection$readArvFile(arvadosFile, istable = 'no') # text + #' readFile <- collection$readArvFile(arvadosFile) # xlsx, csv, tsv, rds, rdata + #' readFile <- collection$readArvFile(arvadosFile, fileclass = 'fasta') # fasta + #' readFile <- collection$readArvFile(arvadosFile, Ncol= 4, Nrow = 32) # binary, only numbers + #' readFile <- collection$readArvFile(arvadosFile, Ncol = 5, Nrow = 150, istable = "factor") # binary with factor or text + readArvFile = function(file, con, sep = ',', istable = NULL, fileclass = "SeqFastadna", Ncol = NULL, Nrow = NULL, wantedFunction = NULL) + { + arvFile <- self$get(file) + FileName <- arvFile$getName() + FileName <- tolower(FileName) + FileFormat <- gsub(".*\\.", "", FileName) + + # set enviroment + ARVADOS_API_TOKEN <- Sys.getenv("ARVADOS_API_TOKEN") + ARVADOS_API_HOST <- Sys.getenv("ARVADOS_API_HOST") + my_collection <- self$uuid + key <- gsub("/", "_", ARVADOS_API_TOKEN) + + Sys.setenv( + "AWS_ACCESS_KEY_ID" = key, + "AWS_SECRET_ACCESS_KEY" = key, + "AWS_DEFAULT_REGION" = "collections", + "AWS_S3_ENDPOINT" = gsub("api[.]", "", ARVADOS_API_HOST)) + + if (FileFormat == "txt") { + if (is.null(istable)){ + stop(paste('You need to paste whether it is a text or table file')) + } else if (istable == 'no') { + fileContent <- arvFile$read("text") # used to read + fileContent <- gsub("[\r\n]", " ", fileContent) + } else if (istable == 'yes') { + arvConnection <- arvFile$connection("r") # used to make possible use different function later + fileContent <- read.table(arvConnection) + } + } + else if (FileFormat == "xlsx") { + fileContent <- aws.s3::s3read_using(FUN = openxlsx::read.xlsx, object = file, bucket = my_collection) + } + else if (FileFormat == "csv" || FileFormat == "tsv") { + arvConnection <- arvFile$connection("r") + if (FileFormat == "tsv"){ + mytable <- read.table(arvConnection, sep = '\t') + } else if (FileFormat == "csv" & sep == '\t') { + mytable <- read.table(arvConnection, sep = '\t') + } else if (FileFormat == "csv") { + mytable <- read.table(arvConnection, sep = ',') + } else { + stop(paste('File format not supported, use arvadosFile$connection() and customise it')) + } + } + else if (FileFormat == "fasta") { + fastafile <- aws.s3::s3read_using(FUN = seqinr::read.fasta, as.string = TRUE, object = file, bucket = my_collection) + } + else if (FileFormat == "dat" || FileFormat == "bin") { + fileContent <- gzcon(arvFile$connection("rb")) + + # function to precess data to binary format + read_bin.file <- function(fileContent) { + # read binfile + column.names <- readBin(fileContent, character(), n = Ncol) + bindata <- readBin(fileContent, numeric(), Nrow*Ncol+Ncol) + # check + res <- which(bindata < 0.0000001) + if (is.list(res)) { + bindata <- bindata[-res] + } else { + bindata <- bindata + } + # make a dataframe + data <- data.frame(matrix(data = NA, nrow = Nrow, ncol = Ncol)) + for (i in 1:Ncol) { + data[,i] <- bindata[(1+Nrow*(i-1)):(Nrow*i)] + } + colnames(data) = column.names + + len <- which(is.na(data[,Ncol])) # error if sth went wrong + if (length(len) == 0) { + data + } else { + stop(paste("there is a factor or text in the table, customize the function by typing more arguments")) + } + } + if (is.null(Nrow) | is.null(Ncol)){ + stop(paste('You need to specify numbers of columns and rows')) + } + if (is.null(istable)) { + fileContent <- read_bin.file(fileContent) # call a function + } else if (istable == "factor") { # if there is a table with col name + fileContent <- read_bin.file(fileContent) + } + } + else if (FileFormat == "rds" || FileFormat == "rdata") { + arvConnection <- arvFile$connection("rb") + mytable <- readRDS(gzcon(arvConnection)) + } + else { + stop(parse(('File format not supported, use arvadosFile$connection() and customise it'))) + } + }, + + #' @description + #' Write file content + #' @param name Name of the file. + #' @param file File to be saved. + #' @param istable Used in writing txt file to check if the file is table or not. + #' @examples + #' collection <- Collection$new(arv, collectionUUID) + #' writeFile <- collection$writeFile("myoutput.csv", file, istable = NULL) # csv + #' writeFile <- collection$writeFile("myoutput.fasta", file, istable = NULL) # fasta + #' writeFile <- collection$writeFile("myoutputtable.txt", file, istable = "yes") # txt table + #' writeFile <- collection$writeFile("myoutputtext.txt", file, istable = "no") # txt text + #' writeFile <- collection$writeFile("myoutputbinary.dat", file) # binary + #' writeFile <- collection$writeFile("myoutputxlsx.xlsx", file) # xlsx + writeFile = function(name, file, istable = NULL, seqName = NULL) + { + # prepare file and connection + arvFile <- collection$create(name)[[1]] + arvFile <- collection$get(name) + arvConnection <- arvFile$connection("w") + # get file format + FileName <- arvFile$getName() + FileName <- tolower(FileName) + FileFormat <- gsub(".*\\.", "", FileName) + + # set enviroment + ARVADOS_API_TOKEN <- Sys.getenv("ARVADOS_API_TOKEN") + ARVADOS_API_HOST <- Sys.getenv("ARVADOS_API_HOST") + my_collection <- self$uuid + key <- gsub("/", "_", ARVADOS_API_TOKEN) + + Sys.setenv( + "AWS_ACCESS_KEY_ID" = key, + "AWS_SECRET_ACCESS_KEY" = key, + "AWS_DEFAULT_REGION" = "collections", + "AWS_S3_ENDPOINT" = gsub("api[.]", "", ARVADOS_API_HOST)) + + if (FileFormat == "txt") { + if (istable == "yes") { + aws.s3::s3write_using(file, FUN = write.table, object = name, bucket = my_collection) + } else if (istable == "no") { + aws.s3::s3write_using(file, FUN = writeChar, object = name, bucket = my_collection) + } else { + stop(paste("Specify parametr istable")) + } + } else if (FileFormat == "csv") { + aws.s3::s3write_using(file, FUN = write.csv, object = name, bucket = my_collection) + } else if (FileFormat == "fasta") { + aws.s3::s3write_using(file, FUN = seqinr::write.fasta, name = seqName, object = name, bucket = my_collection) + } else if (FileFormat == "xlsx") { + aws.s3::s3write_using(file, FUN = openxlsx::write.xlsx, object = name, bucket = my_collection) + } else if (FileFormat == "dat" || FileFormat == "bin") { + aws.s3::s3write_using(file, FUN = writeBin, object = name, bucket = my_collection) + } else { + stop(parse(('File format not supported, use arvadosFile$connection() and customise it'))) + } + }, + + #' @description + #' Creates one or more ArvadosFiles and adds them to the collection at specified path. + #' @param files Content to be created. + #' @examples + #' collection <- arv$collections_create(name = collectionTitle, description = collectionDescription, owner_uuid = collectionOwner, properties = list("ROX37196928443768648" = "ROX37742976443830153")) create = function(files) { if(is.null(private$tree)) @@ -116,7 +271,7 @@ Collection <- R6::R6Class( private$REST$create(file, self$uuid) newTreeBranch$setCollection(self) - newTreeBranch + newTreeBranch }) } else @@ -127,6 +282,11 @@ Collection <- R6::R6Class( } }, + #' @description + #' Remove one or more files from the collection. + #' @param paths Content to be removed. + #' @examples + #' collection$remove(fileName.format) remove = function(paths) { if(is.null(private$tree)) @@ -160,6 +320,12 @@ Collection <- R6::R6Class( } }, + #' @description + #' Moves ArvadosFile or Subcollection to another location in the collection. + #' @param content Content to be moved. + #' @param destination Path to move content. + #' @examples + #' collection$move("fileName.format", path) move = function(content, destination) { if(is.null(private$tree)) @@ -175,6 +341,12 @@ Collection <- R6::R6Class( elementToMove$move(destination) }, + #' @description + #' Copies ArvadosFile or Subcollection to another location in the collection. + #' @param content Content to be moved. + #' @param destination Path to move content. + #' @examples + #' copied <- collection$copy("oldName.format", "newName.format") copy = function(content, destination) { if(is.null(private$tree)) @@ -190,6 +362,10 @@ Collection <- R6::R6Class( elementToCopy$copy(destination) }, + #' @description + #' Refreshes the environment. + #' @examples + #' collection$refresh() refresh = function() { if(!is.null(private$tree)) @@ -199,6 +375,10 @@ Collection <- R6::R6Class( } }, + #' @description + #' Returns collections file content as character vector. + #' @examples + #' list <- collection$getFileListing() getFileListing = function() { if(is.null(private$tree)) @@ -208,10 +388,15 @@ Collection <- R6::R6Class( content[order(tolower(content))] }, + #' @description + #' If relativePath is valid, returns ArvadosFile or Subcollection specified by relativePath, else returns NULL. + #' @param relativePath Path from content is taken. + #' @examples + #' arvadosFile <- collection$get(fileName) get = function(relativePath) { if(is.null(private$tree)) - private$generateCollectionTreeStructure() + private$generateCollectionTreeStructure(relativePath) private$tree$getElement(relativePath) }, @@ -219,14 +404,14 @@ Collection <- R6::R6Class( getRESTService = function() private$REST, setRESTService = function(newRESTService) private$REST <- newRESTService ), - private = list( REST = NULL, + #' @tree beautiful tree of sth tree = NULL, fileContent = NULL, - generateCollectionTreeStructure = function() + generateCollectionTreeStructure = function(relativePath = NULL) { if(is.null(self$uuid)) stop("Collection uuid is not defined.") @@ -234,7 +419,7 @@ Collection <- R6::R6Class( if(is.null(private$REST)) stop("REST service is not defined.") - private$fileContent <- private$REST$getCollectionContent(self$uuid) + private$fileContent <- private$REST$getCollectionContent(self$uuid, relativePath) private$tree <- CollectionTree$new(private$fileContent, self) } ), @@ -254,3 +439,10 @@ print.Collection = function(x, ...) cat(paste0("Type: ", "\"", "Arvados Collection", "\""), sep = "\n") cat(paste0("uuid: ", "\"", x$uuid, "\""), sep = "\n") } + + + + + + + diff --git a/sdk/R/R/HttpRequest.R b/sdk/R/R/HttpRequest.R index 18b36f9689..4540902d2e 100644 --- a/sdk/R/R/HttpRequest.R +++ b/sdk/R/R/HttpRequest.R @@ -30,7 +30,6 @@ HttpRequest <- R6::R6Class( if(toString(Sys.getenv("ARVADOS_API_HOST_INSECURE") == "TRUE")) config$options = list(ssl_verifypeer = 0L) - # times = 1 regular call + numberOfRetries response <- httr::RETRY(verb, url = url, body = body, config = config, times = retryTimes + 1) }, diff --git a/sdk/R/R/RESTService.R b/sdk/R/R/RESTService.R index 9c65e72861..5cbcb65f75 100644 --- a/sdk/R/R/RESTService.R +++ b/sdk/R/R/RESTService.R @@ -110,10 +110,11 @@ RESTService <- R6::R6Class( serverResponse }, - getCollectionContent = function(uuid) + getCollectionContent = function(uuid, relativePath = NULL) + { collectionURL <- URLencode(paste0(self$getWebDavHostName(), - "c=", uuid)) + "c=", uuid, "/", relativePath)) headers <- list("Authorization" = paste("Bearer", self$token)) @@ -227,8 +228,12 @@ RESTService <- R6::R6Class( serverResponse <- self$http$exec("PUT", fileURL, headers, body, retryTimes = self$numRetries) - if(serverResponse$status_code < 200 || serverResponse$status_code >= 300) - stop(paste("Server code:", serverResponse$status_code)) + if (serverResponse$status_code < 200){ # to wyrzuca błędy + stop(paste("Server code:", serverResponse$status_code))} + else if (serverResponse$status_code >= 300 & serverResponse$status_code < 422) { + stop(paste("Server code:", serverResponse$status_code))} + else if (serverResponse$status_code == 422 ) { + stop(paste("Project of that name already exists. If you want to change it use project_update() instead"))} paste("File created:", relativePath) } diff --git a/sdk/R/R/Subcollection.R b/sdk/R/R/Subcollection.R index 981bd687a2..752a396655 100644 --- a/sdk/R/R/Subcollection.R +++ b/sdk/R/R/Subcollection.R @@ -2,46 +2,11 @@ # # SPDX-License-Identifier: Apache-2.0 -#' Subcollection +#' R6 Class Representing a Subcollection #' +#' @description #' Subcollection class represents a folder inside Arvados collection. #' It is essentially a composite of arvadosFiles and other subcollections. -#' -#' @section Usage: -#' \preformatted{subcollection = Subcollection$new(name)} -#' -#' @section Arguments: -#' \describe{ -#' \item{name}{Name of the subcollection.} -#' } -#' -#' @section Methods: -#' \describe{ -#' \item{getName()}{Returns name of the subcollection.} -#' \item{getRelativePath()}{Returns subcollection path relative to the root.} -#' \item{add(content)}{Adds ArvadosFile or Subcollection specified by content to the subcollection.} -#' \item{remove(name)}{Removes ArvadosFile or Subcollection specified by name from the subcollection.} -#' \item{get(relativePath)}{If relativePath is valid, returns ArvadosFile or Subcollection specified by relativePath, else returns NULL.} -#' \item{getFileListing()}{Returns subcollections file content as character vector.} -#' \item{getSizeInBytes()}{Returns subcollections content size in bytes.} -#' \item{move(destination)}{Moves subcollection to a new location inside collection.} -#' \item{copy(destination)}{Copies subcollection to a new location inside collection.} -#' } -#' -#' @name Subcollection -#' @examples -#' \dontrun{ -#' myFolder <- Subcollection$new("myFolder") -#' myFile <- ArvadosFile$new("myFile") -#' -#' myFolder$add(myFile) -#' myFolder$get("myFile") -#' myFolder$remove("myFile") -#' -#' myFolder$move("newLocation/myFolder") -#' myFolder$copy("newLocation/myFolder") -#' } -NULL #' @export Subcollection <- R6::R6Class( @@ -50,13 +15,21 @@ Subcollection <- R6::R6Class( public = list( + #' @description + #' Initialize new enviroment. + #' @param name Name of the new enviroment. + #' @return A new `Subcollection` object. initialize = function(name) { private$name <- name }, + #' @description + #' Returns name of the file. getName = function() private$name, + #' @description + #' Returns Subcollection's path relative to the root. getRelativePath = function() { relativePath <- c(private$name) @@ -72,6 +45,9 @@ Subcollection <- R6::R6Class( paste0(relativePath, collapse = "/") }, + #' @description + #' Adds ArvadosFile or Subcollection specified by content to the Subcollection. + #' @param content Content to be added. add = function(content) { if("ArvadosFile" %in% class(content) || @@ -115,6 +91,9 @@ Subcollection <- R6::R6Class( } }, + #' @description + #' Removes ArvadosFile or Subcollection specified by name from the Subcollection. + #' @param name Name of the file to be removed. remove = function(name) { if(is.character(name)) @@ -146,12 +125,17 @@ Subcollection <- R6::R6Class( } }, + #' @description + #' Returns Subcollections file content as character vector. + #' @param fullPath Checking if the path to file exists. getFileListing = function(fullPath = TRUE) { content <- private$getContentAsCharVector(fullPath) content[order(tolower(content))] }, + #' @description + #' Returns subcollections content size in bytes. getSizeInBytes = function() { if(is.null(private$collection)) @@ -164,6 +148,9 @@ Subcollection <- R6::R6Class( return(sum(fileSizes)) }, + #' @description + #' Moves Subcollection to a new location inside collection. + #' @param destination Path to move the file. move = function(destination) { if(is.null(private$collection)) @@ -196,6 +183,9 @@ Subcollection <- R6::R6Class( self }, + #' @description + #' Copies Subcollection to a new location inside collection. + #' @param destination Path to copy the file. copy = function(destination) { if(is.null(private$collection)) @@ -227,6 +217,9 @@ Subcollection <- R6::R6Class( newContent }, + #' @description + #' Duplicate Subcollection and gives it a new name. + #' @param newName New name for duplicated file. duplicate = function(newName = NULL) { name <- if(!is.null(newName)) newName else private$name @@ -237,6 +230,9 @@ Subcollection <- R6::R6Class( root }, + #' @description + #' If name is valid, returns ArvadosFile or Subcollection specified by relativePath, else returns NULL. + #' @param name Name of the file. get = function(name) { for(child in private$children) @@ -248,14 +244,18 @@ Subcollection <- R6::R6Class( return(NULL) }, + #' @description + #' Returns files in Subcollection. getFirst = function() { if(length(private$children) == 0) - return(NULL) + return(NULL) private$children[[1]] }, + #' @description + #' Sets Collection by its UUID. setCollection = function(collection, setRecursively = TRUE) { private$collection = collection @@ -267,10 +267,16 @@ Subcollection <- R6::R6Class( } }, + #' @description + #' Returns Collection of Subcollection. getCollection = function() private$collection, + #' @description + #' Returns Collection UUID. getParent = function() private$parent, + #' @description + #' Sets new Collection. setParent = function(newParent) private$parent <- newParent ), diff --git a/sdk/R/README.Rmd b/sdk/R/README.Rmd deleted file mode 100644 index 8cc89d9020..0000000000 --- a/sdk/R/README.Rmd +++ /dev/null @@ -1,339 +0,0 @@ -[comment]: # (Copyright (c) The Arvados Authors. All rights reserved.) -[comment]: # () -[comment]: # (SPDX-License-Identifier: CC-BY-SA-3.0) - -## R SDK for Arvados - -This SDK focuses on providing support for accessing Arvados projects, collections, and the files within collections. -The API is not final and feedback is solicited from users on ways in which it could be improved. - -### Installation - -```{r include=FALSE} -knitr::opts_chunk$set(eval=FALSE) -``` - -```{r} -install.packages("ArvadosR", repos=c("https://r.arvados.org", getOption("repos")["CRAN"]), dependencies=TRUE) -``` - -Note: on Linux, you may have to install supporting packages. - -On Centos 7, this is: - -```{bash} -yum install libxml2-devel openssl-devel curl-devel -``` - -On Debian, this is: - -```{bash} -apt-get install build-essential libxml2-dev libssl-dev libcurl4-gnutls-dev -``` - -Minimum R version required to run ArvadosR is 3.3.0. - - -### Usage - -#### Initializing API - -* Load Library and Initialize API: - -```{r} -library('ArvadosR') -# use environment variables ARVADOS_API_TOKEN and ARVADOS_API_HOST -arv <- Arvados$new() - -# provide them explicitly -arv <- Arvados$new("your Arvados token", "example.arvadosapi.com") -``` - -Optionally, add numRetries parameter to specify number of times to retry failed service requests. -Default is 0. - -```{r} -arv <- Arvados$new("your Arvados token", "example.arvadosapi.com", numRetries = 3) -``` - -This parameter can be set at any time using setNumRetries - -```{r} -arv$setNumRetries(5) -``` - - -#### Working with collections - -* Get a collection: - -```{r} -collection <- arv$collections.get("uuid") -``` - -Be aware that the result from `collections.get` is _not_ a -`Collection` class. The object returned from this method lets you -access collection fields like "name" and "description". The -`Collection` class lets you access the files in the collection for -reading and writing, and is described in the next section. - -* List collections: - -```{r} -# offset of 0 and default limit of 100 -collectionList <- arv$collections.list(list(list("name", "like", "Test%"))) - -collectionList <- arv$collections.list(list(list("name", "like", "Test%")), limit = 10, offset = 2) - -# count of total number of items (may be more than returned due to paging) -collectionList$items_available - -# items which match the filter criteria -collectionList$items -``` - -* List all collections even if the number of items is greater than maximum API limit: - -```{r} -collectionList <- listAll(arv$collections.list, list(list("name", "like", "Test%"))) -``` - -* Delete a collection: - -```{r} -deletedCollection <- arv$collections.delete("uuid") -``` - -* Update a collection's metadata: - -```{r} -updatedCollection <- arv$collections.update(list(name = "New name", description = "New description"), "uuid") -``` - -* Create a new collection: - -```{r} -newCollection <- arv$collections.create(list(name = "Example", description = "This is a test collection")) -``` - - -#### Manipulating collection content - -* Initialize a collection object: - -```{r} -collection <- Collection$new(arv, "uuid") -``` - -* Get list of files: - -```{r} -files <- collection$getFileListing() -``` - -* Get ArvadosFile or Subcollection from internal tree-like structure: - -```{r} -arvadosFile <- collection$get("location/to/my/file.cpp") -``` - -or - -```{r} -arvadosSubcollection <- collection$get("location/to/my/directory/") -``` - -* Read a table: - -```{r} -arvadosFile <- collection$get("myinput.txt") -arvConnection <- arvadosFile$connection("r") -mytable <- read.table(arvConnection) -``` - -* Write a table: - -```{r} -arvadosFile <- collection$create("myoutput.txt")[[1]] -arvConnection <- arvadosFile$connection("w") -write.table(mytable, arvConnection) -arvadosFile$flush() -``` - -* Write to existing file (overwrites current content of the file): - -```{r} -arvadosFile <- collection$get("location/to/my/file.cpp") -arvadosFile$write("This is new file content") -``` - -* Read whole file or just a portion of it: - -```{r} -fileContent <- arvadosFile$read() -fileContent <- arvadosFile$read("text") -fileContent <- arvadosFile$read("raw", offset = 1024, length = 512) -``` - -* Get ArvadosFile or Subcollection size: - -```{r} -size <- arvadosFile$getSizeInBytes() -``` - -or - -```{r} -size <- arvadosSubcollection$getSizeInBytes() -``` - -* Create new file in a collection (returns a vector of one or more ArvadosFile objects): - -```{r} -collection$create(files) -``` - -Example: - -```{r} -mainFile <- collection$create("cpp/src/main.cpp")[[1]] -fileList <- collection$create(c("cpp/src/main.cpp", "cpp/src/util.h")) -``` - -* Delete file from a collection: - -```{r} -collection$remove("location/to/my/file.cpp") -``` - -You can remove both Subcollection and ArvadosFile. -If subcollection contains more files or folders they will be removed recursively. - -You can also remove multiple files at once: - -```{r} -collection$remove(c("path/to/my/file.cpp", "path/to/other/file.cpp")) -``` - -* Delete file or folder from a Subcollection: - -```{r} -subcollection <- collection$get("mySubcollection/") -subcollection$remove("fileInsideSubcollection.exe") -subcollection$remove("folderInsideSubcollection/") -``` - -* Move or rename a file or folder within a collection (moving between collections is currently not supported): - -Directly from collection - -```{r} -collection$move("folder/file.cpp", "file.cpp") -``` - -Or from file - -```{r} -file <- collection$get("location/to/my/file.cpp") -file$move("newDestination/file.cpp") -``` - -Or from subcollection - -```{r} -subcollection <- collection$get("location/to/folder") -subcollection$move("newDestination/folder") -``` - -Make sure to include new file name in destination. -In second example file$move("newDestination/") will not work. - -* Copy file or folder within a collection (copying between collections is currently not supported): - -Directly from collection - -```{r} -collection$copy("folder/file.cpp", "file.cpp") -``` - -Or from file - -```{r} -file <- collection$get("location/to/my/file.cpp") -file$copy("destination/file.cpp") -``` - -Or from subcollection - -```{r} -subcollection <- collection$get("location/to/folder") -subcollection$copy("destination/folder") -``` - -#### Working with Aravdos projects - -* Get a project: - -```{r} -project <- arv$projects.get("uuid") -``` - -* List projects: - -```{r} -list subprojects of a project -projects <- arv$projects.list(list(list("owner_uuid", "=", "aaaaa-j7d0g-ccccccccccccccc"))) - -list projects which have names beginning with Example -examples <- arv$projects.list(list(list("name","like","Example%"))) -``` - -* List all projects even if the number of items is greater than maximum API limit: - -```{r} -projects <- listAll(arv$projects.list, list(list("name","like","Example%"))) -``` - -* Delete a project: - -```{r} -deletedProject <- arv$projects.delete("uuid") -``` - -* Update project: - -```{r} -updatedProject <- arv$projects.update(list(name = "new_name", description = "new description"), "uuid") -``` - -* Create project: - -```{r} -newProject <- arv$projects.update(list(name = "project_name", description = "project description")) -``` - -#### Help - -* View help page of Arvados classes by puting ? before class name: - -```{r} -?Arvados -?Collection -?Subcollection -?ArvadosFile -``` - -* View help page of any method defined in Arvados class by puting ? before method name: - -```{r} -?collections.update -?jobs.get -``` - -### Building the ArvadosR package - -```{bash} -cd arvados/sdk && R CMD build R -``` - -This will create a tarball of the ArvadosR package in the current directory. diff --git a/sdk/R/README.md b/sdk/R/README.md new file mode 100644 index 0000000000..5f7a11748b --- /dev/null +++ b/sdk/R/README.md @@ -0,0 +1,293 @@ +[comment]: # (Copyright © The Arvados Authors. All rights reserved.) +[comment]: # () +[comment]: # (SPDX-License-Identifier: CC-BY-SA-3.0) + +# R SDK for Arvados + +This SDK focuses on providing support for accessing Arvados projects, collections, and the files within collections. The API is not final and feedback is solicited from users on ways in which it could be improved. + +## Why Arvados? +* Memory efficient +* Availability +* Many available workflows +* Transparent +* Fast-developing + +## Key Topics +* Installation +* Usage + * Initializing API + * Working with collections + * Manipulating collection content + * Working with Arvados projects + * Help +* Building the ArvadosR package + +## Installation + +Minimum R version required to run ArvadosR is 3.3.0. + +```r +install.packages("ArvadosR", repos=c("https://r.arvados.org", getOption("repos")["CRAN"]), dependencies=TRUE) +library('ArvadosR') +``` + +> **Note** +> On Linux, you may have to install supporting packages. +> +> On Centos 7, this is: +> ```r +> yum install libxml2-devel openssl-devel curl-devel +> ``` +> On Debian, this is: +> ```r +> apt-get install build-essential libxml2-dev libssl-dev libcurl4-gnutls-dev +> ``` + + +## Usage +### Initializing API +```r +# use environment variables ARVADOS_API_TOKEN and ARVADOS_API_HOST +arv <- Arvados$new() + +# provide them explicitly +arv <- Arvados$new("your Arvados token", "example.arvadosapi.com") +``` +Optionally, add `numRetries` parameter to specify number of times to retry failed service requests. Default is 0. +```r +arv <- Arvados$new("your Arvados token", "example.arvadosapi.com", numRetries = 3) +``` +This parameter can be set at any time using `setNumRetries` +```r +arv$setNumRetries(5) +``` +### Working with collections +##### Get a collection: +```r +collection <- arv$collections_get("uuid") +``` +Be aware that the result from `collections_get` is not a Collection class. The object returned from this method lets you access collection fields like “name” and “description”. The Collection class lets you access the files in the collection for reading and writing, and is described in the next section. +##### List collections: +```r +# offset of 0 and default limit of 100 +collectionList <- arv$collections_list(list(list("name", "like", "Test%"))) + +collectionList <- arv$collections_list(list(list("name", "like", "Test%")), limit = 10, offset = 2) + +# count of total number of items (may be more than returned due to paging) +collectionList$items_available + +# items which match the filter criteria +collectionList$items +``` +##### List all collections even if the number of items is greater than maximum API limit: +```r +collectionList <- listAll(arv$collections_list, list(list("name", "like", "Test%"))) +``` +##### Delete a collection: +```r +deletedCollection <- arv$collections_delete("uuid") +``` +##### Update a collection’s metadata: +```r +collection <- arv$collections_update(name = "newCollectionTitle", description = "newCollectionDescription", ownerUUID = "collectionOwner", properties = NULL, uuid = "collectionUUID") +``` +##### Create a new collection: +```r +newCollection <- arv$collections_create(name = "collectionTitle", description = "collectionDescription", ownerUUID = "collectionOwner", properties = Properties) +``` +### Manipulating collection content +##### Initialize a collection object: +```r +collection <- Collection$new(arv, "uuid") +``` +##### Get list of files: +```r +files <- collection$getFileListing() +``` +##### Get ArvadosFile or Subcollection from internal tree-like structure: +```r +arvadosFile <- collection$get("location/to/my/file.cpp") +# or +arvadosSubcollection <- collection$get("location/to/my/directory/") +``` +##### Read a table: +```r +arvadosFile <- collection$get("myinput.txt") +arvConnection <- arvadosFile$connection("r") +mytable <- read.table(arvConnection) +``` +##### Write a table: +```r +arvadosFile <- collection$create("myoutput.txt")[[1]] +arvConnection <- arvadosFile$connection("w") +write.table(mytable, arvConnection) +arvadosFile$flush() +``` +##### Write to existing file (overwrites current content of the file): +```r +arvadosFile <- collection$get("location/to/my/file.cpp") +arvadosFile$write("This is new file content") +``` +##### Read whole file or just a portion of it: +```r +fileContent <- arvadosFile$read() +fileContent <- arvadosFile$read("text") +fileContent <- arvadosFile$read("raw", offset = 1024, length = 512) +``` +##### Get ArvadosFile or Subcollection size: +```r +size <- arvadosFile$getSizeInBytes() +# or +size <- arvadosSubcollection$getSizeInBytes() +``` +##### Create new file in a collection (returns a vector of one or more ArvadosFile objects): +```r +collection$create(files) +``` +> **Example** +> ```r +> mainFile <- collection$create("cpp/src/main.cpp")[[1]] +> fileList <- collection$create(c("cpp/src/main.cpp", "cpp/src/util.h")) +> ``` +##### Delete file from a collection: +```r +collection$remove("location/to/my/file.cpp") +``` +You can remove both Subcollection and ArvadosFile. If subcollection contains more files or folders they will be removed recursively. + +> **Note** +> You can also remove multiple files at once: +> ```r +> collection$remove(c("path/to/my/file.cpp", "path/to/other/file.cpp")) +> ``` + +##### Delete file or folder from a Subcollection: +```r +subcollection <- collection$get("mySubcollection/") +subcollection$remove("fileInsideSubcollection.exe") +subcollection$remove("folderInsideSubcollection/") +``` +##### Move or rename a file or folder within a collection (moving between collections is currently not supported): +###### Directly from collection +```r +collection$move("folder/file.cpp", "file.cpp") +``` +###### Or from file +```r +file <- collection$get("location/to/my/file.cpp") +file$move("newDestination/file.cpp") +``` +###### Or from subcollection +```r +subcollection <- collection$get("location/to/folder") +subcollection$move("newDestination/folder") +``` +> **Note** +> Make sure to include new file name in destination. In second example `file$move(“newDestination/”)` will not work. +##### Copy file or folder within a collection (copying between collections is currently not supported): +###### Directly from collection +```r +collection$copy("folder/file.cpp", "file.cpp") +``` +###### Or from file +```r +file <- collection$get("location/to/my/file.cpp") +file$copy("destination/file.cpp") +``` +###### Or from subcollection +```r +subcollection <- collection$get("location/to/folder") +subcollection$copy("destination/folder") +``` +### Working with Aravdos projects +##### Get a project: +```r +project <- arv$project_get("uuid") +``` +##### List projects: +```r +list subprojects of a project +projects <- arv$project_list(list(list("owner_uuid", "=", "aaaaa-j7d0g-ccccccccccccccc"))) + +list projects which have names beginning with Example +examples <- arv$project_list(list(list("name","like","Example%"))) +``` +##### List all projects even if the number of items is greater than maximum API limit: +```r +projects <- listAll(arv$project_list, list(list("name","like","Example%"))) +``` +###### Delete a project: +```r +deletedProject <- arv$project_delete("uuid") +``` +###### Update project: +```r +updatedProject <- arv$project_update(name = "new project name", properties = newProperties, uuid = "projectUUID") +``` +###### Create project: +```r +newProject <- arv$project_create(name = "project name", description = "project description", owner_uuid = "project UUID", properties = NULL, ensureUniqueName = "false") +``` +### Help +##### View help page of Arvados classes by puting `?` before class name: +```r +?Arvados +?Collection +?Subcollection +?ArvadosFile +``` +##### View help page of any method defined in Arvados class by puting `?` before method name: +```r +?collections_update +?jobs_get +``` + + + + ## Building the ArvadosR package + ```r +cd arvados/sdk && R CMD build R +``` +This will create a tarball of the ArvadosR package in the current directory. + + + +## 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 + +[![Join the chat at https://gitter.im/arvados/community](https://badges.gitter.im/arvados/community.svg)](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 a bug](https://dev.arvados.org/projects/arvados/issues/new) on [dev.arvados.org](https://dev.arvados.org). + +## Development and Contributing + +See [CONTRIBUTING](CONTRIBUTING.md) for information about Arvados development and how to contribute to the Arvados project. + +The [development road map](https://dev.arvados.org/issues/gantt?utf8=%E2%9C%93&set_filter=1&gantt=1&f%5B%5D=project_id&op%5Bproject_id%5D=%3D&v%5Bproject_id%5D%5B%5D=49&f%5B%5D=&zoom=1) outlines some of the project priorities over the next twelve months. + +## Licensing + +Arvados is Free Software. See [COPYING](COPYING) for information about the open source licenses used in Arvados. diff --git a/sdk/R/man/Arvados.Rd b/sdk/R/man/Arvados.Rd index b55dd00dc5..d028d0a078 100644 --- a/sdk/R/man/Arvados.Rd +++ b/sdk/R/man/Arvados.Rd @@ -1,206 +1,2911 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{Arvados} -\alias{Arvados} -\title{Arvados} -\description{ -Arvados class gives users ability to access Arvados REST API. -} -\section{Usage}{ - -\preformatted{arv = Arvados$new(authToken = NULL, hostName = NULL, numRetries = 0)} -} - -\section{Arguments}{ - -\describe{ - \item{authToken}{Authentification token. If not specified ARVADOS_API_TOKEN environment variable will be used.} - \item{hostName}{Host name. If not specified ARVADOS_API_HOST environment variable will be used.} - \item{numRetries}{Number which specifies how many times to retry failed service requests.} -} -} - -\section{Methods}{ - -\describe{ - \item{}{\code{\link{api_client_authorizations.create}}} - \item{}{\code{\link{api_client_authorizations.create_system_auth}}} - \item{}{\code{\link{api_client_authorizations.current}}} - \item{}{\code{\link{api_client_authorizations.delete}}} - \item{}{\code{\link{api_client_authorizations.get}}} - \item{}{\code{\link{api_client_authorizations.list}}} - \item{}{\code{\link{api_client_authorizations.update}}} - \item{}{\code{\link{api_clients.create}}} - \item{}{\code{\link{api_clients.delete}}} - \item{}{\code{\link{api_clients.get}}} - \item{}{\code{\link{api_clients.list}}} - \item{}{\code{\link{api_clients.update}}} - \item{}{\code{\link{authorized_keys.create}}} - \item{}{\code{\link{authorized_keys.delete}}} - \item{}{\code{\link{authorized_keys.get}}} - \item{}{\code{\link{authorized_keys.list}}} - \item{}{\code{\link{authorized_keys.update}}} - \item{}{\code{\link{collections.create}}} - \item{}{\code{\link{collections.delete}}} - \item{}{\code{\link{collections.get}}} - \item{}{\code{\link{collections.list}}} - \item{}{\code{\link{collections.provenance}}} - \item{}{\code{\link{collections.trash}}} - \item{}{\code{\link{collections.untrash}}} - \item{}{\code{\link{collections.update}}} - \item{}{\code{\link{collections.used_by}}} - \item{}{\code{\link{container_requests.create}}} - \item{}{\code{\link{container_requests.delete}}} - \item{}{\code{\link{container_requests.get}}} - \item{}{\code{\link{container_requests.list}}} - \item{}{\code{\link{container_requests.update}}} - \item{}{\code{\link{containers.auth}}} - \item{}{\code{\link{containers.create}}} - \item{}{\code{\link{containers.current}}} - \item{}{\code{\link{containers.delete}}} - \item{}{\code{\link{containers.get}}} - \item{}{\code{\link{containers.list}}} - \item{}{\code{\link{containers.lock}}} - \item{}{\code{\link{containers.secret_mounts}}} - \item{}{\code{\link{containers.unlock}}} - \item{}{\code{\link{containers.update}}} - \item{}{\code{\link{groups.contents}}} - \item{}{\code{\link{groups.create}}} - \item{}{\code{\link{groups.delete}}} - \item{}{\code{\link{groups.get}}} - \item{}{\code{\link{groups.list}}} - \item{}{\code{\link{groups.trash}}} - \item{}{\code{\link{groups.untrash}}} - \item{}{\code{\link{groups.update}}} - \item{}{\code{\link{humans.create}}} - \item{}{\code{\link{humans.delete}}} - \item{}{\code{\link{humans.get}}} - \item{}{\code{\link{humans.list}}} - \item{}{\code{\link{humans.update}}} - \item{}{\code{\link{jobs.cancel}}} - \item{}{\code{\link{jobs.create}}} - \item{}{\code{\link{jobs.delete}}} - \item{}{\code{\link{jobs.get}}} - \item{}{\code{\link{jobs.list}}} - \item{}{\code{\link{jobs.lock}}} - \item{}{\code{\link{jobs.queue}}} - \item{}{\code{\link{jobs.queue_size}}} - \item{}{\code{\link{jobs.update}}} - \item{}{\code{\link{job_tasks.create}}} - \item{}{\code{\link{job_tasks.delete}}} - \item{}{\code{\link{job_tasks.get}}} - \item{}{\code{\link{job_tasks.list}}} - \item{}{\code{\link{job_tasks.update}}} - \item{}{\code{\link{keep_disks.create}}} - \item{}{\code{\link{keep_disks.delete}}} - \item{}{\code{\link{keep_disks.get}}} - \item{}{\code{\link{keep_disks.list}}} - \item{}{\code{\link{keep_disks.ping}}} - \item{}{\code{\link{keep_disks.update}}} - \item{}{\code{\link{keep_services.accessible}}} - \item{}{\code{\link{keep_services.create}}} - \item{}{\code{\link{keep_services.delete}}} - \item{}{\code{\link{keep_services.get}}} - \item{}{\code{\link{keep_services.list}}} - \item{}{\code{\link{keep_services.update}}} - \item{}{\code{\link{links.create}}} - \item{}{\code{\link{links.delete}}} - \item{}{\code{\link{links.get}}} - \item{}{\code{\link{links.get_permissions}}} - \item{}{\code{\link{links.list}}} - \item{}{\code{\link{links.update}}} - \item{}{\code{\link{logs.create}}} - \item{}{\code{\link{logs.delete}}} - \item{}{\code{\link{logs.get}}} - \item{}{\code{\link{logs.list}}} - \item{}{\code{\link{logs.update}}} - \item{}{\code{\link{nodes.create}}} - \item{}{\code{\link{nodes.delete}}} - \item{}{\code{\link{nodes.get}}} - \item{}{\code{\link{nodes.list}}} - \item{}{\code{\link{nodes.ping}}} - \item{}{\code{\link{nodes.update}}} - \item{}{\code{\link{pipeline_instances.cancel}}} - \item{}{\code{\link{pipeline_instances.create}}} - \item{}{\code{\link{pipeline_instances.delete}}} - \item{}{\code{\link{pipeline_instances.get}}} - \item{}{\code{\link{pipeline_instances.list}}} - \item{}{\code{\link{pipeline_instances.update}}} - \item{}{\code{\link{pipeline_templates.create}}} - \item{}{\code{\link{pipeline_templates.delete}}} - \item{}{\code{\link{pipeline_templates.get}}} - \item{}{\code{\link{pipeline_templates.list}}} - \item{}{\code{\link{pipeline_templates.update}}} - \item{}{\code{\link{projects.create}}} - \item{}{\code{\link{projects.delete}}} - \item{}{\code{\link{projects.get}}} - \item{}{\code{\link{projects.list}}} - \item{}{\code{\link{projects.update}}} - \item{}{\code{\link{repositories.create}}} - \item{}{\code{\link{repositories.delete}}} - \item{}{\code{\link{repositories.get}}} - \item{}{\code{\link{repositories.get_all_permissions}}} - \item{}{\code{\link{repositories.list}}} - \item{}{\code{\link{repositories.update}}} - \item{}{\code{\link{specimens.create}}} - \item{}{\code{\link{specimens.delete}}} - \item{}{\code{\link{specimens.get}}} - \item{}{\code{\link{specimens.list}}} - \item{}{\code{\link{specimens.update}}} - \item{}{\code{\link{traits.create}}} - \item{}{\code{\link{traits.delete}}} - \item{}{\code{\link{traits.get}}} - \item{}{\code{\link{traits.list}}} - \item{}{\code{\link{traits.update}}} - \item{}{\code{\link{user_agreements.create}}} - \item{}{\code{\link{user_agreements.delete}}} - \item{}{\code{\link{user_agreements.get}}} - \item{}{\code{\link{user_agreements.list}}} - \item{}{\code{\link{user_agreements.new}}} - \item{}{\code{\link{user_agreements.sign}}} - \item{}{\code{\link{user_agreements.signatures}}} - \item{}{\code{\link{user_agreements.update}}} - \item{}{\code{\link{users.activate}}} - \item{}{\code{\link{users.create}}} - \item{}{\code{\link{users.current}}} - \item{}{\code{\link{users.delete}}} - \item{}{\code{\link{users.get}}} - \item{}{\code{\link{users.list}}} - \item{}{\code{\link{users.merge}}} - \item{}{\code{\link{users.setup}}} - \item{}{\code{\link{users.system}}} - \item{}{\code{\link{users.unsetup}}} - \item{}{\code{\link{users.update}}} - \item{}{\code{\link{virtual_machines.create}}} - \item{}{\code{\link{virtual_machines.delete}}} - \item{}{\code{\link{virtual_machines.get}}} - \item{}{\code{\link{virtual_machines.get_all_logins}}} - \item{}{\code{\link{virtual_machines.list}}} - \item{}{\code{\link{virtual_machines.logins}}} - \item{}{\code{\link{virtual_machines.update}}} - \item{}{\code{\link{workflows.create}}} - \item{}{\code{\link{workflows.delete}}} - \item{}{\code{\link{workflows.get}}} - \item{}{\code{\link{workflows.list}}} - \item{}{\code{\link{workflows.update}}} -} -} - -\examples{ -\dontrun{ -arv <- Arvados$new("your Arvados token", "example.arvadosapi.com") - -collection <- arv$collections.get("uuid") - -collectionList <- arv$collections.list(list(list("name", "like", "Test\%"))) -collectionList <- listAll(arv$collections.list, list(list("name", "like", "Test\%"))) - -deletedCollection <- arv$collections.delete("uuid") - -updatedCollection <- arv$collections.update(list(name = "New name", description = "New description"), - "uuid") - -createdCollection <- arv$collections.create(list(name = "Example", - description = "This is a test collection")) -} -} +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/Arvados.R +\name{Arvados} +\alias{Arvados} +\title{R6 Class Representing a Arvados} +\description{ +Arvados class gives users ability to access Arvados REST API. It also allowes user to manipulate collections (and projects?) +} +\examples{ + +## ------------------------------------------------ +## Method `Arvados$new` +## ------------------------------------------------ + +arv <- Arvados$new(authToken = "ARVADOS_API_TOKEN", hostName = "ARVADOS_API_HOST", numRetries = 3) + +## ------------------------------------------------ +## Method `Arvados$project_exist` +## ------------------------------------------------ + +arv$project_exist(uuid = projectUUID) + +## ------------------------------------------------ +## Method `Arvados$project_get` +## ------------------------------------------------ + +project <- arv$project_get(uuid = projectUUID) + +## ------------------------------------------------ +## Method `Arvados$project_create` +## ------------------------------------------------ + +Properties <- list() # should contain a list of new properties to be added +new_project <- arv$project_create(name = "project name", description = "project description", owner_uuid = "project UUID", properties = NULL, ensureUniqueName = "false") + +## ------------------------------------------------ +## Method `Arvados$project_properties_set` +## ------------------------------------------------ + +Properties <- list() # should contain a list of new properties to be added +arv$project_properties_set(Properties, uuid) + +## ------------------------------------------------ +## Method `Arvados$project_properties_append` +## ------------------------------------------------ + +newProperties <- list() # should contain a list of new properties to be added +arv$project_properties_append(properties = newProperties, uuid) + +## ------------------------------------------------ +## Method `Arvados$project_properties_get` +## ------------------------------------------------ + +arv$project_properties_get(projectUUID) + +## ------------------------------------------------ +## Method `Arvados$project_properties_delete` +## ------------------------------------------------ + +Properties <- list() # should contain a list of new properties to be added +arv$project_properties_delete(Properties, projectUUID) + +## ------------------------------------------------ +## Method `Arvados$project_update` +## ------------------------------------------------ + +newProperties <- list() # should contain a list of new properties to be added +arv$project_update(name = "new project name", properties = newProperties, uuid = projectUUID) + +## ------------------------------------------------ +## Method `Arvados$project_list` +## ------------------------------------------------ + +listOfprojects <- arv$project_list(list(list("owner_uuid", "=", projectUUID))) # Sample query which show projects within the project of a given UUID + +## ------------------------------------------------ +## Method `Arvados$collections_create` +## ------------------------------------------------ + +Properties <- list() # should contain a list of new properties to be added +arv$collections_create(name = "collectionTitle", description = "collectionDescription", ownerUUID = "collectionOwner", properties = Properties) + +## ------------------------------------------------ +## Method `Arvados$collections_update` +## ------------------------------------------------ + +collection <- arv$collections_create(name = "newCollectionTitle", description = "newCollectionDescription", ownerUUID = "collectionOwner", properties = NULL) + +## ------------------------------------------------ +## Method `Arvados$collections_delete` +## ------------------------------------------------ + +arv$collection_delete(collectionUUID) + +## ------------------------------------------------ +## Method `Arvados$collections_provenance` +## ------------------------------------------------ + +collection <- arv$collections_provenance(collectionUUID) + +## ------------------------------------------------ +## Method `Arvados$collections_trash` +## ------------------------------------------------ + +arv$collections_trash(collectionUUID) + +## ------------------------------------------------ +## Method `Arvados$collections_untrash` +## ------------------------------------------------ + +arv$collections_untrash(collectionUUID) + +## ------------------------------------------------ +## Method `Arvados$collections_list` +## ------------------------------------------------ + +collectionList <- arv$collections.list(list(list("name", "=", "Example"))) + +## ------------------------------------------------ +## Method `Arvados$project_permission_give` +## ------------------------------------------------ + +arv$project_permission_give(type = "can_read", uuid = objectUUID, user = userUUID) + +## ------------------------------------------------ +## Method `Arvados$project_permission_refuse` +## ------------------------------------------------ + +arv$project_permission_refuse(type = "can_read", uuid = objectUUID, user = userUUID) + +## ------------------------------------------------ +## Method `Arvados$project_permission_update` +## ------------------------------------------------ + +arv$project_permission_update(typeOld = "can_read", typeNew = "can_write", uuid = objectUUID, user = userUUID) + +## ------------------------------------------------ +## Method `Arvados$project_permission_check` +## ------------------------------------------------ + +arv$project_permission_check(type = "can_read", uuid = objectUUID, user = userUUID) +} +\section{Methods}{ +\subsection{Public methods}{ +\itemize{ +\item \href{#method-new}{\code{Arvados$new()}} +\item \href{#method-project_exist}{\code{Arvados$project_exist()}} +\item \href{#method-project_get}{\code{Arvados$project_get()}} +\item \href{#method-project_create}{\code{Arvados$project_create()}} +\item \href{#method-project_properties_set}{\code{Arvados$project_properties_set()}} +\item \href{#method-project_properties_append}{\code{Arvados$project_properties_append()}} +\item \href{#method-project_properties_get}{\code{Arvados$project_properties_get()}} +\item \href{#method-project_properties_delete}{\code{Arvados$project_properties_delete()}} +\item \href{#method-project_update}{\code{Arvados$project_update()}} +\item \href{#method-project_list}{\code{Arvados$project_list()}} +\item \href{#method-project_delete}{\code{Arvados$project_delete()}} +\item \href{#method-api_clients_get}{\code{Arvados$api_clients_get()}} +\item \href{#method-api_clients_create}{\code{Arvados$api_clients_create()}} +\item \href{#method-api_clients_update}{\code{Arvados$api_clients_update()}} +\item \href{#method-api_clients_delete}{\code{Arvados$api_clients_delete()}} +\item \href{#method-api_clients_list}{\code{Arvados$api_clients_list()}} +\item \href{#method-api_client_authorizations_get}{\code{Arvados$api_client_authorizations_get()}} +\item \href{#method-api_client_authorizations_create}{\code{Arvados$api_client_authorizations_create()}} +\item \href{#method-api_client_authorizations_update}{\code{Arvados$api_client_authorizations_update()}} +\item \href{#method-api_client_authorizations_delete}{\code{Arvados$api_client_authorizations_delete()}} +\item \href{#method-api_client_authorizations_create_system_auth}{\code{Arvados$api_client_authorizations_create_system_auth()}} +\item \href{#method-api_client_authorizations_current}{\code{Arvados$api_client_authorizations_current()}} +\item \href{#method-api_client_authorizations_list}{\code{Arvados$api_client_authorizations_list()}} +\item \href{#method-authorized_keys_get}{\code{Arvados$authorized_keys_get()}} +\item \href{#method-authorized_keys_create}{\code{Arvados$authorized_keys_create()}} +\item \href{#method-authorized_keys_update}{\code{Arvados$authorized_keys_update()}} +\item \href{#method-authorized_keys_delete}{\code{Arvados$authorized_keys_delete()}} +\item \href{#method-authorized_keys_list}{\code{Arvados$authorized_keys_list()}} +\item \href{#method-collections_get}{\code{Arvados$collections_get()}} +\item \href{#method-collections_create}{\code{Arvados$collections_create()}} +\item \href{#method-collections_update}{\code{Arvados$collections_update()}} +\item \href{#method-collections_delete}{\code{Arvados$collections_delete()}} +\item \href{#method-collections_provenance}{\code{Arvados$collections_provenance()}} +\item \href{#method-collections_used_by}{\code{Arvados$collections_used_by()}} +\item \href{#method-collections_trash}{\code{Arvados$collections_trash()}} +\item \href{#method-collections_untrash}{\code{Arvados$collections_untrash()}} +\item \href{#method-collections_list}{\code{Arvados$collections_list()}} +\item \href{#method-containers_get}{\code{Arvados$containers_get()}} +\item \href{#method-containers_create}{\code{Arvados$containers_create()}} +\item \href{#method-containers_update}{\code{Arvados$containers_update()}} +\item \href{#method-containers_delete}{\code{Arvados$containers_delete()}} +\item \href{#method-containers_auth}{\code{Arvados$containers_auth()}} +\item \href{#method-containers_lock}{\code{Arvados$containers_lock()}} +\item \href{#method-containers_unlock}{\code{Arvados$containers_unlock()}} +\item \href{#method-containers_secret_mounts}{\code{Arvados$containers_secret_mounts()}} +\item \href{#method-containers_current}{\code{Arvados$containers_current()}} +\item \href{#method-containers_list}{\code{Arvados$containers_list()}} +\item \href{#method-container_requests_get}{\code{Arvados$container_requests_get()}} +\item \href{#method-container_requests_create}{\code{Arvados$container_requests_create()}} +\item \href{#method-container_requests_update}{\code{Arvados$container_requests_update()}} +\item \href{#method-container_requests_delete}{\code{Arvados$container_requests_delete()}} +\item \href{#method-container_requests_list}{\code{Arvados$container_requests_list()}} +\item \href{#method-groups_get}{\code{Arvados$groups_get()}} +\item \href{#method-groups_create}{\code{Arvados$groups_create()}} +\item \href{#method-groups_update}{\code{Arvados$groups_update()}} +\item \href{#method-groups_delete}{\code{Arvados$groups_delete()}} +\item \href{#method-groups_contents}{\code{Arvados$groups_contents()}} +\item \href{#method-groups_shared}{\code{Arvados$groups_shared()}} +\item \href{#method-groups_trash}{\code{Arvados$groups_trash()}} +\item \href{#method-groups_untrash}{\code{Arvados$groups_untrash()}} +\item \href{#method-groups_list}{\code{Arvados$groups_list()}} +\item \href{#method-keep_services_get}{\code{Arvados$keep_services_get()}} +\item \href{#method-keep_services_create}{\code{Arvados$keep_services_create()}} +\item \href{#method-keep_services_update}{\code{Arvados$keep_services_update()}} +\item \href{#method-keep_services_delete}{\code{Arvados$keep_services_delete()}} +\item \href{#method-keep_services_accessible}{\code{Arvados$keep_services_accessible()}} +\item \href{#method-keep_services_list}{\code{Arvados$keep_services_list()}} +\item \href{#method-project_permission_give}{\code{Arvados$project_permission_give()}} +\item \href{#method-project_permission_refuse}{\code{Arvados$project_permission_refuse()}} +\item \href{#method-project_permission_update}{\code{Arvados$project_permission_update()}} +\item \href{#method-project_permission_check}{\code{Arvados$project_permission_check()}} +\item \href{#method-links_get}{\code{Arvados$links_get()}} +\item \href{#method-links_create}{\code{Arvados$links_create()}} +\item \href{#method-links_update}{\code{Arvados$links_update()}} +\item \href{#method-links_delete}{\code{Arvados$links_delete()}} +\item \href{#method-links_list}{\code{Arvados$links_list()}} +\item \href{#method-links_get_permissions}{\code{Arvados$links_get_permissions()}} +\item \href{#method-logs_get}{\code{Arvados$logs_get()}} +\item \href{#method-logs_create}{\code{Arvados$logs_create()}} +\item \href{#method-logs_update}{\code{Arvados$logs_update()}} +\item \href{#method-logs_delete}{\code{Arvados$logs_delete()}} +\item \href{#method-logs_list}{\code{Arvados$logs_list()}} +\item \href{#method-users_get}{\code{Arvados$users_get()}} +\item \href{#method-users_create}{\code{Arvados$users_create()}} +\item \href{#method-users_update}{\code{Arvados$users_update()}} +\item \href{#method-users_delete}{\code{Arvados$users_delete()}} +\item \href{#method-users_current}{\code{Arvados$users_current()}} +\item \href{#method-users_system}{\code{Arvados$users_system()}} +\item \href{#method-users_activate}{\code{Arvados$users_activate()}} +\item \href{#method-users_setup}{\code{Arvados$users_setup()}} +\item \href{#method-users_unsetup}{\code{Arvados$users_unsetup()}} +\item \href{#method-users_merge}{\code{Arvados$users_merge()}} +\item \href{#method-users_list}{\code{Arvados$users_list()}} +\item \href{#method-repositories_get}{\code{Arvados$repositories_get()}} +\item \href{#method-repositories_create}{\code{Arvados$repositories_create()}} +\item \href{#method-repositories_update}{\code{Arvados$repositories_update()}} +\item \href{#method-repositories_delete}{\code{Arvados$repositories_delete()}} +\item \href{#method-repositories_get_all_permissions}{\code{Arvados$repositories_get_all_permissions()}} +\item \href{#method-repositories_list}{\code{Arvados$repositories_list()}} +\item \href{#method-virtual_machines_get}{\code{Arvados$virtual_machines_get()}} +\item \href{#method-virtual_machines_create}{\code{Arvados$virtual_machines_create()}} +\item \href{#method-virtual_machines_update}{\code{Arvados$virtual_machines_update()}} +\item \href{#method-virtual_machines_delete}{\code{Arvados$virtual_machines_delete()}} +\item \href{#method-virtual_machines_logins}{\code{Arvados$virtual_machines_logins()}} +\item \href{#method-virtual_machines_get_all_logins}{\code{Arvados$virtual_machines_get_all_logins()}} +\item \href{#method-virtual_machines_list}{\code{Arvados$virtual_machines_list()}} +\item \href{#method-workflows_get}{\code{Arvados$workflows_get()}} +\item \href{#method-workflows_create}{\code{Arvados$workflows_create()}} +\item \href{#method-workflows_update}{\code{Arvados$workflows_update()}} +\item \href{#method-workflows_delete}{\code{Arvados$workflows_delete()}} +\item \href{#method-workflows_list}{\code{Arvados$workflows_list()}} +\item \href{#method-user_agreements_get}{\code{Arvados$user_agreements_get()}} +\item \href{#method-user_agreements_create}{\code{Arvados$user_agreements_create()}} +\item \href{#method-user_agreements_update}{\code{Arvados$user_agreements_update()}} +\item \href{#method-user_agreements_delete}{\code{Arvados$user_agreements_delete()}} +\item \href{#method-user_agreements_signatures}{\code{Arvados$user_agreements_signatures()}} +\item \href{#method-user_agreements_sign}{\code{Arvados$user_agreements_sign()}} +\item \href{#method-user_agreements_list}{\code{Arvados$user_agreements_list()}} +\item \href{#method-user_agreements_new}{\code{Arvados$user_agreements_new()}} +\item \href{#method-configs_get}{\code{Arvados$configs_get()}} +\item \href{#method-getHostName}{\code{Arvados$getHostName()}} +\item \href{#method-getToken}{\code{Arvados$getToken()}} +\item \href{#method-setRESTService}{\code{Arvados$setRESTService()}} +\item \href{#method-getRESTService}{\code{Arvados$getRESTService()}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-new}{}}} +\subsection{Method \code{new()}}{ +Initialize new enviroment. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$new(authToken = NULL, hostName = NULL, numRetries = 0)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{authToken}}{ARVADOS_API_TOKEN from 'Get API Token' on Arvados.} + +\item{\code{hostName}}{ARVADOS_API_HOST from 'Get API Token' on Arvados.} + +\item{\code{numRetries}}{Specify number of times to retry failed service requests.} +} +\if{html}{\out{
}} +} +\subsection{Returns}{ +A new `Arvados` object. +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arv <- Arvados$new(authToken = "ARVADOS_API_TOKEN", hostName = "ARVADOS_API_HOST", numRetries = 3) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_exist}{}}} +\subsection{Method \code{project_exist()}}{ +project_exist enables checking if the project with such a UUID exist. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_exist(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of a project or a file.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arv$project_exist(uuid = projectUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_get}{}}} +\subsection{Method \code{project_get()}}{ +project_get returns the demanded project. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Group in question.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{project <- arv$project_get(uuid = projectUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_create}{}}} +\subsection{Method \code{project_create()}}{ +project_create creates a new project of a given name and description. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_create( + name, + description, + ownerUUID, + properties = NULL, + ensureUniqueName = "false" +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{name}}{Name of the project.} + +\item{\code{description}}{Description of the project.} + +\item{\code{ownerUUID}}{The UUID of the maternal project to created one.} + +\item{\code{properties}}{List of the properties of the project.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{Properties <- list() # should contain a list of new properties to be added +new_project <- arv$project_create(name = "project name", description = "project description", owner_uuid = "project UUID", properties = NULL, ensureUniqueName = "false") +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_properties_set}{}}} +\subsection{Method \code{project_properties_set()}}{ +project_properties_set is a method defined in Arvados class that enables setting properties. Allows to set or overwrite the properties. In case there are set already it overwrites them. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_properties_set(listProperties, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{listProperties}}{List of new properties.} + +\item{\code{uuid}}{The UUID of a project or a file.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{Properties <- list() # should contain a list of new properties to be added +arv$project_properties_set(Properties, uuid) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_properties_append}{}}} +\subsection{Method \code{project_properties_append()}}{ +project_properties_append is a method defined in Arvados class that enables appending properties. Allows to add new properties. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_properties_append(properties, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of a project or a file.} + +\item{\code{listOfNewProperties}}{List of new properties.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{newProperties <- list() # should contain a list of new properties to be added +arv$project_properties_append(properties = newProperties, uuid) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_properties_get}{}}} +\subsection{Method \code{project_properties_get()}}{ +project_properties_get is a method defined in Arvados class that returns properties. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_properties_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of a project or a file.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arv$project_properties_get(projectUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_properties_delete}{}}} +\subsection{Method \code{project_properties_delete()}}{ +project_properties_delete is a method defined in Arvados class that deletes list of properties. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_properties_delete(oneProp, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{oneProp}}{Property to be deleted.} + +\item{\code{uuid}}{The UUID of a project or a file.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{Properties <- list() # should contain a list of new properties to be added +arv$project_properties_delete(Properties, projectUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_update}{}}} +\subsection{Method \code{project_update()}}{ +project_update enables updating project. New name, description and properties may be given. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_update(..., uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{...}}{Feature to be updated (name, description, properties).} + +\item{\code{uuid}}{The UUID of a project in question.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{newProperties <- list() # should contain a list of new properties to be added +arv$project_update(name = "new project name", properties = newProperties, uuid = projectUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_list}{}}} +\subsection{Method \code{project_list()}}{ +project_list enables listing project by its name, uuid, properties, permissions. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + includeTrash = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{includeTrash}}{Include items whose is_trashed attribute is true.} + +\item{\code{uuid}}{The UUID of a project in question.} + +\item{\code{recursive}}{Include contents from child groups recursively.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{listOfprojects <- arv$project_list(list(list("owner_uuid", "=", projectUUID))) # Sample query which show projects within the project of a given UUID +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_delete}{}}} +\subsection{Method \code{project_delete()}}{ +project_delete trashes project of a given uuid. It can be restored from trash or deleted permanently. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Group in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-api_clients_get}{}}} +\subsection{Method \code{api_clients_get()}}{ +api_clients_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$api_clients_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the apiClient in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-api_clients_create}{}}} +\subsection{Method \code{api_clients_create()}}{ +api_clients_create is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$api_clients_create( + apiClient, + ensureUniqueName = "false", + clusterID = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{apiClient}}{apiClient object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-api_clients_update}{}}} +\subsection{Method \code{api_clients_update()}}{ +api_clients_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$api_clients_update(apiClient, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{apiClient}}{apiClient object.} + +\item{\code{uuid}}{The UUID of the apiClient in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-api_clients_delete}{}}} +\subsection{Method \code{api_clients_delete()}}{ +api_clients_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$api_clients_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the apiClient in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-api_clients_list}{}}} +\subsection{Method \code{api_clients_list()}}{ +api_clients_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$api_clients_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-api_client_authorizations_get}{}}} +\subsection{Method \code{api_client_authorizations_get()}}{ +api_client_authorizations_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$api_client_authorizations_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the apiClientAuthorization in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-api_client_authorizations_create}{}}} +\subsection{Method \code{api_client_authorizations_create()}}{ +api_client_authorizations_create is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$api_client_authorizations_create( + apiClientAuthorization, + ensureUniqueName = "false", + clusterID = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{apiClientAuthorization}}{apiClientAuthorization object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error on (ownerUUID, name) collision_} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-api_client_authorizations_update}{}}} +\subsection{Method \code{api_client_authorizations_update()}}{ +api_client_authorizations_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$api_client_authorizations_update(apiClientAuthorization, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{apiClientAuthorization}}{apiClientAuthorization object.} + +\item{\code{uuid}}{The UUID of the apiClientAuthorization in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-api_client_authorizations_delete}{}}} +\subsection{Method \code{api_client_authorizations_delete()}}{ +api_client_authorizations_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$api_client_authorizations_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the apiClientAuthorization in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-api_client_authorizations_create_system_auth}{}}} +\subsection{Method \code{api_client_authorizations_create_system_auth()}}{ +api_client_authorizations_create_system_auth is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$api_client_authorizations_create_system_auth( + apiClientID = NULL, + scopes = NULL +)}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-api_client_authorizations_current}{}}} +\subsection{Method \code{api_client_authorizations_current()}}{ +api_client_authorizations_current is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$api_client_authorizations_current()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-api_client_authorizations_list}{}}} +\subsection{Method \code{api_client_authorizations_list()}}{ +api_client_authorizations_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$api_client_authorizations_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-authorized_keys_get}{}}} +\subsection{Method \code{authorized_keys_get()}}{ +authorized_keys_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$authorized_keys_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the authorizedKey in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-authorized_keys_create}{}}} +\subsection{Method \code{authorized_keys_create()}}{ +authorized_keys_create is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$authorized_keys_create( + authorizedKey, + ensureUniqueName = "false", + clusterID = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{authorizedKey}}{authorizedKey object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-authorized_keys_update}{}}} +\subsection{Method \code{authorized_keys_update()}}{ +authorized_keys_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$authorized_keys_update(authorizedKey, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{authorizedKey}}{authorizedKey object.} + +\item{\code{uuid}}{The UUID of the authorizedKey in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-authorized_keys_delete}{}}} +\subsection{Method \code{authorized_keys_delete()}}{ +authorized_keys_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$authorized_keys_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the authorizedKey in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-authorized_keys_list}{}}} +\subsection{Method \code{authorized_keys_list()}}{ +authorized_keys_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$authorized_keys_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-collections_get}{}}} +\subsection{Method \code{collections_get()}}{ +collections_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$collections_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Collection in question. +collection <- arv$collections_get(uuid = collectionUUID)} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-collections_create}{}}} +\subsection{Method \code{collections_create()}}{ +collections_create is a method defined in Arvados class that enables collections creation. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$collections_create( + name, + description, + ownerUUID = NULL, + properties = NULL, + ensureUniqueName = "false", + clusterID = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{name}}{Name of the collection.} + +\item{\code{description}}{Description of the collection.} + +\item{\code{ownerUUID}}{UUID of the maternal project to created one.} + +\item{\code{properties}}{Properties of the collection.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{Properties <- list() # should contain a list of new properties to be added +arv$collections_create(name = "collectionTitle", description = "collectionDescription", ownerUUID = "collectionOwner", properties = Properties) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-collections_update}{}}} +\subsection{Method \code{collections_update()}}{ +collections_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$collections_update( + name, + description, + ownerUUID = NULL, + properties = NULL, + uuid +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{name}}{New name of the collection.} + +\item{\code{description}}{New description of the collection.} + +\item{\code{ownerUUID}}{UUID of the maternal project to created one.} + +\item{\code{properties}}{New list of properties of the collection.} + +\item{\code{uuid}}{The UUID of the Collection in question.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collection <- arv$collections_create(name = "newCollectionTitle", description = "newCollectionDescription", ownerUUID = "collectionOwner", properties = NULL) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-collections_delete}{}}} +\subsection{Method \code{collections_delete()}}{ +collections_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$collections_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Collection in question.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arv$collection_delete(collectionUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-collections_provenance}{}}} +\subsection{Method \code{collections_provenance()}}{ +collections_provenance is a method defined in Arvados class, it returns the collection by uuid. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$collections_provenance(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Collection in question.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collection <- arv$collections_provenance(collectionUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-collections_used_by}{}}} +\subsection{Method \code{collections_used_by()}}{ +collections_used_by is a method defined in Arvados class, it returns collection by portable_data_hash. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$collections_used_by(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Collection in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-collections_trash}{}}} +\subsection{Method \code{collections_trash()}}{ +collections_trash is a method defined in Arvados class, it moves collection to trash. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$collections_trash(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Collection in question.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arv$collections_trash(collectionUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-collections_untrash}{}}} +\subsection{Method \code{collections_untrash()}}{ +collections_untrash is a method defined in Arvados class, it moves collection from trash to project. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$collections_untrash(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Collection in question.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arv$collections_untrash(collectionUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-collections_list}{}}} +\subsection{Method \code{collections_list()}}{ +collections_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$collections_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL, + includeTrash = NULL, + includeOldVersions = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} + +\item{\code{includeTrash}}{Include collections whose is_trashed attribute is true.} + +\item{\code{includeOldVersions}}{Include past collection versions.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collectionList <- arv$collections.list(list(list("name", "=", "Example"))) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-containers_get}{}}} +\subsection{Method \code{containers_get()}}{ +containers_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$containers_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Container in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-containers_create}{}}} +\subsection{Method \code{containers_create()}}{ +containers_create is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$containers_create( + container, + ensureUniqueName = "false", + clusterID = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{container}}{Container object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-containers_update}{}}} +\subsection{Method \code{containers_update()}}{ +containers_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$containers_update(container, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{container}}{Container object.} + +\item{\code{uuid}}{The UUID of the Container in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-containers_delete}{}}} +\subsection{Method \code{containers_delete()}}{ +containers_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$containers_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Container in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-containers_auth}{}}} +\subsection{Method \code{containers_auth()}}{ +containers_auth is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$containers_auth(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Container in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-containers_lock}{}}} +\subsection{Method \code{containers_lock()}}{ +containers_lock is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$containers_lock(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Container in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-containers_unlock}{}}} +\subsection{Method \code{containers_unlock()}}{ +containers_unlock is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$containers_unlock(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Container in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-containers_secret_mounts}{}}} +\subsection{Method \code{containers_secret_mounts()}}{ +containers_secret_mounts is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$containers_secret_mounts(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Container in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-containers_current}{}}} +\subsection{Method \code{containers_current()}}{ +containers_current is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$containers_current()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-containers_list}{}}} +\subsection{Method \code{containers_list()}}{ +containers_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$containers_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-container_requests_get}{}}} +\subsection{Method \code{container_requests_get()}}{ +container_requests_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$container_requests_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the containerRequest in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-container_requests_create}{}}} +\subsection{Method \code{container_requests_create()}}{ +container_requests_create is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$container_requests_create( + containerRequest, + ensureUniqueName = "false", + clusterID = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{containerRequest}}{containerRequest object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-container_requests_update}{}}} +\subsection{Method \code{container_requests_update()}}{ +container_requests_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$container_requests_update(containerRequest, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{containerRequest}}{containerRequest object.} + +\item{\code{uuid}}{The UUID of the containerRequest in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-container_requests_delete}{}}} +\subsection{Method \code{container_requests_delete()}}{ +container_requests_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$container_requests_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the containerRequest in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-container_requests_list}{}}} +\subsection{Method \code{container_requests_list()}}{ +container_requests_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$container_requests_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL, + includeTrash = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{bypass federation behavior, list items from local instance database only} + +\item{\code{includeTrash}}{Include container requests whose owner project is trashed.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-groups_get}{}}} +\subsection{Method \code{groups_get()}}{ +groups_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$groups_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Group in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-groups_create}{}}} +\subsection{Method \code{groups_create()}}{ +groups_create is a method defined in Arvados class that supports project creation. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$groups_create( + group, + ensureUniqueName = "false", + clusterID = NULL, + async = "false" +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{group}}{Group object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} + +\item{\code{async}}{Defer permissions update.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-groups_update}{}}} +\subsection{Method \code{groups_update()}}{ +groups_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$groups_update(group, uuid, async = "false")}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{group}}{Group object.} + +\item{\code{uuid}}{The UUID of the Group in question.} + +\item{\code{async}}{Defer permissions update.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-groups_delete}{}}} +\subsection{Method \code{groups_delete()}}{ +groups_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$groups_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Group in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-groups_contents}{}}} +\subsection{Method \code{groups_contents()}}{ +groups_contents is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$groups_contents( + filters = NULL, + where = NULL, + order = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL, + includeTrash = NULL, + uuid = NULL, + recursive = NULL, + include = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} + +\item{\code{includeTrash}}{Include items whose is_trashed attribute is true.} + +\item{\code{recursive}}{Include contents from child groups recursively.} + +\item{\code{include}}{Include objects referred to by listed field in "included" (only ownerUUID).} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-groups_shared}{}}} +\subsection{Method \code{groups_shared()}}{ +groups_shared is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$groups_shared( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL, + includeTrash = NULL, + include = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} + +\item{\code{includeTrash}}{Include items whose is_trashed attribute is true.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-groups_trash}{}}} +\subsection{Method \code{groups_trash()}}{ +groups_trash is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$groups_trash(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Group in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-groups_untrash}{}}} +\subsection{Method \code{groups_untrash()}}{ +groups_untrash is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$groups_untrash(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Group in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-groups_list}{}}} +\subsection{Method \code{groups_list()}}{ +groups_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$groups_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL, + includeTrash = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} + +\item{\code{includeTrash}}{Include items whose is_trashed attribute is true.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-keep_services_get}{}}} +\subsection{Method \code{keep_services_get()}}{ +keep_services_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$keep_services_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the keepService in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-keep_services_create}{}}} +\subsection{Method \code{keep_services_create()}}{ +keep_services_create is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$keep_services_create( + keepService, + ensureUniqueName = "false", + clusterID = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{keepService}}{keepService object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-keep_services_update}{}}} +\subsection{Method \code{keep_services_update()}}{ +keep_services_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$keep_services_update(keepService, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{keepService}}{keepService object.} + +\item{\code{uuid}}{The UUID of the keepService in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-keep_services_delete}{}}} +\subsection{Method \code{keep_services_delete()}}{ +keep_services_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$keep_services_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the keepService in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-keep_services_accessible}{}}} +\subsection{Method \code{keep_services_accessible()}}{ +keep_services_accessible is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$keep_services_accessible()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-keep_services_list}{}}} +\subsection{Method \code{keep_services_list()}}{ +keep_services_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$keep_services_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_permission_give}{}}} +\subsection{Method \code{project_permission_give()}}{ +project_permission_give is a method defined in Arvados class that enables sharing files with another users. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_permission_give(type, uuid, user)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{type}}{Possible options are can_read or can_write or can_manage.} + +\item{\code{uuid}}{The UUID of a project or a file.} + +\item{\code{user}}{The UUID of the person that gets the permission.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arv$project_permission_give(type = "can_read", uuid = objectUUID, user = userUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_permission_refuse}{}}} +\subsection{Method \code{project_permission_refuse()}}{ +project_permission_refuse is a method defined in Arvados class that unables sharing files with another users. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_permission_refuse(type, uuid, user)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{type}}{Possible options are can_read or can_write or can_manage.} + +\item{\code{uuid}}{The UUID of a project or a file.} + +\item{\code{user}}{The UUID of a person that permissions are taken from.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arv$project_permission_refuse(type = "can_read", uuid = objectUUID, user = userUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_permission_update}{}}} +\subsection{Method \code{project_permission_update()}}{ +project_permission_update is a method defined in Arvados class that enables updating permissions. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_permission_update(typeOld, typeNew, uuid, user)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{typeOld}}{Old option.} + +\item{\code{typeNew}}{New option like can_read or can_write or can_manage.} + +\item{\code{uuid}}{The UUID of a project or a file.} + +\item{\code{user}}{The UUID of the person that the permission is being updated.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arv$project_permission_update(typeOld = "can_read", typeNew = "can_write", uuid = objectUUID, user = userUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-project_permission_check}{}}} +\subsection{Method \code{project_permission_check()}}{ +project_permission_check is a method defined in Arvados class that enables checking file permissions. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$project_permission_check(uuid, user, type = NULL)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of a project or a file.} + +\item{\code{user}}{The UUID of the person that the permission is being updated.} + +\item{\code{type}}{Possible options are can_read or can_write or can_manage.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arv$project_permission_check(type = "can_read", uuid = objectUUID, user = userUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-links_get}{}}} +\subsection{Method \code{links_get()}}{ +links_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$links_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Link in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-links_create}{}}} +\subsection{Method \code{links_create()}}{ +links_create is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$links_create(link, ensureUniqueName = "false", clusterID = NULL)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{link}}{Link object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-links_update}{}}} +\subsection{Method \code{links_update()}}{ +links_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$links_update(link, uuid, async = "false")}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{link}}{Link object.} + +\item{\code{uuid}}{The UUID of the Link in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-links_delete}{}}} +\subsection{Method \code{links_delete()}}{ +links_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$links_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Link in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-links_list}{}}} +\subsection{Method \code{links_list()}}{ +links_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$links_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-links_get_permissions}{}}} +\subsection{Method \code{links_get_permissions()}}{ +links_get_permissions is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$links_get_permissions(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Log in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-logs_get}{}}} +\subsection{Method \code{logs_get()}}{ +logs_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$logs_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Log in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-logs_create}{}}} +\subsection{Method \code{logs_create()}}{ +logs_create is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$logs_create(log, ensureUniqueName = "false", clusterID = NULL)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{log}}{Log object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-logs_update}{}}} +\subsection{Method \code{logs_update()}}{ +logs_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$logs_update(log, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{log}}{Log object.} + +\item{\code{uuid}}{The UUID of the Log in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-logs_delete}{}}} +\subsection{Method \code{logs_delete()}}{ +logs_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$logs_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Log in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-logs_list}{}}} +\subsection{Method \code{logs_list()}}{ +logs_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$logs_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-users_get}{}}} +\subsection{Method \code{users_get()}}{ +users_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$users_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the User in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-users_create}{}}} +\subsection{Method \code{users_create()}}{ +users_create is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$users_create(user, ensureUniqueName = "false", clusterID = NULL)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{user}}{User object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-users_update}{}}} +\subsection{Method \code{users_update()}}{ +users_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$users_update(user, uuid, bypassFederation = NULL)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{user}}{User object.} + +\item{\code{uuid}}{The UUID of the User in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-users_delete}{}}} +\subsection{Method \code{users_delete()}}{ +users_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$users_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the User in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-users_current}{}}} +\subsection{Method \code{users_current()}}{ +users_current is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$users_current()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-users_system}{}}} +\subsection{Method \code{users_system()}}{ +users_system is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$users_system()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-users_activate}{}}} +\subsection{Method \code{users_activate()}}{ +users_activate is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$users_activate(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the User in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-users_setup}{}}} +\subsection{Method \code{users_setup()}}{ +users_setup is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$users_setup( + uuid = NULL, + user = NULL, + repo_name = NULL, + vm_uuid = NULL, + send_notification_email = "false" +)}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-users_unsetup}{}}} +\subsection{Method \code{users_unsetup()}}{ +users_unsetup is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$users_unsetup(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the User in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-users_merge}{}}} +\subsection{Method \code{users_merge()}}{ +users_merge is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$users_merge( + newOwnerUUID, + newUserToken = NULL, + redirectToNewUser = NULL, + oldUserUUID = NULL, + newUserUUID = NULL +)}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-users_list}{}}} +\subsection{Method \code{users_list()}}{ +users_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$users_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-repositories_get}{}}} +\subsection{Method \code{repositories_get()}}{ +repositories_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$repositories_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Repository in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-repositories_create}{}}} +\subsection{Method \code{repositories_create()}}{ +repositories_create is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$repositories_create( + repository, + ensureUniqueName = "false", + clusterID = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{repository}}{Repository object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-repositories_update}{}}} +\subsection{Method \code{repositories_update()}}{ +repositories_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$repositories_update(repository, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{repository}}{Repository object.} + +\item{\code{uuid}}{The UUID of the Repository in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-repositories_delete}{}}} +\subsection{Method \code{repositories_delete()}}{ +repositories_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$repositories_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Repository in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-repositories_get_all_permissions}{}}} +\subsection{Method \code{repositories_get_all_permissions()}}{ +repositories_get_all_permissions is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$repositories_get_all_permissions()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-repositories_list}{}}} +\subsection{Method \code{repositories_list()}}{ +repositories_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$repositories_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-virtual_machines_get}{}}} +\subsection{Method \code{virtual_machines_get()}}{ +virtual_machines_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$virtual_machines_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the virtualMachine in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-virtual_machines_create}{}}} +\subsection{Method \code{virtual_machines_create()}}{ +virtual_machines_create is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$virtual_machines_create( + virtualMachine, + ensureUniqueName = "false", + clusterID = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{virtualMachine}}{virtualMachine object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-virtual_machines_update}{}}} +\subsection{Method \code{virtual_machines_update()}}{ +virtual_machines_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$virtual_machines_update(virtualMachine, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{virtualMachine}}{virtualMachine object.} + +\item{\code{uuid}}{The UUID of the virtualMachine in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-virtual_machines_delete}{}}} +\subsection{Method \code{virtual_machines_delete()}}{ +virtual_machines_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$virtual_machines_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the virtualMachine in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-virtual_machines_logins}{}}} +\subsection{Method \code{virtual_machines_logins()}}{ +virtual_machines_logins is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$virtual_machines_logins(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the virtualMachine in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-virtual_machines_get_all_logins}{}}} +\subsection{Method \code{virtual_machines_get_all_logins()}}{ +virtual_machines_get_all_logins is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$virtual_machines_get_all_logins()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-virtual_machines_list}{}}} +\subsection{Method \code{virtual_machines_list()}}{ +virtual_machines_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$virtual_machines_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{bypass federation behavior, list items from local instance database only} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-workflows_get}{}}} +\subsection{Method \code{workflows_get()}}{ +workflows_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$workflows_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Workflow in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-workflows_create}{}}} +\subsection{Method \code{workflows_create()}}{ +workflows_create is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$workflows_create( + workflow, + ensureUniqueName = "false", + clusterID = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{workflow}}{Workflow object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-workflows_update}{}}} +\subsection{Method \code{workflows_update()}}{ +workflows_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$workflows_update(workflow, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{workflow}}{Workflow object.} + +\item{\code{uuid}}{The UUID of the Workflow in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-workflows_delete}{}}} +\subsection{Method \code{workflows_delete()}}{ +workflows_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$workflows_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the Workflow in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-workflows_list}{}}} +\subsection{Method \code{workflows_list()}}{ +workflows_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$workflows_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-user_agreements_get}{}}} +\subsection{Method \code{user_agreements_get()}}{ +user_agreements_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$user_agreements_get(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the userAgreement in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-user_agreements_create}{}}} +\subsection{Method \code{user_agreements_create()}}{ +user_agreements_create is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$user_agreements_create( + userAgreement, + ensureUniqueName = "false", + clusterID = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{userAgreement}}{userAgreement object.} + +\item{\code{ensureUniqueName}}{Adjust name to ensure uniqueness instead of returning an error.} + +\item{\code{clusterID}}{Create object on a remote federated cluster instead of the current one.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-user_agreements_update}{}}} +\subsection{Method \code{user_agreements_update()}}{ +user_agreements_update is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$user_agreements_update(userAgreement, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{userAgreement}}{userAgreement object.} + +\item{\code{uuid}}{The UUID of the userAgreement in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-user_agreements_delete}{}}} +\subsection{Method \code{user_agreements_delete()}}{ +user_agreements_delete is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$user_agreements_delete(uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{The UUID of the userAgreement in question.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-user_agreements_signatures}{}}} +\subsection{Method \code{user_agreements_signatures()}}{ +user_agreements_signatures is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$user_agreements_signatures()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-user_agreements_sign}{}}} +\subsection{Method \code{user_agreements_sign()}}{ +user_agreements_sign is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$user_agreements_sign()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-user_agreements_list}{}}} +\subsection{Method \code{user_agreements_list()}}{ +user_agreements_list is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$user_agreements_list( + filters = NULL, + where = NULL, + order = NULL, + select = NULL, + distinct = NULL, + limit = "100", + offset = "0", + count = "exact", + clusterID = NULL, + bypassFederation = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{clusterID}}{List objects on a remote federated cluster instead of the current one.} + +\item{\code{bypassFederation}}{Bypass federation behavior, list items from local instance database only.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-user_agreements_new}{}}} +\subsection{Method \code{user_agreements_new()}}{ +user_agreements_new is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$user_agreements_new()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-configs_get}{}}} +\subsection{Method \code{configs_get()}}{ +configs_get is a method defined in Arvados class. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$configs_get()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getHostName}{}}} +\subsection{Method \code{getHostName()}}{ +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$getHostName()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getToken}{}}} +\subsection{Method \code{getToken()}}{ +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$getToken()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-setRESTService}{}}} +\subsection{Method \code{setRESTService()}}{ +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$setRESTService(newREST)}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getRESTService}{}}} +\subsection{Method \code{getRESTService()}}{ +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Arvados$getRESTService()}\if{html}{\out{
}} +} + +} +} diff --git a/sdk/R/man/ArvadosFile.Rd b/sdk/R/man/ArvadosFile.Rd index 514e9e846d..8275b7b600 100644 --- a/sdk/R/man/ArvadosFile.Rd +++ b/sdk/R/man/ArvadosFile.Rd @@ -1,58 +1,435 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/ArvadosFile.R -\name{ArvadosFile} -\alias{ArvadosFile} -\title{ArvadosFile} -\description{ -ArvadosFile class represents a file inside Arvados collection. -} -\section{Usage}{ - -\preformatted{file = ArvadosFile$new(name)} -} - -\section{Arguments}{ - -\describe{ - \item{name}{Name of the file.} -} -} - -\section{Methods}{ - -\describe{ - \item{getName()}{Returns name of the file.} - \item{getRelativePath()}{Returns file path relative to the root.} - \item{read(contentType = "raw", offset = 0, length = 0)}{Read file content.} - \item{write(content, contentType = "text/html")}{Write to file (override current content of the file).} - \item{connection(rw)}{Get connection opened in "read" or "write" mode.} - \item{flush()}{Write connections content to a file (override current content of the file).} - \item{remove(name)}{Removes ArvadosFile or Subcollection specified by name from the subcollection.} - \item{getSizeInBytes()}{Returns file size in bytes.} - \item{move(destination)}{Moves file to a new location inside collection.} - \item{copy(destination)}{Copies file to a new location inside collection.} -} -} - -\examples{ -\dontrun{ -myFile <- ArvadosFile$new("myFile") - -myFile$write("This is new file content") -fileContent <- myFile$read() -fileContent <- myFile$read("text") -fileContent <- myFile$read("raw", offset = 8, length = 4) - -#Write a table: -arvConnection <- myFile$connection("w") -write.table(mytable, arvConnection) -arvadosFile$flush() - -#Read a table: -arvConnection <- myFile$connection("r") -mytable <- read.table(arvConnection) - -myFile$move("newFolder/myFile") -myFile$copy("newFolder/myFile") -} -} +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ArvadosFile.R +\name{ArvadosFile} +\alias{ArvadosFile} +\title{R6 Class Representing a ArvadosFile} +\description{ +ArvadosFile class represents a file inside Arvados collection. +} +\examples{ + +## ------------------------------------------------ +## Method `ArvadosFile$new` +## ------------------------------------------------ + +myFile <- ArvadosFile$new("myFile") + +## ------------------------------------------------ +## Method `ArvadosFile$getName` +## ------------------------------------------------ + +arvadosFile$getName() + +## ------------------------------------------------ +## Method `ArvadosFile$getFileListing` +## ------------------------------------------------ + +arvadosFile$getFileListing() + +## ------------------------------------------------ +## Method `ArvadosFile$getSizeInBytes` +## ------------------------------------------------ + +arvadosFile$getSizeInBytes() + +## ------------------------------------------------ +## Method `ArvadosFile$read` +## ------------------------------------------------ + +collection <- Collection$new(arv, collectionUUID) +arvadosFile <- collection$get(fileName) +fileContent <- arvadosFile$read("text") + +## ------------------------------------------------ +## Method `ArvadosFile$connection` +## ------------------------------------------------ + +collection <- Collection$new(arv, collectionUUID) +arvadosFile <- collection$get(fileName) +arvConnection <- arvadosFile$connection("w") + +## ------------------------------------------------ +## Method `ArvadosFile$flush` +## ------------------------------------------------ + +collection <- Collection$new(arv, collectionUUID) +arvadosFile <- collection$get(fileName) +myFile$write("This is new file content") +arvadosFile$flush() + +## ------------------------------------------------ +## Method `ArvadosFile$write` +## ------------------------------------------------ + +collection <- Collection$new(arv, collectionUUID) +arvadosFile <- collection$get(fileName) +myFile$write("This is new file content") + +## ------------------------------------------------ +## Method `ArvadosFile$move` +## ------------------------------------------------ + +arvadosFile$move(newPath) + +## ------------------------------------------------ +## Method `ArvadosFile$copy` +## ------------------------------------------------ + +arvadosFile$copy("NewName.format") +} +\section{Methods}{ +\subsection{Public methods}{ +\itemize{ +\item \href{#method-new}{\code{ArvadosFile$new()}} +\item \href{#method-getName}{\code{ArvadosFile$getName()}} +\item \href{#method-getFileListing}{\code{ArvadosFile$getFileListing()}} +\item \href{#method-getSizeInBytes}{\code{ArvadosFile$getSizeInBytes()}} +\item \href{#method-get}{\code{ArvadosFile$get()}} +\item \href{#method-getFirst}{\code{ArvadosFile$getFirst()}} +\item \href{#method-getCollection}{\code{ArvadosFile$getCollection()}} +\item \href{#method-setCollection}{\code{ArvadosFile$setCollection()}} +\item \href{#method-getRelativePath}{\code{ArvadosFile$getRelativePath()}} +\item \href{#method-getParent}{\code{ArvadosFile$getParent()}} +\item \href{#method-setParent}{\code{ArvadosFile$setParent()}} +\item \href{#method-read}{\code{ArvadosFile$read()}} +\item \href{#method-connection}{\code{ArvadosFile$connection()}} +\item \href{#method-flush}{\code{ArvadosFile$flush()}} +\item \href{#method-write}{\code{ArvadosFile$write()}} +\item \href{#method-move}{\code{ArvadosFile$move()}} +\item \href{#method-copy}{\code{ArvadosFile$copy()}} +\item \href{#method-duplicate}{\code{ArvadosFile$duplicate()}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-new}{}}} +\subsection{Method \code{new()}}{ +Initialize new enviroment. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$new(name)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{name}}{Name of the new enviroment.} +} +\if{html}{\out{
}} +} +\subsection{Returns}{ +A new `ArvadosFile` object. +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{myFile <- ArvadosFile$new("myFile") +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getName}{}}} +\subsection{Method \code{getName()}}{ +Returns name of the file. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$getName()}\if{html}{\out{
}} +} + +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arvadosFile$getName() +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getFileListing}{}}} +\subsection{Method \code{getFileListing()}}{ +Returns collections file content as character vector. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$getFileListing(fullpath = TRUE)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{fullPath}}{Checking if TRUE.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arvadosFile$getFileListing() +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getSizeInBytes}{}}} +\subsection{Method \code{getSizeInBytes()}}{ +Returns collections content size in bytes. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$getSizeInBytes()}\if{html}{\out{
}} +} + +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arvadosFile$getSizeInBytes() +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-get}{}}} +\subsection{Method \code{get()}}{ +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$get(fileLikeObjectName)}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getFirst}{}}} +\subsection{Method \code{getFirst()}}{ +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$getFirst()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getCollection}{}}} +\subsection{Method \code{getCollection()}}{ +Returns collection UUID. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$getCollection()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-setCollection}{}}} +\subsection{Method \code{setCollection()}}{ +Sets new collection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$setCollection(collection, setRecursively = TRUE)}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getRelativePath}{}}} +\subsection{Method \code{getRelativePath()}}{ +Returns file path relative to the root. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$getRelativePath()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getParent}{}}} +\subsection{Method \code{getParent()}}{ +Returns project UUID. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$getParent()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-setParent}{}}} +\subsection{Method \code{setParent()}}{ +Sets project collection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$setParent(newParent)}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-read}{}}} +\subsection{Method \code{read()}}{ +Read file content. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$read(contentType = "raw", offset = 0, length = 0)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{contentType}}{Type of content. Possible is "text", "raw".} + +\item{\code{offset}}{Describes the location of a piece of data compared to another location} + +\item{\code{length}}{Length of content} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collection <- Collection$new(arv, collectionUUID) +arvadosFile <- collection$get(fileName) +fileContent <- arvadosFile$read("text") +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-connection}{}}} +\subsection{Method \code{connection()}}{ +Get connection opened in "read" or "write" mode. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$connection(rw)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{rw}}{Type of connection.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collection <- Collection$new(arv, collectionUUID) +arvadosFile <- collection$get(fileName) +arvConnection <- arvadosFile$connection("w") +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-flush}{}}} +\subsection{Method \code{flush()}}{ +Write connections content to a file or override current content of the file. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$flush()}\if{html}{\out{
}} +} + +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collection <- Collection$new(arv, collectionUUID) +arvadosFile <- collection$get(fileName) +myFile$write("This is new file content") +arvadosFile$flush() +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-write}{}}} +\subsection{Method \code{write()}}{ +Write to file or override current content of the file. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$write(content, contentType = "text/html")}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{content}}{File to write.} + +\item{\code{contentType}}{Type of content. Possible is "text", "raw".} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collection <- Collection$new(arv, collectionUUID) +arvadosFile <- collection$get(fileName) +myFile$write("This is new file content") +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-move}{}}} +\subsection{Method \code{move()}}{ +Moves file to a new location inside collection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$move(destination)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{destination}}{Path to new folder.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arvadosFile$move(newPath) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-copy}{}}} +\subsection{Method \code{copy()}}{ +Copies file to a new location inside collection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$copy(destination)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{destination}}{Path to new folder.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arvadosFile$copy("NewName.format") +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-duplicate}{}}} +\subsection{Method \code{duplicate()}}{ +Duplicate file and gives it a new name. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{ArvadosFile$duplicate(newName = NULL)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{newName}}{New name for duplicated file.} +} +\if{html}{\out{
}} +} +} +} diff --git a/sdk/R/man/ArvadosR.Rd b/sdk/R/man/ArvadosR.Rd new file mode 100644 index 0000000000..def3927b07 --- /dev/null +++ b/sdk/R/man/ArvadosR.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/ArvadosR.R +\name{ArvadosR} +\alias{ArvadosR} +\title{ArvadosR} +\description{ +\if{html}{\figure{dax.png}{options: style='float: right' alt='logo' width='120'}} + +Arvados 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. +} +\seealso{ +\itemize{ +\item \code{\link{https://github.com/arvados/arvados/blob/main/README.md}} +\item \code{\link{https://github.com/arvados/arvados/tree/main/sdk/R}}} +} +\author{ +\itemize{ +\item Lucas Di Pentima +\item Ward Vandewege +\item Peter Amstutz +\item Fuad Muhic} +} diff --git a/sdk/R/man/Collection.Rd b/sdk/R/man/Collection.Rd index fbe6038664..5fbf1c1a11 100644 --- a/sdk/R/man/Collection.Rd +++ b/sdk/R/man/Collection.Rd @@ -1,49 +1,431 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Collection.R -\name{Collection} -\alias{Collection} -\title{Collection} -\description{ -Collection class provides interface for working with Arvados collections. -} -\section{Usage}{ - -\preformatted{collection = Collection$new(arv, uuid)} -} - -\section{Arguments}{ - -\describe{ - \item{arv}{Arvados object.} - \item{uuid}{UUID of a collection.} -} -} - -\section{Methods}{ - -\describe{ - \item{add(content)}{Adds ArvadosFile or Subcollection specified by content to the collection.} - \item{create(files)}{Creates one or more ArvadosFiles and adds them to the collection at specified path.} - \item{remove(fileNames)}{Remove one or more files from the collection.} - \item{move(content, destination)}{Moves ArvadosFile or Subcollection to another location in the collection.} - \item{copy(content, destination)}{Copies ArvadosFile or Subcollection to another location in the collection.} - \item{getFileListing()}{Returns collections file content as character vector.} - \item{get(relativePath)}{If relativePath is valid, returns ArvadosFile or Subcollection specified by relativePath, else returns NULL.} -} -} - -\examples{ -\dontrun{ -arv <- Arvados$new("your Arvados token", "example.arvadosapi.com") -collection <- Collection$new(arv, "uuid") - -createdFiles <- collection$create(c("main.cpp", lib.dll), "cpp/src/") - -collection$remove("location/to/my/file.cpp") - -collection$move("folder/file.cpp", "file.cpp") - -arvadosFile <- collection$get("location/to/my/file.cpp") -arvadosSubcollection <- collection$get("location/to/my/directory/") -} -} +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/Collection.R +\name{Collection} +\alias{Collection} +\title{R6 Class Representing Arvados Collection} +\description{ +Collection class provides interface for working with Arvados collections, +for exaplme actions like creating, updating, moving or removing are possible. +} +\examples{ + +## ------------------------------------------------ +## Method `Collection$new` +## ------------------------------------------------ + +collection <- Collection$new(arv, CollectionUUID) + +## ------------------------------------------------ +## Method `Collection$readArvFile` +## ------------------------------------------------ + +collection <- Collection$new(arv, collectionUUID) +readFile <- collection$readArvFile(arvadosFile, istable = 'yes') # table +readFile <- collection$readArvFile(arvadosFile, istable = 'no') # text +readFile <- collection$readArvFile(arvadosFile) # xlsx, csv, tsv, rds, rdata +readFile <- collection$readArvFile(arvadosFile, fileclass = 'lala') # fasta +readFile <- collection$readArvFile(arvadosFile, Ncol= 4, Nrow = 32) # binary, only numbers +readFile <- collection$readArvFile(arvadosFile, Ncol = 5, Nrow = 150, istable = "factor") # binary with factor or text + +## ------------------------------------------------ +## Method `Collection$writeFile` +## ------------------------------------------------ + +collection <- Collection$new(arv, collectionUUID) +writeFile <- collection$writeFile("myoutput.csv", file, istable = NULL) # csv +writeFile <- collection$writeFile("myoutput.fasta", file, istable = NULL) # fasta +writeFile <- collection$writeFile("myoutputtable.txt", file, istable = "yes") # txt table +writeFile <- collection$writeFile("myoutputtext.txt", file, istable = "no") # txt text +writeFile <- collection$writeFile("myoutputbinary.dat", file) # binary +writeFile <- collection$writeFile("myoutputxlsx.xlsx", file) # xlsx + +## ------------------------------------------------ +## Method `Collection$create` +## ------------------------------------------------ + +collection <- arv$collections_create(name = collectionTitle, description = collectionDescription, owner_uuid = collectionOwner, properties = list("ROX37196928443768648" = "ROX37742976443830153")) + +## ------------------------------------------------ +## Method `Collection$remove` +## ------------------------------------------------ + +collection$remove(fileName.format) + +## ------------------------------------------------ +## Method `Collection$move` +## ------------------------------------------------ + +collection$move("fileName.format", path) + +## ------------------------------------------------ +## Method `Collection$copy` +## ------------------------------------------------ + +copied <- collection$copy("oldName.format", "newName.format") + +## ------------------------------------------------ +## Method `Collection$refresh` +## ------------------------------------------------ + +collection$refresh() + +## ------------------------------------------------ +## Method `Collection$getFileListing` +## ------------------------------------------------ + +list <- collection$getFileListing() + +## ------------------------------------------------ +## Method `Collection$get` +## ------------------------------------------------ + +arvadosFile <- collection$get(fileName) +} +\seealso{ +\code{\link{https://github.com/arvados/arvados/tree/main/sdk/R}} +} +\section{Public fields}{ +\if{html}{\out{
}} +\describe{ +\item{\code{uuid}}{Autentic for Collection UUID.} +} +\if{html}{\out{
}} +} +\section{Methods}{ +\subsection{Public methods}{ +\itemize{ +\item \href{#method-new}{\code{Collection$new()}} +\item \href{#method-add}{\code{Collection$add()}} +\item \href{#method-readArvFile}{\code{Collection$readArvFile()}} +\item \href{#method-writeFile}{\code{Collection$writeFile()}} +\item \href{#method-create}{\code{Collection$create()}} +\item \href{#method-remove}{\code{Collection$remove()}} +\item \href{#method-move}{\code{Collection$move()}} +\item \href{#method-copy}{\code{Collection$copy()}} +\item \href{#method-refresh}{\code{Collection$refresh()}} +\item \href{#method-getFileListing}{\code{Collection$getFileListing()}} +\item \href{#method-get}{\code{Collection$get()}} +\item \href{#method-getRESTService}{\code{Collection$getRESTService()}} +\item \href{#method-setRESTService}{\code{Collection$setRESTService()}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-new}{}}} +\subsection{Method \code{new()}}{ +Initialize new enviroment. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Collection$new(api, uuid)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{api}}{Arvados enviroment.} + +\item{\code{uuid}}{The UUID Autentic for Collection UUID.} +} +\if{html}{\out{
}} +} +\subsection{Returns}{ +A new `Collection` object. +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collection <- Collection$new(arv, CollectionUUID) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-add}{}}} +\subsection{Method \code{add()}}{ +Adds ArvadosFile or Subcollection specified by content to the collection. Used only with ArvadosFile or Subcollection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Collection$add(content, relativePath = "")}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{content}}{Content to be added.} + +\item{\code{relativePath}}{Path to add content.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-readArvFile}{}}} +\subsection{Method \code{readArvFile()}}{ +Read file content. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Collection$readArvFile( + file, + con, + sep = ",", + istable = NULL, + fileclass = "SeqFastadna", + Ncol = NULL, + Nrow = NULL, + wantedFunction = NULL +)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{file}}{Name of the file.} + +\item{\code{sep}}{Separator used in reading tsv, csv file format.} + +\item{\code{istable}}{Used in reading txt file to check if the file is table or not.} + +\item{\code{fileclass}}{Used in reading fasta file to set file class.} + +\item{\code{Ncol}}{Used in reading binary file to set numbers of columns in data.frame.} + +\item{\code{Nrow}}{Used in reading binary file to set numbers of rows in data.frame size.} + +\item{\code{col}}{Collection from which the file is read.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collection <- Collection$new(arv, collectionUUID) +readFile <- collection$readArvFile(arvadosFile, istable = 'yes') # table +readFile <- collection$readArvFile(arvadosFile, istable = 'no') # text +readFile <- collection$readArvFile(arvadosFile) # xlsx, csv, tsv, rds, rdata +readFile <- collection$readArvFile(arvadosFile, fileclass = 'lala') # fasta +readFile <- collection$readArvFile(arvadosFile, Ncol= 4, Nrow = 32) # binary, only numbers +readFile <- collection$readArvFile(arvadosFile, Ncol = 5, Nrow = 150, istable = "factor") # binary with factor or text +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-writeFile}{}}} +\subsection{Method \code{writeFile()}}{ +Write file content +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Collection$writeFile(name, file, istable = NULL, seqName = NULL)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{name}}{Name of the file.} + +\item{\code{file}}{File to be saved.} + +\item{\code{istable}}{Used in writing txt file to check if the file is table or not.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collection <- Collection$new(arv, collectionUUID) +writeFile <- collection$writeFile("myoutput.csv", file, istable = NULL) # csv +writeFile <- collection$writeFile("myoutput.fasta", file, istable = NULL) # fasta +writeFile <- collection$writeFile("myoutputtable.txt", file, istable = "yes") # txt table +writeFile <- collection$writeFile("myoutputtext.txt", file, istable = "no") # txt text +writeFile <- collection$writeFile("myoutputbinary.dat", file) # binary +writeFile <- collection$writeFile("myoutputxlsx.xlsx", file) # xlsx +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-create}{}}} +\subsection{Method \code{create()}}{ +Creates one or more ArvadosFiles and adds them to the collection at specified path. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Collection$create(files)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{files}}{Content to be created.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collection <- arv$collections_create(name = collectionTitle, description = collectionDescription, owner_uuid = collectionOwner, properties = list("ROX37196928443768648" = "ROX37742976443830153")) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-remove}{}}} +\subsection{Method \code{remove()}}{ +Remove one or more files from the collection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Collection$remove(paths)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{paths}}{Content to be removed.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collection$remove(fileName.format) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-move}{}}} +\subsection{Method \code{move()}}{ +Moves ArvadosFile or Subcollection to another location in the collection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Collection$move(content, destination)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{content}}{Content to be moved.} + +\item{\code{destination}}{Path to move content.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collection$move("fileName.format", path) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-copy}{}}} +\subsection{Method \code{copy()}}{ +Copies ArvadosFile or Subcollection to another location in the collection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Collection$copy(content, destination)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{content}}{Content to be moved.} + +\item{\code{destination}}{Path to move content.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{copied <- collection$copy("oldName.format", "newName.format") +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-refresh}{}}} +\subsection{Method \code{refresh()}}{ +Refreshes the environment. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Collection$refresh()}\if{html}{\out{
}} +} + +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{collection$refresh() +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getFileListing}{}}} +\subsection{Method \code{getFileListing()}}{ +Returns collections file content as character vector. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Collection$getFileListing()}\if{html}{\out{
}} +} + +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{list <- collection$getFileListing() +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-get}{}}} +\subsection{Method \code{get()}}{ +If relativePath is valid, returns ArvadosFile or Subcollection specified by relativePath, else returns NULL. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Collection$get(relativePath)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{relativePath}}{Path from content is taken.} +} +\if{html}{\out{
}} +} +\subsection{Examples}{ +\if{html}{\out{
}} +\preformatted{arvadosFile <- collection$get(fileName) +} +\if{html}{\out{
}} + +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getRESTService}{}}} +\subsection{Method \code{getRESTService()}}{ +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Collection$getRESTService()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-setRESTService}{}}} +\subsection{Method \code{setRESTService()}}{ +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Collection$setRESTService(newRESTService)}\if{html}{\out{
}} +} + +} +} diff --git a/sdk/R/man/Subcollection.Rd b/sdk/R/man/Subcollection.Rd index 0b27a8bc43..1c9ec96e11 100644 --- a/sdk/R/man/Subcollection.Rd +++ b/sdk/R/man/Subcollection.Rd @@ -1,49 +1,250 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Subcollection.R -\name{Subcollection} -\alias{Subcollection} -\title{Subcollection} -\description{ -Subcollection class represents a folder inside Arvados collection. -It is essentially a composite of arvadosFiles and other subcollections. -} -\section{Usage}{ - -\preformatted{subcollection = Subcollection$new(name)} -} - -\section{Arguments}{ - -\describe{ - \item{name}{Name of the subcollection.} -} -} - -\section{Methods}{ - -\describe{ - \item{getName()}{Returns name of the subcollection.} - \item{getRelativePath()}{Returns subcollection path relative to the root.} - \item{add(content)}{Adds ArvadosFile or Subcollection specified by content to the subcollection.} - \item{remove(name)}{Removes ArvadosFile or Subcollection specified by name from the subcollection.} - \item{get(relativePath)}{If relativePath is valid, returns ArvadosFile or Subcollection specified by relativePath, else returns NULL.} - \item{getFileListing()}{Returns subcollections file content as character vector.} - \item{getSizeInBytes()}{Returns subcollections content size in bytes.} - \item{move(destination)}{Moves subcollection to a new location inside collection.} - \item{copy(destination)}{Copies subcollection to a new location inside collection.} -} -} - -\examples{ -\dontrun{ -myFolder <- Subcollection$new("myFolder") -myFile <- ArvadosFile$new("myFile") - -myFolder$add(myFile) -myFolder$get("myFile") -myFolder$remove("myFile") - -myFolder$move("newLocation/myFolder") -myFolder$copy("newLocation/myFolder") -} -} +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/Subcollection.R +\name{Subcollection} +\alias{Subcollection} +\title{R6 Class Representing a Subcollection} +\description{ +Subcollection class represents a folder inside Arvados collection. +It is essentially a composite of arvadosFiles and other subcollections. +} +\section{Methods}{ +\subsection{Public methods}{ +\itemize{ +\item \href{#method-new}{\code{Subcollection$new()}} +\item \href{#method-getName}{\code{Subcollection$getName()}} +\item \href{#method-getRelativePath}{\code{Subcollection$getRelativePath()}} +\item \href{#method-add}{\code{Subcollection$add()}} +\item \href{#method-remove}{\code{Subcollection$remove()}} +\item \href{#method-getFileListing}{\code{Subcollection$getFileListing()}} +\item \href{#method-getSizeInBytes}{\code{Subcollection$getSizeInBytes()}} +\item \href{#method-move}{\code{Subcollection$move()}} +\item \href{#method-copy}{\code{Subcollection$copy()}} +\item \href{#method-duplicate}{\code{Subcollection$duplicate()}} +\item \href{#method-get}{\code{Subcollection$get()}} +\item \href{#method-getFirst}{\code{Subcollection$getFirst()}} +\item \href{#method-setCollection}{\code{Subcollection$setCollection()}} +\item \href{#method-getCollection}{\code{Subcollection$getCollection()}} +\item \href{#method-getParent}{\code{Subcollection$getParent()}} +\item \href{#method-setParent}{\code{Subcollection$setParent()}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-new}{}}} +\subsection{Method \code{new()}}{ +Initialize new enviroment. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$new(name)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{name}}{Name of the new enviroment.} +} +\if{html}{\out{
}} +} +\subsection{Returns}{ +A new `Subcollection` object. +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getName}{}}} +\subsection{Method \code{getName()}}{ +Returns name of the file. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$getName()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getRelativePath}{}}} +\subsection{Method \code{getRelativePath()}}{ +Returns Subcollection's path relative to the root. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$getRelativePath()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-add}{}}} +\subsection{Method \code{add()}}{ +Adds ArvadosFile or Subcollection specified by content to the Subcollection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$add(content)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{content}}{Content to be added.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-remove}{}}} +\subsection{Method \code{remove()}}{ +Removes ArvadosFile or Subcollection specified by name from the Subcollection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$remove(name)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{name}}{Name of the file to be removed.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getFileListing}{}}} +\subsection{Method \code{getFileListing()}}{ +Returns Subcollections file content as character vector. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$getFileListing(fullPath = TRUE)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{fullPath}}{Checking if the path to file exists.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getSizeInBytes}{}}} +\subsection{Method \code{getSizeInBytes()}}{ +Returns subcollections content size in bytes. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$getSizeInBytes()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-move}{}}} +\subsection{Method \code{move()}}{ +Moves Subcollection to a new location inside collection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$move(destination)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{destination}}{Path to move the file.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-copy}{}}} +\subsection{Method \code{copy()}}{ +Copies Subcollection to a new location inside collection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$copy(destination)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{destination}}{Path to copy the file.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-duplicate}{}}} +\subsection{Method \code{duplicate()}}{ +Duplicate Subcollection and gives it a new name. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$duplicate(newName = NULL)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{newName}}{New name for duplicated file.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-get}{}}} +\subsection{Method \code{get()}}{ +If name is valid, returns ArvadosFile or Subcollection specified by relativePath, else returns NULL. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$get(name)}\if{html}{\out{
}} +} + +\subsection{Arguments}{ +\if{html}{\out{
}} +\describe{ +\item{\code{name}}{Name of the file.} +} +\if{html}{\out{
}} +} +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getFirst}{}}} +\subsection{Method \code{getFirst()}}{ +Returns files in Subcollection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$getFirst()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-setCollection}{}}} +\subsection{Method \code{setCollection()}}{ +Sets Collection by its UUID. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$setCollection(collection, setRecursively = TRUE)}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getCollection}{}}} +\subsection{Method \code{getCollection()}}{ +Returns Collection of Subcollection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$getCollection()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-getParent}{}}} +\subsection{Method \code{getParent()}}{ +Returns Collection UUID. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$getParent()}\if{html}{\out{
}} +} + +} +\if{html}{\out{
}} +\if{html}{\out{}} +\if{latex}{\out{\hypertarget{method-setParent}{}}} +\subsection{Method \code{setParent()}}{ +Sets new Collection. +\subsection{Usage}{ +\if{html}{\out{
}}\preformatted{Subcollection$setParent(newParent)}\if{html}{\out{
}} +} + +} +} diff --git a/sdk/R/man/api_client_authorizations.create.Rd b/sdk/R/man/api_client_authorizations.create.Rd deleted file mode 100644 index e322419469..0000000000 --- a/sdk/R/man/api_client_authorizations.create.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{api_client_authorizations.create} -\alias{api_client_authorizations.create} -\title{api_client_authorizations.create} -\usage{ -arv$api_client_authorizations.create(apiclientauthorization, - ensure_unique_name = "false") -} -\arguments{ -\item{apiClientAuthorization}{ApiClientAuthorization object.} - -\item{ensure_unique_name}{Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision.} -} -\value{ -ApiClientAuthorization object. -} -\description{ -api_client_authorizations.create is a method defined in Arvados class. -} diff --git a/sdk/R/man/api_client_authorizations.create_system_auth.Rd b/sdk/R/man/api_client_authorizations.create_system_auth.Rd deleted file mode 100644 index 3eb172aabf..0000000000 --- a/sdk/R/man/api_client_authorizations.create_system_auth.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{api_client_authorizations.create_system_auth} -\alias{api_client_authorizations.create_system_auth} -\title{api_client_authorizations.create_system_auth} -\usage{ -arv$api_client_authorizations.create_system_auth(api_client_id = NULL, - scopes = NULL) -} -\arguments{ -\item{api_client_id}{} - -\item{scopes}{} -} -\value{ -ApiClientAuthorization object. -} -\description{ -api_client_authorizations.create_system_auth is a method defined in Arvados class. -} diff --git a/sdk/R/man/api_client_authorizations.current.Rd b/sdk/R/man/api_client_authorizations.current.Rd deleted file mode 100644 index c28623788b..0000000000 --- a/sdk/R/man/api_client_authorizations.current.Rd +++ /dev/null @@ -1,14 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{api_client_authorizations.current} -\alias{api_client_authorizations.current} -\title{api_client_authorizations.current} -\usage{ -arv$api_client_authorizations.current(NULL) -} -\value{ -ApiClientAuthorization object. -} -\description{ -api_client_authorizations.current is a method defined in Arvados class. -} diff --git a/sdk/R/man/api_client_authorizations.delete.Rd b/sdk/R/man/api_client_authorizations.delete.Rd deleted file mode 100644 index 054cc79662..0000000000 --- a/sdk/R/man/api_client_authorizations.delete.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{api_client_authorizations.delete} -\alias{api_client_authorizations.delete} -\title{api_client_authorizations.delete} -\usage{ -arv$api_client_authorizations.delete(uuid) -} -\arguments{ -\item{uuid}{The UUID of the ApiClientAuthorization in question.} -} -\value{ -ApiClientAuthorization object. -} -\description{ -api_client_authorizations.delete is a method defined in Arvados class. -} diff --git a/sdk/R/man/api_client_authorizations.get.Rd b/sdk/R/man/api_client_authorizations.get.Rd deleted file mode 100644 index 3f5b630a41..0000000000 --- a/sdk/R/man/api_client_authorizations.get.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{api_client_authorizations.get} -\alias{api_client_authorizations.get} -\title{api_client_authorizations.get} -\usage{ -arv$api_client_authorizations.get(uuid) -} -\arguments{ -\item{uuid}{The UUID of the ApiClientAuthorization in question.} -} -\value{ -ApiClientAuthorization object. -} -\description{ -api_client_authorizations.get is a method defined in Arvados class. -} diff --git a/sdk/R/man/api_client_authorizations.list.Rd b/sdk/R/man/api_client_authorizations.list.Rd deleted file mode 100644 index 7c8ae69cd5..0000000000 --- a/sdk/R/man/api_client_authorizations.list.Rd +++ /dev/null @@ -1,34 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{api_client_authorizations.list} -\alias{api_client_authorizations.list} -\title{api_client_authorizations.list} -\usage{ -arv$api_client_authorizations.list(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact") -} -\arguments{ -\item{filters}{} - -\item{where}{} - -\item{order}{} - -\item{select}{} - -\item{distinct}{} - -\item{limit}{} - -\item{offset}{} - -\item{count}{} -} -\value{ -ApiClientAuthorizationList object. -} -\description{ -api_client_authorizations.list is a method defined in Arvados class. -} diff --git a/sdk/R/man/api_client_authorizations.update.Rd b/sdk/R/man/api_client_authorizations.update.Rd deleted file mode 100644 index e6380ccddc..0000000000 --- a/sdk/R/man/api_client_authorizations.update.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{api_client_authorizations.update} -\alias{api_client_authorizations.update} -\title{api_client_authorizations.update} -\usage{ -arv$api_client_authorizations.update(apiclientauthorization, - uuid) -} -\arguments{ -\item{apiClientAuthorization}{ApiClientAuthorization object.} - -\item{uuid}{The UUID of the ApiClientAuthorization in question.} -} -\value{ -ApiClientAuthorization object. -} -\description{ -api_client_authorizations.update is a method defined in Arvados class. -} diff --git a/sdk/R/man/api_clients.create.Rd b/sdk/R/man/api_clients.create.Rd deleted file mode 100644 index 260116897a..0000000000 --- a/sdk/R/man/api_clients.create.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{api_clients.create} -\alias{api_clients.create} -\title{api_clients.create} -\usage{ -arv$api_clients.create(apiclient, - ensure_unique_name = "false") -} -\arguments{ -\item{apiClient}{ApiClient object.} - -\item{ensure_unique_name}{Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision.} -} -\value{ -ApiClient object. -} -\description{ -api_clients.create is a method defined in Arvados class. -} diff --git a/sdk/R/man/api_clients.delete.Rd b/sdk/R/man/api_clients.delete.Rd deleted file mode 100644 index 90eaa99115..0000000000 --- a/sdk/R/man/api_clients.delete.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{api_clients.delete} -\alias{api_clients.delete} -\title{api_clients.delete} -\usage{ -arv$api_clients.delete(uuid) -} -\arguments{ -\item{uuid}{The UUID of the ApiClient in question.} -} -\value{ -ApiClient object. -} -\description{ -api_clients.delete is a method defined in Arvados class. -} diff --git a/sdk/R/man/api_clients.get.Rd b/sdk/R/man/api_clients.get.Rd deleted file mode 100644 index 4a1b6c06b1..0000000000 --- a/sdk/R/man/api_clients.get.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{api_clients.get} -\alias{api_clients.get} -\title{api_clients.get} -\usage{ -arv$api_clients.get(uuid) -} -\arguments{ -\item{uuid}{The UUID of the ApiClient in question.} -} -\value{ -ApiClient object. -} -\description{ -api_clients.get is a method defined in Arvados class. -} diff --git a/sdk/R/man/api_clients.list.Rd b/sdk/R/man/api_clients.list.Rd deleted file mode 100644 index 0679c9c12e..0000000000 --- a/sdk/R/man/api_clients.list.Rd +++ /dev/null @@ -1,34 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{api_clients.list} -\alias{api_clients.list} -\title{api_clients.list} -\usage{ -arv$api_clients.list(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact") -} -\arguments{ -\item{filters}{} - -\item{where}{} - -\item{order}{} - -\item{select}{} - -\item{distinct}{} - -\item{limit}{} - -\item{offset}{} - -\item{count}{} -} -\value{ -ApiClientList object. -} -\description{ -api_clients.list is a method defined in Arvados class. -} diff --git a/sdk/R/man/api_clients.update.Rd b/sdk/R/man/api_clients.update.Rd deleted file mode 100644 index a37e533677..0000000000 --- a/sdk/R/man/api_clients.update.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{api_clients.update} -\alias{api_clients.update} -\title{api_clients.update} -\usage{ -arv$api_clients.update(apiclient, - uuid) -} -\arguments{ -\item{apiClient}{ApiClient object.} - -\item{uuid}{The UUID of the ApiClient in question.} -} -\value{ -ApiClient object. -} -\description{ -api_clients.update is a method defined in Arvados class. -} diff --git a/sdk/R/man/authorized_keys.create.Rd b/sdk/R/man/authorized_keys.create.Rd deleted file mode 100644 index e0d226af3d..0000000000 --- a/sdk/R/man/authorized_keys.create.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{authorized_keys.create} -\alias{authorized_keys.create} -\title{authorized_keys.create} -\usage{ -arv$authorized_keys.create(authorizedkey, - ensure_unique_name = "false") -} -\arguments{ -\item{authorizedKey}{AuthorizedKey object.} - -\item{ensure_unique_name}{Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision.} -} -\value{ -AuthorizedKey object. -} -\description{ -authorized_keys.create is a method defined in Arvados class. -} diff --git a/sdk/R/man/authorized_keys.delete.Rd b/sdk/R/man/authorized_keys.delete.Rd deleted file mode 100644 index db1f0e7c48..0000000000 --- a/sdk/R/man/authorized_keys.delete.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{authorized_keys.delete} -\alias{authorized_keys.delete} -\title{authorized_keys.delete} -\usage{ -arv$authorized_keys.delete(uuid) -} -\arguments{ -\item{uuid}{The UUID of the AuthorizedKey in question.} -} -\value{ -AuthorizedKey object. -} -\description{ -authorized_keys.delete is a method defined in Arvados class. -} diff --git a/sdk/R/man/authorized_keys.get.Rd b/sdk/R/man/authorized_keys.get.Rd deleted file mode 100644 index 31a2dd3f30..0000000000 --- a/sdk/R/man/authorized_keys.get.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{authorized_keys.get} -\alias{authorized_keys.get} -\title{authorized_keys.get} -\usage{ -arv$authorized_keys.get(uuid) -} -\arguments{ -\item{uuid}{The UUID of the AuthorizedKey in question.} -} -\value{ -AuthorizedKey object. -} -\description{ -authorized_keys.get is a method defined in Arvados class. -} diff --git a/sdk/R/man/authorized_keys.list.Rd b/sdk/R/man/authorized_keys.list.Rd deleted file mode 100644 index cd19bc60c0..0000000000 --- a/sdk/R/man/authorized_keys.list.Rd +++ /dev/null @@ -1,34 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{authorized_keys.list} -\alias{authorized_keys.list} -\title{authorized_keys.list} -\usage{ -arv$authorized_keys.list(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact") -} -\arguments{ -\item{filters}{} - -\item{where}{} - -\item{order}{} - -\item{select}{} - -\item{distinct}{} - -\item{limit}{} - -\item{offset}{} - -\item{count}{} -} -\value{ -AuthorizedKeyList object. -} -\description{ -authorized_keys.list is a method defined in Arvados class. -} diff --git a/sdk/R/man/authorized_keys.update.Rd b/sdk/R/man/authorized_keys.update.Rd deleted file mode 100644 index 65d93d0732..0000000000 --- a/sdk/R/man/authorized_keys.update.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{authorized_keys.update} -\alias{authorized_keys.update} -\title{authorized_keys.update} -\usage{ -arv$authorized_keys.update(authorizedkey, - uuid) -} -\arguments{ -\item{authorizedKey}{AuthorizedKey object.} - -\item{uuid}{The UUID of the AuthorizedKey in question.} -} -\value{ -AuthorizedKey object. -} -\description{ -authorized_keys.update is a method defined in Arvados class. -} diff --git a/sdk/R/man/collections.create.Rd b/sdk/R/man/collections.create.Rd deleted file mode 100644 index af8e3984b6..0000000000 --- a/sdk/R/man/collections.create.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{collections.create} -\alias{collections.create} -\title{collections.create} -\usage{ -arv$collections.create(collection, - ensure_unique_name = "false") -} -\arguments{ -\item{collection}{Collection object.} - -\item{ensure_unique_name}{Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision.} -} -\value{ -Collection object. -} -\description{ -collections.create is a method defined in Arvados class. -} diff --git a/sdk/R/man/collections.delete.Rd b/sdk/R/man/collections.delete.Rd deleted file mode 100644 index 28b3543e4a..0000000000 --- a/sdk/R/man/collections.delete.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{collections.delete} -\alias{collections.delete} -\title{collections.delete} -\usage{ -arv$collections.delete(uuid) -} -\arguments{ -\item{uuid}{The UUID of the Collection in question.} -} -\value{ -Collection object. -} -\description{ -collections.delete is a method defined in Arvados class. -} diff --git a/sdk/R/man/collections.get.Rd b/sdk/R/man/collections.get.Rd deleted file mode 100644 index 3878aaf8c8..0000000000 --- a/sdk/R/man/collections.get.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{collections.get} -\alias{collections.get} -\title{collections.get} -\usage{ -arv$collections.get(uuid) -} -\arguments{ -\item{uuid}{The UUID of the Collection in question.} -} -\value{ -Collection object. -} -\description{ -collections.get is a method defined in Arvados class. -} diff --git a/sdk/R/man/collections.list.Rd b/sdk/R/man/collections.list.Rd deleted file mode 100644 index 87f6f78e33..0000000000 --- a/sdk/R/man/collections.list.Rd +++ /dev/null @@ -1,36 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{collections.list} -\alias{collections.list} -\title{collections.list} -\usage{ -arv$collections.list(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact", include_trash = NULL) -} -\arguments{ -\item{filters}{} - -\item{where}{} - -\item{order}{} - -\item{select}{} - -\item{distinct}{} - -\item{limit}{} - -\item{offset}{} - -\item{count}{} - -\item{include_trash}{Include collections whose is_trashed attribute is true.} -} -\value{ -CollectionList object. -} -\description{ -collections.list is a method defined in Arvados class. -} diff --git a/sdk/R/man/collections.provenance.Rd b/sdk/R/man/collections.provenance.Rd deleted file mode 100644 index 001a7b47c7..0000000000 --- a/sdk/R/man/collections.provenance.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{collections.provenance} -\alias{collections.provenance} -\title{collections.provenance} -\usage{ -arv$collections.provenance(uuid) -} -\arguments{ -\item{uuid}{} -} -\value{ -Collection object. -} -\description{ -collections.provenance is a method defined in Arvados class. -} diff --git a/sdk/R/man/collections.trash.Rd b/sdk/R/man/collections.trash.Rd deleted file mode 100644 index 4862109b9f..0000000000 --- a/sdk/R/man/collections.trash.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{collections.trash} -\alias{collections.trash} -\title{collections.trash} -\usage{ -arv$collections.trash(uuid) -} -\arguments{ -\item{uuid}{} -} -\value{ -Collection object. -} -\description{ -collections.trash is a method defined in Arvados class. -} diff --git a/sdk/R/man/collections.untrash.Rd b/sdk/R/man/collections.untrash.Rd deleted file mode 100644 index c41bc3d904..0000000000 --- a/sdk/R/man/collections.untrash.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{collections.untrash} -\alias{collections.untrash} -\title{collections.untrash} -\usage{ -arv$collections.untrash(uuid) -} -\arguments{ -\item{uuid}{} -} -\value{ -Collection object. -} -\description{ -collections.untrash is a method defined in Arvados class. -} diff --git a/sdk/R/man/collections.update.Rd b/sdk/R/man/collections.update.Rd deleted file mode 100644 index c9b201cb4d..0000000000 --- a/sdk/R/man/collections.update.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{collections.update} -\alias{collections.update} -\title{collections.update} -\usage{ -arv$collections.update(collection, - uuid) -} -\arguments{ -\item{collection}{Collection object.} - -\item{uuid}{The UUID of the Collection in question.} -} -\value{ -Collection object. -} -\description{ -collections.update is a method defined in Arvados class. -} diff --git a/sdk/R/man/collections.used_by.Rd b/sdk/R/man/collections.used_by.Rd deleted file mode 100644 index 53b8e493f7..0000000000 --- a/sdk/R/man/collections.used_by.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{collections.used_by} -\alias{collections.used_by} -\title{collections.used_by} -\usage{ -arv$collections.used_by(uuid) -} -\arguments{ -\item{uuid}{} -} -\value{ -Collection object. -} -\description{ -collections.used_by is a method defined in Arvados class. -} diff --git a/sdk/R/man/container_requests.create.Rd b/sdk/R/man/container_requests.create.Rd deleted file mode 100644 index e114d322ed..0000000000 --- a/sdk/R/man/container_requests.create.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{container_requests.create} -\alias{container_requests.create} -\title{container_requests.create} -\usage{ -arv$container_requests.create(containerrequest, - ensure_unique_name = "false") -} -\arguments{ -\item{containerRequest}{ContainerRequest object.} - -\item{ensure_unique_name}{Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision.} -} -\value{ -ContainerRequest object. -} -\description{ -container_requests.create is a method defined in Arvados class. -} diff --git a/sdk/R/man/container_requests.delete.Rd b/sdk/R/man/container_requests.delete.Rd deleted file mode 100644 index 905739bcd3..0000000000 --- a/sdk/R/man/container_requests.delete.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{container_requests.delete} -\alias{container_requests.delete} -\title{container_requests.delete} -\usage{ -arv$container_requests.delete(uuid) -} -\arguments{ -\item{uuid}{The UUID of the ContainerRequest in question.} -} -\value{ -ContainerRequest object. -} -\description{ -container_requests.delete is a method defined in Arvados class. -} diff --git a/sdk/R/man/container_requests.get.Rd b/sdk/R/man/container_requests.get.Rd deleted file mode 100644 index 54fe5d4c18..0000000000 --- a/sdk/R/man/container_requests.get.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{container_requests.get} -\alias{container_requests.get} -\title{container_requests.get} -\usage{ -arv$container_requests.get(uuid) -} -\arguments{ -\item{uuid}{The UUID of the ContainerRequest in question.} -} -\value{ -ContainerRequest object. -} -\description{ -container_requests.get is a method defined in Arvados class. -} diff --git a/sdk/R/man/container_requests.list.Rd b/sdk/R/man/container_requests.list.Rd deleted file mode 100644 index 9c2412beed..0000000000 --- a/sdk/R/man/container_requests.list.Rd +++ /dev/null @@ -1,34 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{container_requests.list} -\alias{container_requests.list} -\title{container_requests.list} -\usage{ -arv$container_requests.list(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact") -} -\arguments{ -\item{filters}{} - -\item{where}{} - -\item{order}{} - -\item{select}{} - -\item{distinct}{} - -\item{limit}{} - -\item{offset}{} - -\item{count}{} -} -\value{ -ContainerRequestList object. -} -\description{ -container_requests.list is a method defined in Arvados class. -} diff --git a/sdk/R/man/container_requests.update.Rd b/sdk/R/man/container_requests.update.Rd deleted file mode 100644 index 063417b3ed..0000000000 --- a/sdk/R/man/container_requests.update.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{container_requests.update} -\alias{container_requests.update} -\title{container_requests.update} -\usage{ -arv$container_requests.update(containerrequest, - uuid) -} -\arguments{ -\item{containerRequest}{ContainerRequest object.} - -\item{uuid}{The UUID of the ContainerRequest in question.} -} -\value{ -ContainerRequest object. -} -\description{ -container_requests.update is a method defined in Arvados class. -} diff --git a/sdk/R/man/containers.auth.Rd b/sdk/R/man/containers.auth.Rd deleted file mode 100644 index a594d2f196..0000000000 --- a/sdk/R/man/containers.auth.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{containers.auth} -\alias{containers.auth} -\title{containers.auth} -\usage{ -arv$containers.auth(uuid) -} -\arguments{ -\item{uuid}{} -} -\value{ -Container object. -} -\description{ -containers.auth is a method defined in Arvados class. -} diff --git a/sdk/R/man/containers.create.Rd b/sdk/R/man/containers.create.Rd deleted file mode 100644 index 4ce25bb831..0000000000 --- a/sdk/R/man/containers.create.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{containers.create} -\alias{containers.create} -\title{containers.create} -\usage{ -arv$containers.create(container, - ensure_unique_name = "false") -} -\arguments{ -\item{container}{Container object.} - -\item{ensure_unique_name}{Adjust name to ensure uniqueness instead of returning an error on (owner_uuid, name) collision.} -} -\value{ -Container object. -} -\description{ -containers.create is a method defined in Arvados class. -} diff --git a/sdk/R/man/containers.current.Rd b/sdk/R/man/containers.current.Rd deleted file mode 100644 index 0f6ad4eb96..0000000000 --- a/sdk/R/man/containers.current.Rd +++ /dev/null @@ -1,14 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{containers.current} -\alias{containers.current} -\title{containers.current} -\usage{ -arv$containers.current(NULL) -} -\value{ -Container object. -} -\description{ -containers.current is a method defined in Arvados class. -} diff --git a/sdk/R/man/containers.delete.Rd b/sdk/R/man/containers.delete.Rd deleted file mode 100644 index e2e3cd7fc4..0000000000 --- a/sdk/R/man/containers.delete.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{containers.delete} -\alias{containers.delete} -\title{containers.delete} -\usage{ -arv$containers.delete(uuid) -} -\arguments{ -\item{uuid}{The UUID of the Container in question.} -} -\value{ -Container object. -} -\description{ -containers.delete is a method defined in Arvados class. -} diff --git a/sdk/R/man/containers.get.Rd b/sdk/R/man/containers.get.Rd deleted file mode 100644 index 05d97d3d91..0000000000 --- a/sdk/R/man/containers.get.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{containers.get} -\alias{containers.get} -\title{containers.get} -\usage{ -arv$containers.get(uuid) -} -\arguments{ -\item{uuid}{The UUID of the Container in question.} -} -\value{ -Container object. -} -\description{ -containers.get is a method defined in Arvados class. -} diff --git a/sdk/R/man/containers.list.Rd b/sdk/R/man/containers.list.Rd deleted file mode 100644 index d445796135..0000000000 --- a/sdk/R/man/containers.list.Rd +++ /dev/null @@ -1,34 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{containers.list} -\alias{containers.list} -\title{containers.list} -\usage{ -arv$containers.list(filters = NULL, - where = NULL, order = NULL, select = NULL, - distinct = NULL, limit = "100", offset = "0", - count = "exact") -} -\arguments{ -\item{filters}{} - -\item{where}{} - -\item{order}{} - -\item{select}{} - -\item{distinct}{} - -\item{limit}{} - -\item{offset}{} - -\item{count}{} -} -\value{ -ContainerList object. -} -\description{ -containers.list is a method defined in Arvados class. -} diff --git a/sdk/R/man/containers.lock.Rd b/sdk/R/man/containers.lock.Rd deleted file mode 100644 index 72bcdf0f81..0000000000 --- a/sdk/R/man/containers.lock.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{containers.lock} -\alias{containers.lock} -\title{containers.lock} -\usage{ -arv$containers.lock(uuid) -} -\arguments{ -\item{uuid}{} -} -\value{ -Container object. -} -\description{ -containers.lock is a method defined in Arvados class. -} diff --git a/sdk/R/man/containers.secret_mounts.Rd b/sdk/R/man/containers.secret_mounts.Rd deleted file mode 100644 index d0f8444fa4..0000000000 --- a/sdk/R/man/containers.secret_mounts.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{containers.secret_mounts} -\alias{containers.secret_mounts} -\title{containers.secret_mounts} -\usage{ -arv$containers.secret_mounts(uuid) -} -\arguments{ -\item{uuid}{} -} -\value{ -Container object. -} -\description{ -containers.secret_mounts is a method defined in Arvados class. -} diff --git a/sdk/R/man/containers.unlock.Rd b/sdk/R/man/containers.unlock.Rd deleted file mode 100644 index 5c41f2059a..0000000000 --- a/sdk/R/man/containers.unlock.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{containers.unlock} -\alias{containers.unlock} -\title{containers.unlock} -\usage{ -arv$containers.unlock(uuid) -} -\arguments{ -\item{uuid}{} -} -\value{ -Container object. -} -\description{ -containers.unlock is a method defined in Arvados class. -} diff --git a/sdk/R/man/containers.update.Rd b/sdk/R/man/containers.update.Rd deleted file mode 100644 index 3a8572670e..0000000000 --- a/sdk/R/man/containers.update.Rd +++ /dev/null @@ -1,20 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Arvados.R -\name{containers.update} -\alias{containers.update} -\title{containers.update} -\usage{ -arv$containers.update(container, - uuid) -} -\arguments{ -\item{container}{Container object.} - -\item{uuid}{The UUID of the Container in question.} -} -\value{ -Container object. -} -\description{ -containers.update is a method defined in Arvados class. -} diff --git a/sdk/R/man/figures/dax.png b/sdk/R/man/figures/dax.png new file mode 100644 index 0000000000000000000000000000000000000000..c511f0ec514289d128cdc4beb6aedfe2c0bb3863 GIT binary patch literal 66943 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

+sDy9bSH~FJa4HnKGn`xh?D8YzH7TqR0 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