'Create vdisk on peer data node.'

def _create_replica(self, volume, metadata):

    try:
        reflection_target_ip = None
        (rt_routing_key, reflection_target_ip) = self._select_rt(volume, metadata)
        LOG.debug('_create_replica    %(rt_key)s    %(rt_ip)s', {'rt_key': rt_routing_key, 'rt_ip': reflection_target_ip})
        metadata_update = {}
        metadata_update['Secondary_datanode_key'] = rt_routing_key
        metadata_update['Secondary_datanode_ip'] = reflection_target_ip
        if ((rt_routing_key is None) or (rt_routing_key == 'NA')):
            return (False, None, metadata_update)
        instance_id = self._get_volume_metadata_value(metadata, 'InstanceId')
        util.message_data_plane(rt_routing_key, 'hyperscale.storage.dm.volume.create', pool_name=POOL_NAME, volume_guid=util.get_guid_with_curly_brackets(volume['id']), display_name=util.get_guid_with_curly_brackets(volume['id']), volume_raw_size=volume['size'], vm_id=util.get_guid_with_curly_brackets(six.text_type(instance_id)), is_reflection_source=0, dn_reflection_factor=1, reflection_src_ip=self.datanode_ip, user_id=util.get_guid_with_curly_brackets(volume['user_id']), project_id=util.get_guid_with_curly_brackets(volume['project_id']), volume_qos=1)
        ret = True
        LOG.debug('Create    volume    sent    to    reflection    target    data    node')
    except (exception.VolumeNotFound, exception.UnableToProcessHyperScaleCmdOutput, exception.ErrorInSendingMsg):
        LOG.error('Exception    in    creating    replica', exc_info=True)
        metadata_update['Secondary_datanode_key'] = 'NA'
        metadata_update['Secondary_datanode_ip'] = 'NA'
        metadata_update['DN_Resiliency'] = 'degraded'
        ret = False
    return (ret, reflection_target_ip, metadata_update)
