@Configuration
public class JobConfiguration {

    @Bean
    public IgniteConfiguration igniteConfiguration(IgniteDiscoverySpi discoverySpi) {
        IgniteConfiguration cfg = new IgniteConfiguration();

        //cfg.setIgniteInstanceName("data-prep-node");
        cfg.setClientMode(true);
        cfg.setDiscoverySpi(discoverySpi);
        cfg.setIgniteHome("/tmp/ignite");
        cfg.setPeerClassLoadingEnabled(false);

        return cfg;
    }

    @Bean
    public IgniteDiscoverySpi igniteDiscoverySpi() {
        TcpDiscoverySpi disco =  new TcpDiscoverySpi();
        TcpDiscoveryKubernetesIpFinder k8sFinder = new TcpDiscoveryKubernetesIpFinder();
        // TODO get these properly configurable for the job
        k8sFinder.setNamespace("ignite-jwp");
        k8sFinder.setServiceName("ignite-jwp");
        disco.setIpFinder(k8sFinder);
        disco.setJoinTimeout(600000);
        disco.setNetworkTimeout(600000);


        disco.setLocalPortRange(1);

        return disco;
    }

    @Bean
    public Ignite ignite(IgniteConfiguration igniteConfiguration) {
        return Ignition.getOrStart(igniteConfiguration);
    }
}
