'Add a child storage group to a parent storage group.
:param default_version: the default uv4 version
:param serial_number: the array serial number
:param child_sg_name: the name of the child storage group
:param parent_sg_name: the name of the aprent storage group
:param extra_specs: the extra specifications'

def add_child_sg_to_parent_sg(self, serial_number, child_sg_name, parent_sg_name, extra_specs, default_version=True):

    start_time = time.time()
    @coordination.synchronized('emc-sg-{child_sg}')
    @coordination.synchronized('emc-sg-{parent_sg}')
    def do_add_sg_to_sg(child_sg, parent_sg):
        if self.rest.is_child_sg_in_parent_sg(serial_number, child_sg_name, parent_sg_name):
            pass
        elif default_version:
            self.rest.add_child_sg_to_parent_sg(serial_number, child_sg, parent_sg, extra_specs)
        else:
            self.rest.add_empty_child_sg_to_parent_sg(serial_number, child_sg, parent_sg, extra_specs)
    do_add_sg_to_sg(child_sg_name, parent_sg_name)
    LOG.debug('Add    child    to    storagegroup    took:    %(delta)s    H:MM:SS.', {'delta': self.utils.get_time_delta(start_time, time.time())})
    LOG.info('Added    child    sg:    %(child_name)s    to    parent    storage    group    %(parent_name)s.', {'child_name': child_sg_name, 'parent_name': parent_sg_name})
