blob: 791a226cb20c6487249972643d8b87052851c37f [file] [log] [blame]
import os
import pdb
import sys
import tempfile
sys.path.append("/opt/tosca")
from translator.toscalib.tosca_template import ToscaTemplate
from core.models import Instance,User,Network,NetworkTemplate,Port
from xosresource import XOSResource
class XOSPort(XOSResource):
provides = ["tosca.nodes.network.Port"]
xos_model = Port
def get_existing_objs(self):
# Port objects have no name, their unique key is (instance, network)
args = self.get_xos_args(throw_exception=False)
instance = args.get('instance',None)
network = args.get('network',None)
if (not instance) or (not network):
return []
return self.xos_model.objects.filter(**{'instance': instance, 'network': network})
def get_xos_args(self, throw_exception=True):
args = {}
instance_name = self.get_requirement("tosca.relationships.network.BindsTo")
if instance_name:
args["instance"] = self.get_xos_object(Instance, throw_exception, name=instance_name)
net_name = self.get_requirement("tosca.relationships.network.LinksTo")
if net_name:
args["network"] = self.get_xos_object(Network, throw_exception, name=net_name)
return args
def postprocess(self, obj):
pass
def create(self):
xos_args = self.get_xos_args()
if not xos_args.get("instance", None):
raise Exception("Must specify slver when creating port")
if not xos_args.get("network", None):
raise Exception("Must specify network when creating port")
port = Port(**xos_args)
port.caller = self.user
port.save()
self.postprocess(port)
self.info("Created Port '%s' connect instance '%s' to network %s" % (str(port), str(port.instance), str(port.network)))
def delete(self, obj):
super(XOSPort, self).delete(obj)