本文整理匯總了Golang中github.com/juju/juju/state.Service.IsPrincipal方法的典型用法代碼示例。如果您正苦於以下問題:Golang Service.IsPrincipal方法的具體用法?Golang Service.IsPrincipal怎麽用?Golang Service.IsPrincipal使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/juju/juju/state.Service
的用法示例。
在下文中一共展示了Service.IsPrincipal方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: processService
func (context *statusContext) processService(service *state.Service) (status params.ServiceStatus) {
serviceCharmURL, _ := service.CharmURL()
status.Charm = serviceCharmURL.String()
status.Exposed = service.IsExposed()
status.Life = processLife(service)
latestCharm, ok := context.latestCharms[*serviceCharmURL.WithRevision(-1)]
if ok && latestCharm != serviceCharmURL.String() {
status.CanUpgradeTo = latestCharm
}
var err error
status.Relations, status.SubordinateTo, err = context.processServiceRelations(service)
if err != nil {
status.Err = err
return
}
networks, err := service.Networks()
if err != nil {
status.Err = err
return
}
var cons constraints.Value
if service.IsPrincipal() {
// Only principals can have constraints.
cons, err = service.Constraints()
if err != nil {
status.Err = err
return
}
}
// TODO(dimitern): Drop support for this in a follow-up.
if len(networks) > 0 || cons.HaveNetworks() {
// Only the explicitly requested networks (using "juju deploy
// <svc> --networks=...") will be enabled, and altough when
// specified, networks constraints will be used for instance
// selection, they won't be actually enabled.
status.Networks = params.NetworksSpecification{
Enabled: networks,
Disabled: append(cons.IncludeNetworks(), cons.ExcludeNetworks()...),
}
}
if service.IsPrincipal() {
status.Units = context.processUnits(context.units[service.Name()], serviceCharmURL.String())
serviceStatus, err := service.Status()
if err != nil {
status.Err = err
return
}
status.Status.Status = params.Status(serviceStatus.Status)
status.Status.Info = serviceStatus.Message
status.Status.Data = serviceStatus.Data
status.Status.Since = serviceStatus.Since
status.MeterStatuses = context.processUnitMeterStatuses(context.units[service.Name()])
}
return status
}
示例2: processService
func (context *statusContext) processService(service *state.Service) params.ServiceStatus {
serviceCharmURL, _ := service.CharmURL()
var processedStatus = params.ServiceStatus{
Charm: serviceCharmURL.String(),
Exposed: service.IsExposed(),
Life: processLife(service),
}
if latestCharm, ok := context.latestCharms[*serviceCharmURL.WithRevision(-1)]; ok && latestCharm != nil {
if latestCharm.Revision() > serviceCharmURL.Revision {
processedStatus.CanUpgradeTo = latestCharm.String()
}
}
var err error
processedStatus.Relations, processedStatus.SubordinateTo, err = context.processServiceRelations(service)
if err != nil {
processedStatus.Err = err
return processedStatus
}
if service.IsPrincipal() {
processedStatus.Units = context.processUnits(context.units[service.Name()], serviceCharmURL.String())
serviceStatus, err := service.Status()
if err != nil {
processedStatus.Err = err
return processedStatus
}
processedStatus.Status.Status = serviceStatus.Status
processedStatus.Status.Info = serviceStatus.Message
processedStatus.Status.Data = serviceStatus.Data
processedStatus.Status.Since = serviceStatus.Since
processedStatus.MeterStatuses = context.processUnitMeterStatuses(context.units[service.Name()])
}
return processedStatus
}
示例3: isSubordinate
func isSubordinate(ep *state.Endpoint, service *state.Service) bool {
return ep.Scope == charm.ScopeContainer && !service.IsPrincipal()
}