def _run(self, client: OpenrCtrl.Client, node_name: str, prefix_str: str) -> None: key = Consts.STATIC_PREFIX_ALLOC_PARAM_KEY # Retrieve previous allocation resp = client.getKvStoreKeyVals([key]) allocs = None if key in resp.keyVals: allocs = serializer.deserialize_thrift_object( resp.keyVals.get(key).value, alloc_types.StaticAllocation) else: allocs = alloc_types.StaticAllocation(nodePrefixes={}) # Return if there is no change prefix = ipnetwork.ip_str_to_prefix(prefix_str) if allocs.nodePrefixes.get(node_name) == prefix: print("No changes needed. {}'s prefix is already set to {}".format( node_name, prefix_str)) return # Update value in KvStore allocs.nodePrefixes[node_name] = prefix value = serializer.serialize_thrift_object(allocs) super(AllocationsSetCmd, self)._run(client, key, value, "breeze", None, Consts.CONST_TTL_INF)
def run_set(self, node_name, prefix_str): key = Consts.STATIC_PREFIX_ALLOC_PARAM_KEY prefix = ipnetwork.ip_str_to_prefix(prefix_str) # Retrieve previous allocation resp = self.client.get_keys([key]) allocs = None if key in resp.keyVals: allocs = serializer.deserialize_thrift_object( resp.keyVals.get(key).value, alloc_types.StaticAllocation ) else: allocs = alloc_types.StaticAllocation(nodePrefixes={}) # Return if there is no change if allocs.nodePrefixes.get(node_name) == prefix: print( "No changes needed. {}'s prefix is already set to {}".format( node_name, prefix_str ) ) return # Update value in KvStore allocs.nodePrefixes[node_name] = prefix value = serializer.serialize_thrift_object(allocs) self.run(key, value, "breeze", None, Consts.CONST_TTL_INF)
def _run(self, client: OpenrCtrl.Client, node_name: str) -> None: area = self.get_area_id() key = Consts.STATIC_PREFIX_ALLOC_PARAM_KEY # Retrieve previous allocation resp = None if area is None: resp = client.getKvStoreKeyVals([key]) else: resp = client.getKvStoreKeyValsArea([key], area) allocs = None if key in resp.keyVals: allocs = serializer.deserialize_thrift_object( resp.keyVals.get(key).value, alloc_types.StaticAllocation) else: allocs = alloc_types.StaticAllocation(nodePrefixes={node_name: ""}) # Return if there need no change if node_name not in allocs.nodePrefixes: print( "No changes needed. {}'s prefix is not set".format(node_name)) return # Update value in KvStore del allocs.nodePrefixes[node_name] value = serializer.serialize_thrift_object(allocs) super(AllocationsUnsetCmd, self)._run(client, key, value, "breeze", None, Consts.CONST_TTL_INF)
def run_unset(self, node_name): key = Consts.STATIC_PREFIX_ALLOC_PARAM_KEY # Retrieve previous allocation resp = self.client.get_keys([key]) allocs = None if key in resp.keyVals: allocs = serializer.deserialize_thrift_object( resp.keyVals.get(key).value, alloc_types.StaticAllocation ) else: allocs = alloc_types.StaticAllocation(nodePrefixes={node_name: ""}) # Return if there need no change if node_name not in allocs.nodePrefixes: print("No changes needed. {}'s prefix is not set".format(node_name)) # Update value in KvStore del allocs.nodePrefixes[node_name] value = serializer.serialize_thrift_object(allocs) self.run(key, value, "breeze", None, Consts.CONST_TTL_INF)