本文整理汇总了Golang中launchpad/net/juju-core/state.Service.AddUnit方法的典型用法代码示例。如果您正苦于以下问题:Golang Service.AddUnit方法的具体用法?Golang Service.AddUnit怎么用?Golang Service.AddUnit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类launchpad/net/juju-core/state.Service
的用法示例。
在下文中一共展示了Service.AddUnit方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: AddUnit
func (s *HookContextSuite) AddUnit(c *C, svc *state.Service) *state.Unit {
unit, err := svc.AddUnit()
c.Assert(err, IsNil)
name := strings.Replace(unit.Name(), "/", "-", 1)
err = unit.SetPrivateAddress(name + ".testing.invalid")
c.Assert(err, IsNil)
return unit
}
示例2: addUnit
func (s *SSHCommonSuite) addUnit(srv *state.Service, m *state.Machine, c *C) {
u, err := srv.AddUnit()
c.Assert(err, IsNil)
err = u.AssignToMachine(m)
c.Assert(err, IsNil)
// fudge unit.SetPublicAddress
id, err := m.InstanceId()
c.Assert(err, IsNil)
insts, err := s.Conn.Environ.Instances([]state.InstanceId{id})
c.Assert(err, IsNil)
addr, err := insts[0].WaitDNSName()
c.Assert(err, IsNil)
err = u.SetPublicAddress(addr)
c.Assert(err, IsNil)
}
示例3: AddUnits
// AddUnits starts n units of the given service and allocates machines
// to them as necessary.
func (conn *Conn) AddUnits(svc *state.Service, n int) ([]*state.Unit, error) {
units := make([]*state.Unit, n)
// TODO what do we do if we fail half-way through this process?
for i := 0; i < n; i++ {
policy := conn.Environ.AssignmentPolicy()
unit, err := svc.AddUnit()
if err != nil {
return nil, fmt.Errorf("cannot add unit %d/%d to service %q: %v", i+1, n, svc.Name(), err)
}
if err := conn.State.AssignUnit(unit, policy); err != nil {
return nil, err
}
units[i] = unit
}
return units, nil
}
示例4: addRU
func addRU(c *C, svc *state.Service, rel *state.Relation, principal *state.Unit) (*state.Unit, *state.RelationUnit) {
// Given the service svc in the relation rel, add a unit of svc and create
// a RelationUnit with rel. If principal is supplied, svc is assumed to be
// subordinate and the unit will be created by temporarily entering the
// relation's scope as the principal.
var u *state.Unit
if principal == nil {
unit, err := svc.AddUnit()
c.Assert(err, IsNil)
u = unit
} else {
origUnits, err := svc.AllUnits()
c.Assert(err, IsNil)
pru, err := rel.Unit(principal)
c.Assert(err, IsNil)
err = pru.EnterScope(nil) // to create the subordinate
c.Assert(err, IsNil)
err = pru.LeaveScope() // to reset to initial expected state
c.Assert(err, IsNil)
newUnits, err := svc.AllUnits()
c.Assert(err, IsNil)
for _, unit := range newUnits {
found := false
for _, old := range origUnits {
if unit.Name() == old.Name() {
found = true
break
}
}
if !found {
u = unit
break
}
}
c.Assert(u, NotNil)
}
preventUnitDestroyRemove(c, u)
ru, err := rel.Unit(u)
c.Assert(err, IsNil)
return u, ru
}
示例5: AddUnits
// AddUnits starts n units of the given service and allocates machines
// to them as necessary.
func (conn *Conn) AddUnits(svc *state.Service, n int, machineIdSpec string) ([]*state.Unit, error) {
units := make([]*state.Unit, n)
// Hard code for now till we implement a different approach.
policy := state.AssignCleanEmpty
// TODO what do we do if we fail half-way through this process?
for i := 0; i < n; i++ {
unit, err := svc.AddUnit()
if err != nil {
return nil, fmt.Errorf("cannot add unit %d/%d to service %q: %v", i+1, n, svc.Name(), err)
}
if machineIdSpec != "" {
if n != 1 {
return nil, fmt.Errorf("cannot add multiple units of service %q to a single machine", svc.Name())
}
// machineIdSpec may be an existing machine or container, eg 3/lxc/2
// or a new container on a machine, eg lxc:3
mid := machineIdSpec
var containerType instance.ContainerType
specParts := strings.Split(machineIdSpec, ":")
if len(specParts) > 1 {
firstPart := specParts[0]
var err error
if containerType, err = instance.ParseSupportedContainerType(firstPart); err == nil {
mid = strings.Join(specParts[1:], "/")
} else {
mid = machineIdSpec
}
}
if !names.IsMachine(mid) {
return nil, fmt.Errorf("invalid force machine id %q", mid)
}
var err error
var m *state.Machine
// If a container is to be used, create it.
if containerType != "" {
params := state.AddMachineParams{
Series: unit.Series(),
ParentId: mid,
ContainerType: containerType,
Jobs: []state.MachineJob{state.JobHostUnits},
}
m, err = conn.State.AddMachineWithConstraints(¶ms)
} else {
m, err = conn.State.Machine(mid)
}
if err != nil {
return nil, fmt.Errorf("cannot assign unit %q to machine: %v", unit.Name(), err)
}
err = unit.AssignToMachine(m)
if err != nil {
return nil, err
}
} else if err := conn.State.AssignUnit(unit, policy); err != nil {
return nil, err
}
units[i] = unit
}
return units, nil
}