Esempio n. 1
0
 def from_path(cls, path: str) -> 'Config':
     if not os.path.exists(path):
         raise errors.KojiError(f'Config file not found: {path}')
     config = configparser.ConfigParser()
     try:
         config.read(path)
     except configparser.Error as e:
         raise errors.KojiError(str(e))
     c = cls()
     c.config = config
     return c
Esempio n. 2
0
 def is_ok(self) -> bool:
     """
 Return a boolean value validating the session status.
 """
     if self.session is None:
         raise errors.KojiError('Session was not initialized')
     return True
Esempio n. 3
0
def test_error_default():
  e = errors.KojiError()

  assert e.message == 'unexpected koji error'
  assert e.code == 1
  assert e.data is None
  assert repr(e) == '[1] unexpected koji error'
Esempio n. 4
0
def test_error_custom():
  e = errors.KojiError('host is down', data={'url': 'localhost:8443'})

  assert e.message == 'host is down'
  assert e.code == 1
  assert e.data == {'url': 'localhost:8443'}
  assert repr(e) == '[1] host is down'
Esempio n. 5
0
def session_setup(opts: Dict[Any, Any]) -> Any:  #TODO
    """
  Build the correct session object and login to a koji-hub server.

  Raises an `errors.BaseError` (subclasses) in case of unexpected problems.
  """
    stype = ''
    if 'serverca' in opts and 'cert' in opts:
        stype = 'ssl'
    s = session.get(stype, **opts)
    if s is None:
        raise errors.KojiError('Unable to idenify authentication type.')
    s.login()
    if not s.is_ok():
        raise errors.AuthError('Unable to validate session')
    return s
Esempio n. 6
0
 def logout(self) -> None:
     """
 Destroys the current session.
 Raises an AuthError in case of failure.
 """
     if self.session is None:
         raise errors.KojiError(
             'Session was not initialized or is already terminated')
     try:
         self.session.logout()
     except koji.AuthError as e:
         raise errors.AuthError(str(e),
                                data={
                                    'ca_cert': self.opts['serverca'],
                                    'cert': self.opts['cert']
                                })
     self.session = None
Esempio n. 7
0
 def login(self) -> None:
     """
 Authenticates to a koji-hub instance.
 Raises an AuthError in case of failure.
 """
     self.session = koji.ClientSession(self.opts['server'], self.opts)
     try:
         self.session.ssl_login(self.opts['cert'], None,
                                self.opts['serverca'])
     except requests.exceptions.RequestException as e:
         raise errors.KojiError(str(e))
     except koji.AuthError as e:
         raise errors.AuthError(str(e),
                                data={
                                    'ca_cert': self.opts['serverca'],
                                    'cert': self.opts['cert']
                                })
Esempio n. 8
0
 def preflight_check(self) -> None:
     paths = [self.opts['cert'], self.opts['serverca']]
     for path in paths:
         if not os.path.exists(path):
             raise errors.KojiError(f'File not found: {path}')