- if args:
- slice_cred = self.get_slice_cred(args[0])
- result = self.slicemgr.get_resources(slice_cred, args[0])
- else:
- user_cred = self.get_user_cred()
- result = self.slicemgr.get_resources(user_cred)
- format = opts.format
- self.display_rspec(result, format)
- if (opts.file is not None):
- self.save_rspec_to_file(result, opts.file)
- return
+ user_cred = self.get_user_cred().save_to_string(save_parents=True)
+ server = self.slicemgr
+ if opts.aggregate:
+ agg_hrn = opts.aggregate
+ arg_list = [user_cred, arg_hrn]
+ request_hash = self.key.compute_hash(arg_list)
+ aggregates = self.registry.get_aggregates(user_cred, agg_hrn, request_hash)
+ if not aggregates:
+ raise Exception, "No such aggregate %s" % agg_hrn
+ aggregate = aggregates[0]
+ url = "http://%s:%s" % (aggregate['addr'], aggregate['port'])
+ server = xmlrpcprotocol.get_server(url, self.key_file, self.cert_file)
+ if args:
+ cred = self.get_slice_cred(args[0]).save_to_string(save_parents=True)
+ hrn = args[0]
+ else:
+ cred = user_cred
+ hrn = None
+
+ arg_list = [cred, hrn]
+ request_hash = self.key.compute_hash(arg_list)
+ result = server.get_resources(cred, hrn, request_hash)
+ format = opts.format
+
+ self.display_rspec(result, format)
+ if (opts.file is not None):
+ self.save_rspec_to_file(result, opts.file)
+ return