本文整理汇总了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
}