X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6757ee08c6e340923ac7fe82df11c791f4570e53..623b01534a135a964cc473b45cf8333a780a1b74:/README.md diff --git a/README.md b/README.md index afb6bc5316..fced2eb5b7 100644 --- a/README.md +++ b/README.md @@ -1,203 +1,96 @@ -# Google API Client +[comment]: # (Copyright © The Arvados Authors. All rights reserved.) +[comment]: # () +[comment]: # (SPDX-License-Identifier: CC-BY-SA-3.0) -
-
Homepage
http://www.github.com/google/google-api-ruby-client
-
Authors
Bob Aman, Steven Bazyl
-
Copyright
Copyright © 2011 Google, Inc.
-
License
Apache 2.0
-
+[![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) | [Installing Arvados](https://doc.arvados.org/install/index.html) | [Installing Client SDKs](https://doc.arvados.org/sdk/index.html) | [Report a bug](https://dev.arvados.org/projects/arvados/issues/new) | [Development and Contributing](CONTRIBUTING.md) -[![Build Status](https://secure.travis-ci.org/google/google-api-ruby-client.png)](http://travis-ci.org/google/google-api-ruby-client) -[![Dependency Status](https://gemnasium.com/google/google-api-ruby-client.png)](https://gemnasium.com/google/google-api-ruby-client) + -## Description +[Arvados](https://arvados.org) is an open source platform for +managing, processing, and sharing genomic and other large scientific +and biomedical data. With Arvados, bioinformaticians run and scale +compute-intensive workflows, developers create biomedical +applications, and IT administrators manage large compute and storage +resources. -The Google API Ruby Client makes it trivial to discover and access supported -APIs. +The key components of Arvados are: -## Alpha +* *Keep*: Keep is the Arvados storage system for managing and storing large +collections of files. Keep combines content addressing and a +distributed storage architecture resulting in both high reliability +and high throughput. Every file stored in Keep can be accurately +verified every time it is retrieved. Keep supports the creation of +collections as a flexible way to define data sets without having to +re-organize or needlessly copy data. Keep works on a wide range of +underlying filesystems and object stores. -This library is in Alpha. We will make an effort to support the library, but we reserve the right to make incompatible changes when necessary. +* *Crunch*: Crunch is the orchestration system for running [Common Workflow Language](https://www.commonwl.org) workflows. It is +designed to maintain data provenance and workflow +reproducibility. Crunch automatically tracks data inputs and outputs +through Keep and executes workflow processes in Docker containers. In +a cloud environment, Crunch optimizes costs by scaling compute on demand. -## Install +* *Workbench*: The Workbench web application allows users to interactively access +Arvados functionality. It is especially helpful for querying and +browsing data, visualizing provenance, and tracking the progress of +workflows. -Be sure `https://rubygems.org/` is in your gem sources. +* *Command Line tools*: The command line interface (CLI) provides convenient access to Arvados +functionality in the Arvados platform from the command line. -For normal client usage, this is sufficient: +* *API and SDKs*: Arvados is designed to be integrated with existing infrastructure. All +the services in Arvados are accessed through a RESTful API. SDKs are +available for Python, Go, R, Perl, Ruby, and Java. -```bash -$ gem install google-api-client -``` - -## Example Usage - -```ruby -require 'google/api_client' -require 'google/api_client/client_secrets' -require 'google/api_client/auth/installed_app' - -# Initialize the client. -client = Google::APIClient.new( - :application_name => 'Example Ruby application', - :application_version => '1.0.0' -) - -# Initialize Google+ API. Note this will make a request to the -# discovery service every time, so be sure to use serialization -# in your production code. Check the samples for more details. -plus = client.discovered_api('plus') - -# Load client secrets from your client_secrets.json. -client_secrets = Google::APIClient::ClientSecrets.load - -# Run installed application flow. Check the samples for a more -# complete example that saves the credentials between runs. -flow = Google::APIClient::InstalledAppFlow.new( - :client_id => client_secrets.client_id, - :client_secret => client_secrets.client_secret, - :scope => ['https://www.googleapis.com/auth/plus.me'] -) -client.authorization = flow.authorize - -# Make an API call. -result = client.execute( - :api_method => plus.activities.list, - :parameters => {'collection' => 'public', 'userId' => 'me'} -) - -puts result.data -``` - -## API Features - -### API Discovery - -To take full advantage of the client, load API definitions prior to use. To load an API: - -```ruby -urlshortener = client.discovered_api('urlshortener') -``` +# Quick start -Specific versions of the API can be loaded as well: +To try out Arvados on your local workstation, you can use Arvbox, which +provides Arvados components pre-installed in a Docker container (requires +Docker 1.9+). After cloning the Arvados git repository: -```ruby -drive = client.discovered_api('drive', 'v2') ``` - -Locally cached discovery documents may be used as well. To load an API from a local file: - -```ruby -# Output discovery document to JSON -File.open('my-api.json', 'w') do |f| f.puts MultiJson.dump(client.discovery_document('myapi', 'v1')) end - -# Read discovery document and load API -doc = File.read('my-api.json') -client.register_discovery_document('myapi', 'v1', doc) -my_api = client.discovered_api('myapi', 'v1') -``` - -### Authorization - -Most interactions with Google APIs require users to authorize applications via OAuth 2.0. The client library uses [Signet](https://github.com/google/signet) to handle most aspects of authorization. For additional details about Google's OAuth support, see [Google Developers](https://developers.google.com/accounts/docs/OAuth2). - -Credentials can be managed at the connection level, as shown, or supplied on a per-request basis when calling `execute`. - -For server-to-server interactions, like those between a web application and Google Cloud Storage, Prediction, or BigQuery APIs, use service accounts. - -```ruby -key = Google::APIClient::KeyUtils.load_from_pkcs12('client.p12', 'notasecret') -client.authorization = Signet::OAuth2::Client.new( - :token_credential_uri => 'https://accounts.google.com/o/oauth2/token', - :audience => 'https://accounts.google.com/o/oauth2/token', - :scope => 'https://www.googleapis.com/auth/prediction', - :issuer => '123456-abcdef@developer.gserviceaccount.com', - :signing_key => key) -client.authorization.fetch_access_token! -client.execute(...) +$ cd arvados/tools/arvbox/bin +$ ./arvbox start localdemo ``` -Service accounts are also used for delegation in Google Apps domains. The target user for impersonation is specified by setting the `:person` parameter to the user's email address -in the credentials. Detailed instructions on how to enable delegation for your domain can be found at [developers.google.com](https://developers.google.com/drive/delegation). - -### Automatic Retries & Backoff - -The API client can automatically retry requests for recoverable errors. To enable retries, set the `client.retries` property to -the number of additional attempts. To avoid flooding servers, retries invovle a 1 second delay that increases on each subsequent retry. -In the case of authentication token expiry, the API client will attempt to refresh the token and retry the failed operation - this -is a specific exception to the retry rules. - -The default value for retries is 0, but will be enabled by default in future releases. - -### Batching Requests +In this mode you will only be able to connect to Arvbox from the same host. To +configure Arvbox to be accessible over a network and for other options see +http://doc.arvados.org/install/arvbox.html for details. -Some Google APIs support batching requests into a single HTTP request. Use `Google::APIClient::BatchRequest` -to bundle multiple requests together. +# Documentation -Example: +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/ -```ruby -client = Google::APIClient.new -urlshortener = client.discovered_api('urlshortener') +If you wish to build the Arvados documentation from a local git clone, see +[doc/README.textile](doc/README.textile) for instructions. -batch = Google::APIClient::BatchRequest.new do |result| - puts result.data -end +# Community -batch.add(:api_method => urlshortener.url.insert, - :body_object => { 'longUrl' => 'http://example.com/foo' }) -batch.add(:api_method => urlshortener.url.insert, - :body_object => { 'longUrl' => 'http://example.com/bar' }) -client.execute(batch) -``` - -Blocks for handling responses can be specified either at the batch level or when adding an individual API call. For example: +[![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) -```ruby -batch.add(:api_method=>urlshortener.url.insert, :body_object => { 'longUrl' => 'http://example.com/bar' }) do |result| - puts result.data -end -``` +The [Arvados community channel](https://gitter.im/arvados/community) +channel at [gitter.im](https://gitter.im) is available for live +discussion and support. -### Media Upload +The [Arvados developement channel](https://gitter.im/arvados/development) +channel at [gitter.im](https://gitter.im) is used to coordinate development. -For APIs that support file uploads, use `Google::APIClient::UploadIO` to load the stream. Both multipart and resumable -uploads can be used. For example, to upload a file to Google Drive using multipart +The [Arvados user mailing list](http://lists.arvados.org/mailman/listinfo/arvados) +is used to announce new versions and other news. -```ruby -drive = client.discovered_api('drive', 'v2') +All participants are expected to abide by the [Arvados Code of Conduct](CODE_OF_CONDUCT.md). -media = Google::APIClient::UploadIO.new('mymovie.m4v', 'video/mp4') -metadata = { - 'title' => 'My movie', - 'description' => 'The best home movie ever made' -} -client.execute(:api_method => drive.files.insert, - :parameters => { 'uploadType' => 'multipart' }, - :body_object => metadata, - :media => media ) -``` +# Reporting bugs -To use resumable uploads, change the `uploadType` parameter to `resumable`. To check the status of the upload -and continue if necessary, check `result.resumable_upload`. - -```ruby -client.execute(:api_method => drive.files.insert, - :parameters => { 'uploadType' => 'resumable' }, - :body_object => metadata, - :media => media ) -upload = result.resumable_upload - -# Resume if needed -if upload.resumable? - client.execute(upload) -end -``` +[Report a bug](https://dev.arvados.org/projects/arvados/issues/new) on [dev.arvados.org](https://dev.arvados.org). -## Samples +# Development and Contributing -See the full list of [samples on Github](https://github.com/google/google-api-ruby-client-samples). +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. -## Support +# Licensing -Please [report bugs at the project on Github](https://github.com/google/google-api-ruby-client/issues). Don't hesitate to [ask questions](http://stackoverflow.com/questions/tagged/google-api-ruby-client) about the client or APIs on [StackOverflow](http://stackoverflow.com). +Arvados is Free Software. See [COPYING](COPYING) for information about the open source licenses used in Arvados.