refactored usages of iteritems, itervalues, and iterkeys to be 2/3 compliant
This commit is contained in:
parent
8d6bf54a16
commit
1e98175e35
15 changed files with 116 additions and 66 deletions
|
@ -466,7 +466,8 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
||||||
node = self.get_node(session, request.id, context)
|
node = self.get_node(session, request.id, context)
|
||||||
|
|
||||||
interfaces = []
|
interfaces = []
|
||||||
for interface_id, interface in node._netif.iteritems():
|
for interface_id in node._netif:
|
||||||
|
interface = node._netif[interface_id]
|
||||||
net_id = None
|
net_id = None
|
||||||
if interface.net:
|
if interface.net:
|
||||||
net_id = interface.net.id
|
net_id = interface.net.id
|
||||||
|
@ -628,7 +629,8 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
||||||
logging.debug("get hooks: %s", request)
|
logging.debug("get hooks: %s", request)
|
||||||
session = self.get_session(request.session, context)
|
session = self.get_session(request.session, context)
|
||||||
hooks = []
|
hooks = []
|
||||||
for state, state_hooks in session._hooks.iteritems():
|
for state in session._hooks:
|
||||||
|
state_hooks = session._hooks[state]
|
||||||
for file_name, file_data in state_hooks:
|
for file_name, file_data in state_hooks:
|
||||||
hook = core_pb2.Hook(state=state, file=file_name, data=file_data)
|
hook = core_pb2.Hook(state=state, file=file_name, data=file_data)
|
||||||
hooks.append(hook)
|
hooks.append(hook)
|
||||||
|
@ -645,10 +647,11 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
||||||
logging.debug("get mobility configs: %s", request)
|
logging.debug("get mobility configs: %s", request)
|
||||||
session = self.get_session(request.session, context)
|
session = self.get_session(request.session, context)
|
||||||
response = core_pb2.GetMobilityConfigsResponse()
|
response = core_pb2.GetMobilityConfigsResponse()
|
||||||
for node_id, model_config in session.mobility.node_configurations.iteritems():
|
for node_id in session.mobility.node_configurations:
|
||||||
|
model_config = session.mobility.node_configurations[node_id]
|
||||||
if node_id == -1:
|
if node_id == -1:
|
||||||
continue
|
continue
|
||||||
for model_name in model_config.iterkeys():
|
for model_name in model_config:
|
||||||
if model_name != Ns2ScriptedMobility.name:
|
if model_name != Ns2ScriptedMobility.name:
|
||||||
continue
|
continue
|
||||||
config = session.mobility.get_model_config(node_id, model_name)
|
config = session.mobility.get_model_config(node_id, model_name)
|
||||||
|
@ -687,7 +690,8 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
||||||
def GetServices(self, request, context):
|
def GetServices(self, request, context):
|
||||||
logging.debug("get services: %s", request)
|
logging.debug("get services: %s", request)
|
||||||
services = []
|
services = []
|
||||||
for service in ServiceManager.services.itervalues():
|
for name in ServiceManager.services:
|
||||||
|
service = ServiceManager.services[name]
|
||||||
service_proto = core_pb2.Service(group=service.group, name=service.name)
|
service_proto = core_pb2.Service(group=service.group, name=service.name)
|
||||||
services.append(service_proto)
|
services.append(service_proto)
|
||||||
return core_pb2.GetServicesResponse(services=services)
|
return core_pb2.GetServicesResponse(services=services)
|
||||||
|
@ -846,11 +850,12 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
||||||
logging.debug("get emane model configs: %s", request)
|
logging.debug("get emane model configs: %s", request)
|
||||||
session = self.get_session(request.session, context)
|
session = self.get_session(request.session, context)
|
||||||
response = core_pb2.GetEmaneModelConfigsResponse()
|
response = core_pb2.GetEmaneModelConfigsResponse()
|
||||||
for node_id, model_config in session.emane.node_configurations.iteritems():
|
for node_id in session.emane.node_configurations:
|
||||||
|
model_config = session.emane.node_configurations[node_id]
|
||||||
if node_id == -1:
|
if node_id == -1:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
for model_name in model_config.iterkeys():
|
for model_name in model_config:
|
||||||
model = session.emane.models[model_name]
|
model = session.emane.models[model_name]
|
||||||
config = session.emane.get_model_config(node_id, model_name)
|
config = session.emane.get_model_config(node_id, model_name)
|
||||||
config_groups = get_config_groups(config, model)
|
config_groups = get_config_groups(config, model)
|
||||||
|
|
|
@ -160,7 +160,8 @@ class CoreBroker(object):
|
||||||
logging.info("clearing state")
|
logging.info("clearing state")
|
||||||
self.nodemap_lock.acquire()
|
self.nodemap_lock.acquire()
|
||||||
self.nodemap.clear()
|
self.nodemap.clear()
|
||||||
for server, count in self.nodecounts.iteritems():
|
for server in self.nodecounts:
|
||||||
|
count = self.nodecounts[server]
|
||||||
if count < 1:
|
if count < 1:
|
||||||
self.delserver(server)
|
self.delserver(server)
|
||||||
self.nodecounts.clear()
|
self.nodecounts.clear()
|
||||||
|
@ -200,7 +201,8 @@ class CoreBroker(object):
|
||||||
rlist = []
|
rlist = []
|
||||||
with self.servers_lock:
|
with self.servers_lock:
|
||||||
# build a socket list for select call
|
# build a socket list for select call
|
||||||
for server in self.servers.itervalues():
|
for name in self.servers:
|
||||||
|
server = self.servers[name]
|
||||||
if server.sock is not None:
|
if server.sock is not None:
|
||||||
rlist.append(server.sock)
|
rlist.append(server.sock)
|
||||||
r, _w, _x = select.select(rlist, [], [], 1.0)
|
r, _w, _x = select.select(rlist, [], [], 1.0)
|
||||||
|
@ -349,7 +351,8 @@ class CoreBroker(object):
|
||||||
:rtype: CoreDistributedServer
|
:rtype: CoreDistributedServer
|
||||||
"""
|
"""
|
||||||
with self.servers_lock:
|
with self.servers_lock:
|
||||||
for server in self.servers.itervalues():
|
for name in self.servers:
|
||||||
|
server = self.servers[name]
|
||||||
if server.sock == sock:
|
if server.sock == sock:
|
||||||
return server
|
return server
|
||||||
return None
|
return None
|
||||||
|
@ -1041,7 +1044,8 @@ class CoreBroker(object):
|
||||||
:rtype: bool
|
:rtype: bool
|
||||||
"""
|
"""
|
||||||
with self.servers_lock:
|
with self.servers_lock:
|
||||||
for server in self.servers.itervalues():
|
for name in self.servers:
|
||||||
|
server = self.servers[name]
|
||||||
if not server.instantiation_complete:
|
if not server.instantiation_complete:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -811,7 +811,8 @@ class CoreMessage(object):
|
||||||
"""
|
"""
|
||||||
result = "%s <msgtype = %s, flags = %s>" % (self.__class__.__name__, self.type_str(), self.flag_str())
|
result = "%s <msgtype = %s, flags = %s>" % (self.__class__.__name__, self.type_str(), self.flag_str())
|
||||||
|
|
||||||
for key, value in self.tlv_data.iteritems():
|
for key in self.tlv_data:
|
||||||
|
value = self.tlv_data[key]
|
||||||
try:
|
try:
|
||||||
tlv_type = self.tlv_class.tlv_type_map(key).name
|
tlv_type = self.tlv_class.tlv_type_map(key).name
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
|
|
@ -158,7 +158,8 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
num_sessions = 0
|
num_sessions = 0
|
||||||
|
|
||||||
with self._sessions_lock:
|
with self._sessions_lock:
|
||||||
for _id, session in self.coreemu.sessions.iteritems():
|
for _id in self.coreemu.sessions:
|
||||||
|
session = self.coreemu.sessions[_id]
|
||||||
num_sessions += 1
|
num_sessions += 1
|
||||||
id_list.append(str(_id))
|
id_list.append(str(_id))
|
||||||
|
|
||||||
|
@ -167,10 +168,10 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
name = ""
|
name = ""
|
||||||
name_list.append(name)
|
name_list.append(name)
|
||||||
|
|
||||||
file = session.file_name
|
file_name = session.file_name
|
||||||
if not file:
|
if not file_name:
|
||||||
file = ""
|
file_name = ""
|
||||||
file_list.append(file)
|
file_list.append(file_name)
|
||||||
|
|
||||||
node_count_list.append(str(session.get_node_count()))
|
node_count_list.append(str(session.get_node_count()))
|
||||||
|
|
||||||
|
@ -378,11 +379,13 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.broker.config_type, self.session.broker.name)
|
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.broker.config_type, self.session.broker.name)
|
||||||
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.location.config_type, self.session.location.name)
|
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.location.config_type, self.session.location.name)
|
||||||
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.mobility.config_type, self.session.mobility.name)
|
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.mobility.config_type, self.session.mobility.name)
|
||||||
for model_class in self.session.mobility.models.itervalues():
|
for model_name in self.session.mobility.models:
|
||||||
|
model_class = self.session.mobility.models[model_name]
|
||||||
tlv_data += coreapi.CoreRegisterTlv.pack(model_class.config_type, model_class.name)
|
tlv_data += coreapi.CoreRegisterTlv.pack(model_class.config_type, model_class.name)
|
||||||
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.services.config_type, self.session.services.name)
|
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.services.config_type, self.session.services.name)
|
||||||
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.emane.config_type, self.session.emane.name)
|
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.emane.config_type, self.session.emane.name)
|
||||||
for model_class in self.session.emane.models.itervalues():
|
for model_name in self.session.emane.models:
|
||||||
|
model_class = self.session.emane.models[model_name]
|
||||||
tlv_data += coreapi.CoreRegisterTlv.pack(model_class.config_type, model_class.name)
|
tlv_data += coreapi.CoreRegisterTlv.pack(model_class.config_type, model_class.name)
|
||||||
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.options.config_type, self.session.options.name)
|
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.options.config_type, self.session.options.name)
|
||||||
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.metadata.config_type, self.session.metadata.name)
|
tlv_data += coreapi.CoreRegisterTlv.pack(self.session.metadata.config_type, self.session.metadata.name)
|
||||||
|
@ -904,7 +907,8 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
self.master = True
|
self.master = True
|
||||||
|
|
||||||
# find the session containing this client and set the session to master
|
# find the session containing this client and set the session to master
|
||||||
for session in self.coreemu.sessions.itervalues():
|
for _id in self.coreemu.sessions:
|
||||||
|
session = self.coreemu.sessions[_id]
|
||||||
if self in session.broker.session_clients:
|
if self in session.broker.session_clients:
|
||||||
logging.debug("setting session to master: %s", session.id)
|
logging.debug("setting session to master: %s", session.id)
|
||||||
session.master = True
|
session.master = True
|
||||||
|
@ -995,7 +999,8 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
replies.append(config_response)
|
replies.append(config_response)
|
||||||
elif message_type != ConfigFlags.RESET and config_data.data_values:
|
elif message_type != ConfigFlags.RESET and config_data.data_values:
|
||||||
values = ConfigShim.str_to_dict(config_data.data_values)
|
values = ConfigShim.str_to_dict(config_data.data_values)
|
||||||
for key, value in values.iteritems():
|
for key in values:
|
||||||
|
value = values[key]
|
||||||
self.session.options.set_config(key, value)
|
self.session.options.set_config(key, value)
|
||||||
return replies
|
return replies
|
||||||
|
|
||||||
|
@ -1025,7 +1030,8 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
replies = []
|
replies = []
|
||||||
if message_type == ConfigFlags.REQUEST:
|
if message_type == ConfigFlags.REQUEST:
|
||||||
node_id = config_data.node
|
node_id = config_data.node
|
||||||
data_values = "|".join(["%s=%s" % item for item in self.session.metadata.get_configs().iteritems()])
|
metadata_configs = self.session.metadata.get_configs()
|
||||||
|
data_values = "|".join(["%s=%s" % (x, metadata_configs[x]) for x in metadata_configs])
|
||||||
data_types = tuple(ConfigDataTypes.STRING.value for _ in self.session.metadata.get_configs())
|
data_types = tuple(ConfigDataTypes.STRING.value for _ in self.session.metadata.get_configs())
|
||||||
config_response = ConfigData(
|
config_response = ConfigData(
|
||||||
message_type=0,
|
message_type=0,
|
||||||
|
@ -1038,7 +1044,8 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
replies.append(config_response)
|
replies.append(config_response)
|
||||||
elif message_type != ConfigFlags.RESET and config_data.data_values:
|
elif message_type != ConfigFlags.RESET and config_data.data_values:
|
||||||
values = ConfigShim.str_to_dict(config_data.data_values)
|
values = ConfigShim.str_to_dict(config_data.data_values)
|
||||||
for key, value in values.iteritems():
|
for key in values:
|
||||||
|
value = values[key]
|
||||||
self.session.metadata.set_config(key, value)
|
self.session.metadata.set_config(key, value)
|
||||||
return replies
|
return replies
|
||||||
|
|
||||||
|
@ -1097,7 +1104,8 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
# sort groups by name and map services to groups
|
# sort groups by name and map services to groups
|
||||||
groups = set()
|
groups = set()
|
||||||
group_map = {}
|
group_map = {}
|
||||||
for service_name in ServiceManager.services.itervalues():
|
for name in ServiceManager.services:
|
||||||
|
service_name = ServiceManager.services[name]
|
||||||
group = service_name.group
|
group = service_name.group
|
||||||
groups.add(group)
|
groups.add(group)
|
||||||
group_map.setdefault(group, []).append(service_name)
|
group_map.setdefault(group, []).append(service_name)
|
||||||
|
@ -1212,7 +1220,8 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
raise ValueError("custom service(%s) for node(%s) does not exist", service_name, node_id)
|
raise ValueError("custom service(%s) for node(%s) does not exist", service_name, node_id)
|
||||||
|
|
||||||
values = ConfigShim.str_to_dict(values)
|
values = ConfigShim.str_to_dict(values)
|
||||||
for name, value in values.iteritems():
|
for name in values:
|
||||||
|
value = values[name]
|
||||||
ServiceShim.setvalue(service, name, value)
|
ServiceShim.setvalue(service, name, value)
|
||||||
|
|
||||||
return replies
|
return replies
|
||||||
|
@ -1679,7 +1688,8 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
nodes_data = []
|
nodes_data = []
|
||||||
links_data = []
|
links_data = []
|
||||||
with self.session._nodes_lock:
|
with self.session._nodes_lock:
|
||||||
for node in self.session.nodes.itervalues():
|
for node_id in self.session.nodes:
|
||||||
|
node = self.session.nodes[node_id]
|
||||||
node_data = node.data(message_type=MessageFlags.ADD.value)
|
node_data = node.data(message_type=MessageFlags.ADD.value)
|
||||||
if node_data:
|
if node_data:
|
||||||
nodes_data.append(node_data)
|
nodes_data.append(node_data)
|
||||||
|
@ -1697,7 +1707,9 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
|
|
||||||
# send mobility model info
|
# send mobility model info
|
||||||
for node_id in self.session.mobility.nodes():
|
for node_id in self.session.mobility.nodes():
|
||||||
for model_name, config in self.session.mobility.get_all_configs(node_id).iteritems():
|
mobility_configs = self.session.mobility.get_all_configs(node_id)
|
||||||
|
for model_name in mobility_configs:
|
||||||
|
config = mobility_configs[model_name]
|
||||||
model_class = self.session.mobility.models[model_name]
|
model_class = self.session.mobility.models[model_name]
|
||||||
logging.debug("mobility config: node(%s) class(%s) values(%s)", node_id, model_class, config)
|
logging.debug("mobility config: node(%s) class(%s) values(%s)", node_id, model_class, config)
|
||||||
config_data = ConfigShim.config_data(0, node_id, ConfigFlags.UPDATE.value, model_class, config)
|
config_data = ConfigShim.config_data(0, node_id, ConfigFlags.UPDATE.value, model_class, config)
|
||||||
|
@ -1705,7 +1717,9 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
|
|
||||||
# send emane model info
|
# send emane model info
|
||||||
for node_id in self.session.emane.nodes():
|
for node_id in self.session.emane.nodes():
|
||||||
for model_name, config in self.session.emane.get_all_configs(node_id).iteritems():
|
emane_configs = self.session.emane.get_all_configs(node_id)
|
||||||
|
for model_name in emane_configs:
|
||||||
|
config = emane_configs[model_name]
|
||||||
model_class = self.session.emane.models[model_name]
|
model_class = self.session.emane.models[model_name]
|
||||||
logging.debug("emane config: node(%s) class(%s) values(%s)", node_id, model_class, config)
|
logging.debug("emane config: node(%s) class(%s) values(%s)", node_id, model_class, config)
|
||||||
config_data = ConfigShim.config_data(0, node_id, ConfigFlags.UPDATE.value, model_class, config)
|
config_data = ConfigShim.config_data(0, node_id, ConfigFlags.UPDATE.value, model_class, config)
|
||||||
|
@ -1761,7 +1775,7 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
# send session metadata
|
# send session metadata
|
||||||
metadata_configs = self.session.metadata.get_configs()
|
metadata_configs = self.session.metadata.get_configs()
|
||||||
if metadata_configs:
|
if metadata_configs:
|
||||||
data_values = "|".join(["%s=%s" % item for item in metadata_configs.iteritems()])
|
data_values = "|".join(["%s=%s" % (x, metadata_configs[x]) for x in metadata_configs])
|
||||||
data_types = tuple(ConfigDataTypes.STRING.value for _ in self.session.metadata.get_configs())
|
data_types = tuple(ConfigDataTypes.STRING.value for _ in self.session.metadata.get_configs())
|
||||||
config_data = ConfigData(
|
config_data = ConfigData(
|
||||||
message_type=0,
|
message_type=0,
|
||||||
|
|
|
@ -150,7 +150,7 @@ class ConfigurableManager(object):
|
||||||
:return: list of node ids
|
:return: list of node ids
|
||||||
:rtype: list
|
:rtype: list
|
||||||
"""
|
"""
|
||||||
return [node_id for node_id in self.node_configurations.iterkeys() if node_id != self._default_node]
|
return [x for x in self.node_configurations if x != self._default_node]
|
||||||
|
|
||||||
def config_reset(self, node_id=None):
|
def config_reset(self, node_id=None):
|
||||||
"""
|
"""
|
||||||
|
@ -329,7 +329,8 @@ class ModelManager(ConfigurableManager):
|
||||||
model_config = self.get_model_config(node_id, model_name)
|
model_config = self.get_model_config(node_id, model_name)
|
||||||
if not config:
|
if not config:
|
||||||
config = {}
|
config = {}
|
||||||
for key, value in config.iteritems():
|
for key in config:
|
||||||
|
value = config[key]
|
||||||
model_config[key] = value
|
model_config[key] = value
|
||||||
|
|
||||||
# set as node model for startup
|
# set as node model for startup
|
||||||
|
@ -388,7 +389,8 @@ class ModelManager(ConfigurableManager):
|
||||||
all_configs = {}
|
all_configs = {}
|
||||||
|
|
||||||
models = []
|
models = []
|
||||||
for model_name, config in all_configs.iteritems():
|
for model_name in all_configs:
|
||||||
|
config = all_configs[model_name]
|
||||||
if model_name == ModelManager._default_node:
|
if model_name == ModelManager._default_node:
|
||||||
continue
|
continue
|
||||||
model_class = self.models[model_name]
|
model_class = self.models[model_name]
|
||||||
|
|
|
@ -250,7 +250,8 @@ class EmaneManager(ModelManager):
|
||||||
|
|
||||||
# TODO: drive this from the session object
|
# TODO: drive this from the session object
|
||||||
with self.session._nodes_lock:
|
with self.session._nodes_lock:
|
||||||
for node in self.session.nodes.itervalues():
|
for node_id in self.session.nodes:
|
||||||
|
node = self.session.nodes[node_id]
|
||||||
if nodeutils.is_node(node, NodeTypes.EMANE):
|
if nodeutils.is_node(node, NodeTypes.EMANE):
|
||||||
logging.debug("adding emane node: id(%s) name(%s)", node.id, node.name)
|
logging.debug("adding emane node: id(%s) name(%s)", node.id, node.name)
|
||||||
self.add_node(node)
|
self.add_node(node)
|
||||||
|
@ -318,7 +319,8 @@ class EmaneManager(ModelManager):
|
||||||
self.startdaemons()
|
self.startdaemons()
|
||||||
self.installnetifs()
|
self.installnetifs()
|
||||||
|
|
||||||
for emane_node in self._emane_nodes.itervalues():
|
for node_id in self._emane_nodes:
|
||||||
|
emane_node = self._emane_nodes[node_id]
|
||||||
for netif in emane_node.netifs():
|
for netif in emane_node.netifs():
|
||||||
nems.append((netif.node.name, netif.name, emane_node.getnemid(netif)))
|
nems.append((netif.node.name, netif.name, emane_node.getnemid(netif)))
|
||||||
|
|
||||||
|
@ -552,7 +554,8 @@ class EmaneManager(ModelManager):
|
||||||
Return the number of NEMs emulated locally.
|
Return the number of NEMs emulated locally.
|
||||||
"""
|
"""
|
||||||
count = 0
|
count = 0
|
||||||
for emane_node in self._emane_nodes.itervalues():
|
for node_id in self._emane_nodes:
|
||||||
|
emane_node = self._emane_nodes[node_id]
|
||||||
count += len(emane_node.netifs())
|
count += len(emane_node.netifs())
|
||||||
return count
|
return count
|
||||||
|
|
||||||
|
|
|
@ -100,7 +100,8 @@ class Session(object):
|
||||||
self.options = SessionConfig()
|
self.options = SessionConfig()
|
||||||
if not config:
|
if not config:
|
||||||
config = {}
|
config = {}
|
||||||
for key, value in config.iteritems():
|
for key in config:
|
||||||
|
value = config[key]
|
||||||
self.options.set_config(key, value)
|
self.options.set_config(key, value)
|
||||||
self.metadata = SessionMetaData()
|
self.metadata = SessionMetaData()
|
||||||
|
|
||||||
|
@ -1244,12 +1245,15 @@ class Session(object):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
with self._nodes_lock:
|
with self._nodes_lock:
|
||||||
count = len([x for x in self.nodes.itervalues()
|
count = 0
|
||||||
if not nodeutils.is_node(x, (NodeTypes.PEER_TO_PEER, NodeTypes.CONTROL_NET))])
|
for node_id in self.nodes:
|
||||||
|
node = self.nodes[node_id]
|
||||||
|
is_p2p_ctrlnet = nodeutils.is_node(node, (NodeTypes.PEER_TO_PEER, NodeTypes.CONTROL_NET))
|
||||||
|
is_tap = nodeutils.is_node(node, NodeTypes.TAP_BRIDGE) and not nodeutils.is_node(x, NodeTypes.TUNNEL)
|
||||||
|
if is_p2p_ctrlnet or is_tap:
|
||||||
|
continue
|
||||||
|
|
||||||
# on Linux, GreTapBridges are auto-created, not part of GUI's node count
|
count += 1
|
||||||
count -= len([x for x in self.nodes.itervalues()
|
|
||||||
if nodeutils.is_node(x, NodeTypes.TAP_BRIDGE) and not nodeutils.is_node(x, NodeTypes.TUNNEL)])
|
|
||||||
|
|
||||||
return count
|
return count
|
||||||
|
|
||||||
|
@ -1286,10 +1290,11 @@ class Session(object):
|
||||||
|
|
||||||
# stop node services
|
# stop node services
|
||||||
with self._nodes_lock:
|
with self._nodes_lock:
|
||||||
for obj in self.nodes.itervalues():
|
for node_id in self.nodes:
|
||||||
|
node = self.nodes[node_id]
|
||||||
# TODO: determine if checking for CoreNode alone is ok
|
# TODO: determine if checking for CoreNode alone is ok
|
||||||
if isinstance(obj, core.nodes.base.CoreNodeBase):
|
if isinstance(node, core.nodes.base.CoreNodeBase):
|
||||||
self.services.stop_services(obj)
|
self.services.stop_services(node)
|
||||||
|
|
||||||
# shutdown emane
|
# shutdown emane
|
||||||
self.emane.shutdown()
|
self.emane.shutdown()
|
||||||
|
|
|
@ -73,7 +73,7 @@ class MobilityManager(ModelManager):
|
||||||
logging.warn("skipping mobility configuration for unknown node: %s", node_id)
|
logging.warn("skipping mobility configuration for unknown node: %s", node_id)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
for model_name in self.models.iterkeys():
|
for model_name in self.models:
|
||||||
config = self.get_configs(node_id, model_name)
|
config = self.get_configs(node_id, model_name)
|
||||||
if not config:
|
if not config:
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -120,9 +120,9 @@ class NodeBase(object):
|
||||||
:rtype: list
|
:rtype: list
|
||||||
"""
|
"""
|
||||||
if sort:
|
if sort:
|
||||||
return map(lambda k: self._netif[k], sorted(self._netif.keys()))
|
return [self._netif[x] for x in sorted(self._netif)]
|
||||||
else:
|
else:
|
||||||
return self._netif.itervalues()
|
return self._netif.values()
|
||||||
|
|
||||||
def numnetif(self):
|
def numnetif(self):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -9,7 +9,8 @@ _NODE_MAP = None
|
||||||
|
|
||||||
def _log_map():
|
def _log_map():
|
||||||
global _NODE_MAP
|
global _NODE_MAP
|
||||||
for key, value in _NODE_MAP.iteritems():
|
for key in _NODE_MAP:
|
||||||
|
value = _NODE_MAP[key]
|
||||||
name = None
|
name = None
|
||||||
if value:
|
if value:
|
||||||
name = value.__name__
|
name = value.__name__
|
||||||
|
@ -72,7 +73,7 @@ def get_node_type(node_class):
|
||||||
:rtype: core.enumerations.NodeTypes
|
:rtype: core.enumerations.NodeTypes
|
||||||
"""
|
"""
|
||||||
global _NODE_MAP
|
global _NODE_MAP
|
||||||
node_type_map = {v: k for k, v in _NODE_MAP.iteritems()}
|
node_type_map = {_NODE_MAP[x]: x for x in _NODE_MAP}
|
||||||
return node_type_map.get(node_class)
|
return node_type_map.get(node_class)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -321,7 +321,8 @@ class Sdt(object):
|
||||||
"""
|
"""
|
||||||
nets = []
|
nets = []
|
||||||
with self.session._nodes_lock:
|
with self.session._nodes_lock:
|
||||||
for node in self.session.nodes.itervalues():
|
for node_id in self.session.nodes:
|
||||||
|
node = self.session.nodes[node_id]
|
||||||
if isinstance(node, CoreNetworkBase):
|
if isinstance(node, CoreNetworkBase):
|
||||||
nets.append(node)
|
nets.append(node)
|
||||||
if not isinstance(node, NodeBase):
|
if not isinstance(node, NodeBase):
|
||||||
|
|
|
@ -60,7 +60,8 @@ class ServiceDependencies(object):
|
||||||
:rtype: list[core.coreservices.CoreService]
|
:rtype: list[core.coreservices.CoreService]
|
||||||
"""
|
"""
|
||||||
paths = []
|
paths = []
|
||||||
for service in self.node_services.itervalues():
|
for name in self.node_services:
|
||||||
|
service = self.node_services[name]
|
||||||
if service.name in self.booted:
|
if service.name in self.booted:
|
||||||
logging.debug("skipping service that will already be booted: %s", service.name)
|
logging.debug("skipping service that will already be booted: %s", service.name)
|
||||||
continue
|
continue
|
||||||
|
@ -69,7 +70,7 @@ class ServiceDependencies(object):
|
||||||
if path:
|
if path:
|
||||||
paths.append(path)
|
paths.append(path)
|
||||||
|
|
||||||
if self.booted != set(self.node_services.iterkeys()):
|
if self.booted != set(self.node_services):
|
||||||
raise ValueError("failure to boot all services: %s != %s" % (self.booted, self.node_services.keys()))
|
raise ValueError("failure to boot all services: %s != %s" % (self.booted, self.node_services.keys()))
|
||||||
|
|
||||||
return paths
|
return paths
|
||||||
|
@ -389,8 +390,10 @@ class CoreServices(object):
|
||||||
:rtype: list[tuple]
|
:rtype: list[tuple]
|
||||||
"""
|
"""
|
||||||
configs = []
|
configs = []
|
||||||
for node_id in self.custom_services.iterkeys():
|
for node_id in self.custom_services:
|
||||||
for service in self.custom_services[node_id].itervalues():
|
custom_services = self.custom_services[node_id]
|
||||||
|
for name in custom_services:
|
||||||
|
service = custom_services[name]
|
||||||
configs.append((node_id, service))
|
configs.append((node_id, service))
|
||||||
return configs
|
return configs
|
||||||
|
|
||||||
|
|
|
@ -252,8 +252,7 @@ def hex_dump(s, bytes_per_word=2, words_per_line=8):
|
||||||
while s:
|
while s:
|
||||||
line = s[:total_bytes]
|
line = s[:total_bytes]
|
||||||
s = s[total_bytes:]
|
s = s[total_bytes:]
|
||||||
tmp = map(lambda x: ("%02x" * bytes_per_word) % x,
|
tmp = map(lambda x: ("%02x" * bytes_per_word) % x, zip(*[iter(map(ord, line))] * bytes_per_word))
|
||||||
zip(*[iter(map(ord, line))] * bytes_per_word))
|
|
||||||
if len(line) % 2:
|
if len(line) % 2:
|
||||||
tmp.append("%x" % ord(line[-1]))
|
tmp.append("%x" % ord(line[-1]))
|
||||||
dump += "0x%08x: %s\n" % (count, " ".join(tmp))
|
dump += "0x%08x: %s\n" % (count, " ".join(tmp))
|
||||||
|
|
|
@ -148,7 +148,8 @@ class ServiceElement(object):
|
||||||
def add_files(self):
|
def add_files(self):
|
||||||
# get custom files
|
# get custom files
|
||||||
file_elements = etree.Element("files")
|
file_elements = etree.Element("files")
|
||||||
for file_name, data in self.service.config_data.iteritems():
|
for file_name in self.service.config_data:
|
||||||
|
data = self.service.config_data[file_name]
|
||||||
file_element = etree.SubElement(file_elements, "file")
|
file_element = etree.SubElement(file_elements, "file")
|
||||||
add_attribute(file_element, "name", file_name)
|
add_attribute(file_element, "name", file_name)
|
||||||
file_element.text = data
|
file_element.text = data
|
||||||
|
@ -291,7 +292,9 @@ class CoreXmlWriter(object):
|
||||||
if not options_config:
|
if not options_config:
|
||||||
return
|
return
|
||||||
|
|
||||||
for _id, default_value in self.session.options.default_values().iteritems():
|
default_options = self.session.options.default_values()
|
||||||
|
for _id in default_options:
|
||||||
|
default_value = default_options[_id]
|
||||||
# TODO: should we just save the current config regardless, since it may change?
|
# TODO: should we just save the current config regardless, since it may change?
|
||||||
value = options_config[_id]
|
value = options_config[_id]
|
||||||
if value != default_value:
|
if value != default_value:
|
||||||
|
@ -307,7 +310,8 @@ class CoreXmlWriter(object):
|
||||||
if not config:
|
if not config:
|
||||||
return
|
return
|
||||||
|
|
||||||
for _id, value in config.iteritems():
|
for _id in config:
|
||||||
|
value = config[_id]
|
||||||
add_configuration(metadata_elements, _id, value)
|
add_configuration(metadata_elements, _id, value)
|
||||||
|
|
||||||
if metadata_elements.getchildren():
|
if metadata_elements.getchildren():
|
||||||
|
@ -320,7 +324,8 @@ class CoreXmlWriter(object):
|
||||||
if not all_configs:
|
if not all_configs:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
for model_name, config in all_configs.iteritems():
|
for model_name in all_configs:
|
||||||
|
config = all_configs[model_name]
|
||||||
logging.info("writing emane config node(%s) model(%s)", node_id, model_name)
|
logging.info("writing emane config node(%s) model(%s)", node_id, model_name)
|
||||||
if model_name == -1:
|
if model_name == -1:
|
||||||
emane_configuration = create_emane_config(node_id, self.session.emane.emane_config, config)
|
emane_configuration = create_emane_config(node_id, self.session.emane.emane_config, config)
|
||||||
|
@ -339,12 +344,14 @@ class CoreXmlWriter(object):
|
||||||
if not all_configs:
|
if not all_configs:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
for model_name, config in all_configs.iteritems():
|
for model_name in all_configs:
|
||||||
|
config = all_configs[model_name]
|
||||||
logging.info("writing mobility config node(%s) model(%s)", node_id, model_name)
|
logging.info("writing mobility config node(%s) model(%s)", node_id, model_name)
|
||||||
mobility_configuration = etree.SubElement(mobility_configurations, "mobility_configuration")
|
mobility_configuration = etree.SubElement(mobility_configurations, "mobility_configuration")
|
||||||
add_attribute(mobility_configuration, "node", node_id)
|
add_attribute(mobility_configuration, "node", node_id)
|
||||||
add_attribute(mobility_configuration, "model", model_name)
|
add_attribute(mobility_configuration, "model", model_name)
|
||||||
for name, value in config.iteritems():
|
for name in config:
|
||||||
|
value = config[name]
|
||||||
add_configuration(mobility_configuration, name, value)
|
add_configuration(mobility_configuration, name, value)
|
||||||
|
|
||||||
if mobility_configurations.getchildren():
|
if mobility_configurations.getchildren():
|
||||||
|
@ -363,7 +370,8 @@ class CoreXmlWriter(object):
|
||||||
|
|
||||||
def write_default_services(self):
|
def write_default_services(self):
|
||||||
node_types = etree.Element("default_services")
|
node_types = etree.Element("default_services")
|
||||||
for node_type, services in self.session.services.default_services.iteritems():
|
for node_type in self.session.services.default_services:
|
||||||
|
services = self.session.services.default_services[node_type]
|
||||||
node_type = etree.SubElement(node_types, "node", type=node_type)
|
node_type = etree.SubElement(node_types, "node", type=node_type)
|
||||||
for service in services:
|
for service in services:
|
||||||
etree.SubElement(node_type, "service", name=service)
|
etree.SubElement(node_type, "service", name=service)
|
||||||
|
@ -376,9 +384,12 @@ class CoreXmlWriter(object):
|
||||||
self.devices = etree.SubElement(self.scenario, "devices")
|
self.devices = etree.SubElement(self.scenario, "devices")
|
||||||
|
|
||||||
links = []
|
links = []
|
||||||
for node in self.session.nodes.itervalues():
|
for node_id in self.session.nodes:
|
||||||
|
node = self.session.nodes[node_id]
|
||||||
# network node
|
# network node
|
||||||
if isinstance(node, (core.nodes.base.CoreNetworkBase, core.nodes.physical.Rj45Node)) and not nodeutils.is_node(node, NodeTypes.CONTROL_NET):
|
is_network_or_rj45 = isinstance(node, (core.nodes.base.CoreNetworkBase, core.nodes.physical.Rj45Node))
|
||||||
|
is_controlnet = nodeutils.is_node(node, NodeTypes.CONTROL_NET)
|
||||||
|
if is_network_or_rj45 and not is_controlnet:
|
||||||
self.write_network(node)
|
self.write_network(node)
|
||||||
# device node
|
# device node
|
||||||
elif isinstance(node, core.nodes.base.CoreNodeBase):
|
elif isinstance(node, core.nodes.base.CoreNodeBase):
|
||||||
|
|
|
@ -100,7 +100,8 @@ class CoreXmlDeployment(object):
|
||||||
# servers = self.session.broker.getservernames()
|
# servers = self.session.broker.getservernames()
|
||||||
# servers.remove("localhost")
|
# servers.remove("localhost")
|
||||||
|
|
||||||
for node in self.session.nodes.itervalues():
|
for node_id in self.session.nodes:
|
||||||
|
node = self.session.nodes[node_id]
|
||||||
if isinstance(node, CoreNodeBase):
|
if isinstance(node, CoreNodeBase):
|
||||||
self.add_virtual_host(physical_host, node)
|
self.add_virtual_host(physical_host, node)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue