private void populate() {
        MockProvisionServiceProvider provisionServiceProvider = new MockProvisionServiceProvider();
        provisionServiceProvider.getLoadBalancerService().ifPresent(service -> new LoadBalancerProvisioner(this, service).refreshPool());
        NodeRepositoryProvisioner provisioner = new NodeRepositoryProvisioner(this, Zone.defaultZone(), provisionServiceProvider, new MockMetric());
        List<Node> nodes = new ArrayList<>();

        // Regular nodes
        nodes.add(Node.create("node1", ipConfig(1), "host1.yahoo.com", resources(2, 8, 50, 1, fast, local), NodeType.tenant)
                          .cloudAccount(defaultCloudAccount).build());
        nodes.add(Node.create("node2", ipConfig(2), "host2.yahoo.com", resources(2, 8, 50, 1, fast, local), NodeType.tenant)
                          .cloudAccount(defaultCloudAccount).build());
        // Emulate node in tenant account
        nodes.add(Node.create("node3", ipConfig(3), "host3.yahoo.com", resources(0.5, 48, 500, 1, fast, local), NodeType.tenant)
                          .cloudAccount(tenantAccount).build());
        Node node4 = Node.create("node4", ipConfig(4), "host4.yahoo.com", resources(1, 4, 100, 1, fast, local), NodeType.tenant)
                .parentHostname("dockerhost1.yahoo.com")
                .status(Status.initial()
                        .withVespaVersion(new Version("6.41.0"))
                        .withContainerImage(DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:6.41.0")))
                .cloudAccount(defaultCloudAccount)
                .build();
        nodes.add(node4);

        Node node5 = Node.create("node5", ipConfig(5), "host5.yahoo.com", resources(1, 8, 100, 1, slow, remote), NodeType.tenant)
                .parentHostname("dockerhost2.yahoo.com")
                .status(Status.initial()
                        .withVespaVersion(new Version("1.2.3"))
                        .withContainerImage(DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:1.2.3")))
                .cloudAccount(tenantAccount)
                .build();
        nodes.add(node5);


        nodes.add(Node.create("node6", ipConfig(6), "host6.yahoo.com", resources(2, 8, 50, 1, fast, local), NodeType.tenant)
                              .cloudAccount(defaultCloudAccount).build());
        Node node7 = Node.create("node7", ipConfig(7), "host7.yahoo.com", resources(2, 8, 50, 1, fast, local), NodeType.tenant)
                                  .cloudAccount(defaultCloudAccount).build();
        nodes.add(node7);

        // 8, 9, 11 and 12 are added by web service calls
        Node node10 = Node.create("node10", ipConfig(10), "host10.yahoo.com", resources(2, 8, 50, 1, fast, local), NodeType.tenant)
                .parentHostname("parent1.yahoo.com")
                .status(Status.initial()
                        .withVespaVersion(Version.fromString("5.104.142"))
                        .withContainerImage(DockerImage.fromString("docker-registry.domain.tld:8080/dist/vespa:5.104.142")))
                .cloudAccount(defaultCloudAccount)
                .build();
        nodes.add(node10);

        Node node55 = Node.create("node55", ipConfig(55), "host55.yahoo.com", resources(2, 8, 50, 1, fast, local), NodeType.tenant)
                          .status(Status.initial().withWantToRetire(true, true, false, false, false))
                .cloudAccount(defaultCloudAccount).build();
        nodes.add(node55);

        /* Setup docker hosts (two of these will be reserved for spares */
        nodes.add(Node.create("dockerhost1", ipConfig(100, 1, 3), "dockerhost1.yahoo.com",
                             flavors.getFlavorOrThrow("large"), NodeType.host).cloudAccount(defaultCloudAccount).build());
        // Emulate host in tenant account
        nodes.add(Node.create("dockerhost2", ipConfig(101, 1, 3), "dockerhost2.yahoo.com",
                              flavors.getFlavorOrThrow("large"), NodeType.host)
                          .wireguardKey(new WireguardKeyWithTimestamp(WireguardKey.from("000011112222333344445555666677778888999900c="),
                                                                      Instant.ofEpochMilli(123L)))
                          .cloudAccount(tenantAccount).build());
        nodes.add(Node.create("dockerhost3", ipConfig(102, 1, 3), "dockerhost3.yahoo.com",
                             flavors.getFlavorOrThrow("large"), NodeType.host).cloudAccount(defaultCloudAccount).build());
        nodes.add(Node.create("dockerhost4", ipConfig(103, 1, 3), "dockerhost4.yahoo.com",
                             flavors.getFlavorOrThrow("large"), NodeType.host).cloudAccount(defaultCloudAccount).build());
        nodes.add(Node.create("dockerhost5", ipConfig(104, 1, 3), "dockerhost5.yahoo.com",
                             flavors.getFlavorOrThrow("large"), NodeType.host).cloudAccount(defaultCloudAccount).build());
        nodes.add(Node.create("dockerhost6", ipConfig(105, 1, 3), "dockerhost6.yahoo.com",
                flavors.getFlavorOrThrow("arm64"), NodeType.host).cloudAccount(defaultCloudAccount).build());

        // Config servers
        nodes.add(Node.create("cfg1", ipConfig(201), "cfg1.yahoo.com", flavors.getFlavorOrThrow("default"), NodeType.config)
                      .cloudAccount(defaultCloudAccount)
                      .wireguardKey(new WireguardKeyWithTimestamp(WireguardKey.from("lololololololololololololololololololololoo="),
                                                                  Instant.ofEpochMilli(456L)))
                      .build());
        nodes.add(Node.create("cfg2", ipConfig(202), "cfg2.yahoo.com", flavors.getFlavorOrThrow("default"), NodeType.config)
                      .cloudAccount(defaultCloudAccount)
                      .build());

        // Ready all nodes, except 7 and 55
        nodes = new ArrayList<>(nodes().addNodes(nodes, Agent.system));
        nodes.remove(node7);
        nodes.remove(node55);
        nodes = nodes().deallocate(nodes, Agent.system, getClass().getSimpleName());
        nodes.forEach(node -> nodes().setReady(new NodeMutex(node, () -> {}), Agent.system, getClass().getSimpleName()));

        nodes().fail(node5.hostname(), Agent.system, getClass().getSimpleName());
        nodes().deallocateRecursively(node55.hostname(), Agent.system, getClass().getSimpleName());

        nodes().fail("dockerhost6.yahoo.com", Agent.operator, getClass().getSimpleName());
        nodes().removeRecursively("dockerhost6.yahoo.com");

        // Activate config servers
        InfraApplication cfgApp = new ConfigServerApplication();
        activate(provisioner.prepare(cfgApp.getApplicationId(), cfgApp.getClusterSpecWithVersion(Version.fromString("6.42")), cfgApp.getCapacity(), null), cfgApp.getApplicationId(), provisioner);

        InfraApplication tenantHostApp = new TenantHostApplication();
        activate(provisioner.prepare(tenantHostApp.getApplicationId(), tenantHostApp.getClusterSpecWithVersion(Version.fromString("6.42")), tenantHostApp.getCapacity(), null), tenantHostApp.getApplicationId(), provisioner);

        ApplicationId app1Id = ApplicationId.from(TenantName.from("tenant1"), ApplicationName.from("application1"), InstanceName.from("instance1"));
        ClusterSpec cluster1Id = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("id1"))
                                            .vespaVersion("6.42")
                                            .loadBalancerSettings(new ZoneEndpoint(false, true, List.of(new AllowedUrn(AccessType.awsPrivateLink, "arne"))))
                                            .build();
        activate(provisioner.prepare(app1Id,
                                     cluster1Id,
                                     Capacity.from(new ClusterResources(2, 1, new NodeResources(2, 8, 50, 1)),
                                                   new ClusterResources(8, 2, new NodeResources(4, 16, 1000, 1)),
                                                   IntRange.empty(),
                                                   false,
                                                   true,
                                                   Optional.empty(),
                                                   ClusterInfo.empty()),
                                null), app1Id, provisioner);
        Application app1 = applications().get(app1Id).get();
        Cluster cluster1 = app1.cluster(cluster1Id.id()).get();
        cluster1 = cluster1.withSuggestions(List.of(new Autoscaling(Autoscaling.Status.unavailable,
                                                          "",
                                                          Optional.of(new ClusterResources(6, 2,
                                                                  new NodeResources(3, 20, 100, 1))),
                                                          clock().instant(),
                                                          Load.zero(),
                                                          Load.zero(),
                                                          Autoscaling.Metrics.zero())));
        cluster1 = cluster1.withTarget(new Autoscaling(Autoscaling.Status.unavailable,
                                                       "",
                                                       Optional.of(new ClusterResources(4, 1,
                                                                                        new NodeResources(3, 16, 100, 1))),
                                                       clock().instant(),
                                                       new Load(0.1, 0.2, 0.3, 0, 0),
                                                       new Load(0.4, 0.5, 0.6, 0, 0),
                                                       new Autoscaling.Metrics(0.7, 0.8, 0.9)));
        try (Mutex lock = applications().lock(app1Id)) {
            applications().put(app1.with(cluster1), lock);
        }

        ApplicationId app2 = ApplicationId.from(TenantName.from("tenant2"), ApplicationName.from("application2"), InstanceName.from("instance2"));
        ClusterSpec cluster2 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("id2")).vespaVersion("6.42").build();
        activate(provisioner.prepare(app2, cluster2, Capacity.from(new ClusterResources(2, 1, new NodeResources(2, 8, 50, 1))), null), app2, provisioner);

        ApplicationId app3 = ApplicationId.from(TenantName.from("tenant3"), ApplicationName.from("application3"), InstanceName.from("instance3"));
        ClusterSpec cluster3 = ClusterSpec.request(ClusterSpec.Type.content, ClusterSpec.Id.from("id3")).vespaVersion("6.42").build();
        activate(provisioner.prepare(app3, cluster3, Capacity.from(new ClusterResources(2, 1, new NodeResources(1, 4, 100, 1)), false, true), null), app3, provisioner);

        List<Node> largeNodes = new ArrayList<>();
        largeNodes.add(Node.create("node13", ipConfig(13), "host13.yahoo.com", resources(10, 48, 500, 1, fast, local), NodeType.tenant).cloudAccount(defaultCloudAccount).build());
        largeNodes.add(Node.create("node14", ipConfig(14), "host14.yahoo.com", resources(10, 48, 500, 1, fast, local), NodeType.tenant).cloudAccount(defaultCloudAccount).build());
        nodes().addNodes(largeNodes, Agent.system);
        largeNodes.forEach(node -> nodes().setReady(new NodeMutex(node, () -> {}), Agent.system, getClass().getSimpleName()));
        ApplicationId app4 = ApplicationId.from(TenantName.from("tenant4"), ApplicationName.from("application4"), InstanceName.from("instance4"));
        ClusterSpec cluster4 = ClusterSpec.request(ClusterSpec.Type.container, ClusterSpec.Id.from("id4")).vespaVersion("6.42").build();
        activate(provisioner.prepare(app4, cluster4, Capacity.from(new ClusterResources(2, 1, new NodeResources(10, 48, 500, 1)), false, true), null), app4, provisioner);
    }
Constructor

@param flavors flavors to have in node repo
node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/MockNodeRepository.java