{
    "name"  : "检查生成树是否存在异常",
    "precondition" : ["name"],
    "problems" : {
        "problem1-1" : {
            "desc"      : "【问题】接口配置的Root Guard功能生效，并且被BLOCK。",
            "advice"    : "【建议】请核实接口上是否必要开启Root Guard功能（一般配置于设备下联指派口上，用于防止根桥变化影响到核心网络。）可通过接口模式下no spanning-tree guard root关闭。"
        },
		"problem1-2" : {
            "desc"      : "【问题】接口因配置的Loop Guard生效，而将端口BLOCK。",
            "advice"    : "【建议】请核实接口上是否必要开启Loop Guard功能（一般在上联根桥方向的接口上配置，防止接口因收包异常而出现环路。）可通过接口模式下no spanning-tree guard loop关闭"
        },
		"problem2" : {
            "desc"      : "【问题】存在接口BPDU Guard功能生效，而将端口设置为违例状态的情况。",
            "advice"    : "【建议】请检查该接口是否有必要开启BPDU Guard功能。若有必要打开，则说明该接口下联拓扑会发送BPDU报文上来，需要进行排查；若不用打开，则可通过接口模式下spanning-tree bpduguard disabled关闭。"
        }
    }
}
---------------------------code-------------------------------
result=cli('show spanning-tree inconsistentports')
reg=(/Root\sInconsistent/)
if reg.test(result) :
	add_problem('problem1-1')
	return 'warn'
end
reg=(/Loop\sInconsistent/)
if reg.test(result) :
	add_problem('problem1-2')
	return 'warn'
end

result=cli('show interface status err-disabled')
reg=(/err-disabled\s+BPDU\sGuard/)
if reg.test(result) :
	add_problem('problem2')
	return 'warn'
end
return 'success'
	
	