cc1  v2.1
CC1 source code docs
 All Classes Namespaces Files Functions Variables Pages
monia.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.cm.views.admin_cm.monia
22 # @alldecoratedby{src.cm.utils.decorators.user_log}
23 #
24 # @author Tomek WojtoƄ
25 #
26 
27 from cm.utils.decorators import admin_cm_log
28 from cm.utils.monia import RrdHandler
29 from common.states import stat_resolutions, stat_names, stat_ranges
30 from cm.models.vm import VM
31 
32 
33 @admin_cm_log(log=False)
34 ##
35 #
36 # Function returns requested statistics for specific VM. Stats are returned
37 # in format required by CC1 Web Interface's monitoring javascript.
38 #
39 # @cmview_admin_cm
40 # @param_post{vm_id}
41 # @param_post{stat_name,string|list(string)} type of required statistics
42 # @param_post{time,int} time of last row
43 # @param_post{stat_range,string} time interval between first and last stats
44 # @param_post{resolution,string} statistics resolution
45 #
46 # @response{list} usage of VM resources (format required by CC1 Web Interface)
47 #
48 def vm_stats(caller_id, vm_id, stat_name, time, stat_range, resolution):
49 
50  vm_u = VM.admin_get(vm_id).long_dict['user_id']
51  if type(stat_name) is int:
52  stat_name = [stat_name]
53 
54  n = []
55  for stat in stat_name:
56  n.append(stat_names.keys()[stat_names.values().index(stat)])
57  p = int(stat_ranges.keys()[stat_ranges.values().index(int(stat_range))])
58  r = int(stat_resolutions.keys()[stat_resolutions.values().index(resolution)])
59 
60  return RrdHandler().get_vm_stats('vm-%d-%d' % (vm_id, vm_u), n, int(time) - p, time, r)
61