本文整理汇总了Golang中github.com/juju/juju/status.Status函数的典型用法代码示例。如果您正苦于以下问题:Golang Status函数的具体用法?Golang Status怎么用?Golang Status使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Status函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: SetInstanceStatus
// SetInstanceStatus updates the instance status for each given
// entity. Only machine tags are accepted.
func (a *InstancePollerAPI) SetInstanceStatus(args params.SetStatus) (params.ErrorResults, error) {
result := params.ErrorResults{
Results: make([]params.ErrorResult, len(args.Entities)),
}
canAccess, err := a.accessMachine()
if err != nil {
return result, err
}
for i, arg := range args.Entities {
machine, err := a.getOneMachine(arg.Tag, canAccess)
if err == nil {
now := a.clock.Now()
s := status.StatusInfo{
Status: status.Status(arg.Status),
Message: arg.Info,
Data: arg.Data,
Since: &now,
}
err = machine.SetInstanceStatus(s)
if status.Status(arg.Status) == status.ProvisioningError {
s.Status = status.Error
if err == nil {
err = machine.SetStatus(s)
}
}
}
result.Results[i].Error = common.ServerError(err)
}
return result, nil
}
示例2: TestSetInstanceStatusFailure
func (s *InstancePollerSuite) TestSetInstanceStatusFailure(c *gc.C) {
s.st.SetErrors(
errors.New("pow!"), // m1 := FindEntity("1")
nil, // m2 := FindEntity("2")
errors.New("FAIL"), // m2.SetInstanceStatus()
errors.NotProvisionedf("machine 42"), // FindEntity("3") (ensure wrapping is preserved)
)
s.st.SetMachineInfo(c, machineInfo{id: "1", instanceStatus: statusInfo("foo")})
s.st.SetMachineInfo(c, machineInfo{id: "2", instanceStatus: statusInfo("")})
result, err := s.api.SetInstanceStatus(params.SetStatus{
Entities: []params.EntityStatusArgs{
{Tag: "machine-1", Status: status.Status("new")},
{Tag: "machine-2", Status: status.Status("invalid")},
{Tag: "machine-3", Status: status.Status("")},
}},
)
c.Assert(err, jc.ErrorIsNil)
c.Assert(result, jc.DeepEquals, s.machineErrorResults)
s.st.CheckFindEntityCall(c, 0, "1")
s.st.CheckFindEntityCall(c, 1, "2")
s.st.CheckCall(c, 2, "SetInstanceStatus", status.Status("invalid"))
s.st.CheckFindEntityCall(c, 3, "3")
}
示例3: TestInstanceStatusSuccess
func (s *InstancePollerSuite) TestInstanceStatusSuccess(c *gc.C) {
s.st.SetMachineInfo(c, machineInfo{id: "1", instanceStatus: statusInfo("foo")})
s.st.SetMachineInfo(c, machineInfo{id: "2", instanceStatus: statusInfo("")})
result, err := s.api.InstanceStatus(s.mixedEntities)
c.Assert(err, jc.ErrorIsNil)
c.Assert(result, jc.DeepEquals, params.StatusResults{
Results: []params.StatusResult{
{Status: status.Status("foo")},
{Status: status.Status("")},
{Error: apiservertesting.NotFoundError("machine 42")},
{Error: apiservertesting.ServerError(`"service-unknown" is not a valid machine tag`)},
{Error: apiservertesting.ServerError(`"invalid-tag" is not a valid tag`)},
{Error: apiservertesting.ServerError(`"unit-missing-1" is not a valid machine tag`)},
{Error: apiservertesting.ServerError(`"" is not a valid tag`)},
{Error: apiservertesting.ServerError(`"42" is not a valid tag`)},
},
},
)
s.st.CheckFindEntityCall(c, 0, "1")
s.st.CheckCall(c, 1, "InstanceStatus")
s.st.CheckFindEntityCall(c, 2, "2")
s.st.CheckCall(c, 3, "InstanceStatus")
s.st.CheckFindEntityCall(c, 4, "42")
}
示例4: SetInstanceStatus
// SetInstanceStatus updates the instance status for each given
// entity. Only machine tags are accepted.
func (p *ProvisionerAPI) SetInstanceStatus(args params.SetStatus) (params.ErrorResults, error) {
result := params.ErrorResults{
Results: make([]params.ErrorResult, len(args.Entities)),
}
canAccess, err := p.getAuthFunc()
if err != nil {
logger.Errorf("failed to get an authorisation function: %v", err)
return result, errors.Trace(err)
}
for i, arg := range args.Entities {
mTag, err := names.ParseMachineTag(arg.Tag)
if err != nil {
result.Results[i].Error = common.ServerError(err)
continue
}
machine, err := p.getMachine(canAccess, mTag)
if err == nil {
// TODO(perrito666) 2016-05-02 lp:1558657
now := time.Now()
s := status.StatusInfo{
Status: status.Status(arg.Status),
Message: arg.Info,
Data: arg.Data,
Since: &now,
}
err = machine.SetInstanceStatus(s)
}
result.Results[i].Error = common.ServerError(err)
}
return result, nil
}
示例5: SetStatus
// SetStatus sets the status of each given entity.
func (s *StatusSetter) SetStatus(args params.SetStatus) (params.ErrorResults, error) {
result := params.ErrorResults{
Results: make([]params.ErrorResult, len(args.Entities)),
}
if len(args.Entities) == 0 {
return result, nil
}
canModify, err := s.getCanModify()
if err != nil {
return params.ErrorResults{}, err
}
// TODO(perrito666) 2016-05-02 lp:1558657
now := time.Now()
for i, arg := range args.Entities {
tag, err := names.ParseTag(arg.Tag)
if err != nil {
result.Results[i].Error = ServerError(err)
continue
}
err = ErrPerm
if canModify(tag) {
err = s.setEntityStatus(tag, status.Status(arg.Status), arg.Info, arg.Data, &now)
}
result.Results[i].Error = ServerError(err)
}
return result, nil
}
示例6: makeStatusDoc
// makeStatusDoc assumes status is non-nil.
func (i *importer) makeStatusDoc(statusVal description.Status) statusDoc {
return statusDoc{
Status: status.Status(statusVal.Value()),
StatusInfo: statusVal.Message(),
StatusData: statusVal.Data(),
Updated: statusVal.Updated().UnixNano(),
}
}
示例7: SetUnitStatus
// SetUnitStatus will set the given status for this unit.
func (ctx *HookContext) SetUnitStatus(unitStatus jujuc.StatusInfo) error {
ctx.hasRunStatusSet = true
logger.Tracef("[WORKLOAD-STATUS] %s: %s", unitStatus.Status, unitStatus.Info)
return ctx.unit.SetUnitStatus(
status.Status(unitStatus.Status),
unitStatus.Info,
unitStatus.Data,
)
}
示例8: TestSetInstanceStatusSuccess
func (s *InstancePollerSuite) TestSetInstanceStatusSuccess(c *gc.C) {
s.st.SetMachineInfo(c, machineInfo{id: "1", instanceStatus: statusInfo("foo")})
s.st.SetMachineInfo(c, machineInfo{id: "2", instanceStatus: statusInfo("")})
result, err := s.api.SetInstanceStatus(params.SetStatus{
Entities: []params.EntityStatusArgs{
{Tag: "machine-1", Status: ""},
{Tag: "machine-2", Status: "new status"},
{Tag: "machine-42", Status: ""},
{Tag: "application-unknown", Status: ""},
{Tag: "invalid-tag", Status: ""},
{Tag: "unit-missing-1", Status: ""},
{Tag: "", Status: ""},
{Tag: "42", Status: ""},
}},
)
c.Assert(err, jc.ErrorIsNil)
c.Assert(result, jc.DeepEquals, s.mixedErrorResults)
now := s.clock.Now()
s.st.CheckFindEntityCall(c, 0, "1")
s.st.CheckCall(c, 1, "SetInstanceStatus", status.StatusInfo{Status: status.Status(""), Since: &now})
s.st.CheckFindEntityCall(c, 2, "2")
s.st.CheckCall(c, 3, "SetInstanceStatus", status.StatusInfo{Status: status.Status("new status"), Since: &now})
s.st.CheckFindEntityCall(c, 4, "42")
// Ensure machines were updated.
machine, err := s.st.Machine("1")
c.Assert(err, jc.ErrorIsNil)
// TODO (perrito666) there should not be an empty StatusInfo here,
// this is certainly a smell.
setStatus, err := machine.InstanceStatus()
c.Assert(err, jc.ErrorIsNil)
setStatus.Since = nil
c.Assert(setStatus, gc.DeepEquals, status.StatusInfo{})
machine, err = s.st.Machine("2")
c.Assert(err, jc.ErrorIsNil)
setStatus, err = machine.InstanceStatus()
c.Assert(err, jc.ErrorIsNil)
setStatus.Since = nil
c.Assert(setStatus, gc.DeepEquals, status.StatusInfo{Status: "new status"})
}
示例9: pollInstanceInfo
// pollInstanceInfo checks the current provider addresses and status
// for the given machine's instance, and sets them on the machine if they've changed.
func pollInstanceInfo(context machineContext, m machine) (instInfo instanceInfo, err error) {
instInfo = instanceInfo{}
instId, err := m.InstanceId()
// We can't ask the machine for its addresses if it isn't provisioned yet.
if params.IsCodeNotProvisioned(err) {
return instanceInfo{}, err
}
if err != nil {
return instanceInfo{}, errors.Annotate(err, "cannot get machine's instance id")
}
instInfo, err = context.instanceInfo(instId)
if err != nil {
// TODO (anastasiamac 2016-02-01) This does not look like it needs to be removed now.
if params.IsCodeNotImplemented(err) {
return instanceInfo{}, err
}
logger.Warningf("cannot get instance info for instance %q: %v", instId, err)
return instInfo, nil
}
if instStat, err := m.InstanceStatus(); err != nil {
// This should never occur since the machine is provisioned.
// But just in case, we reset polled status so we try again next time.
logger.Warningf("cannot get current instance status for machine %v: %v", m.Id(), err)
instInfo.status = instance.InstanceStatus{status.Unknown, ""}
} else {
// TODO(perrito666) add status validation.
currentInstStatus := instance.InstanceStatus{
Status: status.Status(instStat.Status),
Message: instStat.Info,
}
if instInfo.status != currentInstStatus {
logger.Infof("machine %q instance status changed from %q to %q", m.Id(), currentInstStatus, instInfo.status)
if err = m.SetInstanceStatus(instInfo.status.Status, instInfo.status.Message, nil); err != nil {
logger.Errorf("cannot set instance status on %q: %v", m, err)
return instanceInfo{}, err
}
}
}
if m.Life() != params.Dead {
providerAddresses, err := m.ProviderAddresses()
if err != nil {
return instanceInfo{}, err
}
if !addressesEqual(providerAddresses, instInfo.addresses) {
logger.Infof("machine %q has new addresses: %v", m.Id(), instInfo.addresses)
if err := m.SetProviderAddresses(instInfo.addresses...); err != nil {
logger.Errorf("cannot set addresses on %q: %v", m, err)
return instanceInfo{}, err
}
}
}
return instInfo, nil
}
示例10: updateUnitStatusInfo
func (sf *statusFormatter) updateUnitStatusInfo(unit *params.UnitStatus, applicationName string) {
// TODO(perrito66) add status validation.
if status.Status(unit.WorkloadStatus.Status) == status.Error {
if relation, ok := sf.relations[getRelationIdFromData(unit)]; ok {
// Append the details of the other endpoint on to the status info string.
if ep, ok := findOtherEndpoint(relation.Endpoints, applicationName); ok {
unit.WorkloadStatus.Info = unit.WorkloadStatus.Info + " for " + ep.String()
}
}
}
}
示例11: TestSetUnknownStatus
func (s *ServiceStatusSuite) TestSetUnknownStatus(c *gc.C) {
now := testing.ZeroTime()
sInfo := status.StatusInfo{
Status: status.Status("vliegkat"),
Message: "orville",
Since: &now,
}
err := s.service.SetStatus(sInfo)
c.Check(err, gc.ErrorMatches, `cannot set invalid status "vliegkat"`)
s.checkInitialStatus(c)
}
示例12: TestSetUnknownStatus
func (s *MachineStatusSuite) TestSetUnknownStatus(c *gc.C) {
now := time.Now()
sInfo := status.StatusInfo{
Status: status.Status("vliegkat"),
Message: "orville",
Since: &now,
}
err := s.machine.SetStatus(sInfo)
c.Assert(err, gc.ErrorMatches, `cannot set invalid status "vliegkat"`)
s.checkInitialStatus(c)
}
示例13: getServiceStatusInfo
func (sf *statusFormatter) getServiceStatusInfo(service params.ApplicationStatus) statusInfoContents {
// TODO(perrito66) add status validation.
info := statusInfoContents{
Err: service.Status.Err,
Current: status.Status(service.Status.Status),
Message: service.Status.Info,
Version: service.Status.Version,
}
if service.Status.Since != nil {
info.Since = common.FormatTime(service.Status.Since, sf.isoTime)
}
return info
}
示例14: checkStatusInfo
func checkStatusInfo(c *gc.C, obtained []params.DetailedStatus, expected []status.StatusInfo) {
c.Assert(len(obtained), gc.Equals, len(expected))
lastTimestamp := int64(0)
for i, obtainedInfo := range obtained {
c.Logf("Checking status %q with info %q", obtainedInfo.Status, obtainedInfo.Info)
thisTimeStamp := obtainedInfo.Since.Unix()
c.Assert(thisTimeStamp >= lastTimestamp, jc.IsTrue)
lastTimestamp = thisTimeStamp
obtainedInfo.Since = nil
c.Assert(obtainedInfo.Status, gc.Equals, status.Status(expected[i].Status))
c.Assert(obtainedInfo.Info, gc.Equals, expected[i].Message)
}
}
示例15: getAgentStatusInfo
func (sf *statusFormatter) getAgentStatusInfo(unit params.UnitStatus) statusInfoContents {
// TODO(perrito66) add status validation.
info := statusInfoContents{
Err: unit.AgentStatus.Err,
Current: status.Status(unit.AgentStatus.Status),
Message: unit.AgentStatus.Info,
Version: unit.AgentStatus.Version,
}
if unit.AgentStatus.Since != nil {
info.Since = common.FormatTime(unit.AgentStatus.Since, sf.isoTime)
}
return info
}