def get_expected_bindings(self):
        """Query the neutron DB for SG->switch interface bindings

        Bindings are returned as a dict of bindings for each switch:
        {<switch1>: set([(intf1, acl_name, direction),
                         (intf2, acl_name, direction)]),
         <switch2>: set([(intf1, acl_name, direction)]),
         ...,
        }
        """
        sg_bindings = db_lib.get_baremetal_sg_bindings()

        all_expected_bindings = collections.defaultdict(set)
        for sg_binding, port_binding in sg_bindings:
            sg_id = sg_binding['security_group_id']
            try:
                binding_profile = json.loads(port_binding.profile)
            except ValueError:
                binding_profile = {}
            switchports = self._get_switchports(binding_profile)
            for switch, intf in switchports:
                ingress_name = self._acl_name(sg_id, n_const.INGRESS_DIRECTION)
                egress_name = self._acl_name(sg_id, n_const.EGRESS_DIRECTION)
                all_expected_bindings[switch].add(
                    (intf, ingress_name, a_const.INGRESS_DIRECTION))
                all_expected_bindings[switch].add(
                    (intf, egress_name, a_const.EGRESS_DIRECTION))
        return all_expected_bindings
Query the neutron DB for SG->switch interface bindings

        Bindings are returned as a dict of bindings for each switch:
        {<switch1>: set([(intf1, acl_name, direction),
                         (intf2, acl_name, direction)]),
         <switch2>: set([(intf1, acl_name, direction)]),
         ...,
        }