~mvo/software-center/testenv-cleanup

« back to all changes in this revision

Viewing changes to utils/piston-helpers/piston_get_scagent_available_apps.py

  • Committer: Michael Vogt
  • Date: 2012-01-13 17:09:26 UTC
  • Revision ID: michael.vogt@ubuntu.com-20120113170926-phj4z6w2shab8hle
utils/piston-helpers/piston_get_scagent_available_apps.py: remove leftover from piston-mini-client cleanup work

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/python
2
 
 
3
 
import argparse
4
 
import logging
5
 
import os
6
 
import pickle
7
 
import sys
8
 
 
9
 
import piston_mini_client.auth
10
 
 
11
 
from softwarecenter.paths import SOFTWARE_CENTER_CACHE_DIR
12
 
from softwarecenter.backend.piston.scaclient import SoftwareCenterAgentAPI
13
 
 
14
 
LOG = logging.getLogger(__name__)
15
 
 
16
 
from softwarecenter.backend.piston.sso_helper import SSOLoginHelper
17
 
 
18
 
if __name__ == "__main__":
19
 
    logging.basicConfig()
20
 
 
21
 
    # command line parser
22
 
    parser = argparse.ArgumentParser(description="Helper for software-center-agent")
23
 
    parser.add_argument("--debug", action="store_true", default=False,
24
 
                        help="enable debug output")
25
 
    parser.add_argument("--ignore-cache", action="store_true", default=False,
26
 
                        help="force ignore cache")
27
 
    parser.add_argument("--parent-xid", default=0,
28
 
                        help="xid of the parent window")
29
 
 
30
 
    subparser = parser.add_subparsers(title="Commands")
31
 
    # available_apps
32
 
    command = subparser.add_parser("available_apps")
33
 
    command.add_argument("lang")
34
 
    command.add_argument("series")
35
 
    command.add_argument("arch")
36
 
    command.set_defaults(command="available_apps")
37
 
 
38
 
    # available_apps_qa
39
 
    command = subparser.add_parser("available_apps_qa")
40
 
    command.add_argument("lang")
41
 
    command.add_argument("series")
42
 
    command.add_argument("arch")
43
 
    command.set_defaults(command="available_apps_qa")
44
 
    # subscriptions
45
 
    command = subparser.add_parser("subscriptions_for_me")
46
 
    command.set_defaults(command="subscriptions_for_me")
47
 
    # exhibits
48
 
    command = subparser.add_parser("exhibits")
49
 
    command.add_argument("lang")
50
 
    command.add_argument("series")
51
 
    command.set_defaults(command="exhibits")
52
 
 
53
 
    args = parser.parse_args()
54
 
 
55
 
    if args.debug:
56
 
        LOG.setLevel(logging.DEBUG)
57
 
 
58
 
    if args.ignore_cache:
59
 
        cachedir = None
60
 
    else:
61
 
        cachedir = os.path.join(SOFTWARE_CENTER_CACHE_DIR, "scaclient")
62
 
 
63
 
 
64
 
    # check if auth is required
65
 
    if args.command in ("available_apps_qa", "subscriptions_for_me"):
66
 
        helper = SSOLoginHelper(args.parent_xid)
67
 
        token = helper.get_oauth_token_and_verify_sync()
68
 
        # if we don't have a token, error here
69
 
        if not token:
70
 
            sys.stderr.write("ERROR: can not obtain a oauth token\n")
71
 
            sys.exit(1)
72
 
        
73
 
        auth = piston_mini_client.auth.OAuthAuthorizer(token["token"],
74
 
                                                       token["token_secret"],
75
 
                                                       token["consumer_key"],
76
 
                                                       token["consumer_secret"])
77
 
        scaclient = SoftwareCenterAgentAPI(cachedir=cachedir, auth=auth)
78
 
    else:
79
 
        scaclient = SoftwareCenterAgentAPI(cachedir=cachedir)
80
 
        
81
 
    piston_reply = None
82
 
 
83
 
    # common kwargs
84
 
    if args.command in ("available_apps", "available_apps_qa"):
85
 
        kwargs = {"lang": args.lang,
86
 
                  "series": args.series,
87
 
                  "arch": args.arch
88
 
                  }
89
 
 
90
 
    # handle the args
91
 
    if args.command == "available_apps":
92
 
        try:
93
 
            piston_reply = scaclient.available_apps(**kwargs)
94
 
        except:
95
 
            LOG.exception("available_apps")
96
 
            sys.exit(1)
97
 
 
98
 
    elif args.command == "available_apps_qa":
99
 
        try:
100
 
            piston_reply = scaclient.available_apps_qa(**kwargs)
101
 
        except:
102
 
            LOG.exception("available_apps_qa")
103
 
            sys.exit(1)
104
 
    elif args.command == "subscriptions_for_me":
105
 
        try:
106
 
            piston_reply = scaclient.subscriptions_for_me(complete_only=True)
107
 
            # the new piston API send the data in a nasty format, most
108
 
            # interessting stuff is in the "application" dict, move it
109
 
            # back int othe main object here so that the parser understands it
110
 
            for item in piston_reply:
111
 
                for k, v in item.application.iteritems():
112
 
                    setattr(item, k, v)
113
 
        except:
114
 
            LOG.exception("subscriptions_for_me")
115
 
            sys.exit(1)
116
 
    if args.command == "exhibits":
117
 
        try:
118
 
            piston_reply = scaclient.exhibits(lang=args.lang, series=args.series)
119
 
        except:
120
 
            LOG.exception("exhibits")
121
 
            sys.exit(1)
122
 
 
123
 
    if args.debug:
124
 
        LOG.debug("reply: %s" % piston_reply)
125
 
        for item in piston_reply:
126
 
            for var in vars(item):
127
 
                print "%s: %s" % (var, getattr(item, var))
128
 
            print "\n\n"
129
 
 
130
 
 
131
 
    # print to stdout where its consumed by the parent
132
 
    if piston_reply is not None:
133
 
        try:
134
 
            print pickle.dumps(piston_reply)
135
 
        except IOError:
136
 
            # this can happen if the parent gets killed, no need to trigger
137
 
            # apport for this
138
 
            pass