コード例 #1
0
ファイル: cts.py プロジェクト: prashg28/pyang-ct
 def notification_stmt(self, stmt, p_elem, pset):
     notel = SchemaNode.element("nmt:notification", self.notifications,
                                occur=2)
     elem = SchemaNode.element(self.prefix_id(stmt.arg), notel, occur=2)
     plist, new_pset = self.select_patch(pset, stmt.arg)
     for s in plist: self.handle_stmt(s, elem, new_pset)
     self.handle_substmts(stmt, elem, new_pset)
コード例 #2
0
 def notification_stmt(self, stmt, p_elem, pset):
     notel = SchemaNode.element("nmt:notification",
                                self.notifications,
                                occur=2)
     elem = SchemaNode.element(self.prefix_id(stmt.arg), notel, occur=2)
     plist, new_pset = self.select_patch(pset, stmt.arg)
     for s in plist:
         self.handle_stmt(s, elem, new_pset)
     self.handle_substmts(stmt, elem, new_pset)
コード例 #3
0
ファイル: cts.py プロジェクト: prashg28/pyang-ct
 def create_roots(self):
     """Create root elements for conf. data, RPCs and notifications."""
     self.root = SchemaNode.element("nmt:netmod-tree",
                                    interleave=False, occur=2)
     self.confdata = SchemaNode.element("nmt:top", self.root,
                                        interleave=True, occur=2)
     self.rpcs = SchemaNode.element("nmt:rpc-methods", self.root,
                                    interleave=False, occur=2)
     self.notifications = SchemaNode.element("nmt:notifications", self.root,
                                             interleave=True, occur=2)
コード例 #4
0
ファイル: cts.py プロジェクト: prashg28/pyang-ct
 def rpc_stmt(self, stmt, p_elem, pset):
     rpcel = SchemaNode.element("nmt:rpc-method", self.rpcs, occur=2)
     rlist, r_pset = self.select_patch(pset, stmt.arg)
     inpel = SchemaNode.element("nmt:input", rpcel, occur=2)
     elem = SchemaNode.element(self.prefix_id(stmt.arg), inpel, occur=2)
     inst = stmt.search_one("input")
     if inst:
         ilist, i_pset = self.select_patch(r_pset, "input")
         for s in ilist: self.handle_stmt(s, elem, i_pset)
         self.handle_substmts(inst, elem, i_pset)
     for s in rlist: self.handle_stmt(s, elem, r_pset)
     self.handle_substmts(stmt, rpcel, r_pset)
コード例 #5
0
 def rpc_stmt(self, stmt, p_elem, pset):
     rpcel = SchemaNode.element("nmt:rpc-method", self.rpcs, occur=2)
     rlist, r_pset = self.select_patch(pset, stmt.arg)
     inpel = SchemaNode.element("nmt:input", rpcel, occur=2)
     elem = SchemaNode.element(self.prefix_id(stmt.arg), inpel, occur=2)
     inst = stmt.search_one("input")
     if inst:
         ilist, i_pset = self.select_patch(r_pset, "input")
         for s in ilist:
             self.handle_stmt(s, elem, i_pset)
         self.handle_substmts(inst, elem, i_pset)
     for s in rlist:
         self.handle_stmt(s, elem, r_pset)
     self.handle_substmts(stmt, rpcel, r_pset)
コード例 #6
0
 def notification_stmt(self, stmt, p_elem, pset):
     notel = SchemaNode("nma:notification", self.notifications)
     notel.occur = 2
     elem = SchemaNode.element(self.qname(stmt), notel,
                               interleave=True, occur=2)
     augs, new_pset = self.process_patches(pset, stmt, elem)[1:]
     self.handle_substmts(stmt, elem, new_pset)
     self.apply_augments(augs, elem, new_pset)
コード例 #7
0
 def create_roots(self):
     """Create root elements for conf. data, RPCs and notifications."""
     self.root = SchemaNode.element("nmt:netmod-tree",
                                    interleave=False,
                                    occur=2)
     self.confdata = SchemaNode.element("nmt:top",
                                        self.root,
                                        interleave=True,
                                        occur=2)
     self.rpcs = SchemaNode.element("nmt:rpc-methods",
                                    self.root,
                                    interleave=False,
                                    occur=2)
     self.notifications = SchemaNode.element("nmt:notifications",
                                             self.root,
                                             interleave=True,
                                             occur=2)
コード例 #8
0
ファイル: dsdl.py プロジェクト: wenzhang106/configuration
 def notification_stmt(self, stmt, p_elem, pset):
     notel = SchemaNode("nma:notification", self.notifications)
     notel.occur = 2
     elem = SchemaNode.element(self.qname(stmt),
                               notel,
                               interleave=True,
                               occur=2)
     augs, new_pset = self.process_patches(pset, stmt, elem)[1:]
     self.handle_substmts(stmt, elem, new_pset)
     self.apply_augments(augs, elem, new_pset)
コード例 #9
0
 def anyxml_stmt(self, stmt, p_elem, pset):
     self.has_anyxml = True
     elem = SchemaNode.element(self.qname(stmt), p_elem)
     SchemaNode("ref", elem).set_attr("name", "__anyxml__")
     refd = self.process_patches(pset, stmt, elem)[0]
     if p_elem.name == "choice":
         elem.occur = 3
     elif refd["mandatory"] or stmt.search_one("mandatory", "true"):
         elem.occur = 2
         self.propagate_occur(p_elem, 2)
     self.handle_substmts(stmt, elem)
コード例 #10
0
ファイル: dsdl.py プロジェクト: wenzhang106/configuration
 def anyxml_stmt(self, stmt, p_elem, pset):
     self.has_anyxml = True
     elem = SchemaNode.element(self.qname(stmt), p_elem)
     SchemaNode("ref", elem).set_attr("name", "__anyxml__")
     refd = self.process_patches(pset, stmt, elem)[0]
     if p_elem.name == "choice":
         elem.occur = 3
     elif refd["mandatory"] or stmt.search_one("mandatory", "true"):
         elem.occur = 2
         self.propagate_occur(p_elem, 2)
     self.handle_substmts(stmt, elem)
コード例 #11
0
ファイル: cts.py プロジェクト: prashg28/pyang-ct
 def container_stmt(self, stmt, p_elem, pset):
     celem = SchemaNode.element(self.prefix_id(stmt.arg),p_elem)
     plist, new_pset = self.select_patch(pset, stmt.arg)
     if p_elem.name == "choice":
         if p_elem.default_case != stmt.arg:
             celem.occur = 3
     elif ([ s for s in plist if s.keyword == "presence"] or
         stmt.search_one("presence")):
         celem.occur = 3
     for s in plist: self.handle_stmt(s, celem, new_pset)
     self.handle_substmts(stmt, celem, new_pset)
コード例 #12
0
 def container_stmt(self, stmt, p_elem, pset):
     celem = SchemaNode.element(self.qname(stmt), p_elem)
     refd, augs, new_pset = self.process_patches(pset, stmt, celem)
     left = self.lookup_expand(stmt, new_pset.keys())
     for a in augs:
         left = self.lookup_expand(a, left)
     if (p_elem.name == "choice" and p_elem.default_case != stmt.arg
         or refd["presence"] or stmt.search_one("presence")):
         celem.occur = 3
     self.handle_substmts(stmt, celem, new_pset)
     self.apply_augments(augs, celem, new_pset)
     if not celem.children: SchemaNode("empty", celem)
コード例 #13
0
ファイル: dsdl.py プロジェクト: wenzhang106/configuration
 def container_stmt(self, stmt, p_elem, pset):
     celem = SchemaNode.element(self.qname(stmt), p_elem)
     refd, augs, new_pset = self.process_patches(pset, stmt, celem)
     left = self.lookup_expand(stmt, new_pset.keys())
     for a in augs:
         left = self.lookup_expand(a, left)
     if (p_elem.name == "choice" and p_elem.default_case != stmt.arg
             or refd["presence"] or stmt.search_one("presence")):
         celem.occur = 3
     self.handle_substmts(stmt, celem, new_pset)
     self.apply_augments(augs, celem, new_pset)
     if not celem.children: SchemaNode("empty", celem)
コード例 #14
0
 def container_stmt(self, stmt, p_elem, pset):
     celem = SchemaNode.element(self.prefix_id(stmt.arg), p_elem)
     plist, new_pset = self.select_patch(pset, stmt.arg)
     if p_elem.name == "choice":
         if p_elem.default_case != stmt.arg:
             celem.occur = 3
     elif ([s for s in plist if s.keyword == "presence"]
           or stmt.search_one("presence")):
         celem.occur = 3
     for s in plist:
         self.handle_stmt(s, celem, new_pset)
     self.handle_substmts(stmt, celem, new_pset)
コード例 #15
0
ファイル: cts.py プロジェクト: prashg28/pyang-ct
 def anyxml_stmt(self, stmt, p_elem, pset):
     self.has_anyxml = True
     elem = SchemaNode.element(self.prefix_id(stmt.arg), p_elem)
     SchemaNode("ref", elem).set_attr("name", "__anyxml__")
     plist = self.select_patch(pset, stmt.arg)[0]
     if p_elem.name == "choice":
         elem.occur = 3
     elif self.is_mandatory(stmt, plist):
             elem.occur = 2
             self.propagate_occur(p_elem, 2)
     for s in plist: self.handle_stmt(s, elem)
     self.handle_substmts(stmt, elem)
コード例 #16
0
 def anyxml_stmt(self, stmt, p_elem, pset):
     self.has_anyxml = True
     elem = SchemaNode.element(self.prefix_id(stmt.arg), p_elem)
     SchemaNode("ref", elem).set_attr("name", "__anyxml__")
     plist = self.select_patch(pset, stmt.arg)[0]
     if p_elem.name == "choice":
         elem.occur = 3
     elif self.is_mandatory(stmt, plist):
         elem.occur = 2
         self.propagate_occur(p_elem, 2)
     for s in plist:
         self.handle_stmt(s, elem)
     self.handle_substmts(stmt, elem)
コード例 #17
0
 def leaf_stmt(self, stmt, p_elem, pset):
     qname = self.qname(stmt)
     elem = SchemaNode.element(qname)
     if p_elem.name == "_list_" and qname in p_elem.keys:
         p_elem.keymap[qname] = elem
         elem.occur = 2
     else:
         p_elem.subnode(elem)
     refd = self.process_patches(pset, stmt, elem)[0]
     if p_elem.name == "choice":
         if p_elem.default_case != stmt.arg:
             elem.occur = 3
     elif refd["mandatory"] or stmt.search_one("mandatory", "true"):
         self.propagate_occur(elem, 2)
     if elem.occur == 0:
         defv = self.get_default(stmt, refd)
         if defv is not None:
             elem.default = defv
             self.propagate_occur(elem, 1)
     self.handle_substmts(stmt, elem)
コード例 #18
0
 def rpc_stmt(self, stmt, p_elem, pset):
     rpcel = SchemaNode("nma:rpc", self.rpcs)
     r_pset = self.process_patches(pset, stmt, rpcel)[2]
     inpel = SchemaNode("nma:input", rpcel)
     elem = SchemaNode.element(self.qname(stmt), inpel, occur=2)
     augs, pset = self.process_patches(r_pset,stmt,elem,"input")[1:]
     inst = stmt.search_one("input")
     if inst:
         self.handle_substmts(inst, elem, pset)
     else:
         SchemaNode("empty", elem)
     self.apply_augments(augs, elem, pset)
     augs, pset = self.process_patches(r_pset,stmt,None,"output")[1:]
     oust = stmt.search_one("output")
     if oust or augs:
         outel = SchemaNode("nma:output", rpcel)
         outel.occur = 2
         if oust: self.handle_substmts(oust, outel, pset)
         self.apply_augments(augs, outel, pset)
     self.handle_substmts(stmt, rpcel, r_pset)
コード例 #19
0
ファイル: dsdl.py プロジェクト: wenzhang106/configuration
 def leaf_stmt(self, stmt, p_elem, pset):
     qname = self.qname(stmt)
     elem = SchemaNode.element(qname)
     if p_elem.name == "_list_" and qname in p_elem.keys:
         p_elem.keymap[qname] = elem
         elem.occur = 2
     else:
         p_elem.subnode(elem)
     refd = self.process_patches(pset, stmt, elem)[0]
     if p_elem.name == "choice":
         if p_elem.default_case != stmt.arg:
             elem.occur = 3
     elif refd["mandatory"] or stmt.search_one("mandatory", "true"):
         self.propagate_occur(elem, 2)
     if elem.occur == 0:
         defv = self.get_default(stmt, refd)
         if defv is not None:
             elem.default = defv
             self.propagate_occur(elem, 1)
     self.handle_substmts(stmt, elem)
コード例 #20
0
ファイル: dsdl.py プロジェクト: wenzhang106/configuration
 def rpc_stmt(self, stmt, p_elem, pset):
     rpcel = SchemaNode("nma:rpc", self.rpcs)
     r_pset = self.process_patches(pset, stmt, rpcel)[2]
     inpel = SchemaNode("nma:input", rpcel)
     elem = SchemaNode.element(self.qname(stmt), inpel, occur=2)
     augs, pset = self.process_patches(r_pset, stmt, elem, "input")[1:]
     inst = stmt.search_one("input")
     if inst:
         self.handle_substmts(inst, elem, pset)
     else:
         SchemaNode("empty", elem)
     self.apply_augments(augs, elem, pset)
     augs, pset = self.process_patches(r_pset, stmt, None, "output")[1:]
     oust = stmt.search_one("output")
     if oust or augs:
         outel = SchemaNode("nma:output", rpcel)
         outel.occur = 2
         if oust: self.handle_substmts(oust, outel, pset)
         self.apply_augments(augs, outel, pset)
     self.handle_substmts(stmt, rpcel, r_pset)
コード例 #21
0
ファイル: cts.py プロジェクト: prashg28/pyang-ct
 def leaf_stmt(self, stmt, p_elem, pset):
     def handle_default():
         defv = self.get_default(stmt, plist)
         if defv and elem.occur == 0:
             elem.occur = 1
             elem.default = defv
             self.propagate_occur(elem.parent, 1)
     qname = self.prefix_id(stmt.arg)
     elem = SchemaNode.element(qname)
     plist = self.select_patch(pset, stmt.arg)[0]
     p_elem.subnode(elem)
     if p_elem.name == "choice":
         if p_elem.default_case == stmt.arg:
             handle_default()
         else:
             elem.occur = 3
     elif self.is_mandatory(stmt, plist):
         self.propagate_occur(elem, 2)
     else:
         handle_default()
     for s in plist: self.handle_stmt(s, elem)
     self.handle_substmts(stmt, elem)
コード例 #22
0
    def leaf_stmt(self, stmt, p_elem, pset):
        def handle_default():
            defv = self.get_default(stmt, plist)
            if defv and elem.occur == 0:
                elem.occur = 1
                elem.default = defv
                self.propagate_occur(elem.parent, 1)

        qname = self.prefix_id(stmt.arg)
        elem = SchemaNode.element(qname)
        plist = self.select_patch(pset, stmt.arg)[0]
        p_elem.subnode(elem)
        if p_elem.name == "choice":
            if p_elem.default_case == stmt.arg:
                handle_default()
            else:
                elem.occur = 3
        elif self.is_mandatory(stmt, plist):
            self.propagate_occur(elem, 2)
        else:
            handle_default()
        for s in plist:
            self.handle_stmt(s, elem)
        self.handle_substmts(stmt, elem)
コード例 #23
0
 def output_stmt(self, stmt, p_elem, pset):
     elem = SchemaNode.element("nmt:output", p_elem, occur=2)
     plist, new_pset = self.select_patch(pset, "output")
     for s in plist:
         self.handle_stmt(s, elem, new_pset)
     self.handle_substmts(stmt, elem, new_pset)
コード例 #24
0
ファイル: cts.py プロジェクト: prashg28/pyang-ct
 def output_stmt(self, stmt, p_elem, pset):
     elem = SchemaNode.element("nmt:output", p_elem, occur=2)
     plist, new_pset = self.select_patch(pset, "output")
     for s in plist: self.handle_stmt(s, elem, new_pset)
     self.handle_substmts(stmt, elem, new_pset)