Add new error types
Add ImageFailure and BusyFailure for error reporting.
Rerun elog-errors script to generate error data.
Change-Id: I1f9ec4766d510abe612db2453dcf36325c7dd2f4
Signed-off-by: James Feist <james.feist@linux.intel.com>
diff --git a/elog-errors.hpp b/elog-errors.hpp
index aba1b6a..1b28415 100644
--- a/elog-errors.hpp
+++ b/elog-errors.hpp
@@ -22,6 +22,66 @@
{
namespace Error
{
+struct ManifestFileFailure;
+} // namespace Error
+} // namespace Image
+} // namespace Software
+} // namespace openbmc_project
+} // namespace xyz
+} // namespace sdbusplus
+
+namespace sdbusplus
+{
+namespace xyz
+{
+namespace openbmc_project
+{
+namespace Software
+{
+namespace Image
+{
+namespace Error
+{
+struct ImageFailure;
+} // namespace Error
+} // namespace Image
+} // namespace Software
+} // namespace openbmc_project
+} // namespace xyz
+} // namespace sdbusplus
+
+namespace sdbusplus
+{
+namespace xyz
+{
+namespace openbmc_project
+{
+namespace Software
+{
+namespace Image
+{
+namespace Error
+{
+struct BusyFailure;
+} // namespace Error
+} // namespace Image
+} // namespace Software
+} // namespace openbmc_project
+} // namespace xyz
+} // namespace sdbusplus
+
+namespace sdbusplus
+{
+namespace xyz
+{
+namespace openbmc_project
+{
+namespace Software
+{
+namespace Image
+{
+namespace Error
+{
struct UnTarFailure;
} // namespace Error
} // namespace Image
@@ -50,26 +110,6 @@
} // namespace xyz
} // namespace sdbusplus
-namespace sdbusplus
-{
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Software
-{
-namespace Image
-{
-namespace Error
-{
-struct ManifestFileFailure;
-} // namespace Error
-} // namespace Image
-} // namespace Software
-} // namespace openbmc_project
-} // namespace xyz
-} // namespace sdbusplus
-
namespace phosphor
{
@@ -89,38 +129,24 @@
struct PATH
{
- static constexpr auto str = "PATH=%s";
+ /*
+ * We can't use -fsanitize=undefined if we declare a
+ * 'static constexpr auto str' member, so don't. Instead, open-code the
+ * mako template lookups.
+ */
static constexpr auto str_short = "PATH";
- using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
- explicit constexpr PATH(const char* a) : _entry(entry(str, a)){};
+ using type = std::tuple<std::decay_t<decltype("PATH=%s")>, const char*>;
+ explicit constexpr PATH(const char* a) : _entry(entry("PATH=%s", a)){};
type _entry;
};
} // namespace _UnTarFailure
-struct UnTarFailure : public sdbusplus::exception_t
+struct UnTarFailure
{
- static constexpr auto errName =
- "xyz.openbmc_project.Software.Image.UnTarFailure";
- static constexpr auto errDesc = "An error occurred during untar.";
static constexpr auto L = level::ERR;
using PATH = _UnTarFailure::PATH;
using metadata_types = std::tuple<PATH>;
-
- const char* name() const noexcept
- {
- return errName;
- }
-
- const char* description() const noexcept
- {
- return errDesc;
- }
-
- const char* what() const noexcept
- {
- return errName;
- }
};
} // namespace Image
@@ -137,6 +163,7 @@
{
using type = xyz::openbmc_project::Software::Image::UnTarFailure;
};
+
} // namespace details
namespace xyz
@@ -152,38 +179,24 @@
struct PATH
{
- static constexpr auto str = "PATH=%s";
+ /*
+ * We can't use -fsanitize=undefined if we declare a
+ * 'static constexpr auto str' member, so don't. Instead, open-code the
+ * mako template lookups.
+ */
static constexpr auto str_short = "PATH";
- using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
- explicit constexpr PATH(const char* a) : _entry(entry(str, a)){};
+ using type = std::tuple<std::decay_t<decltype("PATH=%s")>, const char*>;
+ explicit constexpr PATH(const char* a) : _entry(entry("PATH=%s", a)){};
type _entry;
};
} // namespace _ManifestFileFailure
-struct ManifestFileFailure : public sdbusplus::exception_t
+struct ManifestFileFailure
{
- static constexpr auto errName =
- "xyz.openbmc_project.Software.Image.ManifestFileFailure";
- static constexpr auto errDesc = "An error when reading the Manifest file.";
static constexpr auto L = level::ERR;
using PATH = _ManifestFileFailure::PATH;
using metadata_types = std::tuple<PATH>;
-
- const char* name() const noexcept
- {
- return errName;
- }
-
- const char* description() const noexcept
- {
- return errDesc;
- }
-
- const char* what() const noexcept
- {
- return errName;
- }
};
} // namespace Image
@@ -200,6 +213,7 @@
{
using type = xyz::openbmc_project::Software::Image::ManifestFileFailure;
};
+
} // namespace details
namespace xyz
@@ -215,39 +229,24 @@
struct FAIL
{
- static constexpr auto str = "FAIL=%s";
+ /*
+ * We can't use -fsanitize=undefined if we declare a
+ * 'static constexpr auto str' member, so don't. Instead, open-code the
+ * mako template lookups.
+ */
static constexpr auto str_short = "FAIL";
- using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
- explicit constexpr FAIL(const char* a) : _entry(entry(str, a)){};
+ using type = std::tuple<std::decay_t<decltype("FAIL=%s")>, const char*>;
+ explicit constexpr FAIL(const char* a) : _entry(entry("FAIL=%s", a)){};
type _entry;
};
} // namespace _InternalFailure
-struct InternalFailure : public sdbusplus::exception_t
+struct InternalFailure
{
- static constexpr auto errName =
- "xyz.openbmc_project.Software.Image.InternalFailure";
- static constexpr auto errDesc =
- "The operation failed internally during processing the image.";
static constexpr auto L = level::ERR;
using FAIL = _InternalFailure::FAIL;
using metadata_types = std::tuple<FAIL>;
-
- const char* name() const noexcept
- {
- return errName;
- }
-
- const char* description() const noexcept
- {
- return errDesc;
- }
-
- const char* what() const noexcept
- {
- return errName;
- }
};
} // namespace Image
@@ -264,6 +263,120 @@
{
using type = xyz::openbmc_project::Software::Image::InternalFailure;
};
+
+} // namespace details
+
+namespace xyz
+{
+namespace openbmc_project
+{
+namespace Software
+{
+namespace Image
+{
+namespace _ImageFailure
+{
+
+struct FAIL
+{
+ /*
+ * We can't use -fsanitize=undefined if we declare a
+ * 'static constexpr auto str' member, so don't. Instead, open-code the
+ * mako template lookups.
+ */
+ static constexpr auto str_short = "FAIL";
+ using type = std::tuple<std::decay_t<decltype("FAIL=%s")>, const char*>;
+ explicit constexpr FAIL(const char* a) : _entry(entry("FAIL=%s", a)){};
+ type _entry;
+};
+struct PATH
+{
+ /*
+ * We can't use -fsanitize=undefined if we declare a
+ * 'static constexpr auto str' member, so don't. Instead, open-code the
+ * mako template lookups.
+ */
+ static constexpr auto str_short = "PATH";
+ using type = std::tuple<std::decay_t<decltype("PATH=%s")>, const char*>;
+ explicit constexpr PATH(const char* a) : _entry(entry("PATH=%s", a)){};
+ type _entry;
+};
+
+} // namespace _ImageFailure
+
+struct ImageFailure
+{
+ static constexpr auto L = level::ERR;
+ using FAIL = _ImageFailure::FAIL;
+ using PATH = _ImageFailure::PATH;
+ using metadata_types = std::tuple<FAIL, PATH>;
+};
+
+} // namespace Image
+} // namespace Software
+} // namespace openbmc_project
+} // namespace xyz
+
+namespace details
+{
+
+template <>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Software::Image::Error::ImageFailure>
+{
+ using type = xyz::openbmc_project::Software::Image::ImageFailure;
+};
+
+} // namespace details
+
+namespace xyz
+{
+namespace openbmc_project
+{
+namespace Software
+{
+namespace Image
+{
+namespace _BusyFailure
+{
+
+struct PATH
+{
+ /*
+ * We can't use -fsanitize=undefined if we declare a
+ * 'static constexpr auto str' member, so don't. Instead, open-code the
+ * mako template lookups.
+ */
+ static constexpr auto str_short = "PATH";
+ using type = std::tuple<std::decay_t<decltype("PATH=%s")>, const char*>;
+ explicit constexpr PATH(const char* a) : _entry(entry("PATH=%s", a)){};
+ type _entry;
+};
+
+} // namespace _BusyFailure
+
+struct BusyFailure
+{
+ static constexpr auto L = level::ERR;
+ using PATH = _BusyFailure::PATH;
+ using metadata_types = std::tuple<PATH>;
+};
+
+} // namespace Image
+} // namespace Software
+} // namespace openbmc_project
+} // namespace xyz
+
+namespace details
+{
+
+template <>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Software::Image::Error::BusyFailure>
+{
+ using type = xyz::openbmc_project::Software::Image::BusyFailure;
+};
+
} // namespace details
} // namespace logging
diff --git a/xyz/openbmc_project/Software/Image.errors.yaml b/xyz/openbmc_project/Software/Image.errors.yaml
index 67d6c20..2b8f7ee 100644
--- a/xyz/openbmc_project/Software/Image.errors.yaml
+++ b/xyz/openbmc_project/Software/Image.errors.yaml
@@ -4,3 +4,8 @@
description: An error when reading the Manifest file.
- name: InternalFailure
description: The operation failed internally during processing the image.
+- name: ImageFailure
+ description: An error occured processing the image.
+- name: BusyFailure
+ description: The device is busy during the update.
+
diff --git a/xyz/openbmc_project/Software/Image.metadata.yaml b/xyz/openbmc_project/Software/Image.metadata.yaml
index 5e749c9..7456e0a 100644
--- a/xyz/openbmc_project/Software/Image.metadata.yaml
+++ b/xyz/openbmc_project/Software/Image.metadata.yaml
@@ -13,3 +13,16 @@
meta:
- str: "FAIL=%s"
type: string
+- name: ImageFailure
+ level: ERR
+ meta:
+ - str: "FAIL=%s"
+ type: string
+ - str: "PATH=%s"
+ type: string
+- name: BusyFailure
+ level: ERR
+ meta:
+ - str: "PATH=%s"
+ type: string
+