def setUp(self): super(MessageRegistryTestCase, self).setUp() self.conn = mock.Mock() with open('sushy/tests/unit/json_samples/message_registry.json') as f: self.conn.get.return_value.json.return_value = json.load(f) self.registry = message_registry.MessageRegistry( self.conn, '/redfish/v1/Registries/Test', redfish_version='1.0.2')
def setUp(self): super(SettingsFieldTestCase, self).setUp() with open('sushy/tests/unit/json_samples/settings.json') as f: self.json = json.load(f) self.settings = settings.SettingsField() conn = mock.Mock() with open('sushy/tests/unit/json_samples/message_registry.json') as f: conn.get.return_value.json.return_value = json.load(f) registry = message_registry.MessageRegistry( conn, '/redfish/v1/Registries/Test', redfish_version='1.0.2') self.registries = {'Test.1.0': registry}
def test_parse_message_bad_registry(self): conn = mock.Mock() with open('sushy/tests/unit/json_samples/message_registry.json') as f: conn.get.return_value.json.return_value = json.load(f) registry = message_registry.MessageRegistry( conn, '/redfish/v1/Registries/Test', redfish_version='1.0.2') registries = {'Test.1.0.0': registry} message_field = sushy_base.MessageListField('Foo') message_field.message_id = 'BadRegistry.TooBig' parsed_msg = message_registry.parse_message(registries, message_field) self.assertEqual(message_field, parsed_msg)
def test_parse_message_with_severity_resolution_no_args(self): conn = mock.Mock() with open('sushy/tests/unit/json_samples/message_registry.json') as f: conn.get.return_value.json.return_value = json.load(f) registry = message_registry.MessageRegistry( conn, '/redfish/v1/Registries/Test', redfish_version='1.0.2') registries = {'Test.1.0.0': registry} message_field = settings.MessageListField('Foo') message_field.message_id = 'Test.1.0.0.Success' message_field.severity = res_cons.SEVERITY_OK message_field.resolution = 'Do nothing' parsed_msg = message_registry.parse_message(registries, message_field) self.assertEqual('Do nothing', parsed_msg.resolution) self.assertEqual(res_cons.SEVERITY_OK, parsed_msg.severity) self.assertEqual('Everything done successfully.', parsed_msg.message)
def _get_standard_message_registry_collection(self): """Load packaged standard message registries :returns: list of MessageRegistry """ message_registries = [] resource_package_name = __name__ for json_file in pkg_resources.resource_listdir( resource_package_name, STANDARD_REGISTRY_PATH): # Not using path.join according to pkg_resources docs mes_reg = message_registry.MessageRegistry( None, STANDARD_REGISTRY_PATH + json_file, reader=base.JsonPackagedFileReader(resource_package_name)) message_registries.append(mes_reg) return message_registries
def test_parse_message(self): conn = mock.Mock() with open('sushy/tests/unit/json_samples/message_registry.json') as f: conn.get.return_value.json.return_value = json.load(f) registry = message_registry.MessageRegistry( conn, '/redfish/v1/Registries/Test', redfish_version='1.0.2') registries = {'Test.1.0.0': registry} message_field = settings.MessageListField('Foo') message_field.message_id = 'Test.1.0.0.TooBig' message_field.message_args = ['arg1', 10] message_field.severity = None message_field.resolution = None parsed_msg = message_registry.parse_message(registries, message_field) self.assertEqual('Try again', parsed_msg.resolution) self.assertEqual(res_cons.SEVERITY_WARNING, parsed_msg.severity) self.assertEqual('Property\'s arg1 value cannot be greater than 10.', parsed_msg.message)
def setUp(self): super(BiosTestCase, self).setUp() self.conn = mock.Mock() with open('sushy/tests/unit/json_samples/bios.json') as f: self.bios_json = json.load(f) with open('sushy/tests/unit/json_samples/bios_settings.json') as f: self.bios_settings_json = json.load(f) self.conn.get.return_value.json.side_effect = [ self.bios_json, self.bios_settings_json, self.bios_settings_json ] conn = mock.Mock() with open('sushy/tests/unit/json_samples/message_registry.json') as f: conn.get.return_value.json.return_value = json.load(f) registry = message_registry.MessageRegistry( conn, '/redfish/v1/Registries/Test', redfish_version='1.0.2') self.sys_bios = bios.Bios(self.conn, '/redfish/v1/Systems/437XR1138R2/BIOS', registries={'Test.1.0': registry}, redfish_version='1.0.2')
def get_message_registry(self, language, public_connector): """Load message registry file depending on its source Will try to find `MessageRegistry` based on `odata.type` property and provided language. If desired language is not found, will pick a registry that has 'default' language. :param language: RFC 5646 language code for registry files :param public_connector: connector to use when downloading registry from the Internet """ # NOTE (etingof): as per RFC5646, languages are case-insensitive language = language.lower() locations = [ l for l in self.location if l.language.lower() == language ] locations += [ l for l in self.location if l.language.lower() == 'default' ] for location in locations: if location.uri: args = self._conn, kwargs = { 'path': location.uri, 'reader': None, 'redfish_version': self.redfish_version } elif location.archive_uri: args = self._conn, kwargs = { 'path': location.archive_uri, 'reader': base.JsonArchiveReader(location.archive_file), 'redfish_version': self.redfish_version } elif location.publication_uri: args = public_connector, kwargs = { 'path': location.publication_uri, 'reader': base.JsonPublicFileReader(), 'redfish_version': self.redfish_version } else: LOG.warning('Incomplete location for language %(language)s', {'language': language}) continue try: registry = RegistryType(*args, **kwargs) except Exception as exc: LOG.warning( 'Cannot load message registry type from location ' '%(location)s: %(error)s', { 'location': kwargs['path'], 'error': exc }) continue if registry._odata_type.endswith('MessageRegistry'): try: return message_registry.MessageRegistry(*args, **kwargs) except Exception as exc: LOG.warning( 'Cannot load message registry from location ' '%(location)s: %(error)s', { 'location': kwargs['path'], 'error': exc }) continue LOG.debug('Ignoring unsupported flavor of registry %(registry)s', {'registry': registry._odata_type}) return LOG.warning('No message registry found for %(language)s or ' 'default', {'language': language})