X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6ad0bb5d76f4683fbe8f9d726ddd41fff75819c4..44c95f99098fa6c6acbfa82d4b6cbc6015eb6e39:/sdk/perl/lib/Arvados.pm diff --git a/sdk/perl/lib/Arvados.pm b/sdk/perl/lib/Arvados.pm index 8a643788b6..9eb04b4ab2 100644 --- a/sdk/perl/lib/Arvados.pm +++ b/sdk/perl/lib/Arvados.pm @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + =head1 NAME Arvados -- client library for Arvados services @@ -6,14 +10,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(); @@ -41,7 +45,7 @@ environment variable, or C Protocol scheme. Default: C environment variable, or C -=item apiToken +=item authToken Authorization token. Default: C environment variable @@ -58,15 +62,20 @@ 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; @@ -82,9 +91,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; @@ -118,10 +139,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;