Index: appengine/chrome_infra_mon_proxy/common.py |
diff --git a/appengine/chrome_infra_mon_proxy/common.py b/appengine/chrome_infra_mon_proxy/common.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5bc79ce6b89d55849cd2f9be6a1ccf6027e4d03e |
--- /dev/null |
+++ b/appengine/chrome_infra_mon_proxy/common.py |
@@ -0,0 +1,55 @@ |
+# Copyright 2015 The Chromium Authors. All rights reserved. |
ghost stip (do not use)
2015/04/14 00:36:42
rename to something more meaningful like 'credenti
Sergey Berezin (google)
2015/04/15 01:38:09
It is actually a common set of functions, not just
|
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import hashlib |
+import logging |
+import os |
+ |
+from google.appengine.ext import ndb |
+ |
+ |
+CREDENTIALS_KEY = 'credentials_key' |
+ |
+ |
+def is_development_server(): |
ghost stip (do not use)
2015/04/14 00:36:42
there is another implementation of this, meaning i
Sergey Berezin (google)
2015/04/15 01:38:09
I fixed that, it's now the only (common) implement
|
+ return os.environ.get('SERVER_SOFTWARE', '').startswith('Development') |
+ |
+ |
+class MonAcqData(ndb.Model): |
ghost stip (do not use)
2015/04/14 00:36:42
MonAcqCredentials
Sergey Berezin (google)
2015/04/15 01:38:09
It's not only creds, it's also the URL for the end
|
+ """Store the sensitive endpoint data.""" |
+ credentials = ndb.JsonProperty() |
+ url = ndb.StringProperty() |
+ scopes = ndb.StringProperty(repeated=True) |
+ headers = ndb.JsonProperty(default={}) |
+ |
+ |
+def get_data(): |
ghost stip (do not use)
2015/04/14 00:36:42
def _get_datastore_credentials()
Sergey Berezin (google)
2015/04/15 01:38:09
I'm moving this to vm_module.py, it's the only pla
|
+ data_entity = MonAcqData.get_by_id(CREDENTIALS_KEY) |
+ logging.info('get_data(): entity = %r', data_entity) |
+ if not data_entity: |
+ return None |
+ return data_entity.to_dict() |
+ |
+ |
+def get_credentials(credentials_dict, scopes): |
ghost stip (do not use)
2015/04/14 00:36:42
def get_credentials(credentials_dict=None, scopes=
Sergey Berezin (google)
2015/04/16 04:39:06
Moved to vm_module. I don't see the need for defau
|
+ """Obtain Aquisition API credentials as Credentials object.""" |
+ from oauth2client.client import SignedJwtAssertionCredentials |
+ |
ghost stip (do not use)
2015/04/14 00:36:42
credentials_dict = credentials_dict or self._get_d
Sergey Berezin (google)
2015/04/16 04:39:06
Same as above.
|
+ # Ideally, we should have loaded credentials with GoogleCredentials. |
+ # However, it insists to load only from a file. So, here's a hack. |
+ return SignedJwtAssertionCredentials( |
+ service_account_name=credentials_dict['client_email'], |
+ private_key=credentials_dict['private_key'], |
+ scope=scopes, |
+ # Extra **kwargs, just in case. |
+ service_account_id=credentials_dict['client_id'], |
+ private_key_id=credentials_dict['private_key_id'], |
+ ) |
+ |
+ |
+def payload_stats(data): |
+ md5 = hashlib.md5() |
+ md5.update(data) |
+ md5hex = md5.hexdigest() |
+ return 'type=%s, %d bytes, md5=%s' % (type(data), len(data), md5hex) |