X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fdcemulator%2Fnode.py;h=8e7a63ac08a88ca254661b7f7d19139e85d322e9;hb=7062cee83ca95f51b9f43987e61a434e9e5e32f4;hp=b88913bf4479c9ba7808a06ccc8ed7fcfaf71920;hpb=761c14da6d8c4fcb8d2779dc9b29ab85ff33269e;p=osm%2Fvim-emu.git diff --git a/src/emuvim/dcemulator/node.py b/src/emuvim/dcemulator/node.py index b88913b..8e7a63a 100755 --- a/src/emuvim/dcemulator/node.py +++ b/src/emuvim/dcemulator/node.py @@ -38,7 +38,6 @@ LOG.setLevel(logging.DEBUG) DCDPID_BASE = 1000 # start of switch dpid's used for data center switches - class EmulatorCompute(Docker): """ Emulator specific compute node class. @@ -61,9 +60,17 @@ class EmulatorCompute(Docker): Helper method to receive information about the virtual networks this compute instance is connected to. """ - # format list of tuples (name, Ip, MAC, isUp, status) - return [{'intf_name':str(i), 'ip':i.IP(), 'mac':i.MAC(), 'up':i.isUp(), 'status':i.status()} - for i in self.intfList()] + # get all links and find dc switch interface + networkStatusList = [] + for i in self.intfList(): + vnf_name = self.name + vnf_interface = str(i) + dc_port_name = self.datacenter.net.find_connected_dc_interface(vnf_name, vnf_interface) + # format list of tuples (name, Ip, MAC, isUp, status, dc_portname) + intf_dict = {'intf_name': str(i), 'ip': i.IP(), 'mac': i.MAC(), 'up': i.isUp(), 'status': i.status(), 'dc_portname': dc_port_name} + networkStatusList.append(intf_dict) + + return networkStatusList def getStatus(self): """ @@ -140,7 +147,7 @@ class Datacenter(object): def start(self): pass - def startCompute(self, name, image=None, command=None, network=None, flavor_name="tiny"): + def startCompute(self, name, image=None, command=None, network=None, flavor_name="tiny", **kwargs): """ Create a new container as compute resource and connect it to this data center. @@ -166,15 +173,28 @@ class Datacenter(object): if len(network) < 1: network.append({}) + # apply hard-set resource limits=0 + cpu_percentage = kwargs.get('cpu_percent') + if cpu_percentage: + cpu_period = self.net.cpu_period + cpu_quota = self.net.cpu_period * float(cpu_percentage) + else: + cpu_quota = None + cpu_period = None + # create the container d = self.net.addDocker( "%s" % (name), dimage=image, dcmd=command, datacenter=self, - flavor_name=flavor_name + flavor_name=flavor_name, + cpu_period = cpu_period, + cpu_quota = cpu_quota ) + + # apply resource limits to container if a resource model is defined if self._resource_model is not None: try: