public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gentoostats:master commit in: client/gentoostats/, client/
@ 2011-06-23 15:14 Vikraman Choudhury
  0 siblings, 0 replies; 7+ messages in thread
From: Vikraman Choudhury @ 2011-06-23 15:14 UTC (permalink / raw
  To: gentoo-commits

commit:     ee168db7e81a1787630638eea8f1fbe859befd30
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Thu Jun 23 15:12:33 2011 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Thu Jun 23 15:12:33 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=ee168db7

add cmdline options to client

---
 client/gentoostats-send       |   37 +++++++++++++++++++++++++++----------
 client/gentoostats/payload.py |    2 +-
 2 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/client/gentoostats-send b/client/gentoostats-send
index b118e94..ecc0be8 100755
--- a/client/gentoostats-send
+++ b/client/gentoostats-send
@@ -1,15 +1,16 @@
 #!/usr/bin/env python
 
-from gentoostats.payload import Payload
-import ConfigParser
 import sys
 import json
+import argparse
+import ConfigParser
 import urllib, httplib
+from gentoostats.payload import Payload
 
-def getAuthInfo(auth='/etc/gentoostats/auth.cfg'):
+def getAuthInfo(auth):
   config = ConfigParser.ConfigParser()
   if len(config.read(auth)) == 0:
-	sys.stderr.write('Cannot read '+auth)
+	sys.stderr.write('Cannot read ' + auth)
 	sys.exit(1)
 
   try:
@@ -31,15 +32,31 @@ def serialize(object, human=False):
   return json.JSONEncoder(indent=indent, sort_keys=sort_keys).encode(object)
 
 def main():
-  pl = Payload()
+  parser = argparse.ArgumentParser(description='Gentoostats client')
+  parser.add_argument('-s', '--server', default='soc.dev.gentoo.org')
+  parser.add_argument('-p', '--port', type = int, default=80)
+  parser.add_argument('-u', '--url', default='/gentoostats')
+  parser.add_argument('-a', '--auth', default='/etc/gentoostats/auth.cfg')
+  parser.add_argument('-c', '--config', default='/etc/gentoostats/payload.cfg')
+  args = vars(parser.parse_args())
+
+  pl = Payload(configfile=args['config'])
   pl.dump(human=True)
+
   post_data = pl.get()
-  post_data['AUTH'] = getAuthInfo()
+  post_data['AUTH'] = getAuthInfo(auth=args['auth'])
+
+  post_url = args['url'].strip('/')
+  if not len(post_url) == 0:
+	post_url = '/' + post_url
+  post_url = post_url + '/host/' + post_data['AUTH']['UUID']
+
   post_body = serialize(post_data,human=True)
-  post_headers = {"Content-type": "application/json"}
-  myuuid = getAuthInfo()['UUID']
-  conn = httplib.HTTPConnection("127.0.0.1:8080")
-  conn.request('POST', '/host/' + myuuid, headers=post_headers, body=post_body)
+  post_headers = {'Content-type':'application/json'}
+
+  conn = httplib.HTTPConnection(args['server'] + ':' + str(args['port']))
+  conn.request('POST', url=post_url, headers=post_headers, body=post_body)
+
   #TODO: Handle exceptions
   response = conn.getresponse()
   print response.status, response.reason

diff --git a/client/gentoostats/payload.py b/client/gentoostats/payload.py
index 756496c..22f736e 100644
--- a/client/gentoostats/payload.py
+++ b/client/gentoostats/payload.py
@@ -8,7 +8,7 @@ from gentoostats.metadata import Metadata
 
 class Payload(object):
 
-  def __init__(self, configfile='/etc/gentoostats/payload.cfg'):
+  def __init__(self, configfile):
 	self.config = ConfigParser.ConfigParser()
 	if len(self.config.read(configfile)) == 0:
 	  sys.stderr.write('Cannot read ' + configfile)



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] proj/gentoostats:master commit in: client/gentoostats/, client/
@ 2011-07-25 12:35 Vikraman Choudhury
  0 siblings, 0 replies; 7+ messages in thread
From: Vikraman Choudhury @ 2011-07-25 12:35 UTC (permalink / raw
  To: gentoo-commits

commit:     bce6d47cdd40c24d26b8241a882263c602b166df
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Mon Jul 25 12:35:20 2011 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Mon Jul 25 12:35:20 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=bce6d47c

gentoostats-cli first commit

---
 client/gentoostats-cli     |   28 +++++++++++++
 client/gentoostats/list.py |   97 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 125 insertions(+), 0 deletions(-)

diff --git a/client/gentoostats-cli b/client/gentoostats-cli
new file mode 100755
index 0000000..cee0da1
--- /dev/null
+++ b/client/gentoostats-cli
@@ -0,0 +1,28 @@
+#!/usr/bin/env python
+
+import sys
+import importlib
+
+actions = {'list':'gentoostats.list', 'search':'gentooostats.search'}
+
+def print_usage():
+    print 'Usage:', sys.argv[0], '<action>'
+    print 'Available actions:'
+    for action in actions.keys():
+        print action
+
+def main():
+    argc = len(sys.argv)
+    if argc == 1:
+        print_usage()
+        sys.exit(1)
+    try:
+        loaded_module = importlib.import_module(actions[sys.argv[1]])
+        loaded_module.main(opts=sys.argv[2:])
+    except KeyError, ImportError:
+        sys.stderr.writelines('Unknown action')
+        sys.exit(1)
+
+
+if __name__ == "__main__":
+    main()

diff --git a/client/gentoostats/list.py b/client/gentoostats/list.py
new file mode 100644
index 0000000..480587c
--- /dev/null
+++ b/client/gentoostats/list.py
@@ -0,0 +1,97 @@
+
+import sys
+import json
+import httplib
+
+objects={
+'arch':'list_arch',
+'feature':'list_feature',
+'lang':'list_lang',
+'mirror':'list_mirror',
+'repo':'list_repo',
+'category':'list_cat',
+}
+
+server = 'soc.dev.gentoo.org'
+url = '/gentoostats'
+headers = {'Accept':'application/json'}
+
+def print_usage():
+    print 'Usage: list <object>'
+    print 'Available objects:'
+    for obj in objects.keys():
+        print obj
+
+def pprint(object):
+    import pprint
+    pprint.pprint(object)
+
+def main(opts):
+    l = len(opts)
+    if l == 0:
+        print_usage()
+        sys.exit(1)
+
+    if opts[0] not in objects:
+        sys.stderr.write('Unknown object')
+        sys.exit(1)
+
+    try:
+        globals()[objects[opts[0]]]()
+    except KeyError:
+        sys.stderr.write('Unimplemented')
+        sys.exit(1)
+
+def list_arch():
+    conn = httplib.HTTPSConnection(server)
+    conn.request('GET', url=url+'/arch', headers=headers)
+    try:
+        arch_data = json.JSONDecoder().decode(conn.getresponse().read())
+    except ValueError:
+        sys.exit(1)
+    pprint(arch_data)
+
+def list_feature():
+    conn = httplib.HTTPSConnection(server)
+    conn.request('GET', url=url+'/feature', headers=headers)
+    try:
+        feature_data = json.JSONDecoder().decode(conn.getresponse().read())
+    except ValueError:
+        sys.exit(1)
+    pprint(feature_data)
+
+def list_lang():
+    conn = httplib.HTTPSConnection(server)
+    conn.request('GET', url=url+'/lang', headers=headers)
+    try:
+        lang_data = json.JSONDecoder().decode(conn.getresponse().read())
+    except ValueError:
+        sys.exit(1)
+    pprint(lang_data)
+
+def list_mirror():
+    conn = httplib.HTTPSConnection(server)
+    conn.request('GET', url=url+'/mirror', headers=headers)
+    try:
+        mirror_data = json.JSONDecoder().decode(conn.getresponse().read())
+    except ValueError:
+        sys.exit(1)
+    pprint(mirror_data)
+
+def list_repo():
+    conn = httplib.HTTPSConnection(server)
+    conn.request('GET', url=url+'/mirror', headers=headers)
+    try:
+        repo_data = json.JSONDecoder().decode(conn.getresponse().read())
+    except ValueError:
+        sys.exit(1)
+    pprint(repo_data)
+
+def list_cat():
+    conn = httplib.HTTPSConnection(server)
+    conn.request('GET', url=url+'/package', headers=headers)
+    try:
+        cat_data = json.JSONDecoder().decode(conn.getresponse().read())
+    except ValueError:
+        sys.exit(1)
+    pprint(cat_data)



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] proj/gentoostats:master commit in: client/gentoostats/, client/
@ 2011-08-01 22:24 Vikraman Choudhury
  0 siblings, 0 replies; 7+ messages in thread
From: Vikraman Choudhury @ 2011-08-01 22:24 UTC (permalink / raw
  To: gentoo-commits

commit:     8755eeaee5daad8a51ffab361ce2e01422272f69
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Mon Aug  1 22:23:54 2011 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Mon Aug  1 22:23:54 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=8755eeae

reworked gentoostats-cli code

---
 client/gentoostats-cli      |   35 ++++-------
 client/gentoostats/list.py  |  139 +++++++++++++++++++++++--------------------
 client/gentoostats/utils.py |    2 +
 3 files changed, 89 insertions(+), 87 deletions(-)

diff --git a/client/gentoostats-cli b/client/gentoostats-cli
index c8a5222..6a237fc 100755
--- a/client/gentoostats-cli
+++ b/client/gentoostats-cli
@@ -1,31 +1,22 @@
 #!/usr/bin/env python
 
-import sys
-import importlib
+import argparse
 
-actions = {
-        'list': 'gentoostats.list',
-        'search': 'gentooostats.search'
-        }
-
-def print_usage(actions):
-    print 'Usage:', sys.argv[0], '<action>'
-    print 'Available actions:'
-    for action in actions.keys():
-        print action
+from gentoostats import list
+#from gentoostats import search
 
 def main():
-    argc = len(sys.argv)
-    if argc == 1:
-        print_usage(actions)
-        sys.exit(1)
-    try:
-        loaded_module = importlib.import_module(actions[sys.argv[1]])
-        loaded_module.main(opts=sys.argv[2:])
-    except KeyError, ImportError:
-        sys.stderr.writelines('Unknown action')
-        sys.exit(1)
+    parser = argparse.ArgumentParser()
+    parser.add_argument('-s', '--server', default='soc.dev.gentoo.org')
+    parser.add_argument('-u', '--url', default='/gentoostats')
+
+    subparsers = parser.add_subparsers()
+
+    list.add_parser(subparsers)
+#    search.add_parser(subparsers)
 
+    args = parser.parse_args()
+    args.func(args)
 
 if __name__ == "__main__":
     main()

diff --git a/client/gentoostats/list.py b/client/gentoostats/list.py
index 3cf60cf..6ee62cb 100644
--- a/client/gentoostats/list.py
+++ b/client/gentoostats/list.py
@@ -1,84 +1,93 @@
 
-import sys
-import json
-import httplib
 import utils
 
-objects = {
-        'arch': 'list_arch',
-        'feature': 'list_feature',
-        'lang': 'list_lang',
-        'mirror': 'list_mirror',
-        'repo': 'list_repo',
-        'cat': 'list_cat',
-        'cp': 'list_cp',
-        'cpv': 'list_cpv'
-        }
-
-server = 'soc.dev.gentoo.org'
-url = '/gentoostats'
-headers = {'Accept': 'application/json'}
-
-def print_usage(objects):
-    print 'Usage: list <object>'
-    print 'Available objects:'
-    for obj in objects.keys():
-        print obj
-
 def pprint(title, object):
-    print title
+    # TODO: write a custom pretty printer here
     import pprint
+    print title
     pprint.pprint(object)
 
-def main(opts):
-    l = len(opts)
-    if l == 0:
-        print_usage(objects)
-        sys.exit(1)
-
-    if opts[0] not in objects:
-        sys.stderr.write('Unknown object')
-        sys.exit(1)
-
-    try:
-        globals()[objects[opts[0]]](server, url, headers)
-    except KeyError:
-        sys.stderr.write('Unimplemented')
-        sys.exit(1)
-
-def list(server, url_base, url_extra, headers):
-    get_data = utils.GET(server=server, url=url_base+url_extra, headers=headers)
-    data = utils.deserialize(get_data)
-    return data
-
-def list_arch(server, url, headers):
-    data = list(server, url, '/arch', headers)
+def add_parser(subparsers):
+    # TODO: add help and descriptions for all opts
+    list_parser = subparsers.add_parser('list')
+    list_subparsers = list_parser.add_subparsers()
+
+    objects = {
+            'arch': ['parser_arch', list_arch],
+            'feature': ['parser_feature', list_feature],
+            'lang': ['parser_lang', list_lang],
+            'mirror': ['parser_mirror', list_mirror],
+            'repo': ['parser_repo', list_repo],
+            'package': ['parser_package', list_package],
+            'use': ['parser_use', list_use]
+            }
+    for obj in objects.keys():
+        parser = vars()[objects[obj][0]] = list_subparsers.add_parser(obj)
+        parser.set_defaults(func=objects[obj][1])
+
+    # need separate arguments for package
+    parser = vars()[objects['package'][0]]
+    parser.add_argument('-t', '--top', type=int)
+    parser.add_argument('-c', '--category')
+    parser.add_argument('-p', '--package')
+    parser.add_argument('-v', '--version')
+
+    # need separate arguments for use
+    parser = vars()[objects['use'][0]]
+    parser.add_argument('--use')
+
+def list_arch(args):
+    data = list(args.server, args.url, '/arch', utils.headers)
     pprint('Arch', data)
 
-def list_feature(server, url, headers):
-    data = list(server, url, '/feature', headers)
+def list_feature(args):
+    data = list(args.server, args.url, '/feature', utils.headers)
     pprint('Feature', data)
 
-def list_lang(server, url, headers):
-    data = list(server, url, '/lang', headers)
+def list_lang(args):
+    data = list(args.server, args.url, '/lang', utils.headers)
     pprint('Lang', data)
 
-def list_mirror(server, url, headers):
-    data = list(server, url, '/mirror', headers)
+def list_mirror(args):
+    data = list(args.server, args.url, '/mirror', utils.headers)
     pprint('Mirror', data)
 
-def list_repo(server, url, headers):
-    data = list(server, url, '/repo', headers)
+def list_repo(args):
+    data = list(args.server, args.url, '/repo', utils.headers)
     pprint('Repo', data)
 
-def list_cat(server, url, headers):
-    data = list(server, url, '/package', headers)
-    pprint('Category', data)
+def list_package(args):
+    url_top = ''
+    if args.top:
+        url_top = '?top=' + str(args.top)
+
+    title = 'Categories'
+    url_pkg = '/package'
+    if args.category:
+        title = 'Category: ' + args.category
+        url_pkg += '/' + args.category
+        if args.package:
+            title = 'Category-Package: ' + args.category + '/' + args.package
+            url_pkg += '/' + args.package
+            if args.version:
+                title = 'Category-Package-Version: ' + args.category + '/' + args.package + '-' + args.version
+                url_pkg += '-' + args.version
+
+    data = list(args.server, args.url, url_pkg + url_top, utils.headers)
+    pprint(title, data)
+
+def list_use(args):
+    url_use = '/use'
+    title = 'Useflags'
+    if args.use:
+        title = 'Useflag: ' + args.use
+        url_use += '/' + args.use
+
+    data = list(args.server, args.url, url_use, utils.headers)
+    pprint(title, data)
 
-def list_cp(server, url, headers):
-    data = list(server, url, '/package', headers)
-    pprint('Category/Package', data)
 
-def list_cpv(server, url, headers):
-    data = list(server, url, '/package', headers)
-    pprint('Category/Package-Version', data)
+def list(server, url_base, url_extra, headers):
+    get_data = utils.GET(server=server, url=url_base+url_extra, headers=headers)
+    data = utils.deserialize(get_data)
+    return data

diff --git a/client/gentoostats/utils.py b/client/gentoostats/utils.py
index ae520f2..98f8375 100644
--- a/client/gentoostats/utils.py
+++ b/client/gentoostats/utils.py
@@ -2,6 +2,8 @@
 import json
 import httplib
 
+headers = {'Accept': 'application/json'}
+
 def GET(server, url, headers, https=True):
     if https:
         conn = httplib.HTTPSConnection(server)



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] proj/gentoostats:master commit in: client/gentoostats/, client/
@ 2011-08-01 22:24 Vikraman Choudhury
  0 siblings, 0 replies; 7+ messages in thread
From: Vikraman Choudhury @ 2011-08-01 22:24 UTC (permalink / raw
  To: gentoo-commits

commit:     9fc558e2719e01c5ad25e55124e45a662ebb5fc0
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Mon Jul 25 22:22:55 2011 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Mon Jul 25 22:22:55 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=9fc558e2

misc fixes

---
 client/gentoostats-cli      |    9 ++-
 client/gentoostats/list.py  |  109 +++++++++++++++++++------------------------
 client/gentoostats/utils.py |   22 +++++++++
 3 files changed, 76 insertions(+), 64 deletions(-)

diff --git a/client/gentoostats-cli b/client/gentoostats-cli
index cee0da1..c8a5222 100755
--- a/client/gentoostats-cli
+++ b/client/gentoostats-cli
@@ -3,9 +3,12 @@
 import sys
 import importlib
 
-actions = {'list':'gentoostats.list', 'search':'gentooostats.search'}
+actions = {
+        'list': 'gentoostats.list',
+        'search': 'gentooostats.search'
+        }
 
-def print_usage():
+def print_usage(actions):
     print 'Usage:', sys.argv[0], '<action>'
     print 'Available actions:'
     for action in actions.keys():
@@ -14,7 +17,7 @@ def print_usage():
 def main():
     argc = len(sys.argv)
     if argc == 1:
-        print_usage()
+        print_usage(actions)
         sys.exit(1)
     try:
         loaded_module = importlib.import_module(actions[sys.argv[1]])

diff --git a/client/gentoostats/list.py b/client/gentoostats/list.py
index 480587c..3cf60cf 100644
--- a/client/gentoostats/list.py
+++ b/client/gentoostats/list.py
@@ -2,34 +2,38 @@
 import sys
 import json
 import httplib
+import utils
 
-objects={
-'arch':'list_arch',
-'feature':'list_feature',
-'lang':'list_lang',
-'mirror':'list_mirror',
-'repo':'list_repo',
-'category':'list_cat',
-}
+objects = {
+        'arch': 'list_arch',
+        'feature': 'list_feature',
+        'lang': 'list_lang',
+        'mirror': 'list_mirror',
+        'repo': 'list_repo',
+        'cat': 'list_cat',
+        'cp': 'list_cp',
+        'cpv': 'list_cpv'
+        }
 
 server = 'soc.dev.gentoo.org'
 url = '/gentoostats'
-headers = {'Accept':'application/json'}
+headers = {'Accept': 'application/json'}
 
-def print_usage():
+def print_usage(objects):
     print 'Usage: list <object>'
     print 'Available objects:'
     for obj in objects.keys():
         print obj
 
-def pprint(object):
+def pprint(title, object):
+    print title
     import pprint
     pprint.pprint(object)
 
 def main(opts):
     l = len(opts)
     if l == 0:
-        print_usage()
+        print_usage(objects)
         sys.exit(1)
 
     if opts[0] not in objects:
@@ -37,61 +41,44 @@ def main(opts):
         sys.exit(1)
 
     try:
-        globals()[objects[opts[0]]]()
+        globals()[objects[opts[0]]](server, url, headers)
     except KeyError:
         sys.stderr.write('Unimplemented')
         sys.exit(1)
 
-def list_arch():
-    conn = httplib.HTTPSConnection(server)
-    conn.request('GET', url=url+'/arch', headers=headers)
-    try:
-        arch_data = json.JSONDecoder().decode(conn.getresponse().read())
-    except ValueError:
-        sys.exit(1)
-    pprint(arch_data)
+def list(server, url_base, url_extra, headers):
+    get_data = utils.GET(server=server, url=url_base+url_extra, headers=headers)
+    data = utils.deserialize(get_data)
+    return data
 
-def list_feature():
-    conn = httplib.HTTPSConnection(server)
-    conn.request('GET', url=url+'/feature', headers=headers)
-    try:
-        feature_data = json.JSONDecoder().decode(conn.getresponse().read())
-    except ValueError:
-        sys.exit(1)
-    pprint(feature_data)
+def list_arch(server, url, headers):
+    data = list(server, url, '/arch', headers)
+    pprint('Arch', data)
 
-def list_lang():
-    conn = httplib.HTTPSConnection(server)
-    conn.request('GET', url=url+'/lang', headers=headers)
-    try:
-        lang_data = json.JSONDecoder().decode(conn.getresponse().read())
-    except ValueError:
-        sys.exit(1)
-    pprint(lang_data)
+def list_feature(server, url, headers):
+    data = list(server, url, '/feature', headers)
+    pprint('Feature', data)
 
-def list_mirror():
-    conn = httplib.HTTPSConnection(server)
-    conn.request('GET', url=url+'/mirror', headers=headers)
-    try:
-        mirror_data = json.JSONDecoder().decode(conn.getresponse().read())
-    except ValueError:
-        sys.exit(1)
-    pprint(mirror_data)
+def list_lang(server, url, headers):
+    data = list(server, url, '/lang', headers)
+    pprint('Lang', data)
 
-def list_repo():
-    conn = httplib.HTTPSConnection(server)
-    conn.request('GET', url=url+'/mirror', headers=headers)
-    try:
-        repo_data = json.JSONDecoder().decode(conn.getresponse().read())
-    except ValueError:
-        sys.exit(1)
-    pprint(repo_data)
+def list_mirror(server, url, headers):
+    data = list(server, url, '/mirror', headers)
+    pprint('Mirror', data)
 
-def list_cat():
-    conn = httplib.HTTPSConnection(server)
-    conn.request('GET', url=url+'/package', headers=headers)
-    try:
-        cat_data = json.JSONDecoder().decode(conn.getresponse().read())
-    except ValueError:
-        sys.exit(1)
-    pprint(cat_data)
+def list_repo(server, url, headers):
+    data = list(server, url, '/repo', headers)
+    pprint('Repo', data)
+
+def list_cat(server, url, headers):
+    data = list(server, url, '/package', headers)
+    pprint('Category', data)
+
+def list_cp(server, url, headers):
+    data = list(server, url, '/package', headers)
+    pprint('Category/Package', data)
+
+def list_cpv(server, url, headers):
+    data = list(server, url, '/package', headers)
+    pprint('Category/Package-Version', data)

diff --git a/client/gentoostats/utils.py b/client/gentoostats/utils.py
new file mode 100644
index 0000000..ae520f2
--- /dev/null
+++ b/client/gentoostats/utils.py
@@ -0,0 +1,22 @@
+
+import json
+import httplib
+
+def GET(server, url, headers, https=True):
+    if https:
+        conn = httplib.HTTPSConnection(server)
+    else:
+        conn = httplib.HTTPConnection(server)
+    try:
+        conn.request('GET', url=url, headers=headers)
+        data = conn.getresponse().read()
+    except httplib.HTTPException:
+        return None
+    return data
+
+def deserialize(object):
+    try:
+        decoded = json.JSONDecoder().decode(object)
+    except (ValueError, TypeError):
+        return None
+    return decoded



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] proj/gentoostats:master commit in: client/gentoostats/, client/
@ 2011-08-01 23:04 Vikraman Choudhury
  0 siblings, 0 replies; 7+ messages in thread
From: Vikraman Choudhury @ 2011-08-01 23:04 UTC (permalink / raw
  To: gentoo-commits

commit:     a1a9949f57f294cd001d8589fdc727de9c19aae8
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Mon Aug  1 23:03:09 2011 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Mon Aug  1 23:03:09 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=a1a9949f

add search to gentoostats-cli

---
 client/gentoostats-cli       |    4 ++--
 client/gentoostats/search.py |   37 +++++++++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/client/gentoostats-cli b/client/gentoostats-cli
index 6a237fc..a22ccc7 100755
--- a/client/gentoostats-cli
+++ b/client/gentoostats-cli
@@ -3,7 +3,7 @@
 import argparse
 
 from gentoostats import list
-#from gentoostats import search
+from gentoostats import search
 
 def main():
     parser = argparse.ArgumentParser()
@@ -13,7 +13,7 @@ def main():
     subparsers = parser.add_subparsers()
 
     list.add_parser(subparsers)
-#    search.add_parser(subparsers)
+    search.add_parser(subparsers)
 
     args = parser.parse_args()
     args.func(args)

diff --git a/client/gentoostats/search.py b/client/gentoostats/search.py
new file mode 100644
index 0000000..165733e
--- /dev/null
+++ b/client/gentoostats/search.py
@@ -0,0 +1,37 @@
+
+import utils
+
+def pprint(title, object):
+    # TODO: write a custom pretty printer here
+    import pprint
+    print title
+    pprint.pprint(object)
+
+def add_parser(subparsers):
+    # TODO: add help and descriptions for all opts
+    search_parser = subparsers.add_parser('search')
+    search_parser.add_argument('-c', '--category')
+    search_parser.add_argument('-p', '--package')
+    search_parser.add_argument('-v', '--version')
+    search_parser.add_argument('-r', '--repo')
+    search_parser.add_argument('--min_hosts', type=int)
+    search_parser.add_argument('--max_hosts', type=int)
+    search_parser.set_defaults(func=search)
+
+def search(args):
+    url_base = '/search'
+    url_extra = ''
+
+    url_extra += ('?', '&')[bool(url_extra)] + 'cat=' + args.category if args.category else ''
+    url_extra += ('?', '&')[bool(url_extra)] + 'pkg=' + args.package if args.package else ''
+    url_extra += ('?', '&')[bool(url_extra)] + 'ver=' + args.version if args.version else ''
+    url_extra += ('?', '&')[bool(url_extra)] + 'repo=' + args.repo if args.repo else ''
+    url_extra += ('?', '&')[bool(url_extra)] + 'min_hosts=' + str(args.min_hosts) if args.min_hosts else ''
+    url_extra += ('?', '&')[bool(url_extra)] + 'max_hosts=' + str(args.max_hosts) if args.max_hosts else ''
+
+    print args.server + args.url + url_base + url_extra
+
+    get_data = utils.GET(server = args.server, url = args.url + url_base + url_extra, headers = utils.headers)
+    data = utils.deserialize(get_data)
+
+    pprint ('Search results', data)



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] proj/gentoostats:master commit in: client/gentoostats/, client/
@ 2011-08-21 23:15 Vikraman Choudhury
  0 siblings, 0 replies; 7+ messages in thread
From: Vikraman Choudhury @ 2011-08-21 23:15 UTC (permalink / raw
  To: gentoo-commits

commit:     015b806f241c76d31611c7bcf565c89c6af84bfc
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Sun Aug 21 23:02:27 2011 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Sun Aug 21 23:02:27 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=015b806f

fix exceptions

---
 client/gentoostats-send      |   18 ++++++++++--------
 client/gentoostats/list.py   |    6 ++----
 client/gentoostats/search.py |    6 ++----
 3 files changed, 14 insertions(+), 16 deletions(-)

diff --git a/client/gentoostats-send b/client/gentoostats-send
index 49dcb83..324b2bc 100755
--- a/client/gentoostats-send
+++ b/client/gentoostats-send
@@ -4,7 +4,7 @@ import sys
 import json
 import argparse
 import ConfigParser
-import urllib, httplib
+import httplib
 from gentoostats.payload import Payload
 
 def getAuthInfo(auth):
@@ -63,13 +63,15 @@ def main():
     post_body = serialize(post_data, human=True)
     post_headers = {'Content-type':'application/json'}
 
-    conn = httplib.HTTPSConnection(args['server'] + ':' + str(args['port']))
-    conn.request('POST', url=post_url, headers=post_headers, body=post_body)
-
-    #TODO: Handle exceptions
-    response = conn.getresponse()
-    print response.status, response.reason
-    print 'Server response: ' + response.read()
+    try:
+        conn = httplib.HTTPSConnection(args['server'] + ':' + str(args['port']))
+        conn.request('POST', url=post_url, headers=post_headers, body=post_body)
+        response = conn.getresponse()
+        print response.status, response.reason
+        print 'Server response: ' + response.read()
+    except httplib.HTTPException:
+        sys.stderr.write('Something went wrong')
+        sys.exit(1)
 
 if __name__ == "__main__":
     main()

diff --git a/client/gentoostats/list.py b/client/gentoostats/list.py
index 78ec0e4..3140041 100644
--- a/client/gentoostats/list.py
+++ b/client/gentoostats/list.py
@@ -1,20 +1,18 @@
 
+import pprint as pp
 from gentoostats import utils
 
 def pprint(title, object):
     """
     Pretty printer for the decoded json data
     """
-    # TODO: write a custom pretty printer here
-    import pprint
     print title
-    pprint.pprint(object)
+    pp.pprint(object)
 
 def add_parser(subparsers):
     """
     Setup argparse parsers
     """
-    # TODO: add help and descriptions for all opts
     list_parser = subparsers.add_parser('list')
     list_subparsers = list_parser.add_subparsers()
 

diff --git a/client/gentoostats/search.py b/client/gentoostats/search.py
index dfc4b29..c77c119 100644
--- a/client/gentoostats/search.py
+++ b/client/gentoostats/search.py
@@ -1,20 +1,18 @@
 
+import pprint as pp
 from gentoostats import utils
 
 def pprint(title, object):
     """
     Pretty printer for the decoded json data
     """
-    # TODO: write a custom pretty printer here
-    import pprint
     print title
-    pprint.pprint(object)
+    pp.pprint(object)
 
 def add_parser(subparsers):
     """
     Setup argparse parsers
     """
-    # TODO: add help and descriptions for all opts
     search_parser = subparsers.add_parser('search')
     search_parser.add_argument('-c', '--category')
     search_parser.add_argument('-p', '--package')



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [gentoo-commits] proj/gentoostats:master commit in: client/gentoostats/, client/
@ 2012-04-17 14:15 Vikraman Choudhury
  0 siblings, 0 replies; 7+ messages in thread
From: Vikraman Choudhury @ 2012-04-17 14:15 UTC (permalink / raw
  To: gentoo-commits

commit:     57d76a1e76d77b23ed3e616dae761bc8e6b7021c
Author:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
AuthorDate: Tue Apr 17 14:06:13 2012 +0000
Commit:     Vikraman Choudhury <vikraman.choudhury <AT> gmail <DOT> com>
CommitDate: Tue Apr 17 14:06:13 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gentoostats.git;a=commit;h=57d76a1e

close HTTPConnection in finally block

---
 client/gentoostats-send     |    3 +++
 client/gentoostats/utils.py |    3 +++
 2 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/client/gentoostats-send b/client/gentoostats-send
index 324b2bc..2ae2857 100755
--- a/client/gentoostats-send
+++ b/client/gentoostats-send
@@ -72,6 +72,9 @@ def main():
     except httplib.HTTPException:
         sys.stderr.write('Something went wrong')
         sys.exit(1)
+    finally:
+        if conn:
+            conn.close()
 
 if __name__ == "__main__":
     main()

diff --git a/client/gentoostats/utils.py b/client/gentoostats/utils.py
index 43a3c73..af807c8 100644
--- a/client/gentoostats/utils.py
+++ b/client/gentoostats/utils.py
@@ -18,6 +18,9 @@ def GET(server, url, headers, https=True):
         data = conn.getresponse().read()
     except httplib.HTTPException:
         return None
+    finally:
+        if conn:
+            conn.close()
     return data
 
 def deserialize(object):



^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-04-17 14:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-25 12:35 [gentoo-commits] proj/gentoostats:master commit in: client/gentoostats/, client/ Vikraman Choudhury
  -- strict thread matches above, loose matches on Subject: below --
2012-04-17 14:15 Vikraman Choudhury
2011-08-21 23:15 Vikraman Choudhury
2011-08-01 23:04 Vikraman Choudhury
2011-08-01 22:24 Vikraman Choudhury
2011-08-01 22:24 Vikraman Choudhury
2011-06-23 15:14 Vikraman Choudhury

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox