func masterExec(cmd string) { result, err := framework.SSH(cmd, framework.GetMasterHost()+":22", framework.TestContext.Provider) Expect(err).NotTo(HaveOccurred()) if result.Code != 0 { framework.LogSSHResult(result) framework.Failf("master exec command returned non-zero") } }
// TODO marekbiskup 2015-06-11: merge the ssh code into pkg/util/ssh.go after // kubernetes v1.0 is released. In particular the code of sshExec. func getMasterSSHClient() (*ssh.Client, error) { // Get a signer for the provider. signer, err := framework.GetSigner(framework.TestContext.Provider) if err != nil { return nil, fmt.Errorf("error getting signer for provider %s: '%v'", framework.TestContext.Provider, err) } config := &ssh.ClientConfig{ User: os.Getenv("USER"), Auth: []ssh.AuthMethod{ssh.PublicKeys(signer)}, } host := framework.GetMasterHost() + ":22" client, err := ssh.Dial("tcp", host, config) if err != nil { return nil, fmt.Errorf("error getting SSH client to host %s: '%v'", host, err) } return client, err }
}, }, ) go controller.Run(stopCh) }) AfterEach(func() { close(stopCh) }) It("Controller Manager should not create/delete replicas across restart", func() { // Requires master ssh access. framework.SkipUnlessProviderIs("gce", "aws") restarter := NewRestartConfig( framework.GetMasterHost(), "kube-controller", ports.ControllerManagerPort, restartPollInterval, restartTimeout) restarter.restart() // The intent is to ensure the replication controller manager has observed and reported status of // the replication controller at least once since the manager restarted, so that we can determine // that it had the opportunity to create/delete pods, if it were going to do so. Scaling the RC // to the same size achieves this, because the scale operation advances the RC's sequence number // and awaits it to be observed and reported back in the RC's status. framework.ScaleRC(f.Client, f.ClientSet, ns, rcName, numPods, true) // Only check the keys, the pods can be different if the kubelet updated it. // TODO: Can it really? existingKeys := sets.NewString() newKeys := sets.NewString() for _, k := range existingPods.ListKeys() { existingKeys.Insert(k)