// RunController creates a new replication controller named 'name' which creates 'replicas' pods running 'image' func RunController(image, name string, replicas int, client client.ClientInterface, portSpec string, servicePort int) error { controller := api.ReplicationController{ JSONBase: api.JSONBase{ ID: name, }, DesiredState: api.ReplicationControllerState{ Replicas: replicas, ReplicasInSet: map[string]string{ "name": name, }, PodTemplate: api.PodTemplate{ DesiredState: api.PodState{ Manifest: api.ContainerManifest{ Containers: []api.Container{ api.Container{ Image: image, Ports: makePorts(portSpec), }, }, }, }, Labels: map[string]string{ "name": name, }, }, }, Labels: map[string]string{ "name": name, }, } controllerOut, err := client.CreateReplicationController(controller) if err != nil { return err } data, err := yaml.Marshal(controllerOut) if err != nil { return err } fmt.Print(string(data)) if servicePort > 0 { svc, err := createService(name, servicePort, client) if err != nil { return err } data, err = yaml.Marshal(svc) if err != nil { return err } fmt.Printf(string(data)) } return nil }