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, ""
}
示例#2
0
文件: node.go 项目: elleFlorio/gru
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)
}
示例#3
0
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)
}