annotate rhodecode/bin/rhodecode_api.py @ 3574:000653f7cdf9 beta

avoid displaying repr of internal classes in user facing messages The context of the message will tell where the problem was and there is no reason to show ... does not exist for this repository <MercurialRepository at /home/marcink/repos/rhodecode>
author Mads Kiilerich <madski@unity3d.com>
date Thu, 21 Mar 2013 11:17:01 +0100
parents 94a92bd832c5
children 10b4e34841a4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
2 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
3 rhodecode.bin.backup_manager
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
5
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
6 Api CLI client for RhodeCode
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
7
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
8 :created_on: Jun 3, 2012
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
9 :author: marcink
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
11 :license: GPLv3, see COPYING for more details.
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
12 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
13 # This program is free software: you can redistribute it and/or modify
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
14 # it under the terms of the GNU General Public License as published by
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
15 # the Free Software Foundation, either version 3 of the License, or
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
16 # (at your option) any later version.
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
17 #
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
18 # This program is distributed in the hope that it will be useful,
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
21 # GNU General Public License for more details.
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
22 #
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
23 # You should have received a copy of the GNU General Public License
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
24 # along with this program. If not, see <http://www.gnu.org/licenses/>.
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
25
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
26 from __future__ import with_statement
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
27 import os
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
28 import sys
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
29 import random
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
30 import urllib2
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
31 import pprint
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
32 import argparse
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
33
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
34 try:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
35 from rhodecode.lib.ext_json import json
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
36 except ImportError:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
37 try:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
38 import simplejson as json
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
39 except ImportError:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
40 import json
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
41
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
42
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
43 CONFIG_NAME = '.rhodecode'
2381
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
44 FORMAT_PRETTY = 'pretty'
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
45 FORMAT_JSON = 'json'
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
46
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
47
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
48 class RcConf(object):
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
49 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
50 RhodeCode config for API
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
51
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
52 conf = RcConf()
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
53 conf['key']
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
54
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
55 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
56
2571
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
57 def __init__(self, config_location=None, autoload=True, autocreate=False,
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
58 config=None):
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
59 self._conf_name = CONFIG_NAME if not config_location else config_location
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
60 self._conf = {}
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
61 if autocreate:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
62 self.make_config(config)
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
63 if autoload:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
64 self._conf = self.load_config()
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
65
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
66 def __getitem__(self, key):
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
67 return self._conf[key]
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
68
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
69 def __nonzero__(self):
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
70 if self._conf:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
71 return True
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
72 return False
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
73
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
74 def __eq__(self):
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
75 return self._conf.__eq__()
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
76
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
77 def __repr__(self):
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
78 return 'RcConf<%s>' % self._conf.__repr__()
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
79
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
80 def make_config(self, config):
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
81 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
82 Saves given config as a JSON dump in the _conf_name location
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
83
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
84 :param config:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
85 :type config:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
86 """
2571
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
87 update = False
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
88 if os.path.exists(self._conf_name):
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
89 update = True
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
90 with open(self._conf_name, 'wb') as f:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
91 json.dump(config, f, indent=4)
2571
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
92
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
93 if update:
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
94 sys.stdout.write('Updated config in %s\n' % self._conf_name)
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
95 else:
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
96 sys.stdout.write('Created new config in %s\n' % self._conf_name)
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
97
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
98 def update_config(self, new_config):
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
99 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
100 Reads the JSON config updates it's values with new_config and
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
101 saves it back as JSON dump
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
102
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
103 :param new_config:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
104 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
105 config = {}
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
106 try:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
107 with open(self._conf_name, 'rb') as conf:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
108 config = json.load(conf)
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
109 except IOError, e:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
110 sys.stderr.write(str(e) + '\n')
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
111
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
112 config.update(new_config)
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
113 self.make_config(config)
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
114
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
115 def load_config(self):
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
116 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
117 Loads config from file and returns loaded JSON object
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
118 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
119 try:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
120 with open(self._conf_name, 'rb') as conf:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
121 return json.load(conf)
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
122 except IOError, e:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
123 #sys.stderr.write(str(e) + '\n')
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
124 pass
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
125
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
126
2381
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
127 def api_call(apikey, apihost, format, method=None, **kw):
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
128 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
129 Api_call wrapper for RhodeCode
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
130
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
131 :param apikey:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
132 :param apihost:
2381
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
133 :param format: formatting, pretty means prints and pprint of json
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
134 json returns unparsed json
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
135 :param method:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
136 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
137 def _build_data(random_id):
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
138 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
139 Builds API data with given random ID
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
140
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
141 :param random_id:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
142 :type random_id:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
143 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
144 return {
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
145 "id": random_id,
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
146 "api_key": apikey,
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
147 "method": method,
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
148 "args": kw
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
149 }
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
150
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
151 if not method:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
152 raise Exception('please specify method name !')
2505
02fc6ce0cd44 don't make a api call after doing create_config
Marcin Kuzminski <marcin@python-works.com>
parents: 2381
diff changeset
153 id_ = random.randrange(1, 9999)
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
154 req = urllib2.Request('%s/_admin/api' % apihost,
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
155 data=json.dumps(_build_data(id_)),
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
156 headers={'content-type': 'text/plain'})
2381
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
157 if format == FORMAT_PRETTY:
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
158 sys.stdout.write('calling %s to %s \n' % (req.get_data(), apihost))
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
159 ret = urllib2.urlopen(req)
2381
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
160 raw_json = ret.read()
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
161 json_data = json.loads(raw_json)
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
162 id_ret = json_data['id']
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
163 _formatted_json = pprint.pformat(json_data)
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
164 if id_ret == id_:
2381
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
165 if format == FORMAT_JSON:
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
166 sys.stdout.write(str(raw_json))
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
167 else:
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
168 sys.stdout.write('rhodecode returned:\n%s\n' % (_formatted_json))
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
169
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
170 else:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
171 raise Exception('something went wrong. '
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
172 'ID mismatch got %s, expected %s | %s' % (
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
173 id_ret, id_, _formatted_json))
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
174
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
175
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
176 def argparser(argv):
2571
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
177 usage = (
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
178 "rhodecode_api [-h] [--format=FORMAT] [--apikey=APIKEY] [--apihost=APIHOST] "
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
179 " [--config=CONFIG] "
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
180 "_create_config or METHOD <key:val> <key2:val> ..."
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
181 )
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
182
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
183 parser = argparse.ArgumentParser(description='RhodeCode API cli',
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
184 usage=usage)
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
185
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
186 ## config
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
187 group = parser.add_argument_group('config')
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
188 group.add_argument('--apikey', help='api access key')
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
189 group.add_argument('--apihost', help='api host')
2571
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
190 group.add_argument('--config', help='config file')
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
191
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
192 group = parser.add_argument_group('API')
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
193 group.add_argument('method', metavar='METHOD', type=str,
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
194 help='API method name to call followed by key:value attributes',
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
195 )
2381
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
196 group.add_argument('--format', dest='format', type=str,
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
197 help='output format default: `pretty` can '
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
198 'be also `%s`' % FORMAT_JSON,
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
199 default=FORMAT_PRETTY
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
200 )
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
201 args, other = parser.parse_known_args()
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
202 return parser, args, other
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
203
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
204
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
205 def main(argv=None):
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
206 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
207 Main execution function for cli
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
208
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
209 :param argv:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
210 :type argv:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
211 """
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
212 if argv is None:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
213 argv = sys.argv
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
214
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
215 conf = None
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
216 parser, args, other = argparser(argv)
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
217
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
218 api_credentials_given = (args.apikey and args.apihost)
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
219 if args.method == '_create_config':
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
220 if not api_credentials_given:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
221 raise parser.error('_create_config requires --apikey and --apihost')
2571
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
222 conf = RcConf(config_location=args.config,
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
223 autocreate=True, config={'apikey': args.apikey,
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
224 'apihost': args.apihost})
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
225
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
226 if not conf:
2571
94a92bd832c5 added --config option into rhodecode-api script for optional path for
Marcin Kuzminski <marcin@python-works.com>
parents: 2509
diff changeset
227 conf = RcConf(config_location=args.config, autoload=True)
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
228 if not conf:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
229 if not api_credentials_given:
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
230 parser.error('Could not find config file and missing '
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
231 '--apikey or --apihost in params')
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
232
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
233 apikey = args.apikey or conf['apikey']
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
234 host = args.apihost or conf['apihost']
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
235 method = args.method
2505
02fc6ce0cd44 don't make a api call after doing create_config
Marcin Kuzminski <marcin@python-works.com>
parents: 2381
diff changeset
236 if method == '_create_config':
02fc6ce0cd44 don't make a api call after doing create_config
Marcin Kuzminski <marcin@python-works.com>
parents: 2381
diff changeset
237 sys.exit()
2509
955956f4bdda Show proper error on argument parse when using api-cli
Marcin Kuzminski <marcin@python-works.com>
parents: 2505
diff changeset
238
955956f4bdda Show proper error on argument parse when using api-cli
Marcin Kuzminski <marcin@python-works.com>
parents: 2505
diff changeset
239 try:
955956f4bdda Show proper error on argument parse when using api-cli
Marcin Kuzminski <marcin@python-works.com>
parents: 2505
diff changeset
240 margs = dict(map(lambda s: s.split(':', 1), other))
955956f4bdda Show proper error on argument parse when using api-cli
Marcin Kuzminski <marcin@python-works.com>
parents: 2505
diff changeset
241 except:
955956f4bdda Show proper error on argument parse when using api-cli
Marcin Kuzminski <marcin@python-works.com>
parents: 2505
diff changeset
242 sys.stderr.write('Error parsing arguments \n')
955956f4bdda Show proper error on argument parse when using api-cli
Marcin Kuzminski <marcin@python-works.com>
parents: 2505
diff changeset
243 sys.exit()
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
244
2381
e487d2a6aa38 Added optional --format=json into api cli. That will return pure JSON data from server
Marcin Kuzminski <marcin@python-works.com>
parents: 2379
diff changeset
245 api_call(apikey, host, args.format, method, **margs)
2379
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
246 return 0
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
247
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
248 if __name__ == '__main__':
7ac09514a178 created rhodecode-api binary script for working with api via cli
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
249 sys.exit(main(sys.argv))