cc1  v2.1
CC1 source code docs
 All Classes Namespaces Files Functions Variables Pages
public_ip.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.public_ip
22 # @author Maciej Nabozny <mn@mnabozny.pl>
23 # @alldecoratedby{src.cm.utils.decorators.ni_log}
24 #
25 
26 from cm.utils.decorators import ci_log
27 from cm.models.node import Node
28 from cm.utils import log
29 from cm.utils.exception import CMException
30 from common.states import vm_states
31 
32 
33 @ci_log(log=True)
34 ##
35 #
36 # @cmview_ci
37 # @param_post{remote_ip,string}
38 #
39 def get_list(remote_ip):
40  try:
41  node = Node.objects.get(address=remote_ip)
42  except:
43  log.error(0, 'Cannot find node: %s' % remote_ip)
44  raise CMException('node_not_found')
45 
46  vms = node.vm_set.filter(state__in=[vm_states['running'], vm_states['running ctx'], vm_states['init']]).all()
47  public_leases = []
48  for vm in vms:
49  for lease in vm.lease_set.all():
50  if lease.publicip_set.count() != 0:
51  d = {}
52  d['vm_id'] = vm.id
53  d['private_lease'] = lease.vm_address
54  d['public_lease'] = lease.publicip_set.all()[0].address
55  public_leases.append(d)
56  return public_leases
57