func SendConfig(c client.Client, cluster, confType, serviceName, confFile string) (string, string) { kapi := client.NewKeysAPI(c) key := "" successMessage := "" switch confType { case "clusterID": key = "/gru/" + cluster + "/clusterID" case "agent": key = "/gru/" + cluster + "/config" successMessage = ADD_AGENT case "service": key = "/gru/" + cluster + "/services/" + serviceName successMessage = ADD_SERVICE case "policy": key = "/gru/" + cluster + "/policy" successMessage = ADD_POLICY case "analytic": analyticsName := serviceName key = "/gru/" + cluster + "/analytics/" + analyticsName successMessage = ADD_ANALYTICS default: log.Fatal("Unrecognized configuration type") } resp, err := kapi.Set(context.Background(), key, confFile, nil) if err != nil { log.Printf(err.Error()) return "", err.Error() } // print common key info log.Printf("Set is done. Metadata is %q\n", resp) // Set ClusterID for new cluster, after save its first configuration nodo := getConfig(c, cluster, "clusterID") if nodo.Value == "" { ID, genError := utils.GenerateUUID() if genError != nil { log.Printf("ClusterID Generation for cluster %v failed", cluster) } else { log.Printf("ClusterID Generation for cluster %v succesfully", cluster) _, _ = SendConfig(c, cluster, "clusterID", "", ID) } } return successMessage, "" }
func CreateNode(name string, resources *res.Resource) { node_UUID, err := utils.GenerateUUID() if err != nil { log.WithField("err", err).Errorln("Error generating node UUID") } node_address := "http://" + network.Config().IpAddress + ":" + network.Config().Port config := cfg.NodeConfig{node_UUID, name, node_address, "", ""} nodeRes := cfg.NodeResources{ TotalCpus: resources.CPU.Total, TotalMemory: resources.Memory.Total, } node := cfg.Node{ Configuration: config, Active: false, Resources: nodeRes, } cfg.SetNode(node) }
func create(c *cli.Context) { var clusterName string if !c.Args().Present() { log.Fatalln("Error: missing cluster name") } else { clusterName = c.Args().First() } // Get etcd address etcdAddress := c.String("etcdserver") // Initialize etcd client discovery.New("etcd", etcdAddress) // Generate cluster id, err := utils.GenerateUUID() if err != nil { log.WithField("err", err).Fatalln("Error generating cluster UUID") } cluster.RegisterCluster(clusterName, id) // Print cluster UUID for join fmt.Println(clusterName + ":" + id) }