~nuclearbob/ubuntu-test-cases/touch-trace-export-dev

« back to all changes in this revision

Viewing changes to scripts/nfss_insert.py

  • Committer: Max Brustkern
  • Date: 2014-10-06 21:05:12 UTC
  • mfrom: (169.1.41 touch-trace-export)
  • Revision ID: max@canonical.com-20141006210512-3w9z8rnrperuvabt
Resolved conflicts

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python3
 
2
 
 
3
import json
 
4
from os import environ
 
5
import sys
 
6
from requests_oauthlib import OAuth1Session
 
7
 
 
8
try:
 
9
    client_access_key = environ['CLIENT_ACCESS_KEY']
 
10
except KeyError:
 
11
    sys.stderr.write('CLIENT_ACCESS_KEY environment variable must be set')
 
12
    sys.exit(3)
 
13
 
 
14
try:
 
15
    resource_owner_key = environ['RESOURCE_OWNER_KEY']
 
16
except KeyError:
 
17
    sys.stderr.write('RESOURCE_OWNER_KEY environment variable must be set')
 
18
    sys.exit(3)
 
19
 
 
20
# Note: The resource_owner_secret is *secret*, and must be kept secret. If
 
21
# you think it's been compromised, contact IS with your client access key
 
22
# and they can invalidate the old key and assign a new one.
 
23
try:
 
24
    resource_owner_secret = environ['RESOURCE_OWNER_SECRET']
 
25
except KeyError:
 
26
    sys.stderr.write('RESOURCE_OWNER_SECRET environment variable must be set')
 
27
    sys.exit(3)
 
28
 
 
29
try:
 
30
    backend = environ['NFSS_BACKEND']
 
31
except KeyError:
 
32
    sys.stderr.write('NFSS_BACKEND environment variable must be set')
 
33
    sys.exit(3)
 
34
 
 
35
if len(sys.argv) != 3:
 
36
    sys.stderr.write("Usage: %s <projectname> <testname>\n" % sys.argv[0])
 
37
    sys.stderr.write("Pipe json test data to this script to insert it into the"
 
38
                     "database.\n")
 
39
    sys.exit(1)
 
40
 
 
41
project = sys.argv[1]
 
42
test = sys.argv[2]
 
43
 
 
44
if sys.stdin.isatty():
 
45
    sys.stderr.write("Error: Pipe json test data through this script,"
 
46
                     "like so:\n")
 
47
    sys.stderr.write("$ cat test_data | %s %s %s\n" %
 
48
                     (sys.argv[0], project, test))
 
49
    sys.exit(2)
 
50
 
 
51
data = sys.stdin.read()
 
52
try:
 
53
    json.loads(data)
 
54
except ValueError as e:
 
55
    sys.stderr.write("Error: Data does not appear to be valid json: %s\n" % e)
 
56
    sys.exit(3)
 
57
 
 
58
test_session = OAuth1Session(
 
59
    client_access_key,
 
60
    resource_owner_key=resource_owner_key,
 
61
    resource_owner_secret=resource_owner_secret
 
62
)
 
63
url = '/'.join((backend, project, test))
 
64
r = test_session.post(url, dict(data=data.encode()))
 
65
print(r.text)
 
66
if '403 Forbidden' in r.text:
 
67
    sys.stderr.write('Check your credentials, particularly for \\\\.\n')
 
68
    sys.stderr.write('RESOURCE_OWNER_SECRET is sensitive to that.\n')
 
69
    sys.exit(4)