5e5def02545d5e2fbf639dc99022cfe62d4b93f3
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 remove mnet shortcut to have a clean API
50 #TODO connect container to DC's swtich
51 self
.net
.mnet
.addDocker("%s.%s" % (self
.name
, name
), dimage
="ubuntu")
53 def removeCompute(self
, name
):
54 #TODO remove mnet shortcut to have a clean API
55 #TODO disconnect container to DC's swtich
56 self
.net
.mnet
.removeDocker("%s.%s" % (self
.name
, name
))