'Update all information about a host.'

def update(self, compute=None, service=None, aggregates=None, inst_dict=None):

    @utils.synchronized(self._lock_name)
    def _locked_update(self, compute, service, aggregates, inst_dict):
        if (compute is not None):
            LOG.debug('Update    host    state    from    compute    node:    %s', compute)
            self._update_from_compute_node(compute)
        if (aggregates is not None):
            LOG.debug('Update    host    state    with    aggregates:    %s', aggregates)
            self.aggregates = aggregates
        if (service is not None):
            LOG.debug('Update    host    state    with    service    dict:    %s', service)
            self.service = ReadOnlyDict(service)
        if (inst_dict is not None):
            LOG.debug('Update    host    state    with    instances:    %s', inst_dict)
            self.instances = inst_dict
    return _locked_update(self, compute, service, aggregates, inst_dict)
