'Populate the object based on the SCHEMA and the source objects
:param kwargs: A dict contains the source object at the key defined in
the SCHEMA'

@rpc.if_notifications_enabled
def populate_schema(self, **kwargs):

    for (key, (obj, field)) in self.SCHEMA.items():
        source = kwargs[obj]
        try:
            setattr(self, key, getattr(source, field))
        except (exception.ObjectActionError, NotImplementedError, exception.OrphanedObjectError, ovo_exception.OrphanedObjectError) as e:
            LOG.debug("Defaulting    the    value    of    the    field    '%(field)s'    to    None    in    %(payload)s    due    to    '%(exception)s'", {'field': key, 'payload': self.__class__.__name__, 'exception': e})
            setattr(self, key, None)
    self.populated = True
    self.obj_reset_changes(recursive=True)
