'Place the new info in the correct location in the registry.
:param path: a list of keys [\'resources\', \'my_srv\', \'OS::Nova::Server\']'

def _register_info(self, path, info):

    descriptive_path = '/'.join(path)
    name = path[(-1)]
    registry = self._registry
    for key in path[:(-1)]:
        if (key not in registry):
            registry[key] = {}
        registry = registry[key]
    if (info is None):
        if name.endswith('*'):
            for (res_name, reg_info) in list(registry.items()):
                if (isinstance(reg_info, ResourceInfo) and res_name.startswith(name[:(-1)])):
                    LOG.warning('Removing    %(item)s    from    %(path)s', {'item': res_name, 'path': descriptive_path})
                    del registry[res_name]
        else:
            LOG.warning('Removing    %(item)s    from    %(path)s', {'item': name, 'path': descriptive_path})
            registry.pop(name, None)
        return
    if ((name in registry) and isinstance(registry[name], ResourceInfo)):
        if (registry[name] == info):
            return
        details = {'path': descriptive_path, 'was': str(registry[name].value), 'now': str(info.value)}
        LOG.warning('Changing    %(path)s    from    %(was)s    to    %(now)s', details)
    if isinstance(info, ClassResourceInfo):
        if (info.value.support_status.status != support.SUPPORTED):
            if (info.value.support_status.message is not None):
                details = {'name': info.name, 'status': six.text_type(info.value.support_status.status), 'message': six.text_type(info.value.support_status.message)}
                LOG.warning('%(name)s    is    %(status)s.    %(message)s', details)
    info.user_resource = (self.global_registry is not None)
    registry[name] = info
