X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ac91070f6dc5cc5ecf8756e75fe934b3436ec531..8298d7a1b1adf8d4c66e60347984762d60e3c665:/sdk/perl/lib/Arvados.pm diff --git a/sdk/perl/lib/Arvados.pm b/sdk/perl/lib/Arvados.pm index 18800290a7..414272b6bc 100644 --- a/sdk/perl/lib/Arvados.pm +++ b/sdk/perl/lib/Arvados.pm @@ -6,14 +6,14 @@ 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(); @@ -33,14 +33,15 @@ Set up a client and retrieve the schema from the server. =item apiHost -Hostname of API discovery service. Default: C +Hostname of API discovery service. Default: C +environment variable, or C =item apiProtocolScheme Protocol scheme. Default: C environment variable, or C -=item apiToken +=item authToken Authorization token. Default: C environment variable @@ -57,15 +58,22 @@ Default C =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 { @@ -79,9 +87,21 @@ 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; @@ -115,10 +135,27 @@ sub new_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 () { + 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;