+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+
=head1 NAME
Arvados -- client library for Arvados services
use Arvados;
$arv = Arvados->new(apiHost => 'arvados.local');
-
+
my $instances = $arv->{'pipeline_instances'}->{'list'}->execute();
print "UUID is ", $instances->{'items'}->[0]->{'uuid'}, "\n";
-
+
$uuid = 'eiv0u-arx5y-2c5ovx43zw90gvh';
$instance = $arv->{'pipeline_instances'}->{'get'}->execute('uuid' => $uuid);
print "ETag is ", $instance->{'etag'}, "\n";
-
+
$instance->{'active'} = 1;
$instance->{'name'} = '';
$instance->save();
=item apiHost
-Hostname of API discovery service. Default: C<arvados.local>
+Hostname of API discovery service. Default: C<ARVADOS_API_HOST>
+environment variable, or C<arvados>
=item apiProtocolScheme
Protocol scheme. Default: C<ARVADOS_API_PROTOCOL_SCHEME> environment
variable, or C<https>
-=item apiToken
+=item authToken
Authorization token. Default: C<ARVADOS_API_TOKEN> environment variable
=cut
package Arvados;
+
+use Net::SSL (); # From Crypt-SSLeay
+BEGIN {
+ $Net::HTTPS::SSL_SOCKET_CLASS = "Net::SSL"; # Force use of Net::SSL
+}
+
use JSON;
-use Data::Dumper;
-use IO::Socket::SSL;
use Carp;
use Arvados::ResourceAccessor;
use Arvados::ResourceMethod;
use Arvados::ResourceProxy;
use Arvados::ResourceProxyList;
use Arvados::Request;
+use Data::Dumper;
+
+$Arvados::VERSION = 0.1;
sub new
{
sub build
{
my $self = shift;
- $self->{'authToken'} ||= $ENV{'ARVADOS_API_TOKEN'};
- $self->{'apiHost'} ||= $ENV{'ARVADOS_API_HOST'};
- $self->{'apiProtocolScheme'} ||= $ENV{'ARVADOS_API_PROTOCOL_SCHEME'};
+
+ $config = load_config_file("$ENV{HOME}/.config/arvados/settings.conf");
+
+ $self->{'authToken'} ||=
+ $ENV{ARVADOS_API_TOKEN} || $config->{ARVADOS_API_TOKEN};
+
+ $self->{'apiHost'} ||=
+ $ENV{ARVADOS_API_HOST} || $config->{ARVADOS_API_HOST};
+
+ $self->{'noVerifyHostname'} ||=
+ $ENV{ARVADOS_API_HOST_INSECURE};
+
+ $self->{'apiProtocolScheme'} ||=
+ $ENV{ARVADOS_API_PROTOCOL_SCHEME} ||
+ $config->{ARVADOS_API_PROTOCOL_SCHEME};
$self->{'ua'} = new Arvados::Request;
{
my $self = shift;
local $ENV{'PERL_LWP_SSL_VERIFY_HOSTNAME'};
- if ($opts{'noVerifyHostname'} || ($host =~ /\.local$/)) {
+ if ($self->{'noVerifyHostname'} || ($host =~ /\.local$/)) {
$ENV{'PERL_LWP_SSL_VERIFY_HOSTNAME'} = 0;
}
Arvados::Request->new();
}
+sub load_config_file ($)
+{
+ my $config_file = shift;
+ my %config;
+
+ if (open (CONF, $config_file)) {
+ while (<CONF>) {
+ next if /^\s*#/ || /^\s*$/; # skip comments and blank lines
+ chomp;
+ my ($key, $val) = split /\s*=\s*/, $_, 2;
+ $config{$key} = $val;
+ }
+ }
+ close CONF;
+ return \%config;
+}
+
1;