def get_selinux_status(): ''' Get SELinux status information ''' # will be None if something went wrong or contain SELinuxFacts otherwise res = None try: import selinux # pylint: disable=import-outside-toplevel except ImportError: api.report_error( "SELinux Import Error", details="libselinux-python package must be installed.") return res outdata = dict({'enabled': selinux.is_selinux_enabled() == 1}) outdata['mls_enabled'] = selinux.is_selinux_mls_enabled() == 1 try: outdata['runtime_mode'] = "enforcing" if selinux.security_getenforce( ) == 1 else "permissive" # FIXME: check selinux_getenforcemode[0] (that should be return value of a underneath function) enforce_mode = selinux.selinux_getenforcemode()[1] if enforce_mode >= 0: outdata[ 'static_mode'] = "enforcing" if enforce_mode == 1 else "permissive" else: outdata['static_mode'] = "disabled" outdata['policy'] = selinux.selinux_getpolicytype()[1] except OSError: # This happens when SELinux is disabled # [Errno 2] No such file or directory outdata['runtime_mode'] = 'permissive' outdata['static_mode'] = 'disabled' outdata['policy'] = 'targeted' res = SELinuxFacts(**outdata) return res
def test_actor_messaging_paths(leapp_forked, repository, actor_name): # noqa; pylint: disable=unused-argument messaging = _TestableMessaging() with _with_loaded_actor(repository, actor_name, messaging) as (_unused, actor): messaging.feed(ApiTestConsume(data='prefilled'), actor) assert len(list(actor.consume(ApiTestConsume))) == 1 assert next(actor.consume(ApiTestConsume)).data == 'prefilled' assert len(list(api.consume(ApiTestConsume))) == 1 assert next(api.consume(ApiTestConsume)).data == 'prefilled' actor_message = 'Actor {} sent message via Actor'.format(actor_name) api_message = 'Actor {} sent message via API'.format(actor_name) actor.produce(ApiTestProduce(data=actor_message)) assert messaging.produced.pop().data == actor_message api.produce(ApiTestProduce(data=api_message)) assert messaging.produced.pop().data == api_message api.report_error("api error report", details={'source': 'api'}) assert messaging.errors.pop().message.startswith("api ") actor.report_error("actor error report", details={'source': 'actor'}) assert messaging.errors.pop().message.startswith("actor ")
def check(): results = list(api.consume(Report)) for error in [ msg for msg in results if 'inhibitor' in msg.report.get('flags', []) ]: api.report_error(error.report['title'])
def produce_error(error, summary=None): if summary: error.summary = summary api.report_error(str(error))