// Starts up a controller manager. Never returns. func controller_manager() { controllerManager := registry.MakeReplicationManager(etcd.NewClient([]string{*etcd_server}), client.Client{ Host: fmt.Sprintf("http://%s:%d", *master_address, *master_port), }) go util.Forever(func() { controllerManager.Synchronize() }, 20*time.Second) go util.Forever(func() { controllerManager.WatchControllers() }, 20*time.Second) select {} }
func main() { // Setup servers := []string{"http://localhost:4001"} log.Printf("Creating etcd client pointing to %v", servers) etcdClient := etcd.NewClient(servers) machineList := []string{"machine"} reg := registry.MakeEtcdRegistry(etcdClient, machineList) apiserver := apiserver.New(map[string]apiserver.RESTStorage{ "pods": registry.MakePodRegistryStorage(reg, &client.FakeContainerInfo{}, registry.MakeRoundRobinScheduler(machineList)), "replicationControllers": registry.MakeControllerRegistryStorage(reg), }, "/api/v1beta1") server := httptest.NewServer(apiserver) controllerManager := registry.MakeReplicationManager(etcd.NewClient(servers), client.Client{ Host: server.URL, }) go controllerManager.Synchronize() go controllerManager.WatchControllers() // Ok. we're good to go. log.Printf("API Server started on %s", server.URL) // Wait for the synchronization threads to come up. time.Sleep(time.Second * 10) kubeClient := client.Client{ Host: server.URL, } data, err := ioutil.ReadFile("api/examples/controller.json") if err != nil { log.Fatalf("Unexpected error: %#v", err) } var controllerRequest api.ReplicationController if err = json.Unmarshal(data, &controllerRequest); err != nil { log.Fatalf("Unexpected error: %#v", err) } if _, err = kubeClient.CreateReplicationController(controllerRequest); err != nil { log.Fatalf("Unexpected error: %#v", err) } // Give the controllers some time to actually create the pods time.Sleep(time.Second * 10) // Validate that they're truly up. pods, err := kubeClient.ListPods(nil) if err != nil || len(pods.Items) != 2 { log.Fatal("FAILED") } log.Printf("OK") }
func main() { flag.Parse() if len(*etcd_servers) == 0 || len(*master) == 0 { log.Fatal("usage: controller-manager -etcd_servers <servers> -master <master>") } // Set up logger for etcd client etcd.SetLogger(log.New(os.Stderr, "etcd ", log.LstdFlags)) controllerManager := registry.MakeReplicationManager(etcd.NewClient([]string{*etcd_servers}), client.Client{ Host: "http://" + *master, }) go util.Forever(func() { controllerManager.Synchronize() }, 20*time.Second) go util.Forever(func() { controllerManager.WatchControllers() }, 20*time.Second) select {} }