cc1  v2.1
CC1 source code docs
 All Classes Namespaces Files Functions Variables Pages
cm.py
Go to the documentation of this file.
1 # -*- coding: utf-8 -*-
2 # @COPYRIGHT_begin
3 #
4 # Copyright [2010-2014] Institute of Nuclear Physics PAN, Krakow, Poland
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 # http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 #
18 # @COPYRIGHT_end
19 
20 ##
21 # @package src.clm.utils.cm
22 #
23 
24 from clm.models.cluster import Cluster
25 from clm.utils.exception import CLMException
26 from common.utils import ServerProxy
27 from clm.utils import message
28 
29 
30 class CM:
31  ##
32  #
33  # Create object representing CM.
34  #
35  # @parameter{cm_id,int} id of the CM
36  #
37  # @returns{common.utils.ServerProxy} instance of CM proxy server
38  #
39  def __init__(self, cm_id):
40  self.cluster = Cluster.get(cm_id)
41  self.server = ServerProxy('http://%s:%s' % (self.cluster.address, self.cluster.port))
42 
43  ##
44  #
45  # Make request to particular CM.
46  #
47  def send_request(self, *args, **kw):
48  resp = self.server.send_request(*args, **kw)
49  if resp['status'] != 'ok':
50  raise CLMException(resp['status'])
51  if 'messages' in resp:
52  for user_id, msgs in resp['messages'].iteritems():
53  for msg in msgs:
54  msg['cm_id'] = self.cluster.id
55  message.add(user_id, msg)
56  return resp
57