本文整理匯總了Golang中github.com/contiv/volplugin/db.Entity.Copy方法的典型用法代碼示例。如果您正苦於以下問題:Golang Entity.Copy方法的具體用法?Golang Entity.Copy怎麽用?Golang Entity.Copy使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/contiv/volplugin/db.Entity
的用法示例。
在下文中一共展示了Entity.Copy方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: traverse
// traverse walks the keyspace and converts anything that looks like an entity
// into an entity and returns it as part of the array.
//
// traverse will log & skip errors to ensure bad data will not break this routine.
func (c *Client) traverse(node *client.Node, obj db.Entity) []db.Entity {
entities := []db.Entity{}
if node.Dir {
for _, inner := range node.Nodes {
entities = append(entities, c.traverse(inner, obj)...)
}
} else {
copy := obj.Copy()
doAppend := true
if err := jsonio.Read(copy, []byte(node.Value)); err != nil {
// This is kept this way so a buggy policy won't break listing all of them
logrus.Errorf("Received error retrieving value at path %q during list: %v", node.Key, err)
doAppend = false
}
if err := copy.SetKey(c.trimPath(node.Key)); err != nil {
logrus.Error(err)
doAppend = false
}
// same here. fire hooks to retrieve the full entity. only log but don't append on error.
if copy.Hooks().PostGet != nil {
if err := copy.Hooks().PostGet(c, copy); err != nil {
logrus.Errorf("Error received trying to run fetch hooks during %q list: %v", node.Key, err)
doAppend = false
}
}
if doAppend {
entities = append(entities, copy)
}
}
return entities
}