'Get the ring, or more specifically, the swift.common.ring.RingData.
This ring data is the minimum required for use of the ring. The ring
builder itself keeps additional data such as when partitions were last
moved.'

def get_ring(self):

    if (not self._ring):
        devs = ([None] * len(self.devs))
        for dev in self._iter_devs():
            devs[dev['id']] = dict(((k, v) for (k, v) in dev.items() if (k not in ('parts', 'parts_wanted'))))
        if (not self._replica2part2dev):
            self._ring = RingData([], devs, self.part_shift)
        else:
            self._ring = RingData([array('H', p2d) for p2d in self._replica2part2dev], devs, self.part_shift, self.next_part_power)
    return self._ring
