def validate(self, errors, pos, val, errstr = ''): for v in val: if util.keysearch(v, 0, self.bits) == None: err_add(errors, pos, 'TYPE_VALUE', (v, self.definition, 'bit not defined' + errstr)) return False return True
def validate(self, errors, pos, val, errstr=''): for v in val: if util.keysearch(v, 0, self.bits) == None: err_add(errors, pos, 'TYPE_VALUE', (v, self.definition, 'bit not defined' + errstr)) return False return True
def validate(self, errors, pos, val, errstr = ''): if util.keysearch(val, 0, self.enums) == None: err_add(errors, pos, 'TYPE_VALUE', (val, self.definition, 'enum not defined' + errstr)) return False else: return True
def validate(self, errors, pos, val, errstr=''): if util.keysearch(val, 0, self.enums) == None: err_add(errors, pos, 'TYPE_VALUE', (val, self.definition, 'enum not defined' + errstr)) return False else: return True
def search_module(self, pos, modulename, revision=None): """Searches for a module named `modulename` in the repository If the module is found, it is added to the context. Returns the module if found, and None otherwise""" if modulename not in self.revs: # this module doesn't exist in the repos at all error.err_add(self.errors, pos, 'MODULE_NOT_FOUND', modulename) # keep track of this to avoid multiple errors self.revs[modulename] = [] return None elif self.revs[modulename] == []: # this module doesn't exist in the repos at all, error reported return None if revision is not None: if (modulename, revision) in self.modules: return self.modules[(modulename, revision)] self._ensure_revs(self.revs[modulename]) x = util.keysearch(revision, 0, self.revs[modulename]) if x is not None: (_revision, handle) = x if handle == None: # this revision doesn't exist in the repos, error reported return None else: # this revision doesn't exist in the repos error.err_add(self.errors, pos, 'MODULE_NOT_FOUND_REV', (modulename, revision)) # keep track of this to avoid multiple errors self.revs[modulename].append((revision, None)) return None else: # get the latest revision (revision, handle) = self._get_latest_rev(self.revs[modulename]) if (modulename, revision) in self.modules: return self.modules[(modulename, revision)] if handle is None: module = None elif handle[0] == 'parsed': module = handle[1] ref = handle[2] if modulename != module.arg: error.err_add(self.errors, module.pos, 'BAD_MODULE_NAME', (module.arg, ref, modulename)) module = None else: module = self.add_parsed_module(handle[1]) else: # get it from the repos try: r = self.repository.get_module_from_handle(handle) (ref, format, text) = r module = self.add_module(ref, text, format, modulename, revision) except self.repository.ReadError, ex: error.err_add(self.errors, pos, 'READ_ERROR', str(ex)) module = None
def search_module(self, pos, modulename, revision=None): """Searches for a module named `modulename` in the repository If the module is found, it is added to the context. Returns the module if found, and None otherwise""" if modulename not in self.revs: # this module doesn't exist in the repos at all error.err_add(self.errors, pos, 'MODULE_NOT_FOUND', modulename) # keep track of this to avoid multiple errors self.revs[modulename] = [] return None elif self.revs[modulename] == []: # this module doesn't exist in the repos at all, error reported return None if revision is not None: if (modulename,revision) in self.modules: return self.modules[(modulename, revision)] self._ensure_revs(self.revs[modulename]) x = util.keysearch(revision, 0, self.revs[modulename]) if x is not None: (_revision, handle) = x if handle == None: # this revision doesn't exist in the repos, error reported return None else: # this revision doesn't exist in the repos error.err_add(self.errors, pos, 'MODULE_NOT_FOUND_REV', (modulename, revision)) # keep track of this to avoid multiple errors self.revs[modulename].append((revision, None)) return None else: # get the latest revision (revision, handle) = self._get_latest_rev(self.revs[modulename]) if (modulename, revision) in self.modules: return self.modules[(modulename, revision)] if handle is None: module = None elif handle[0] == 'parsed': module = handle[1] ref = handle[2] if modulename != module.arg: error.err_add(self.errors, module.pos, 'BAD_MODULE_NAME', (module.arg, ref, modulename)) module = None else: module = self.add_parsed_module(handle[1]) else: # get it from the repos try: r = self.repository.get_module_from_handle(handle) (ref, format, text) = r module = self.add_module(ref, text, format, modulename, revision) except self.repository.ReadError, ex: error.err_add(self.errors, pos, 'READ_ERROR', str(ex)) module = None
def read_module(self, modulename, revision=None, extra={}): """Searches for a module named `modulename` in the repository The module is just read, and not compiled at all. Returns the module if found, and None otherwise""" if modulename not in self.revs: # this module doesn't exist in the repos at all return None elif self.revs[modulename] == []: # this module doesn't exist in the repos at all, error reported return None if revision is not None: if (modulename,revision) in self.modules: return self.modules[(modulename, revision)] self._ensure_revs(self.revs[modulename]) x = util.keysearch(revision, 1, self.revs[modulename]) if x is not None: (_revision, handle) = x if handle == None: # this revision doesn't exist in the repos, error reported return None else: # this revision doesn't exist in the repos return None else: # get the latest revision (revision, handle) = self._get_latest_rev(self.revs[modulename]) if (modulename, revision) in self.modules: return self.modules[(modulename, revision)] if handle[0] == 'parsed': module = handle[1] return module else: # get it from the repos try: r = self.repository.get_module_from_handle(handle) (ref, format, text) = r if format == None: format = util.guess_format(text) if format == 'yin': p = yin_parser.YinParser(extra) else: p = yang_parser.YangParser(extra) return p.parse(self, ref, text) except self.repository.ReadError, ex: return None
def read_module(self, modulename, revision=None, extra={}): """Searches for a module named `modulename` in the repository The module is just read, and not compiled at all. Returns the module if found, and None otherwise""" if modulename not in self.revs: # this module doesn't exist in the repos at all return None elif self.revs[modulename] == []: # this module doesn't exist in the repos at all, error reported return None if revision is not None: if (modulename, revision) in self.modules: return self.modules[(modulename, revision)] self._ensure_revs(self.revs[modulename]) x = util.keysearch(revision, 1, self.revs[modulename]) if x is not None: (_revision, handle) = x if handle == None: # this revision doesn't exist in the repos, error reported return None else: # this revision doesn't exist in the repos return None else: # get the latest revision (revision, handle) = self._get_latest_rev(self.revs[modulename]) if (modulename, revision) in self.modules: return self.modules[(modulename, revision)] if handle[0] == 'parsed': module = handle[1] return module else: # get it from the repos try: r = self.repository.get_module_from_handle(handle) (ref, format, text) = r if format == None: format = util.guess_format(text) if format == 'yin': p = yin_parser.YinParser(extra) else: p = yang_parser.YangParser(extra) return p.parse(self, ref, text) except self.repository.ReadError, ex: return None