Ejemplo n.º 1
0
    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')
Ejemplo n.º 2
0
    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}
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
    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')
Ejemplo n.º 8
0
    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})