blob: 3540dd0c0eedd5d2e4df5e0fd292a33a2473db5f [file] [log] [blame]
Scott Baker7a327592016-06-20 17:34:06 -07001import os
2import pdb
3import sys
4import tempfile
5sys.path.append("/opt/tosca")
6from translator.toscalib.tosca_template import ToscaTemplate
7
8from core.models import ServiceAttribute
9from services.onos.models import ONOSService
10
11from service import XOSService
12
13class XOSONOSService(XOSService):
14 provides = "tosca.nodes.ONOSService"
15 xos_model = ONOSService
16 copyin_props = ["view_url", "icon_url", "enabled", "published", "public_key", "versionNumber", "rest_hostname", "rest_port", "no_container", "node_key"]
17
18 def set_service_attr(self, obj, prop_name, value):
19 value = self.try_intrinsic_function(value)
20 if value:
21 attrs = ServiceAttribute.objects.filter(service=obj, name=prop_name)
22 if attrs:
23 attr = attrs[0]
24 if attr.value != value:
25 self.info("updating attribute %s" % prop_name)
26 attr.value = value
27 attr.save()
28 else:
29 self.info("adding attribute %s" % prop_name)
30 ta = ServiceAttribute(service=obj, name=prop_name, value=value)
31 ta.save()
32
33 def postprocess(self, obj):
34 props = self.nodetemplate.get_properties()
35 for (k,d) in props.items():
36 v = d.value
37 if k.startswith("config_"):
38 self.set_service_attr(obj, k, v)
39 elif k.startswith("rest_") and (k!="rest_hostname") and (k!="rest_port"):
40 self.set_service_attr(obj, k, v)
41