def update_device_down(self, rpc_context, **kwargs):
     """Device no longer exists on agent"""
     # (TODO) garyk - live migration and port status
     agent_id = kwargs.get("agent_id")
     device = kwargs.get("device")
     LOG.debug("Device %s no longer exists on %s", device, agent_id)
     port = rgos_db.get_port(device)
     if port:
         entry = {"device": device, "exists": True}
         # Set port status to DOWN
         rgos_db.set_port_status(port["id"], q_const.PORT_STATUS_DOWN)
     else:
         entry = {"device": device, "exists": False}
         LOG.debug("%s can not be found in database", device)
     return entry
 def get_device_details(self, rpc_context, **kwargs):
     """Agent requests device details"""
     agent_id = kwargs.get("agent_id")
     device = kwargs.get("device")
     LOG.debug("Device %s details requested from %s", device, agent_id)
     port = rgos_db.get_port(device)
     if port:
         binding = rgos_vlanmgr.get_network_binding(None, port["network_id"])
         entry = {
             "device": device,
             "network_id": port["network_id"],
             "port_id": port["id"],
             "admin_state_up": port["admin_state_up"],
             "network_type": binding.network_type,
             "segmentation_id": binding.segmentation_id,
             "physical_network": binding.physical_network,
         }
         # Set the port status to UP
         rgos_db.set_port_status(port["id"], q_const.PORT_STATUS_ACTIVE)
     else:
         entry = {"device": device}
         LOG.debug("%s can not be found in database", device)
     return entry