git-svn-id: https://s3tools.svn.sourceforge.net/svnroot/s3tools/s3py/trunk@38 830e0280-6d2a-0410-9c65-932aecc39d9d
Michal Ludvig authored on 2007/01/10 21:52:55... | ... |
@@ -1,5 +1,5 @@ |
1 | 1 |
import logging |
2 |
-from logging import debug, info, warn, error |
|
2 |
+from logging import debug, info, warning, error |
|
3 | 3 |
import re |
4 | 4 |
|
5 | 5 |
class ConfigParser: |
... | ... |
@@ -8,6 +8,7 @@ class ConfigParser: |
8 | 8 |
self.parse_file(file, sections) |
9 | 9 |
|
10 | 10 |
def parse_file(self, file, sections = []): |
11 |
+ info("ConfigParser: Reading file '%s'" % file) |
|
11 | 12 |
if type(sections) != type([]): |
12 | 13 |
sections = [sections] |
13 | 14 |
in_our_section = True |
... | ... |
@@ -33,6 +34,7 @@ class ConfigParser: |
33 | 33 |
debug("ConfigParser: %s->%s" % (data["key"], data["value"])) |
34 | 34 |
self.__setitem__(data["key"], data["value"]) |
35 | 35 |
continue |
36 |
+ warning("Ignoring invalid line in '%s': %s" % (file, line)) |
|
36 | 37 |
|
37 | 38 |
def __getitem__(self, name): |
38 | 39 |
return self.cfg[name] |
... | ... |
@@ -44,8 +46,3 @@ class ConfigParser: |
44 | 44 |
if self.cfg.has_key(name): |
45 | 45 |
return self.cfg[name] |
46 | 46 |
return default |
47 |
- |
|
48 |
-if __name__ == "__main__": |
|
49 |
- logging.basicConfig(level=logging.DEBUG, format='%(levelname)s: %(message)s') |
|
50 |
- parser = ConfigParser("/home/mludvig/.s3cfg") |
|
51 |
- print parser["access_key"] |
... | ... |
@@ -38,6 +38,7 @@ class AwsConfig: |
38 | 38 |
verbosity = cp.get("verbosity", "WARNING") |
39 | 39 |
try: |
40 | 40 |
AwsConfig.verbosity = logging._levelNames[verbosity] |
41 |
+ print "verbosity set to "+verbosity |
|
41 | 42 |
except KeyError: |
42 | 43 |
error("AwsConfig: verbosity level '%s' is not valid" % verbosity) |
43 | 44 |
|
... | ... |
@@ -161,8 +162,18 @@ def cmd_buckets_list_all(args): |
161 | 161 |
bucket["Name"].ljust(maxlen), |
162 | 162 |
) |
163 | 163 |
|
164 |
+def cmd_buckets_list_all_all(args): |
|
165 |
+ s3 = S3(AwsConfig()) |
|
166 |
+ response = s3.list_all_buckets() |
|
167 |
+ |
|
168 |
+ for bucket in response["list"]: |
|
169 |
+ cmd_bucket_list([bucket["Name"]]) |
|
170 |
|
|
171 |
+ |
|
172 |
+ |
|
164 | 173 |
def cmd_bucket_list(args): |
165 | 174 |
bucket = args[0] |
175 |
+ print "Bucket '%s':" % bucket |
|
166 | 176 |
s3 = S3(AwsConfig()) |
167 | 177 |
try: |
168 | 178 |
response = s3.bucket_list(bucket) |
... | ... |
@@ -191,30 +202,37 @@ def cmd_bucket_list(args): |
191 | 191 |
|
192 | 192 |
commands = { |
193 | 193 |
"la" : ("List all buckets", cmd_buckets_list_all, 0), |
194 |
+ "laa" : ("List all object in all buckets", cmd_buckets_list_all_all, 0), |
|
194 | 195 |
"lb" : ("List objects in bucket", cmd_bucket_list, 1), |
195 | 196 |
# "cb" : ("Create bucket", cmd_bucket_create, 1), |
196 | 197 |
# "rb" : ("Remove bucket", cmd_bucket_remove, 1) |
197 | 198 |
} |
198 | 199 |
|
199 | 200 |
if __name__ == '__main__': |
201 |
+ if float("%d.%d" %(sys.version_info[0], sys.version_info[1])) < 2.5: |
|
202 |
+ sys.stderr.write("ERROR: Python 2.5 or higher required, sorry.\n") |
|
203 |
+ exit(1) |
|
204 |
+ |
|
205 |
+ default_verbosity = AwsConfig.verbosity |
|
200 | 206 |
optparser = OptionParser() |
201 | 207 |
optparser.set_defaults(config=os.getenv("HOME")+"/.s3cfg") |
202 | 208 |
optparser.add_option("-c", "--config", dest="config", metavar="FILE", help="Config file name") |
203 |
- optparser.add_option("-d", "--debug", action="store_true", help="Enable debug output") |
|
209 |
+ optparser.set_defaults(verbosity = default_verbosity) |
|
210 |
+ optparser.add_option("-d", "--debug", dest="verbosity", action="store_const", const=logging.DEBUG, help="Enable debug output") |
|
211 |
+ optparser.add_option("-v", "--verbose", dest="verbosity", action="store_const", const=logging.INFO, help="Enable verbose output") |
|
204 | 212 |
(options, args) = optparser.parse_args() |
205 | 213 |
|
206 | 214 |
## Some mucking with logging levels to enable |
207 |
- ## debugging output for config file parser on request |
|
208 |
- init_logging_level = logging.INFO |
|
209 |
- if options.debug: init_logging_level = logging.DEBUG |
|
210 |
- logging.basicConfig(level=init_logging_level, format='%(levelname)s: %(message)s') |
|
215 |
+ ## debugging/verbose output for config file parser on request |
|
216 |
+ logging.basicConfig(level=options.verbosity, format='%(levelname)s: %(message)s') |
|
211 | 217 |
|
212 | 218 |
## Now finally parse the config file |
213 | 219 |
AwsConfig(options.config) |
214 | 220 |
|
215 |
- ## And again some logging level adjustments, argh. |
|
216 |
- if options.debug: |
|
217 |
- AwsConfig.verbosity = logging.DEBUG |
|
221 |
+ ## And again some logging level adjustments |
|
222 |
+ ## according to configfile and command line parameters |
|
223 |
+ if options.verbosity != default_verbosity: |
|
224 |
+ AwsConfig.verbosity = options.verbosity |
|
218 | 225 |
logging.root.setLevel(AwsConfig.verbosity) |
219 | 226 |
|
220 | 227 |
if len(args) < 1: |
... | ... |
@@ -226,7 +244,7 @@ if __name__ == '__main__': |
226 | 226 |
debug("Command: " + commands[command][0]) |
227 | 227 |
## We must do this lookup in extra step to |
228 | 228 |
## avoid catching all KeyError exceptions |
229 |
- ## from inner functions here. |
|
229 |
+ ## from inner functions. |
|
230 | 230 |
cmd_func = commands[command][1] |
231 | 231 |
except KeyError, e: |
232 | 232 |
error("Invalid command: %s" % e) |