Closed
Bug 1148545
Opened 10 years ago
Closed 10 years ago
Deploy build-tooltool to relengapi
Categories
(Infrastructure & Operations :: RelOps: General, task)
Infrastructure & Operations
RelOps: General
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: dustin, Assigned: dustin)
References
Details
This involves:
* landing a few more things:
* https://github.com/mozilla/build-tooltool/pull/10
* https://github.com/mozilla/build-relengapi/pull/196
* https://github.com/mozilla/build-relengapi/pull/187
* releasing a new version of relengapi
* building a cloudformation script to create the S3 buckets
* setting up badpenny (running badpenny-cron in a crontask on webheads)
* deploying to the web cluster
* documenting the new upload process (it's pretty simple but requires a token)
* disabling the existing upload mechanism
* uploading the existing tooltool data to the new tooltool
* I'll try to determine appropriate visibility levels and filenames
* converting build automation to use the new client, including using a permanent token on each host
Assignee | ||
Updated•10 years ago
|
Assignee: relops → dustin
Assignee | ||
Comment 1•10 years ago
|
||
(In reply to Dustin J. Mitchell [:dustin] from comment #0)
> This involves:
> * landing a few more things:
(DONE)
> * releasing a new version of relengapi
> * building a cloudformation script to create the S3 buckets
(DONE)
> * setting up badpenny (running badpenny-cron in a crontask on webheads)
(DONE - Bug 1118455)
> * deploying to the web cluster
> * documenting the new upload process (it's pretty simple but requires a
> token)
(DONE)
> * disabling the existing upload mechanism
> * uploading the existing tooltool data to the new tooltool
> * I'll try to determine appropriate visibility levels and filenames
> * converting build automation to use the new client, including using a
> permanent token on each host
Add:
* Allow all devs to upload to tooltool, generate user tokens
Assignee | ||
Comment 2•10 years ago
|
||
(In reply to Dustin J. Mitchell [:dustin] from comment #0)
> This involves:
> * releasing a new version of relengapi
(DONE)
> * deploying to the web cluster
> * disabling the existing upload mechanism
> * uploading the existing tooltool data to the new tooltool
> * I'll try to determine appropriate visibility levels and filenames
> * converting build automation to use the new client, including using a
> permanent token on each host
> * Allow all devs to upload to tooltool, generate user tokens
Assignee | ||
Comment 3•10 years ago
|
||
* I need to use bucket policies to better lock down access to the buckets to something narrower than just the AWS account. I should probably create the relengapi users with cloudformation too
Assignee | ||
Comment 4•10 years ago
|
||
The staging server appears not to be accepting the "Authorization" header, and even after switching the client to use "Authentication":
INFO - LICENSE.txt: starting upload
ERROR - LICENSE.txt: failed
Traceback (most recent call last):
File "tooltool.py", line 778, in _s3_upload
(resp.status, resp.reason, resp_body))
RuntimeError: Non-200 return from AWS: 403 Forbidden
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>B315E8AFFCAB59B0</RequestId><HostId>FG5dturWy2xb7OqzKwrHdd9j/2uoiP9BdbwFNs+S7KwFko4iHstCuChLSv3fb+WlLdSKp+1TC6Q=</HostId></Error>
(sandbox)
Which suggests I haven't set up the user policy correctly.
Assignee | ||
Comment 5•10 years ago
|
||
For the Authorization/Authentication issue, https://github.com/mozilla/build-relengapi/issues/208
Assignee | ||
Comment 6•10 years ago
|
||
Auth issue required an upgrade to Flask-Login. Fixed. Now, on to the AWS permissions.
Assignee | ||
Comment 7•10 years ago
|
||
I addd a usre policy via cloudformation. That changed the error from
RuntimeError: Non-200 return from AWS: 403 Forbidden
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>56A9F1DD4087560B</RequestId><HostId>YjhTGmmHWvr6SOTOpa482sjaZg526GUB6wcHB+KzozOmeU9rNiab+QQsBjF6jin6</HostId></Error>
to
INFO - LICENSE.txt: starting upload
https://mozilla-releng-staging-usw1-tooltool.s3-us-west-1.amazonaws.com/sha512/054fdbe8cb55d1f7592871311c5a9da76710c7a085fd24457644d80aa0ea3c344c57e99aab3a6fb2ec7ed93c15c8f997d5b7b60692c318f9cacad6418bb359e1?Signature=9KGrgB8jWVaZ%2BY7jsD82UNwcIhE%3D&Expires=1428085058&AWSAccessKeyId=AKIAILABTOAMWCDH5EBA
ERROR - LICENSE.txt: failed
Traceback (most recent call last):
File "tooltool.py", line 778, in _s3_upload
(resp.status, resp.reason, resp_body))
RuntimeError: Non-200 return from AWS: 403 Forbidden
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>AKIAILABTOAMWCDH5EBA</AWSAccessKeyId><StringToSign>PUT
application/octet-stream
1428085058
/mozilla-releng-staging-usw1-tooltool/sha512/054fdbe8cb55d1f7592871311c5a9da76710c7a085fd24457644d80aa0ea3c344c57e99aab3a6fb2ec7ed93c15c8f997d5b7b60692c318f9cacad6418bb359e1</StringToSign><SignatureProvided>9KGrgB8jWVaZ+Y7jsD82UNwcIhE=</SignatureProvided><StringToSignBytes>50 55 54 0a 0a 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f 63 74 65 74 2d 73 74 72 65 61 6d 0a 31 34 32 38 30 38 35 30 35 38 0a 2f 6d 6f 7a 69 6c 6c 61 2d 72 65 6c 65 6e 67 2d 73 74 61 67 69 6e 67 2d 75 73 77 31 2d 74 6f 6f 6c 74 6f 6f 6c 2f 73 68 61 35 31 32 2f 30 35 34 66 64 62 65 38 63 62 35 35 64 31 66 37 35 39 32 38 37 31 33 31 31 63 35 61 39 64 61 37 36 37 31 30 63 37 61 30 38 35 66 64 32 34 34 35 37 36 34 34 64 38 30 61 61 30 65 61 33 63 33 34 34 63 35 37 65 39 39 61 61 62 33 61 36 66 62 32 65 63 37 65 64 39 33 63 31 35 63 38 66 39 39 37 64 35 62 37 62 36 30 36 39 32 63 33 31 38 66 39 63 61 63 61 64 36 34 31 38 62 62 33 35 39 65 31</StringToSignBytes><RequestId>ADAED72E986778B3</RequestId><HostId>iLPz6jhTyVr7auNEfDt+g8pUlResOM47dvbpzW7E0VYrLYvmcrdxsr+5mTqgLxNT</HostId></Error>
Which doesn't make much sense -- in my dev environment I've repeatedly signed real AWS URLs. I'm going to try updating boto first before digging further.
Assignee | ||
Comment 8•10 years ago
|
||
Same error with boto-2.37.0.
Assignee | ||
Comment 9•10 years ago
|
||
Derp, I had a space in the secret key :(
Assignee | ||
Comment 10•10 years ago
|
||
The verification task is failing:
File "/data/www/relengapi/virtualenv/lib/python2.7/site-packages/relengapi/blueprints/tooltool/grooming.py", line 112, in verify_file_instance
if key.storage_class != 'STANDARD':
File "/data/www/relengapi/virtualenv/lib/python2.7/site-packages/boto/s3/key.py", line 199, in _get_storage_class
list_items = list(self.bucket.list(self.name.encode('utf-8')))
File "/data/www/relengapi/virtualenv/lib/python2.7/site-packages/boto/s3/bucketlistresultset.py", line 34, in bucket_lister
encoding_type=encoding_type)
File "/data/www/relengapi/virtualenv/lib/python2.7/site-packages/boto/s3/bucket.py", line 472, in get_all_keys
'', headers, **params)
File "/data/www/relengapi/virtualenv/lib/python2.7/site-packages/boto/s3/bucket.py", line 410, in _get_all
response.status, response.reason, body)
S3ResponseError: S3ResponseError: 403 Forbidden
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>16EB688054EC9362</RequestId><HostId>L/STz309bVUqzrT+WmXusPUBi/ssR1QY4dqUnAdBWbxo+z1YffvHaEPswJj+IzoJ</HostId></Error>
looks like the policy is wrong (listing keys is a bucket operation, but I've only applied it to object ARNs)
Assignee | ||
Comment 11•10 years ago
|
||
Great success!
https://github.com/mozilla/build-cloud-tools/pull/58
Assignee | ||
Comment 12•10 years ago
|
||
I'm not going to push this to production right now, though.
Assignee | ||
Comment 13•10 years ago
|
||
A successful fetch from production:
dustin@euclid ~/code/relengapi/t/tooltool/x [master] $ python ../tooltool.py fetch --verbose
DEBUG - processing 'fetch' command with args ''
DEBUG - using options: {'cache_folder': None, 'algorithm': 'sha512', 'loglevel': 10, 'region': None, 'base_url': ['https://api.pub.build.mozilla.org/tooltool/'], 'visibility': None, 'manifest': 'manifest.tt', 'auth_file': None, 'message': None, 'overwrite': False, 'size': 0.0}
DEBUG - materialized __main__.FileRecord(filename='LICENSE.txt', size=193, digest='054fdbe8cb55d1f7592871311c5a9da76710c7a085fd24457644d80aa0ea3c344c57e99aab3a6fb2ec7ed93c15c8f997d5b7b60692c318f9cacad6418bb359e1', algorithm='sha512', visibility=u'public')
DEBUG - loaded manifest from file 'manifest.tt'
DEBUG - fetching LICENSE.txt
INFO - Attempting to fetch from 'https://api.pub.build.mozilla.org/tooltool/'...
DEBUG - opened https://api.pub.build.mozilla.org/tooltool/sha512/054fdbe8cb55d1f7592871311c5a9da76710c7a085fd24457644d80aa0ea3c344c57e99aab3a6fb2ec7ed93c15c8f997d5b7b60692c318f9cacad6418bb359e1 for reading
INFO - File LICENSE.txt fetched from https://api.pub.build.mozilla.org/tooltool/ as /home/dustin/code/relengapi/t/tooltool/x/tmphDWQYw
DEBUG - hashed 'tmphDWQYw' with sha512 to be 054fdbe8cb55d1f7592871311c5a9da76710c7a085fd24457644d80aa0ea3c344c57e99aab3a6fb2ec7ed93c15c8f997d5b7b60692c318f9cacad6418bb359e1
INFO - File integrity verified, renaming tmphDWQYw to LICENSE.txt
dustin@euclid ~/code/relengapi/t/tooltool/x [master*] $ ls -al
total 16
drwxr-xr-x 2 dustin dustin 4096 Apr 6 11:09 .
drwxr-xr-x 13 dustin dustin 4096 Apr 6 11:06 ..
-rw------- 1 dustin dustin 193 Apr 6 11:09 LICENSE.txt
-rw-r--r-- 1 dustin dustin 240 Apr 6 11:03 manifest.tt
> * deploying to the web cluster
(DONE)
* fixing tooltool.py's authentication of fetches
> * disabling the existing upload mechanism
> * uploading the existing tooltool data to the new tooltool
> * I'll try to determine appropriate visibility levels and filenames
> * converting build automation to use the new client, including using a
> permanent token on each host
> * Allow all devs to upload to tooltool, generate user tokens
Assignee | ||
Comment 14•10 years ago
|
||
> * fixing tooltool.py's authentication of fetches
(bug 1151470)
> * uploading the existing tooltool data to the new tooltool
> * I'll try to determine appropriate visibility levels and filenames
(DONE)
> * disabling the existing upload mechanism
(DONE)
* update the wiki page for the new upload mechanism
(DONE)
* blog about the change
> * converting build automation to use the new client, including using a
> permanent token on each host
> * Allow all devs to upload to tooltool, generate user tokens
* update mana
Assignee | ||
Comment 15•10 years ago
|
||
> * fixing tooltool.py's authentication of fetches
(bug 1151470)
> * blog about the change
(DONE)
> * converting build automation to use the new client, including using a
> permanent token on each host
> * Allow all devs to upload to tooltool, generate user tokens
> * update mana
> * fix badpenny tasks - https://github.com/mozilla/build-tooltool/issues/12
Assignee | ||
Comment 16•10 years ago
|
||
> * Allow all devs to upload to tooltool, generate user tokens
(DONE)
correction: vpn_tooltooleditor can upload; anyone can download public; team_moco can download internal.
> * update mana
(DONE)
> * fix badpenny tasks - https://github.com/mozilla/build-tooltool/issues/12
(DONE)
> * converting build automation to use the new client, including using a
> permanent token on each host
* figure out why replication is failing with "server has gone away" errors
Assignee | ||
Comment 17•10 years ago
|
||
> * converting build automation to use the new client, including using a
> permanent token on each host
but 1155238
> * figure out why replication is failing with "server has gone away" errors
https://github.com/mozilla/build-tooltool/pull/16
Assignee | ||
Comment 18•10 years ago
|
||
This is now farmed out appropriately to other bugs.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•