def test_get_osd_to_host_mapping_osd_down_and_out_from_epoch1(
            self, mocket):
        """
        That we don't get a mapping when osd_map contains osd_metadata no data
        """
        mocket.getnameinfo.return_value = [OSD_HOSTNAME]
        mocket.getfqdn.return_value = OSD_FQDN
        osd_map = {
            "osd_metadata": [],
            "osds": [{
                "cluster_addr": ":/0",
                "down_at": 0,
                "heartbeat_back_addr": ":/0",
                "heartbeat_front_addr": ":/0",
                "in": 0,
                "last_clean_begin": 0,
                "last_clean_end": 0,
                "lost_at": 0,
                "osd": 0,
                "primary_affinity": 1.0,
                "public_addr": ":/0",
                "state": ["exists", "new"],
                "up": 0,
                "up_from": 0,
                "up_thru": 0,
                "uuid": "f53e0a25-d29c-4aa3-9a2e-f6ebee538f8e",
                "weight": 0.0
            }]
        }

        sm = ServerMonitor(Mock(), Mock(), Mock())
        self.assertEqual({}, sm.get_hostname_to_osds(osd_map))
    def test_get_osd_to_host_mapping_osd_metadata_partial_exists(self, mocket):
        """
        That we get a mapping when osd_map contains osd_metadata no data
        """
        mocket.getnameinfo.return_value = [OSD_HOSTNAME]
        mocket.getfqdn.return_value = OSD_FQDN
        osd_map = {
            "osds": [{
                "cluster_addr": "192.34.58.142:6808/14001122",
                "osd": 0
            }, {
                "cluster_addr": "192.34.58.142:6802/17383",
                "osd": 1
            }],
            "osd_metadata": [{
                "back_addr": "192.34.58.142:6808/14001122",
                "hostname": "gravel2",
                "id": 0,
                "hb_back_addr": "192.34.58.142:6809/14001122",
                "hb_front_addr": "192.34.58.142:6810/14001122",
                "front_addr": "192.34.58.142:6800/1122"
            }]
        }

        sm = ServerMonitor(Mock(), Mock(), Mock())
        self.assertEqual(
            {
                ('gravel2.rockery', 'gravel2'): [{
                    'cluster_addr': '192.34.58.142:6808/14001122',
                    'osd': 0
                }, {
                    'cluster_addr': '192.34.58.142:6802/17383',
                    'osd': 1
                }]
            }, sm.get_hostname_to_osds(osd_map))
    def test_get_osd_to_host_mapping_osd_metadata_exists(self, mocket):
        """
        That we get a mapping when osd_map contains osd_metadata no data
        """
        osd_map = {
            "osds": [{
                "cluster_addr": "192.34.58.142:6808/14001122",
                "osd": 0
            }],
            "osd_metadata": [{
                "back_addr": "192.34.58.142:6808/14001122",
                "hostname": "gravel2.rockery",
                "id": 0,
                "hb_back_addr": "192.34.58.142:6809/14001122",
                "hb_front_addr": "192.34.58.142:6810/14001122",
                "front_addr": "192.34.58.142:6800/1122"
            }]
        }

        sm = ServerMonitor(Mock(), Mock(), Mock())
        self.assertEqual(
            {
                ('gravel2.rockery', 'gravel2'): [{
                    'cluster_addr': '192.34.58.142:6808/14001122',
                    'osd': 0
                }]
            }, sm.get_hostname_to_osds(osd_map))

        self.assertEqual(False, mocket.called)
 def test_get_osd_to_host_mapping_empty(self):
     """
     That we get an empty mapping when osd_map contains no data
     """
     osd_map = {'tree': {'nodes': []}, 'osds': []}
     sm = ServerMonitor(Mock(), Mock(), Mock())
     self.assertEqual({}, sm.get_hostname_to_osds(osd_map))
 def test_get_osd_to_host_mapping_osd_metadata_absent(self, mocket):
     """
     That we get a mapping when osd_map contains osd_metadata no data
     """
     mocket.getnameinfo.return_value = [OSD_HOSTNAME]
     mocket.getfqdn.return_value = OSD_FQDN
     osd_map = {
         "osds": [{
             "cluster_addr": "192.34.58.142:6808/14001122",
             "osd": 0
         }]
     }
     sm = ServerMonitor(Mock(), Mock(), Mock())
     self.assertEqual(
         {
             ('gravel2.rockery', 'gravel2'): [{
                 'cluster_addr': '192.34.58.142:6808/14001122',
                 'osd': 0
             }]
         }, sm.get_hostname_to_osds(osd_map))