rename src/nepi/ into just nepi/
[nepi.git] / nepi / resources / linux / ccn / ccnpeek.py
1 #
2 #    NEPI, a framework to manage network experiments
3 #    Copyright (C) 2013 INRIA
4 #
5 #    This program is free software: you can redistribute it and/or modify
6 #    it under the terms of the GNU General Public License version 2 as
7 #    published by the Free Software Foundation;
8 #
9 #    This program is distributed in the hope that it will be useful,
10 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
11 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 #    GNU General Public License for more details.
13 #
14 #    You should have received a copy of the GNU General Public License
15 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 #
17 # Author: Alina Quereilhac <alina.quereilhac@inria.fr>
18
19 from nepi.execution.attribute import Attribute, Flags, Types
20 from nepi.execution.resource import clsinit_copy, ResourceState
21 from nepi.resources.linux.ccn.ccnapplication import LinuxCCNApplication
22
23 import os
24
25 @clsinit_copy
26 class LinuxCCNPeek(LinuxCCNApplication):
27     _rtype = "linux::CCNPeek"
28
29     @classmethod
30     def _register_attributes(cls):
31         content_name = Attribute("contentName",
32             "Content name for the content to peek",
33             flags = Flags.Design)
34
35         cls._register_attribute(content_name)
36
37     def __init__(self, ec, guid):
38         super(LinuxCCNPeek, self).__init__(ec, guid)
39         self._home = "ccnpeek-%s" % self.guid
40
41     def do_deploy(self):
42         if not self.ccnd or self.ccnd.state < ResourceState.READY:
43             self.debug("---- RESCHEDULING DEPLOY ---- node state %s " % self.node.state )
44             self.ec.schedule(self.reschedule_delay, self.deploy)
45         else:
46             command = self.get("command")
47             if not command:
48                 command = "ccnpeek %s" % self.get("contentName")
49                 self.set("command", command) 
50
51             self.info("Deploying command '%s' " % command)
52             
53             if not self.get("env"):
54                 self.set("env", self._environment)
55
56             self.do_discover()
57             self.do_provision()
58
59             self.set_ready()
60
61     def valid_connection(self, guid):
62         # TODO: Validate!
63         return True
64