cc1  v2.1
CC1 source code docs
 All Classes Namespaces Files Functions Variables Pages
node.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.ci.node
22 # @author Maciej Nabozny <mn@mnabozny.pl>
23 # @alldecoratedby{src.cm.utils.decorators.ci_log}
24 #
25 
26 from cm.utils.decorators import ci_log
27 from cm.models.node import Node
28 from cm.utils.exception import CMException
29 from common.states import node_states
30 import datetime
31 
32 
33 @ci_log(log=True)
34 ##
35 #
36 # @cmview_ci
37 # @param_post{remote_ip,string}
38 # @param_post{state}
39 # @param_post{comment,string}
40 # @param_post{error,string}
41 #
42 def update_state(remote_ip, state, comment="", error=""):
43  try:
44  node = Node.objects.get(address=remote_ip)
45  except:
46  raise CMException('node_not_found')
47 
48  if node.state == node_states['locked']:
49  return
50 
51  node.state = state
52  if comment != "":
53  date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
54  node.errors = "%s: %s" % (date, comment)
55  else:
56  node.errors = ""
57  node.save()
58