'Check adding a child storage group to a parent storage group.
: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
:returns: error_message or None'

def _check_add_child_sg_to_parent_sg(self, serial_number, child_sg_name, parent_sg_name, extra_specs):

    msg = None
    if self.rest.is_child_sg_in_parent_sg(serial_number, child_sg_name, parent_sg_name):
        LOG.info('Child    sg:    %(child_sg)s    is    already    part    of    parent    storage    group    %(parent_sg)s.', {'child_sg': child_sg_name, 'parent_sg': parent_sg_name})
    else:
        try:
            self.add_child_sg_to_parent_sg(serial_number, child_sg_name, parent_sg_name, extra_specs)
        except Exception as e:
            msg = ('Exception    adding    child    sg    %(child_sg)s    to    %(parent_sg)s.    Exception    received    was    %(e)s' % {'child_sg': child_sg_name, 'parent_sg': parent_sg_name, 'e': six.text_type(e)})
            LOG.error(msg)
    return msg
