'Add a volume to a storage group.
:param serial_number: array serial number
:param device_id: volume device id
:param storagegroup_name: storage group name
:param volume_name: volume name
:param extra_specs: extra specifications'

def add_volume_to_storage_group(self, serial_number, device_id, storagegroup_name, volume_name, extra_specs):

    start_time = time.time()
    @coordination.synchronized('emc-sg-{sg_name}')
    def do_add_volume_to_sg(sg_name):
        if self.rest.is_volume_in_storagegroup(serial_number, device_id, storagegroup_name):
            LOG.info('Volume:    %(volume_name)s    is    already    part    of    storage    group    %(sg_name)s.', {'volume_name': volume_name, 'sg_name': storagegroup_name})
        else:
            self.rest.add_vol_to_sg(serial_number, sg_name, device_id, extra_specs)
    do_add_volume_to_sg(storagegroup_name)
    LOG.debug('Add    volume    to    storagegroup    took:    %(delta)s    H:MM:SS.', {'delta': self.utils.get_time_delta(start_time, time.time())})
    LOG.info('Added    volume:    %(vol_name)s    to    storage    group    %(sg_name)s.', {'vol_name': volume_name, 'sg_name': storagegroup_name})
