def delete(self): ''' Destructor: ''' if not self.valid: return self.valid = False #Remove from GlobalCollection DPSClientHost.Host_Delete_All(self.domain, self.location.ip_value) #Remove self from VNID_Broadcast_Updates_To for key in DpsCollection.VNID_Broadcast_Updates_To.keys(): try: tuple_value = DpsCollection.VNID_Broadcast_Updates_To[key] dps_client = tuple_value[1] if dps_client == self: del DpsCollection.VNID_Broadcast_Updates_To[key] except Exception: pass #Remove self from DPS Client Updates for key in DpsCollection.Policy_Updates_To.keys(): try: tuple_value = DpsCollection.Policy_Updates_To[key] dps_client = tuple_value[1] if dps_client == self: del DpsCollection.Policy_Updates_To[key] except Exception: pass #Remove from Gateway_Updates_To for key in DpsCollection.Gateway_Updates_To.keys(): try: tuple_value = DpsCollection.Gateway_Updates_To[key] dps_client = tuple_value[1] if dps_client == self: del DpsCollection.Gateway_Updates_To[key] except Exception: pass #Remove from VNID_Multicast_Updates_To for key in DpsCollection.VNID_Multicast_Updates_To.keys(): try: tuple_value = DpsCollection.VNID_Multicast_Updates_To[key] dps_client = tuple_value[1] if dps_client == self: del DpsCollection.VNID_Multicast_Updates_To[key] except Exception: pass #Remove from Address_Resolution_Requests_To for key in DpsCollection.Address_Resolution_Requests_To.keys(): try: tuple_value = DpsCollection.Address_Resolution_Requests_To[key] dps_client = tuple_value[1] if dps_client == self: del DpsCollection.Address_Resolution_Requests_To[key] except Exception: continue for tunnel in self.Tunnel_Endpoints_Hash_IPv4.values(): tunnel.delete() for tunnel in self.Tunnel_Endpoints_Hash_IPv6.values(): tunnel.delete() Domain.dps_client_delete(self.domain, self)
def tunnel_endpoint_delete(self, tunnel_endpoint): ''' Removes a Tunnel Endpoint from the collection @param tunnel_endpoint: The Tunnel Endpoint @type tunnel_endpoint: TunnelEndpoint Object ''' #log.info('DPSClient.tunnel_endpoint_delete %s', tunnel_endpoint.primary_ip().show()) ip_list = tunnel_endpoint.ip_listv4.ip_list for ip_value in ip_list: try: del self.Tunnel_Endpoints_Hash_IPv4[ip_value] except Exception: pass ip_list = tunnel_endpoint.ip_listv6.ip_list for ip_value in ip_list: try: del self.Tunnel_Endpoints_Hash_IPv6[ip_value] except Exception: pass if ((len(self.Tunnel_Endpoints_Hash_IPv4) == 0) and (len(self.Tunnel_Endpoints_Hash_IPv6) == 0)): #log.info('DPSClient.tunnel_endpoint_delete: No tunnel endpoints') #No other tunnels attached Domain.dps_client_delete(self.domain, self)
def tunnel_endpoint_delete_IP(self, inet_type, ip_value): ''' Deletes a Tunnel Endpoint Physical IP Address to the Domain Collection @param tunnel_endpoint: The Tunnel Endpoint @type tunnel_endpoint: TunnelEndpoint Object @param inet_type: AF_INET or AF_INET6 @type inet_type: Integer @param ip_value: The IP address value @type ip_value: Integer or String ''' if inet_type == socket.AF_INET: ip_hash = self.Tunnel_Endpoints_Hash_IPv4 else: ip_hash = self.Tunnel_Endpoints_Hash_IPv6 try: del ip_hash[ip_value] except Exception: pass if ((len(self.Tunnel_Endpoints_Hash_IPv4) == 0) and (len(self.Tunnel_Endpoints_Hash_IPv6) == 0)): #log.info('DPSClient.tunnel_endpoint_delete: No tunnel endpoints') #No other tunnels attached Domain.dps_client_delete(self.domain, self) return