@argh_named("update")
    @arg_full_match
    @argh.arg('target', type=str, help='target systems/nodes (regexp)')
    @expects_obj
    def handle_cloud_update(self, arg):
        """update node cloud instance properties"""
        confman = self.get_confman(arg.root_dir)
        for node in confman.find(arg.target, full_match=arg.full_match):
            cloud_prop = node.get("cloud", {})
            if not cloud_prop.get("instance"):
                continue

            provider = self.sky.get_provider(cloud_prop)
            updates = provider.wait_instances([cloud_prop],
                                              wait_state=None)
            try:
                update = updates[cloud_prop["instance"]]
            except __HOLE__:
                raise errors.Error(
                    "TODO: did not get update from cloud provider for %r"
                    % cloud_prop["instance"])

            changes = node.log_update(update)
            if changes:
                change_str = ", ".join(("%s=%r (from %r)" % (c[0], c[2], c[1]))
                                       for c in changes)
                self.log.info("%s: updated: %s", node.name, change_str)
                node.save()
dataset/ETHPy150Open ohmu/poni/poni/tool.py/Tool.handle_cloud_update