本文整理汇总了Golang中github.com/juju/juju/apiserver/params.IsCodeNotFound函数的典型用法代码示例。如果您正苦于以下问题:Golang IsCodeNotFound函数的具体用法?Golang IsCodeNotFound怎么用?Golang IsCodeNotFound使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IsCodeNotFound函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: startMachine
// startMachine creates a new data value for tracking details of the
// machine and starts watching the machine for units added or removed.
func (fw *Firewaller) startMachine(tag names.MachineTag) error {
machined := &machineData{
fw: fw,
tag: tag,
unitds: make(map[names.UnitTag]*unitData),
openedPorts: make([]network.PortRange, 0),
definedPorts: make(map[network.PortRange]names.UnitTag),
}
m, err := machined.machine()
if params.IsCodeNotFound(err) {
return nil
} else if err != nil {
return errors.Annotate(err, "cannot watch machine units")
}
unitw, err := m.WatchUnits()
if err != nil {
return err
}
select {
case <-fw.tomb.Dying():
return tomb.ErrDying
case change, ok := <-unitw.Changes():
if !ok {
return watcher.EnsureErr(unitw)
}
fw.machineds[tag] = machined
err = fw.unitsChanged(&unitsChange{machined, change})
if err != nil {
delete(fw.machineds, tag)
return errors.Annotatef(err, "cannot respond to units changes for %q", tag)
}
}
go machined.watchLoop(unitw)
return nil
}
示例2: opClientAddRelation
func opClientAddRelation(c *gc.C, st api.Connection, mst *state.State) (func(), error) {
_, err := st.Client().AddRelation("nosuch1", "nosuch2")
if params.IsCodeNotFound(err) {
err = nil
}
return func() {}, err
}
示例3: opClientDestroyRelation
func opClientDestroyRelation(c *gc.C, st *api.State, mst *state.State) (func(), error) {
err := st.Client().DestroyRelation("nosuch1", "nosuch2")
if params.IsCodeNotFound(err) {
err = nil
}
return func() {}, err
}
示例4: opClientServiceSetCharm
func opClientServiceSetCharm(c *gc.C, st api.Connection, mst *state.State) (func(), error) {
err := service.NewClient(st).ServiceSetCharm("nosuch", "local:quantal/wordpress", false, false)
if params.IsCodeNotFound(err) {
err = nil
}
return func() {}, err
}
示例5: startMachines
func (p *updater) startMachines(tags []names.MachineTag) error {
for _, tag := range tags {
if c := p.machines[tag]; c == nil {
// We don't know about the machine - start
// a goroutine to deal with it.
m, err := p.context.getMachine(tag)
if params.IsCodeNotFound(err) {
logger.Warningf("watcher gave notification of non-existent machine %q", tag.Id())
continue
}
if err != nil {
return err
}
// We don't poll manual machines.
isManual, err := m.IsManual()
if err != nil {
return err
}
if isManual {
continue
}
c = make(chan struct{})
p.machines[tag] = c
go runMachine(p.context.newMachineContext(), m, c, p.machineDead)
} else {
select {
case <-p.context.dying():
return p.context.errDying()
case c <- struct{}{}:
}
}
}
return nil
}
示例6: Life
// Life returns the entity's life value; or ErrNotFound; or some
// other error.
func (facade *Facade) Life(entity names.Tag) (life.Value, error) {
args := params.Entities{
Entities: []params.Entity{{Tag: entity.String()}},
}
var results params.LifeResults
err := facade.caller.FacadeCall("Life", args, &results)
if err != nil {
return "", errors.Trace(err)
}
if count := len(results.Results); count != 1 {
return "", errors.Errorf("expected 1 Life result, got %d", count)
}
result := results.Results[0]
if err := result.Error; err != nil {
if params.IsCodeNotFound(err) {
return "", ErrNotFound
}
return "", errors.Trace(result.Error)
}
life := life.Value(result.Life)
if err := life.Validate(); err != nil {
return "", errors.Trace(err)
}
return life, nil
}
示例7: UpdateStorage
// UpdateStorage responds to changes in the lifecycle states of the
// storage attachments corresponding to the supplied storage tags,
// sending storage hooks on the channel returned by Hooks().
func (a *Attachments) UpdateStorage(tags []names.StorageTag) error {
ids := make([]params.StorageAttachmentId, len(tags))
for i, storageTag := range tags {
ids[i] = params.StorageAttachmentId{
StorageTag: storageTag.String(),
UnitTag: a.unitTag.String(),
}
}
results, err := a.st.StorageAttachmentLife(ids)
if err != nil {
return errors.Trace(err)
}
for i, result := range results {
if result.Error == nil {
continue
} else if params.IsCodeNotFound(result.Error) {
a.pending.Remove(tags[i])
continue
}
return errors.Annotatef(
result.Error, "getting life of storage %s attachment", tags[i].Id(),
)
}
for i, result := range results {
if result.Error != nil {
continue
}
if err := a.updateOneStorage(tags[i], result.Life); err != nil {
return errors.Trace(err)
}
}
return nil
}
示例8: storageChanged
// storageChanged responds to unit storage changes.
func (w *RemoteStateWatcher) storageChanged(keys []string) error {
tags := make([]names.StorageTag, len(keys))
for i, key := range keys {
tags[i] = names.NewStorageTag(key)
}
ids := make([]params.StorageAttachmentId, len(keys))
for i, tag := range tags {
ids[i] = params.StorageAttachmentId{
StorageTag: tag.String(),
UnitTag: w.unit.Tag().String(),
}
}
results, err := w.st.StorageAttachmentLife(ids)
if err != nil {
return errors.Trace(err)
}
w.mu.Lock()
defer w.mu.Unlock()
for i, result := range results {
tag := tags[i]
if result.Error == nil {
if storageSnapshot, ok := w.current.Storage[tag]; ok {
// We've previously started a watcher for this storage
// attachment, so all we needed to do was update the
// lifecycle state.
storageSnapshot.Life = result.Life
w.current.Storage[tag] = storageSnapshot
continue
}
// We haven't seen this storage attachment before, so start
// a watcher now; add it to our catacomb in case of mishap;
// and wait for the initial event.
saw, err := w.st.WatchStorageAttachment(tag, w.unit.Tag())
if err != nil {
return errors.Annotate(err, "watching storage attachment")
}
if err := w.catacomb.Add(saw); err != nil {
return errors.Trace(err)
}
if err := w.watchStorageAttachment(tag, result.Life, saw); err != nil {
return errors.Trace(err)
}
} else if params.IsCodeNotFound(result.Error) {
if watcher, ok := w.storageAttachmentWatchers[tag]; ok {
// already under catacomb management, any error tracked already
worker.Stop(watcher)
delete(w.storageAttachmentWatchers, tag)
}
delete(w.current.Storage, tag)
} else {
return errors.Annotatef(
result.Error, "getting life of %s attachment",
names.ReadableString(tag),
)
}
}
return nil
}
示例9: opClientDestroyRelation
func opClientDestroyRelation(c *gc.C, st api.Connection, mst *state.State) (func(), error) {
err := application.NewClient(st).DestroyRelation("nosuch1", "nosuch2")
if params.IsCodeNotFound(err) {
err = nil
}
return func() {}, err
}
示例10: opClientAddServiceUnits
func opClientAddServiceUnits(c *gc.C, st api.Connection, mst *state.State) (func(), error) {
_, err := application.NewClient(st).AddUnits("nosuch", 1, nil)
if params.IsCodeNotFound(err) {
err = nil
}
return func() {}, err
}
示例11: refreshMachine
// refreshMachine refreshes the specified machine's instance ID. If it is set,
// then the machine watcher is stopped and pending entities' parameters are
// updated. If the machine is not provisioned yet, this method is a no-op.
func refreshMachine(ctx *context, tag names.MachineTag) error {
w, ok := ctx.machines[tag]
if !ok {
return errors.Errorf("machine %s is not being watched", tag.Id())
}
stopAndRemove := func() error {
worker.Stop(w)
delete(ctx.machines, tag)
return nil
}
results, err := ctx.config.Machines.InstanceIds([]names.MachineTag{tag})
if err != nil {
return errors.Annotate(err, "getting machine instance ID")
}
if err := results[0].Error; err != nil {
if params.IsCodeNotProvisioned(err) {
return nil
} else if params.IsCodeNotFound(err) {
// Machine is gone, so stop watching.
return stopAndRemove()
}
return errors.Annotate(err, "getting machine instance ID")
}
machineProvisioned(ctx, tag, instance.Id(results[0].Result))
// machine provisioning is the only thing we care about;
// stop the watcher.
return stopAndRemove()
}
示例12: RestoreError
// RestoreError makes a best effort at converting the given error
// back into an error originally converted by ServerError(). If the
// error could not be converted then false is returned.
func RestoreError(err error) (error, bool) {
err = errors.Cause(err)
if apiErr, ok := err.(*params.Error); !ok {
return err, false
} else if apiErr == nil {
return nil, true
}
if params.ErrCode(err) == "" {
return err, false
}
msg := err.Error()
if singleton, ok := singletonError(err); ok {
return singleton, true
}
// TODO(ericsnow) Support the other error types handled by ServerError().
switch {
case params.IsCodeUnauthorized(err):
return errors.NewUnauthorized(nil, msg), true
case params.IsCodeNotFound(err):
// TODO(ericsnow) UnknownModelError should be handled here too.
// ...by parsing msg?
return errors.NewNotFound(nil, msg), true
case params.IsCodeAlreadyExists(err):
return errors.NewAlreadyExists(nil, msg), true
case params.IsCodeNotAssigned(err):
return errors.NewNotAssigned(nil, msg), true
case params.IsCodeHasAssignedUnits(err):
// TODO(ericsnow) Handle state.HasAssignedUnitsError here.
// ...by parsing msg?
return err, false
case params.IsCodeNoAddressSet(err):
// TODO(ericsnow) Handle isNoAddressSetError here.
// ...by parsing msg?
return err, false
case params.IsCodeNotProvisioned(err):
return errors.NewNotProvisioned(nil, msg), true
case params.IsCodeUpgradeInProgress(err):
// TODO(ericsnow) Handle state.UpgradeInProgressError here.
// ...by parsing msg?
return err, false
case params.IsCodeMachineHasAttachedStorage(err):
// TODO(ericsnow) Handle state.HasAttachmentsError here.
// ...by parsing msg?
return err, false
case params.IsCodeNotSupported(err):
return errors.NewNotSupported(nil, msg), true
case params.IsBadRequest(err):
return errors.NewBadRequest(nil, msg), true
case params.IsMethodNotAllowed(err):
return errors.NewMethodNotAllowed(nil, msg), true
case params.ErrCode(err) == params.CodeDischargeRequired:
// TODO(ericsnow) Handle DischargeRequiredError here.
return err, false
default:
return err, false
}
}
示例13: opClientServiceDestroy
func opClientServiceDestroy(c *gc.C, st *api.State, mst *state.State) (func(), error) {
err := st.Client().ServiceDestroy("non-existent")
if params.IsCodeNotFound(err) {
err = nil
}
return func() {}, err
}
示例14: opClientServiceDestroy
func opClientServiceDestroy(c *gc.C, st api.Connection, mst *state.State) (func(), error) {
err := application.NewClient(st).Destroy("non-existent")
if params.IsCodeNotFound(err) {
err = nil
}
return func() {}, err
}
示例15: opClientAddServiceUnits
func opClientAddServiceUnits(c *gc.C, st api.Connection, mst *state.State) (func(), error) {
_, err := st.Client().AddServiceUnits("nosuch", 1, "")
if params.IsCodeNotFound(err) {
err = nil
}
return func() {}, err
}