本文整理汇总了Golang中github.com/intelsdi-x/snap/core.CatalogedPlugin.Policy方法的典型用法代码示例。如果您正苦于以下问题:Golang CatalogedPlugin.Policy方法的具体用法?Golang CatalogedPlugin.Policy怎么用?Golang CatalogedPlugin.Policy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/intelsdi-x/snap/core.CatalogedPlugin
的用法示例。
在下文中一共展示了CatalogedPlugin.Policy方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: getPlugin
func (s *Server) getPlugin(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
plName := p.ByName("name")
plType := p.ByName("type")
plVersion, iErr := strconv.ParseInt(p.ByName("version"), 10, 0)
f := map[string]interface{}{
"plugin-name": plName,
"plugin-version": plVersion,
"plugin-type": plType,
}
if iErr != nil {
se := serror.New(errors.New("invalid version"))
se.SetFields(f)
respond(400, rbody.FromSnapError(se), w)
return
}
if plName == "" {
se := serror.New(errors.New("missing plugin name"))
se.SetFields(f)
respond(400, rbody.FromSnapError(se), w)
return
}
if plType == "" {
se := serror.New(errors.New("missing plugin type"))
se.SetFields(f)
respond(400, rbody.FromSnapError(se), w)
return
}
pluginCatalog := s.mm.PluginCatalog()
var plugin core.CatalogedPlugin
for _, item := range pluginCatalog {
if item.Name() == plName &&
item.Version() == int(plVersion) &&
item.TypeName() == plType {
plugin = item
break
}
}
if plugin == nil {
se := serror.New(ErrPluginNotFound, f)
respond(404, rbody.FromSnapError(se), w)
return
}
rd := r.FormValue("download")
d, _ := strconv.ParseBool(rd)
var configPolicy []rbody.PolicyTable
if plugin.TypeName() == "processor" || plugin.TypeName() == "publisher" {
rules := plugin.Policy().Get([]string{""}).RulesAsTable()
configPolicy = make([]rbody.PolicyTable, 0, len(rules))
for _, r := range rules {
configPolicy = append(configPolicy, rbody.PolicyTable{
Name: r.Name,
Type: r.Type,
Default: r.Default,
Required: r.Required,
Minimum: r.Minimum,
Maximum: r.Maximum,
})
}
} else {
configPolicy = nil
}
if d {
b, err := ioutil.ReadFile(plugin.PluginPath())
if err != nil {
f["plugin-path"] = plugin.PluginPath()
se := serror.New(err, f)
respond(500, rbody.FromSnapError(se), w)
return
}
w.Header().Set("Content-Encoding", "gzip")
gz := gzip.NewWriter(w)
defer gz.Close()
_, err = gz.Write(b)
if err != nil {
f["plugin-path"] = plugin.PluginPath()
se := serror.New(err, f)
respond(500, rbody.FromSnapError(se), w)
return
}
return
} else {
pluginRet := &rbody.PluginReturned{
Name: plugin.Name(),
Version: plugin.Version(),
Type: plugin.TypeName(),
Signed: plugin.IsSigned(),
Status: plugin.Status(),
LoadedTimestamp: plugin.LoadedTimestamp().Unix(),
Href: pluginURI(r.Host, plugin),
ConfigPolicy: configPolicy,
}
respond(200, pluginRet, w)
}
//.........这里部分代码省略.........