private void setIpConfig(Node host, HostIpConfig hostIpConfig) {
        if (hostIpConfig.isEmpty()) return;
        hostIpConfig.asMap().forEach((hostname, ipConfig) ->
                verifyDns(hostname, host.type(), host.cloudAccount(), ipConfig));

        nodeRepository().nodes().performOnRecursively(NodeList.of(host), __ -> true, nodes -> {
            List<Node> updated = new ArrayList<>();
            for (NodeMutex mutex : nodes.children())
                updated.add(nodeRepository().nodes().write(mutex.node().with(hostIpConfig.require(mutex.node().hostname())), mutex));

            updated.add(nodeRepository().nodes().write(nodes.parent().node()
                                                            .with(hostIpConfig.require(nodes.parent().node().hostname()))
                                                            .withExtraId(hostIpConfig.hostId()),
                                                       nodes.parent()));

            return updated;
        });
    }
Resumes provisioning (requests additional IP addresses, updates DNS when IPs are ready) of hosts in state provisioned

@author freva
@author mpolden
node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostResumeProvisioner.java