-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathport.py
More file actions
67 lines (61 loc) · 2.44 KB
/
port.py
File metadata and controls
67 lines (61 loc) · 2.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#
# This file is protected by Copyright. Please refer to the COPYRIGHT file
# distributed with this source distribution.
#
# This file is part of REDHAWK rest-python.
#
# REDHAWK rest-python is free software: you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option) any
# later version.
#
# REDHAWK rest-python is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
"""
Rest handlers for Ports
"""
import logging
from tornado import web, ioloop
from helper import PortHelper
from model.domain import ResourceNotFound
from tornado import gen
import json
from handler import JsonHandler
from helper import PropertyHelper
class PortHandler(JsonHandler, PropertyHelper, PortHelper):
def initialize(self, kind, redhawk=None, _ioloop=None):
super(PortHandler, self).initialize(redhawk)
self.kind = kind
if not _ioloop:
_ioloop = ioloop.IOLoop.current()
self._ioloop = _ioloop
@gen.coroutine
def get(self, *args):
try:
logging.debug("port kind=%s, path=%s", self.kind, args)
obj, path = yield self.redhawk.get_object_by_path(args, path_type=self.kind)
logging.debug("Found object %s", dir(obj))
if path:
name = path[0]
for port in obj.ports:
if port.name == name:
self._render_json(json.dumps(self.format_port(port)))
break
else:
raise ResourceNotFound('port', name)
else:
self._render_json(json.dumps(self.format_ports(obj.ports)))
except ResourceNotFound, e:
logging.debug('Resource not found %s' % str(e), exc_info=1)
self.set_status(404)
self.write(dict(error='ResourceNotFound', message=str(e)))
except Exception, e:
logging.exception('Error with request %s' % self.request.full_url())
self.set_status(500)
self.write(dict(error='SystemError', message=str(e)))