def _resolve_subresource(self, stubs): """Resolves stub resource Args: stubs (stubs): Stubs Passed to Manager """ try: resource = set( self.stub_manager.resolve_subresource(stubs, self.data)) except OSError as e: msg = "Failed to Create Stub Links!" exc = StubError(message=msg) self.log.error(str(e), exception=exc) sys.exit(1) else: return resource
def _should_recurse(self, location): """Checks for multiple stubs in a location Args: location (str): location of potential stub Raises: StubError: No info files could be found Returns: bool: True if multiple stubs are found """ if not Path(location).exists(): return False path = Path(location).resolve() info_glob = list(path.rglob("info.json")) if len(info_glob) == 0: raise StubError(f"{path.name} contains no info file!") if len(info_glob) > 1: return True return False
def validate(self, path, schema=None): """Validates given stub path against its schema Args: path (str): path to validate schema (str, optional): Path to schema. Defaults to None. If None, the DeviceStub schema is used. Raises: StubError: Raised if no info file can be found StubValidationError: Raised if the info file fails validation """ self.log.debug(f"Validating: {path}") schema = schema or self._schema path = Path(path).resolve() stub_info = path / 'info.json' val = utils.Validator(schema) try: val.validate(stub_info) except FileNotFoundError: raise StubError(f"{path.name} contains no info file!") except Exception as e: raise StubValidationError(path, str(e))