Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/boto/roboto/awsqueryservice.py @ 0:26e78fe6e8c4 draft
"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
| author | shellac |
|---|---|
| date | Sat, 02 May 2020 07:14:21 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:26e78fe6e8c4 |
|---|---|
| 1 from __future__ import print_function | |
| 2 import os | |
| 3 import urlparse | |
| 4 import boto | |
| 5 import boto.connection | |
| 6 import boto.jsonresponse | |
| 7 import boto.exception | |
| 8 from boto.roboto import awsqueryrequest | |
| 9 | |
| 10 class NoCredentialsError(boto.exception.BotoClientError): | |
| 11 | |
| 12 def __init__(self): | |
| 13 s = 'Unable to find credentials' | |
| 14 super(NoCredentialsError, self).__init__(s) | |
| 15 | |
| 16 class AWSQueryService(boto.connection.AWSQueryConnection): | |
| 17 | |
| 18 Name = '' | |
| 19 Description = '' | |
| 20 APIVersion = '' | |
| 21 Authentication = 'sign-v2' | |
| 22 Path = '/' | |
| 23 Port = 443 | |
| 24 Provider = 'aws' | |
| 25 EnvURL = 'AWS_URL' | |
| 26 | |
| 27 Regions = [] | |
| 28 | |
| 29 def __init__(self, **args): | |
| 30 self.args = args | |
| 31 self.check_for_credential_file() | |
| 32 self.check_for_env_url() | |
| 33 if 'host' not in self.args: | |
| 34 if self.Regions: | |
| 35 region_name = self.args.get('region_name', | |
| 36 self.Regions[0]['name']) | |
| 37 for region in self.Regions: | |
| 38 if region['name'] == region_name: | |
| 39 self.args['host'] = region['endpoint'] | |
| 40 if 'path' not in self.args: | |
| 41 self.args['path'] = self.Path | |
| 42 if 'port' not in self.args: | |
| 43 self.args['port'] = self.Port | |
| 44 try: | |
| 45 super(AWSQueryService, self).__init__(**self.args) | |
| 46 self.aws_response = None | |
| 47 except boto.exception.NoAuthHandlerFound: | |
| 48 raise NoCredentialsError() | |
| 49 | |
| 50 def check_for_credential_file(self): | |
| 51 """ | |
| 52 Checks for the existence of an AWS credential file. | |
| 53 If the environment variable AWS_CREDENTIAL_FILE is | |
| 54 set and points to a file, that file will be read and | |
| 55 will be searched credentials. | |
| 56 Note that if credentials have been explicitelypassed | |
| 57 into the class constructor, those values always take | |
| 58 precedence. | |
| 59 """ | |
| 60 if 'AWS_CREDENTIAL_FILE' in os.environ: | |
| 61 path = os.environ['AWS_CREDENTIAL_FILE'] | |
| 62 path = os.path.expanduser(path) | |
| 63 path = os.path.expandvars(path) | |
| 64 if os.path.isfile(path): | |
| 65 fp = open(path) | |
| 66 lines = fp.readlines() | |
| 67 fp.close() | |
| 68 for line in lines: | |
| 69 if line[0] != '#': | |
| 70 if '=' in line: | |
| 71 name, value = line.split('=', 1) | |
| 72 if name.strip() == 'AWSAccessKeyId': | |
| 73 if 'aws_access_key_id' not in self.args: | |
| 74 value = value.strip() | |
| 75 self.args['aws_access_key_id'] = value | |
| 76 elif name.strip() == 'AWSSecretKey': | |
| 77 if 'aws_secret_access_key' not in self.args: | |
| 78 value = value.strip() | |
| 79 self.args['aws_secret_access_key'] = value | |
| 80 else: | |
| 81 print('Warning: unable to read AWS_CREDENTIAL_FILE') | |
| 82 | |
| 83 def check_for_env_url(self): | |
| 84 """ | |
| 85 First checks to see if a url argument was explicitly passed | |
| 86 in. If so, that will be used. If not, it checks for the | |
| 87 existence of the environment variable specified in ENV_URL. | |
| 88 If this is set, it should contain a fully qualified URL to the | |
| 89 service you want to use. | |
| 90 Note that any values passed explicitly to the class constructor | |
| 91 will take precedence. | |
| 92 """ | |
| 93 url = self.args.get('url', None) | |
| 94 if url: | |
| 95 del self.args['url'] | |
| 96 if not url and self.EnvURL in os.environ: | |
| 97 url = os.environ[self.EnvURL] | |
| 98 if url: | |
| 99 rslt = urlparse.urlparse(url) | |
| 100 if 'is_secure' not in self.args: | |
| 101 if rslt.scheme == 'https': | |
| 102 self.args['is_secure'] = True | |
| 103 else: | |
| 104 self.args['is_secure'] = False | |
| 105 | |
| 106 host = rslt.netloc | |
| 107 port = None | |
| 108 l = host.split(':') | |
| 109 if len(l) > 1: | |
| 110 host = l[0] | |
| 111 port = int(l[1]) | |
| 112 if 'host' not in self.args: | |
| 113 self.args['host'] = host | |
| 114 if port and 'port' not in self.args: | |
| 115 self.args['port'] = port | |
| 116 | |
| 117 if rslt.path and 'path' not in self.args: | |
| 118 self.args['path'] = rslt.path | |
| 119 | |
| 120 def _required_auth_capability(self): | |
| 121 return [self.Authentication] | |
| 122 |
