2 Distributed Cloud Emulator (dcemulator)
3 (c) 2015 by Manuel Peuster <manuel.peuster@upb.de>
8 DCDPID_BASE
= 1000 # start of switch dpid's used for data center switches
11 class Datacenter(object):
13 Represents a logical data center to which compute resources
14 (Docker containers) can be added at runtime.
16 Will also implement resource bookkeeping in later versions.
19 def __init__(self
, name
):
20 self
.net
= None # DCNetwork to which we belong
22 self
.switch
= None # first prototype assumes one "bigswitch" per DC
24 def _get_next_dc_dpid(self
):
31 Each data center is represented by a single switch to which
32 compute resources can be connected at run time.
34 TODO: This will be changed in the future to support multiple networks
37 self
.switch
= self
.net
.mnet
.addSwitch(
38 "%s.s1" % self
.name
, dpid
=hex(self
._get
_next
_dc
_dpid
())[2:])
39 logging
.debug("created data center switch: %s" % str(self
.switch
))
44 def addCompute(self
, name
):
46 Create a new container as compute resource and connect it to this
49 #TODO connect container to DC's swtich
50 d1
= self
.net
.addDocker("%s.%s" % (self
.name
, name
), dimage
="ubuntu")
51 l1
= self
.net
.addLink(d1
, self
.switch
)
53 def removeCompute(self
, name
):
54 #TODO disconnect container to DC's swtich
55 self
.net
.removeDocker("%s.%s" % (self
.name
, name
))