diff --git a/systemvm/debian/opt/cloud/bin/cs/CsAddress.py b/systemvm/debian/opt/cloud/bin/cs/CsAddress.py index 10b6d3cfdbe..ab0cee60039 100755 --- a/systemvm/debian/opt/cloud/bin/cs/CsAddress.py +++ b/systemvm/debian/opt/cloud/bin/cs/CsAddress.py @@ -524,15 +524,16 @@ class CsIP: CsHelper.execute("sudo ip route add throw " + self.config.address().dbag['eth1'][0]['network'] + " table " + tableName + " proto static") # add 'defaul via gateway' rule in the device specific routing table - if "gateway" in self.address and self.address["gateway"] != "None": + if "gateway" in self.address and self.address["gateway"] and self.address["gateway"] != "None": route.add_route(self.dev, self.address["gateway"]) - route.add_network_route(self.dev, str(self.address["network"])) + if "network" in self.address and self.address["network"]: + route.add_network_route(self.dev, str(self.address["network"])) if self.get_type() in ["public"]: CsRule(self.dev).addRule("from " + str(self.address["network"])) if self.config.is_vpc(): - if self.get_type() in ["public"] and "gateway" in self.address and self.address["gateway"] != "None": + if self.get_type() in ["public"] and "gateway" in self.address and self.address["gateway"] and self.address["gateway"] != "None": route.add_route(self.dev, self.address["gateway"]) for inf, addresses in self.config.address().dbag.iteritems(): if not inf.startswith("eth"): diff --git a/systemvm/debian/opt/cloud/bin/cs/CsRoute.py b/systemvm/debian/opt/cloud/bin/cs/CsRoute.py index 47d3d2a91af..ce87bb0533c 100755 --- a/systemvm/debian/opt/cloud/bin/cs/CsRoute.py +++ b/systemvm/debian/opt/cloud/bin/cs/CsRoute.py @@ -50,20 +50,29 @@ class CsRoute: """ Wrapper method that adds table name and device to route statement """ # ip route add dev eth1 table Table_eth1 10.0.2.0/24 table = self.get_tablename(dev) - logging.info("Adding route: dev " + dev + " table: " + - table + " network: " + address + " if not present") - cmd = "dev %s table %s %s" % (dev, table, address) - cmd = "default via %s table %s proto static" % (address, table) - self.set_route(cmd) + + if not table or not address: + empty_param = "table" if not table else "address" + logging.info("Empty parameter received %s while trying to add route, skipping" % empty_param) + else: + logging.info("Adding route: dev " + dev + " table: " + + table + " network: " + address + " if not present") + cmd = "default via %s table %s proto static" % (address, table) + self.set_route(cmd) def add_network_route(self, dev, address): """ Wrapper method that adds table name and device to route statement """ # ip route add dev eth1 table Table_eth1 10.0.2.0/24 table = self.get_tablename(dev) - logging.info("Adding route: dev " + dev + " table: " + - table + " network: " + address + " if not present") - cmd = "throw %s table %s proto static" % (address, table) - self.set_route(cmd) + + if not table or not address: + empty_param = "table" if not table else "address" + logging.info("Empty parameter received %s while trying to add network route, skipping" % empty_param) + else: + logging.info("Adding route: dev " + dev + " table: " + + table + " network: " + address + " if not present") + cmd = "throw %s table %s proto static" % (address, table) + self.set_route(cmd) def set_route(self, cmd, method="add"): """ Add a route if it is not already defined """