浏览代码

Add functionality to erase members from networks using file backend in controller microservice

Signed-off-by: Diego Schulz <[email protected]>
Diego Schulz 7 年之前
父节点
当前提交
fc6dba0797
共有 2 个文件被更改,包括 14 次插入1 次删除
  1. 1 0
      controller/EmbeddedNetworkController.cpp
  2. 13 1
      controller/FileDB.cpp

+ 1 - 0
controller/EmbeddedNetworkController.cpp

@@ -1042,6 +1042,7 @@ unsigned int EmbeddedNetworkController::handleControlPlaneHttpDELETE(
 
 
 					json network,member;
 					json network,member;
 					_db->get(nwid,network,address,member);
 					_db->get(nwid,network,address,member);
+                                        _db->eraseMember(nwid, address);
 
 
 					{
 					{
 						std::lock_guard<std::mutex> l(_memberStatus_l);
 						std::lock_guard<std::mutex> l(_memberStatus_l);

+ 13 - 1
controller/FileDB.cpp

@@ -134,12 +134,24 @@ void FileDB::eraseNetwork(const uint64_t networkId)
 	get(networkId,network);
 	get(networkId,network);
 	char p[16384];
 	char p[16384];
 	OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "%.16llx.json",_networksPath.c_str(),networkId);
 	OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "%.16llx.json",_networksPath.c_str(),networkId);
-	OSUtils::rm(p);
+
+	if (OSUtils::fileExists(p,false)){
+	  OSUtils::rm(p);
+        }
 	_networkChanged(network,nullJson,true);
 	_networkChanged(network,nullJson,true);
 }
 }
 
 
 void FileDB::eraseMember(const uint64_t networkId,const uint64_t memberId)
 void FileDB::eraseMember(const uint64_t networkId,const uint64_t memberId)
 {
 {
+	nlohmann::json network,member,nullJson;
+	get(networkId,network);
+        get(memberId,member);
+	char p[16384];
+	OSUtils::ztsnprintf(p,sizeof(p),"%s" ZT_PATH_SEPARATOR_S "%.16llx" ZT_PATH_SEPARATOR_S "member" ZT_PATH_SEPARATOR_S "%.10llx.json",_networksPath.c_str(),networkId,memberId);
+	if (OSUtils::fileExists(p,false)){
+	    OSUtils::rm(p);
+	}
+	_memberChanged(member,nullJson,true);
 }
 }
 
 
 void FileDB::nodeIsOnline(const uint64_t networkId,const uint64_t memberId,const InetAddress &physicalAddress)
 void FileDB::nodeIsOnline(const uint64_t networkId,const uint64_t memberId,const InetAddress &physicalAddress)