// WaitDNSName is an implementation that the providers can use. It builds on // the provider's implementation of Instance.DNSName. func WaitDNSName(inst instance.Instance) (string, error) { for a := LongAttempt.Start(); a.Next(); { name, err := inst.DNSName() if err == nil || err != instance.ErrNoDNSName { return name, err } } return "", fmt.Errorf("timed out trying to get DNS address for %v", inst.Id()) }
func (manager *containerManager) StopContainer(instance instance.Instance) error { name := string(instance.Id()) container := lxcObjectFactory.New(name) if err := container.Stop(); err != nil { logger.Errorf("failed to stop lxc container: %v", err) return err } // Destroy removes the restart symlink for us. if err := container.Destroy(); err != nil { logger.Errorf("failed to destroy lxc container: %v", err) return err } // Move the directory. logger.Tracef("create old container dir: %s", removedContainerDir) if err := os.MkdirAll(removedContainerDir, 0755); err != nil { logger.Errorf("failed to create removed container directory: %v", err) return err } removedDir, err := uniqueDirectory(removedContainerDir, name) if err != nil { logger.Errorf("was not able to generate a unique directory: %v", err) return err } if err := os.Rename(jujuContainerDirectory(name), removedDir); err != nil { logger.Errorf("failed to rename container directory: %v", err) return err } return nil }
// assertInstanceId asserts that the machine has an instance id // that matches that of the given instance. If the instance is nil, // It asserts that the instance id is unset. func assertInstanceId(c *C, m *state.Machine, inst instance.Instance) { var wantId, gotId instance.Id var err error if inst != nil { wantId = inst.Id() } for a := waitAgent.Start(); a.Next(); { err := m.Refresh() c.Assert(err, IsNil) gotId, err = m.InstanceId() if err != nil { c.Assert(state.IsNotProvisionedError(err), IsTrue) if inst == nil { return } continue } break } c.Assert(err, IsNil) c.Assert(gotId, Equals, wantId) }
func (s *lxcBrokerSuite) lxcRemovedContainerDir(inst instance.Instance) string { return filepath.Join(s.RemovedDir, string(inst.Id())) }