'Return iSCSI target name with least LUs.'

def _get_target_name(self, volume):

    provider_location = volume.get('provider_location')
    target_names = self.targets.keys()
    if provider_location:
        target_name = provider_location.split(',1    ')[1].split('    ')[0]
        if (not self.targets.get(target_name)):
            self.targets[target_name] = []
        if (not (volume['name'] in self.targets[target_name])):
            self.targets[target_name].append(volume['name'])
    elif (not target_names):
        target_name = self._create_target(0)
        self.targets[target_name].append(volume['name'])
    else:
        target_name = target_names[0]
        for target in target_names:
            if (len(self.targets[target]) < len(self.targets[target_name])):
                target_name = target
        if (len(self.targets[target_name]) >= 20):
            target_name = self._create_target(len(target_names))
        if (not (volume['name'] in self.targets[target_name])):
            self.targets[target_name].append(volume['name'])
    return target_name
