提交 ade6894a 编写于 作者: G gaohuatao 提交者: lifeng68

add storage get metadata

Signed-off-by: Ngaohuatao <gaohuatao@huawei.com>
上级 ac166905
......@@ -223,6 +223,87 @@ int graphdriver_get_layer_metadata(const char *id, json_map_string_string *map_i
return g_graphdriver->ops->get_layer_metadata(id, g_graphdriver, map_info);
}
container_inspect_graph_driver *graphdriver_get_metadata(const char *id)
{
int ret = -1;
int i = 0;
container_inspect_graph_driver *inspect_driver = NULL;
json_map_string_string *metadata = NULL;
if (g_graphdriver == NULL) {
ERROR("Driver not inited yet");
return NULL;
}
if (id == NULL) {
ERROR("Invalid input arguments for get driver metadata");
goto free_out;
}
inspect_driver = util_common_calloc_s(sizeof(container_inspect_graph_driver));
if (inspect_driver == NULL) {
ERROR("Out of memory");
goto free_out;
}
inspect_driver->data = util_common_calloc_s(sizeof(container_inspect_graph_driver_data));
if (inspect_driver->data == NULL) {
ERROR("Out of memory");
goto free_out;
}
metadata = util_common_calloc_s(sizeof(json_map_string_string));
if (metadata == NULL) {
ERROR("Out of memory");
goto free_out;
}
ret = g_graphdriver->ops->get_layer_metadata(id, g_graphdriver, metadata);
if (ret != 0) {
ERROR("Failed to get metadata map info");
goto free_out;
}
inspect_driver->name = util_strdup_s(g_graphdriver->name);
if (!strcmp(g_graphdriver->name, DRIVER_OVERLAY_NAME) || !strcmp(g_graphdriver->name, DRIVER_OVERLAY2_NAME)) {
for (i = 0; i < metadata->len; i++) {
if (!strcmp(metadata->keys[i], "LowerDir")) {
inspect_driver->data->lower_dir = util_strdup_s(metadata->values[i]);
} else if (!strcmp(metadata->keys[i], "MergedDir")) {
inspect_driver->data->merged_dir = util_strdup_s(metadata->values[i]);
} else if (!strcmp(metadata->keys[i], "UpperDir")) {
inspect_driver->data->upper_dir = util_strdup_s(metadata->values[i]);
} else if (!strcmp(metadata->keys[i], "WorkDir")) {
inspect_driver->data->work_dir = util_strdup_s(metadata->values[i]);
}
}
} else if (!strcmp(g_graphdriver->name, DRIVER_DEVMAPPER_NAME)) {
for (i = 0; i < metadata->len; i++) {
if (!strcmp(metadata->keys[i], "DeviceId")) {
inspect_driver->data->device_id = util_strdup_s(metadata->values[i]);
} else if (!strcmp(metadata->keys[i], "DeviceName")) {
inspect_driver->data->device_name = util_strdup_s(metadata->values[i]);
} else if (!strcmp(metadata->keys[i], "DeviceSize")) {
inspect_driver->data->device_size = util_strdup_s(metadata->values[i]);
}
}
} else {
ERROR("Unsupported driver %s", g_graphdriver->name);
ret = -1;
goto free_out;
}
ret = 0;
free_out:
free_json_map_string_string(metadata);
if (ret != 0) {
free_container_inspect_graph_driver(inspect_driver);
return NULL;
}
return inspect_driver;
}
struct graphdriver_status *graphdriver_get_status(void)
{
int ret = -1;
......
......@@ -23,6 +23,7 @@
#include "console.h"
#include "driver_overlay2_types.h"
#include "storage.h"
#include "container_inspect.h"
#ifdef __cplusplus
extern "C" {
......@@ -120,6 +121,8 @@ int graphdriver_cleanup(void);
int graphdriver_try_repair_lowers(const char *id, const char *parent);
container_inspect_graph_driver *graphdriver_get_metadata(const char *id);
#ifdef __cplusplus
}
#endif
......
......@@ -44,6 +44,7 @@
#include "utils.h"
#include "error.h"
#include "collector.h"
#include "driver.h"
static int container_version_cb(const container_version_request *request, container_version_response **response)
{
......@@ -1297,7 +1298,6 @@ out:
return ret;
}
static int pack_inspect_data(const container_t *cont, container_inspect **out_inspect)
{
int ret = 0;
......@@ -1337,8 +1337,6 @@ static int pack_inspect_data(const container_t *cont, container_inspect **out_in
}
#ifdef ENABLE_OCI_IMAGE
#if 0
// todo replace functions with layer get metadata function
if (!strcmp(cont->common_config->image_type, IMAGE_TYPE_OCI)) {
inspect->graph_driver = graphdriver_get_metadata(cont->common_config->id);
if (inspect->graph_driver == NULL) {
......@@ -1347,7 +1345,6 @@ static int pack_inspect_data(const container_t *cont, container_inspect **out_in
}
}
#endif
#endif
out:
*out_inspect = inspect;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册