叶节点'当'或者'必须'声明用法

时间:2017-04-24 12:29:53

标签: ietf-netmod-yang

我正在学习OpenDayLight和Yang,并且无法弄清楚如何在叶子节点上设置约束。我有一个叶节点(vpn-id)。当l3vpn类型节点等于' bgp'时,我希望vpn-id允许这个节点的数据。如果叶节点不等于' bgp'并输入vpn-id我想抛出一个错误。我已经在OpenDayLight中对此进行了测试,它总是允许我保存数据,无论数据是什么。

另外,我很难找到杨的例子,所以我可以自学。欢迎提出建议。

public class UrlWithExtensionHandler : IRouteHandler
{
    #region Implementation of IRouteHandler

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        // init umbraco context
        var httpContext = new HttpContextWrapper(HttpContext.Current);

        UmbracoContext.EnsureContext(
            httpContext,
            ApplicationContext.Current,
            new WebSecurity(httpContext, ApplicationContext.Current),
            UmbracoConfig.For.UmbracoSettings(),
            UrlProviderResolver.Current.Providers,
            false);

        var handler = new UrlWithExtensionVirtualNodeRouteHandler();
        return handler.GetHttpHandler(requestContext);
    }

    #endregion
}

public class UrlWithExtensionVirtualNodeRouteHandler : UmbracoVirtualNodeRouteHandler
{
    protected override IPublishedContent FindContent(RequestContext requestContext,
            UmbracoContext umbracoContext)
    {
        return someIPublishedContent;
    }
}

2 个答案:

答案 0 :(得分:0)

您对when声明的使用是正确的。您已将vpn-id设置为有条件,因此仅当l3vpn-type的值为bgp时才允许显示。由于ODL中的错误,也许它没有按预期工作。

如果您想了解YANG,阅读标签wiki将是一个良好的开端(底部有链接)。有各种群组制作的YANG模块库可以在网上找到,例如this one。也许阅读标准模块将是一个更好的开始,因为他们经过同行评审并遵循杨作者的指导方针。它们可以在published RFCs内找到,通常名称中包含" YANG数据模型,用于"短语。

答案 1 :(得分:0)

您可以添加如下 must 语句:

leaf vpn-id {
    must "../l3vpn-type = 'bgp'";
    type string;
}