rename src/nepi/ into just nepi/
[nepi.git] / nepi / resources / linux / ns3 / ccn / ns3ccnpokedceapplication.py
1 #
2 #    NEPI, a framework to manage network experiments
3 #    Copyright (C) 2014 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.ns3.ccn.ns3ccndceapplication \
22         import LinuxNS3CCNDceApplication
23
24 import os
25 import tempfile
26
27 @clsinit_copy
28 class LinuxNS3DceCCNPoke(LinuxNS3CCNDceApplication):
29     _rtype = "linux::ns3::dce::CCNPoke"
30
31     @classmethod
32     def _register_attributes(cls):
33         content_name = Attribute("contentName",
34                 "Content name for the requested content object. ",
35                 flags = Flags.Design)
36         content = Attribute("content",
37                 "Content to poke (as a text string). ",
38                 flags = Flags.Design)
39
40         cls._register_attribute(content_name)
41         cls._register_attribute(content)
42
43     def _instantiate_object(self):
44         if not self.get("binary"):
45             self.set("binary", "ccnpoke")
46             
47         if self.get("contentName"):
48             self.set("arguments", self.get("contentName"))
49
50         # Create temporary local file to store content
51         content = self.get("content")
52         f = tempfile.NamedTemporaryFile(delete=False)
53         f.write(content)
54         f.close()
55
56         localpath = f.name
57         dcepath = os.path.join("/tmp", os.path.basename(localpath))
58
59         self.set("environment", "HOME=/root")
60         self.set("files", "%s=%s" % (localpath, dcepath))
61         self.set("stdinFile", dcepath)
62
63         super(LinuxNS3DceCCNPoke, self)._instantiate_object()
64