| #!/usr/bin/python |
| # |
| # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| __author__ = 'ericli@chromium.org (Eric Li)' |
| |
| |
| import base64 |
| import logging |
| import urllib |
| |
| import security_token |
| |
| |
| def setup_options(parser): |
| logger = logging.getLogger() |
| fmt = '%(levelname)s:%(message)s' |
| dbg_fmt = '%(process)d:' |
| cf = logging.Formatter(dbg_fmt + fmt) |
| c = logging.StreamHandler() |
| c.setFormatter(cf) |
| logger.addHandler(c) |
| logger.setLevel(logging.INFO) |
| parser.add_option('-u', '--url', action='store', type='string', |
| dest='url', help='dashboard url.', |
| default='http://localhost:8080') |
| |
| |
| class BasePoster(object): |
| def __init__(self, url, payload): |
| self.url = url |
| self.payload = payload |
| self.data = {} |
| self.logging_msg = None |
| |
| def get_type(self): |
| raise |
| |
| def post(self): |
| self.data['token'] = security_token.token() |
| self.data['payload'] = base64.encodestring(self.payload.SerializeToString()) |
| try: |
| response = urllib.urlopen(self.url + '/post/' + self.get_type(), |
| urllib.urlencode(self.data)) |
| logging.info(self.logging_msg) |
| logging.info(response.getcode()) |
| |
| except IOError, ioex: |
| if ioex.errno == 'socket error': |
| logging.warn('Remote server is not available') |
| return -1 |
| return 0 |