// BlockUntilLeadershipReleased implements the LeadershipService interface. func (m *leadershipService) BlockUntilLeadershipReleased(serviceTag names.ServiceTag) (params.ErrorResult, error) { if !m.authMember(serviceTag) { return params.ErrorResult{Error: common.ServerError(common.ErrPerm)}, nil } if err := m.claimer.BlockUntilLeadershipReleased(serviceTag.Id()); err != nil { return params.ErrorResult{Error: common.ServerError(err)}, nil } return params.ErrorResult{}, nil }
// BlockUntilLeadershipReleased implements the LeadershipService interface. func (m *leadershipService) BlockUntilLeadershipReleased(serviceTag names.ServiceTag) (params.ErrorResult, error) { if !m.authorizer.AuthUnitAgent() { return params.ErrorResult{Error: common.ServerError(common.ErrPerm)}, nil } if err := m.LeadershipManager.BlockUntilLeadershipReleased(serviceTag.Id()); err != nil { return params.ErrorResult{Error: common.ServerError(err)}, nil } return params.ErrorResult{}, nil }
func (m *leadershipService) authMember(serviceTag names.ServiceTag) bool { ownerTag := m.authorizer.GetAuthTag() unitTag, ok := ownerTag.(names.UnitTag) if !ok { return false } unitId := unitTag.Id() requireServiceId, err := names.UnitService(unitId) if err != nil { return false } return serviceTag.Id() == requireServiceId }
func (u *UniterAPI) getService(tag names.ServiceTag) (*state.Service, error) { return u.st.Service(tag.Id()) }
// HandleLatest implements apiserver/charmrevisionupdater.LatestCharmHandler // by storing the charm's resources in state. func (handler LatestCharmHandler) HandleLatest(serviceID names.ServiceTag, info charmstore.CharmInfo) error { if err := handler.store.SetCharmStoreResources(serviceID.Id(), info.LatestResources, info.Timestamp); err != nil { return errors.Trace(err) } return nil }