diff --git a/go.mod b/go.mod index fddf6db..4ce3dc6 100644 --- a/go.mod +++ b/go.mod @@ -6,9 +6,12 @@ require ( fortio.org/dnsping v1.1.4 // indirect github.com/arl/statsviz v0.2.1 github.com/docker/docker-credential-helpers v0.6.3 + github.com/hazelcast/hazelcast-go-client v0.6.0 github.com/lunixbochs/vtclean v1.0.0 // indirect github.com/mattn/go-colorable v0.1.8 // indirect github.com/miniscruff/changie v0.3.0 // indirect + github.com/pelletier/go-toml v1.2.0 + github.com/relex/aini v1.2.1 // indirect golang.org/x/sys v0.0.0-20201223074533-0d417f636930 // indirect golang.org/x/text v0.3.4 // indirect ) diff --git a/go.sum b/go.sum index db44333..dc73c95 100644 --- a/go.sum +++ b/go.sum @@ -93,6 +93,8 @@ github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXi github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -120,6 +122,8 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hazelcast/hazelcast-go-client v0.6.0 h1:knJ0kGeGjRK77bv2pl+JcNavwhTltQL562UUPwV6NMc= +github.com/hazelcast/hazelcast-go-client v0.6.0/go.mod h1:VhwtcZ7sg3xq7REqGzEy7ylSWGKz4jZd05eCJropNzI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -180,7 +184,10 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.4/go.mod h1:g/HbgYopi++010VEqkFgJHKC09uJiW9UkXvMUuKHUCQ= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.8.1 h1:1Nf83orprkJyknT6h7zbuEGUEjcyVlCxSUGTENmNCRM= +github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= @@ -196,6 +203,8 @@ github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/relex/aini v1.2.1 h1:EN89emh21lgFi5BlLlMEB6IfZKbQ4kUD4vOXyla/Ewk= +github.com/relex/aini v1.2.1/go.mod h1:oFQyhvkzwi8GChiLukpBHkV2v142ls2L1MTeOSD2vic= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= diff --git a/hazelcast-client.go b/hazelcast-client.go new file mode 100644 index 0000000..aee2297 --- /dev/null +++ b/hazelcast-client.go @@ -0,0 +1,62 @@ +package main + +import ( + "fmt" + "log" + + "github.com/hazelcast/hazelcast-go-client" + "github.com/relex/aini" +) + +func main() { + var hazelcastHosts []string + + id, err := aini.ParseFile("./hazelcast_stack.toml") + if err != nil { + log.Fatalln(err) + } + + for _, h := range id.Groups["all"].Hosts { + fmt.Printf("scan ansible host : %s => %s:%d\n", h.Name, h.Vars["ansible_host"], h.Port) + hazelcastHosts = append(hazelcastHosts, h.Vars["ansible_host"]) + } + //fmt.Printf("%+v\n", id.Groups["all"].Vars) + + clientConfig := hazelcast.NewConfig() + fmt.Println("Cluster name: ", clientConfig.GroupConfig().Name()) + + clientConfig.NetworkConfig().AddAddress(hazelcastHosts...) + fmt.Println("Cluster discovery: ", clientConfig.NetworkConfig().Addresses()) + + hz, err := hazelcast.NewClientWithConfig(clientConfig) + if err != nil { + log.Fatalf("fail to start hazelcast client %+v", err) + } + + // Shutdown this hazelcast client + defer hz.Shutdown() + + // Get the Distributed Map from Cluster. + mp, _ := hz.GetMap("myDistributedMap") + //Standard Put and Get. + mp.Put("key", "value") + + v, err := mp.Get("key") + if err != nil { + log.Fatalf("error reading key into map myDistributedMap", err) + } else { + fmt.Printf("myDistributedMap['key'] = %+v\n", v) + } + + //Concurrent Map methods, optimistic updating + mp.PutIfAbsent("somekey", "somevalue") + mp.ReplaceIfSame("key", "value", "newvalue") + + v, err = mp.Get("key") + if err != nil { + log.Fatalf("error reading key into map myDistributedMap", err) + } else { + fmt.Printf("myDistributedMap['key'] = %+v\n", v) + } + +} diff --git a/hazelcast_stack.toml b/hazelcast_stack.toml new file mode 120000 index 0000000..07e2cd3 --- /dev/null +++ b/hazelcast_stack.toml @@ -0,0 +1 @@ +/home/antoine/virtualization/terraform-libvirt/applications/stack_address.toml \ No newline at end of file