// Status prints the OpenShift cluster status func (c *ClientStatusConfig) Status(f *clientcmd.Factory, out io.Writer) error { dockerClient, _, err := getDockerClient(out, c.DockerMachine, false) if err != nil { return errors.ErrNoDockerClient(err) } helper := dockerhelper.NewHelper(dockerClient, nil) container, running, err := helper.GetContainerState(openshift.OpenShiftContainer) if err != nil { return errors.NewError("cannot get state of OpenShift container %s", openshift.OpenShiftContainer).WithCause(err) } if !running { return errors.NewError("OpenShift cluster is not running") } healthy, err := isHealthy(f) if err != nil { return err } if !healthy { return errors.NewError("OpenShift cluster health check failed") } config, err := openshift.GetConfigFromContainer(dockerClient) if err != nil { return err } fmt.Print(status(container, config)) return nil }
// Stop stops the currently running origin container and any // containers started by the node. func (c *ClientStopConfig) Stop(out io.Writer) error { client, err := c.getDockerClient(out) if err != nil { return err } helper := dockerhelper.NewHelper(client, nil) glog.V(4).Infof("Killing previous socat tunnel") err = openshift.KillExistingSocat() if err != nil { glog.V(1).Infof("error: cannot kill socat: %v", err) } glog.V(4).Infof("Stopping and removing origin container") if err = helper.StopAndRemoveContainer("origin"); err != nil { glog.V(1).Infof("Error stopping origin container: %v", err) } names, err := helper.ListContainerNames() if err != nil { return err } for _, name := range names { if _, _, err = dockertools.ParseDockerName(name); err != nil { continue } name = strings.TrimLeft(name, "/") glog.V(4).Infof("Stopping container %s", name) if err = client.StopContainer(name, 0); err != nil { glog.V(1).Infof("Error stopping container %s: %v", name, err) } glog.V(4).Infof("Removing container %s", name) if err = helper.RemoveContainer(name); err != nil { glog.V(1).Infof("Error removing container %s: %v", name, err) } } return nil }
// NewHelper creates a new OpenShift helper func NewHelper(client *docker.Client, hostHelper *host.HostHelper, image, containerName, publicHostname, routingSuffix string) *Helper { return &Helper{ dockerHelper: dockerhelper.NewHelper(client), execHelper: exec.NewExecHelper(client, containerName), hostHelper: hostHelper, runHelper: run.NewRunHelper(client), image: image, containerName: containerName, publicHost: publicHostname, routingSuffix: routingSuffix, } }
// DockerHelper returns a helper object to work with the Docker client func (c *ClientStartConfig) DockerHelper() *dockerhelper.Helper { if c.dockerHelper == nil { c.dockerHelper = dockerhelper.NewHelper(c.dockerClient, c.engineAPIClient) } return c.dockerHelper }