fault-monitor: remove locally generated errors
Switch fault-monitor to use Common.Errors instead of locally defined
ones. This greatly simplifies the build structure and follows the
expected phosphor-logging patterns better.
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Idb3473989c86b3a505f3c0a238735db6f3a4349e
diff --git a/elog-errors.hpp b/elog-errors.hpp
deleted file mode 100644
index a2ad7c7..0000000
--- a/elog-errors.hpp
+++ /dev/null
@@ -1,315 +0,0 @@
-// This file was autogenerated. Do not edit!
-// See elog-gen.py for more details
-#pragma once
-
-#include <phosphor-logging/elog.hpp>
-#include <phosphor-logging/log.hpp>
-#include <sdbusplus/exception.hpp>
-
-#include <string>
-#include <tuple>
-#include <type_traits>
-
-namespace sdbusplus
-{
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Led
-{
-namespace Fru
-{
-namespace Monitor
-{
-namespace Error
-{
-struct InventoryPathError;
-} // namespace Error
-} // namespace Monitor
-} // namespace Fru
-} // namespace Led
-} // namespace openbmc_project
-} // namespace xyz
-} // namespace sdbusplus
-
-namespace sdbusplus
-{
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Led
-{
-namespace Mapper
-{
-namespace Error
-{
-struct ObjectNotFoundError;
-} // namespace Error
-} // namespace Mapper
-} // namespace Led
-} // namespace openbmc_project
-} // namespace xyz
-} // namespace sdbusplus
-
-namespace sdbusplus
-{
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Led
-{
-namespace Mapper
-{
-namespace Error
-{
-struct MethodError;
-} // namespace Error
-} // namespace Mapper
-} // namespace Led
-} // namespace openbmc_project
-} // namespace xyz
-} // namespace sdbusplus
-
-namespace phosphor
-{
-
-namespace logging
-{
-
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Led
-{
-namespace Fru
-{
-namespace Monitor
-{
-namespace _InventoryPathError
-{
-
-struct PATH
-{
- static constexpr auto str = "PATH=%s";
- 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)){};
- type _entry;
-};
-
-} // namespace _InventoryPathError
-
-struct InventoryPathError : public sdbusplus::exception_t
-{
- static constexpr auto errName =
- "xyz.openbmc_project.Led.Fru.Monitor.InventoryPathError";
- static constexpr auto errDesc = "Invalid Inventory Path.";
- static constexpr auto L = level::INFO;
- using PATH = _InventoryPathError::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 Monitor
-} // namespace Fru
-} // namespace Led
-} // namespace openbmc_project
-} // namespace xyz
-
-namespace details
-{
-
-template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Led::Fru::Monitor::
- Error::InventoryPathError>
-{
- using type = xyz::openbmc_project::Led::Fru::Monitor::InventoryPathError;
-};
-
-} // namespace details
-
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Led
-{
-namespace Mapper
-{
-namespace _MethodError
-{
-
-struct METHOD_NAME
-{
- static constexpr auto str = "METHOD_NAME=%s";
- static constexpr auto str_short = "METHOD_NAME";
- using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
- explicit constexpr METHOD_NAME(const char* a) : _entry(entry(str, a)){};
- type _entry;
-};
-struct PATH
-{
- static constexpr auto str = "PATH=%s";
- 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)){};
- type _entry;
-};
-struct INTERFACE
-{
- static constexpr auto str = "INTERFACE=%s";
- static constexpr auto str_short = "INTERFACE";
- using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
- explicit constexpr INTERFACE(const char* a) : _entry(entry(str, a)){};
- type _entry;
-};
-
-} // namespace _MethodError
-
-struct MethodError : public sdbusplus::exception_t
-{
- static constexpr auto errName =
- "xyz.openbmc_project.Led.Mapper.MethodError";
- static constexpr auto errDesc = "Failed to invoke ObjectMapper method";
- static constexpr auto L = level::INFO;
- using METHOD_NAME = _MethodError::METHOD_NAME;
- using PATH = _MethodError::PATH;
- using INTERFACE = _MethodError::INTERFACE;
- using metadata_types = std::tuple<METHOD_NAME, PATH, INTERFACE>;
-
- const char* name() const noexcept
- {
- return errName;
- }
-
- const char* description() const noexcept
- {
- return errDesc;
- }
-
- const char* what() const noexcept
- {
- return errName;
- }
-};
-
-} // namespace Mapper
-} // namespace Led
-} // namespace openbmc_project
-} // namespace xyz
-
-namespace details
-{
-
-template <>
-struct map_exception_type<
- sdbusplus::xyz::openbmc_project::Led::Mapper::Error::MethodError>
-{
- using type = xyz::openbmc_project::Led::Mapper::MethodError;
-};
-
-} // namespace details
-
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Led
-{
-namespace Mapper
-{
-namespace _ObjectNotFoundError
-{
-
-struct METHOD_NAME
-{
- static constexpr auto str = "METHOD_NAME=%s";
- static constexpr auto str_short = "METHOD_NAME";
- using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
- explicit constexpr METHOD_NAME(const char* a) : _entry(entry(str, a)){};
- type _entry;
-};
-struct PATH
-{
- static constexpr auto str = "PATH=%s";
- 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)){};
- type _entry;
-};
-struct INTERFACE
-{
- static constexpr auto str = "INTERFACE=%s";
- static constexpr auto str_short = "INTERFACE";
- using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
- explicit constexpr INTERFACE(const char* a) : _entry(entry(str, a)){};
- type _entry;
-};
-
-} // namespace _ObjectNotFoundError
-
-struct ObjectNotFoundError : public sdbusplus::exception_t
-{
- static constexpr auto errName =
- "xyz.openbmc_project.Led.Mapper.ObjectNotFoundError";
- static constexpr auto errDesc = "Failed to get response from the method.";
- static constexpr auto L = level::INFO;
- using METHOD_NAME = _ObjectNotFoundError::METHOD_NAME;
- using PATH = _ObjectNotFoundError::PATH;
- using INTERFACE = _ObjectNotFoundError::INTERFACE;
- using metadata_types = std::tuple<METHOD_NAME, PATH, INTERFACE>;
-
- const char* name() const noexcept
- {
- return errName;
- }
-
- const char* description() const noexcept
- {
- return errDesc;
- }
-
- const char* what() const noexcept
- {
- return errName;
- }
-};
-
-} // namespace Mapper
-} // namespace Led
-} // namespace openbmc_project
-} // namespace xyz
-
-namespace details
-{
-
-template <>
-struct map_exception_type<
- sdbusplus::xyz::openbmc_project::Led::Mapper::Error::ObjectNotFoundError>
-{
- using type = xyz::openbmc_project::Led::Mapper::ObjectNotFoundError;
-};
-
-} // namespace details
-
-} // namespace logging
-
-} // namespace phosphor
diff --git a/fault-monitor/fru-fault-monitor.cpp b/fault-monitor/fru-fault-monitor.cpp
index fb4f891..a390cbe 100644
--- a/fault-monitor/fru-fault-monitor.cpp
+++ b/fault-monitor/fru-fault-monitor.cpp
@@ -1,12 +1,10 @@
#include "fru-fault-monitor.hpp"
-#include "elog-errors.hpp"
-
+#include <phosphor-logging/elog-errors.hpp>
#include <phosphor-logging/elog.hpp>
#include <phosphor-logging/lg2.hpp>
#include <sdbusplus/exception.hpp>
-#include <xyz/openbmc_project/Led/Fru/Monitor/error.hpp>
-#include <xyz/openbmc_project/Led/Mapper/error.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
namespace phosphor
{
@@ -43,12 +41,10 @@
using Interfaces = std::vector<Interface>;
using MapperResponseType = std::map<Path, std::map<Service, Interfaces>>;
-using MethodErr =
- sdbusplus::xyz::openbmc_project::Led::Mapper::Error::MethodError;
-using ObjectNotFoundErr =
- sdbusplus::xyz::openbmc_project::Led::Mapper::Error::ObjectNotFoundError;
-using InventoryPathErr = sdbusplus::xyz::openbmc_project::Led::Fru::Monitor::
- Error::InventoryPathError;
+using ResourceNotFoundErr =
+ sdbusplus::xyz::openbmc_project::Common::Error::ResourceNotFound;
+using InvalidArgumentErr =
+ sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument;
std::string getService(sdbusplus::bus::bus& bus, const std::string& path)
{
@@ -67,17 +63,13 @@
lg2::error(
"Failed to parse getService mapper response, ERROR = {ERROR}",
"ERROR", e);
- using namespace xyz::openbmc_project::Led::Mapper;
- elog<ObjectNotFoundErr>(ObjectNotFoundError::METHOD_NAME("GetObject"),
- ObjectNotFoundError::PATH(path.c_str()),
- ObjectNotFoundError::INTERFACE(OBJMGR_IFACE));
+ using namespace xyz::openbmc_project::Common;
+ elog<ResourceNotFoundErr>(ResourceNotFound::RESOURCE(path.c_str()));
}
if (mapperResponse.empty())
{
- using namespace xyz::openbmc_project::Led::Mapper;
- elog<ObjectNotFoundErr>(ObjectNotFoundError::METHOD_NAME("GetObject"),
- ObjectNotFoundError::PATH(path.c_str()),
- ObjectNotFoundError::INTERFACE(OBJMGR_IFACE));
+ using namespace xyz::openbmc_project::Common;
+ elog<ResourceNotFoundErr>(ResourceNotFound::RESOURCE(path.c_str()));
return {};
}
@@ -93,22 +85,19 @@
groups.pop_back();
service = getService(bus, groups);
}
- catch (const MethodErr& e)
+ catch (const ResourceNotFoundErr& e)
{
- commit<MethodErr>();
- return;
- }
- catch (const ObjectNotFoundErr& e)
- {
- commit<ObjectNotFoundErr>();
+ commit<ResourceNotFoundErr>();
return;
}
auto pos = path.rfind("/");
if (pos == std::string::npos)
{
- using namespace xyz::openbmc_project::Led::Fru::Monitor;
- report<InventoryPathErr>(InventoryPathError::PATH(path.c_str()));
+ using namespace xyz::openbmc_project::Common;
+ report<InvalidArgumentErr>(
+ InvalidArgument::ARGUMENT_NAME("path"),
+ InvalidArgument::ARGUMENT_VALUE(path.c_str()));
return;
}
auto unit = path.substr(pos + 1);
diff --git a/fault-monitor/meson.build b/fault-monitor/meson.build
index 254a218..39ec458 100644
--- a/fault-monitor/meson.build
+++ b/fault-monitor/meson.build
@@ -1,5 +1,4 @@
fault_monitor_sources = [
- generated_sources,
'monitor-main.cpp',
]
@@ -17,7 +16,7 @@
executable(
'phosphor-fru-fault-monitor',
fault_monitor_sources,
- include_directories: ['.', '../', '../gen'],
+ include_directories: ['.', '../'],
dependencies: deps,
install: true,
install_dir: get_option('bindir')
diff --git a/gen/README b/gen/README
deleted file mode 100644
index 71182b5..0000000
--- a/gen/README
+++ /dev/null
@@ -1,2 +0,0 @@
-This directory contains generated meson.build files from sdbus++-gen-meson.
-Do not edit them by hand.
diff --git a/gen/meson.build b/gen/meson.build
deleted file mode 100644
index 56193c7..0000000
--- a/gen/meson.build
+++ /dev/null
@@ -1,14 +0,0 @@
-# Generated file; do not modify.
-sdbuspp_gen_meson_ver = run_command(
- sdbuspp_gen_meson_prog,
- '--version',
-).stdout().strip().split('\n')[0]
-
-if sdbuspp_gen_meson_ver != 'sdbus++-gen-meson version 3'
- warning('Generated meson files from wrong version of sdbus++-gen-meson.')
- warning(
- 'Expected "sdbus++-gen-meson version 3", got:',
- sdbuspp_gen_meson_ver
- )
-endif
-
diff --git a/gen/regenerate-meson b/gen/regenerate-meson
deleted file mode 100755
index a39ad64..0000000
--- a/gen/regenerate-meson
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-
-REPO_ROOT=$(git rev-parse --show-toplevel)
-
-# Find sdbus++-gen-meson
-# 1. Check $SDBUSPP_GEN_MESON
-# 2. Check in $PATH
-# 3. Check in subprojects/sdbusplus
-if [ ! -x "$SDBUSPP_GEN_MESON" ]; then
- SDBUSPP_GEN_MESON="$(which sdbus++-gen-meson 2> /dev/null)"
-fi
-if [ ! -x "$SDBUSPP_GEN_MESON" ]; then
- SDBUSPP_GEN_MESON="$REPO_ROOT/subprojects/sdbusplus/tools/sdbus++-gen-meson"
-fi
-if [ ! -x "$SDBUSPP_GEN_MESON" ]; then
- echo "Cannot find sdbus++-gen-meson ($SDBUSPP_GEN_MESON)."
- exit 1
-fi
-
-$SDBUSPP_GEN_MESON \
- --command meson \
- --directory "$REPO_ROOT/yaml" \
- --output "$REPO_ROOT/gen"
diff --git a/gen/run-ci b/gen/run-ci
deleted file mode 100755
index d38927a..0000000
--- a/gen/run-ci
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-cd "$(dirname "$0")" || exit
-./regenerate-meson || exit
-rc=0
-git --no-pager diff --exit-code -- . || rc=$?
-untracked="$(git ls-files --others --exclude-standard -- .)" || rc=$?
-if [ -n "$untracked" ]; then
- echo "Untracked files:" >&2
- echo "$untracked" >&2
- rc=1
-fi
-if (( rc != 0 )); then
- echo "Generated meson files differ from expected values" >&2
- exit 1
-fi
diff --git a/gen/xyz/meson.build b/gen/xyz/meson.build
deleted file mode 100644
index e4991ad..0000000
--- a/gen/xyz/meson.build
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated file; do not modify.
-subdir('openbmc_project')
diff --git a/gen/xyz/openbmc_project/Led/Fru/Monitor/meson.build b/gen/xyz/openbmc_project/Led/Fru/Monitor/meson.build
deleted file mode 100644
index eb1ac73..0000000
--- a/gen/xyz/openbmc_project/Led/Fru/Monitor/meson.build
+++ /dev/null
@@ -1,14 +0,0 @@
-# Generated file; do not modify.
-generated_sources += custom_target(
- 'xyz/openbmc_project/Led/Fru/Monitor__cpp'.underscorify(),
- input: [ meson.project_source_root() / 'xyz/openbmc_project/Led/Fru/Monitor.errors.yaml', ],
- output: [ 'error.cpp', 'error.hpp', ],
- command: [
- sdbuspp_gen_meson_prog, '--command', 'cpp',
- '--output', meson.current_build_dir(),
- '--tool', sdbusplusplus_prog,
- '--directory', meson.project_source_root(),
- 'xyz/openbmc_project/Led/Fru/Monitor',
- ],
-)
-
diff --git a/gen/xyz/openbmc_project/Led/Fru/meson.build b/gen/xyz/openbmc_project/Led/Fru/meson.build
deleted file mode 100644
index 047a8fd..0000000
--- a/gen/xyz/openbmc_project/Led/Fru/meson.build
+++ /dev/null
@@ -1,16 +0,0 @@
-# Generated file; do not modify.
-subdir('Monitor')
-generated_others += custom_target(
- 'xyz/openbmc_project/Led/Fru/Monitor__markdown'.underscorify(),
- input: [ meson.project_source_root() / 'xyz/openbmc_project/Led/Fru/Monitor.errors.yaml', ],
- output: [ 'Monitor.md' ],
- command: [
- sdbuspp_gen_meson_prog, '--command', 'markdown',
- '--output', meson.current_build_dir(),
- '--tool', sdbusplusplus_prog,
- '--directory', meson.project_source_root(),
- 'xyz/openbmc_project/Led/Fru/Monitor',
- ],
- build_by_default: true,
-)
-
diff --git a/gen/xyz/openbmc_project/Led/Mapper/meson.build b/gen/xyz/openbmc_project/Led/Mapper/meson.build
deleted file mode 100644
index 483ee26..0000000
--- a/gen/xyz/openbmc_project/Led/Mapper/meson.build
+++ /dev/null
@@ -1,14 +0,0 @@
-# Generated file; do not modify.
-generated_sources += custom_target(
- 'xyz/openbmc_project/Led/Mapper__cpp'.underscorify(),
- input: [ meson.project_source_root() / 'xyz/openbmc_project/Led/Mapper.errors.yaml', ],
- output: [ 'error.cpp', 'error.hpp', ],
- command: [
- sdbuspp_gen_meson_prog, '--command', 'cpp',
- '--output', meson.current_build_dir(),
- '--tool', sdbusplusplus_prog,
- '--directory', meson.project_source_root(),
- 'xyz/openbmc_project/Led/Mapper',
- ],
-)
-
diff --git a/gen/xyz/openbmc_project/Led/meson.build b/gen/xyz/openbmc_project/Led/meson.build
deleted file mode 100644
index 305c3f5..0000000
--- a/gen/xyz/openbmc_project/Led/meson.build
+++ /dev/null
@@ -1,17 +0,0 @@
-# Generated file; do not modify.
-subdir('Fru')
-subdir('Mapper')
-generated_others += custom_target(
- 'xyz/openbmc_project/Led/Mapper__markdown'.underscorify(),
- input: [ meson.project_source_root() / 'xyz/openbmc_project/Led/Mapper.errors.yaml', ],
- output: [ 'Mapper.md' ],
- command: [
- sdbuspp_gen_meson_prog, '--command', 'markdown',
- '--output', meson.current_build_dir(),
- '--tool', sdbusplusplus_prog,
- '--directory', meson.project_source_root(),
- 'xyz/openbmc_project/Led/Mapper',
- ],
- build_by_default: true,
-)
-
diff --git a/gen/xyz/openbmc_project/meson.build b/gen/xyz/openbmc_project/meson.build
deleted file mode 100644
index 597580b..0000000
--- a/gen/xyz/openbmc_project/meson.build
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated file; do not modify.
-subdir('Led')
diff --git a/meson.build b/meson.build
index 492ab26..59c8a0a 100644
--- a/meson.build
+++ b/meson.build
@@ -25,18 +25,7 @@
conf_data.set('USE_LAMP_TEST', get_option('use-lamp-test').enabled())
conf_data.set('MONITOR_OPERATIONAL_STATUS', get_option('monitor-operational-status').enabled())
-sdbusplus_dep = dependency('sdbusplus', required: false)
-if sdbusplus_dep.found()
- sdbusplusplus_prog = find_program('sdbus++')
- sdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson')
-else
- sdbusplus_proj = subproject('sdbusplus', required: true)
- sdbusplus_dep = sdbusplus_proj.get_variable('sdbusplus_dep')
- sdbusplusplus_prog = sdbusplus_proj.get_variable('sdbusplusplus_prog')
- sdbuspp_gen_meson_prog = sdbusplus_proj.get_variable(
- 'sdbuspp_gen_meson_prog'
- )
-endif
+sdbusplus_dep = dependency('sdbusplus')
sdeventplus_dep = dependency(
'sdeventplus',
@@ -93,42 +82,6 @@
cereal_dep = cereal_proj.dependency('cereal')
endif
-selected_subdirs = []
-selected_subdirs += 'xyz/openbmc_project'
-
-generated_root = meson.current_build_dir() / 'gen'
-generated_others = []
-generated_sources = []
-
-# Source the generated meson files.
-subdir('gen')
-foreach d : selected_subdirs
- subdir('gen' / d)
-endforeach
-
-# Parse through the list from sdbus++-gendir and put into sets.
-generated_headers = []
-generated_cpp = []
-generated_others_files = []
-
-foreach g : generated_sources generated_others
- foreach f : g.to_list()
- rel_path = run_command(
- realpath_prog,
- '--relative-to', generated_root,
- f.full_path(),
- ).stdout().strip().split('\n')[-1]
-
- if rel_path.endswith('.hpp')
- generated_headers += rel_path
- elif rel_path.endswith('.cpp')
- generated_cpp += rel_path
- else
- generated_others_files += rel_path
- endif
- endforeach
-endforeach
-
deps = [
sdbusplus_dep,
sdeventplus_dep,
@@ -180,8 +133,6 @@
executable(
'phosphor-ledmanager',
sources,
- generated_sources,
- include_directories: include_directories('gen'),
implicit_include_directories: true,
dependencies: deps,
install: true,
diff --git a/subprojects/sdbusplus.wrap b/subprojects/sdbusplus.wrap
index d470130..7b076d0 100644
--- a/subprojects/sdbusplus.wrap
+++ b/subprojects/sdbusplus.wrap
@@ -1,3 +1,6 @@
[wrap-git]
url = https://github.com/openbmc/sdbusplus.git
revision = HEAD
+
+[provide]
+sdbusplus = sdbusplus_dep
diff --git a/xyz/openbmc_project/Led/Fru/Monitor.errors.yaml b/xyz/openbmc_project/Led/Fru/Monitor.errors.yaml
deleted file mode 100644
index e949513..0000000
--- a/xyz/openbmc_project/Led/Fru/Monitor.errors.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-#xyz.openbmc_project.Led.Fru.Monitor.InventoryPathError
-- name: InventoryPathError
- description: Invalid Inventory Path.
diff --git a/xyz/openbmc_project/Led/Fru/Monitor.metadata.yaml b/xyz/openbmc_project/Led/Fru/Monitor.metadata.yaml
deleted file mode 100644
index 57e0fd5..0000000
--- a/xyz/openbmc_project/Led/Fru/Monitor.metadata.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-- name: InventoryPathError
- meta:
- - str: "PATH=%s"
- type: string
diff --git a/xyz/openbmc_project/Led/Mapper.errors.yaml b/xyz/openbmc_project/Led/Mapper.errors.yaml
deleted file mode 100644
index c1cbd0f..0000000
--- a/xyz/openbmc_project/Led/Mapper.errors.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-#xyz.openbmc_project.Led.Mapper.MethodError
-- name: MethodError
- description: Failed to invoke ObjectMapper method
-
-#xyz.openbmc_project.Led.Mapper.ObjectNotFoundError
-- name: ObjectNotFoundError
- description: Failed to get response from the method.
-
-
diff --git a/xyz/openbmc_project/Led/Mapper.metadata.yaml b/xyz/openbmc_project/Led/Mapper.metadata.yaml
deleted file mode 100644
index 0eb5c7f..0000000
--- a/xyz/openbmc_project/Led/Mapper.metadata.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-- name: MethodError
- meta:
- - str: "METHOD_NAME=%s"
- type: string
- - str: "PATH=%s"
- type: string
- - str: "INTERFACE=%s"
- type: string
-
-- name: ObjectNotFoundError
- meta:
- - str: "METHOD_NAME=%s"
- type: string
- - str: "PATH=%s"
- type: string
- - str: "INTERFACE=%s"
- type: string