iSulad/src/connect/client/isula_image_connect.c

490 lines
10 KiB
C
Raw Normal View History

2019-12-25 15:50:34 +08:00
/******************************************************************************
* Copyright (c) Huawei Technologies Co., Ltd. 2019. All rights reserved.
* iSulad licensed under the Mulan PSL v1.
* You can use this software according to the terms and conditions of the Mulan PSL v1.
* You may obtain a copy of Mulan PSL v1 at:
* http://license.coscl.org.cn/MulanPSL
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
* PURPOSE.
* See the Mulan PSL v1 for more details.
* Author: liuhao
* Create: 2019-07-12
* Description: provide isula image connect command definition
*******************************************************************************/
#include "isula_image_connect.h"
#include "utils.h"
#include "grpc_isula_image_client.h"
static isula_image_ops g_image_ops;
int isula_image_ops_init(void)
{
(void)memset(&g_image_ops, 0, sizeof(isula_image_ops));
2019-12-25 15:50:34 +08:00
return grpc_isula_image_client_ops_init(&g_image_ops);
}
isula_image_ops *get_isula_image_ops(void)
{
return &g_image_ops;
}
void free_image_spec(struct image_spec *spec)
{
if (spec == NULL) {
return;
}
free(spec->image);
spec->image = NULL;
free(spec);
}
void free_isula_auth_config(struct isula_auth_config *auth)
{
if (auth == NULL) {
return;
}
free_sensitive_string(auth->username);
auth->username = NULL;
free_sensitive_string(auth->password);
auth->password = NULL;
free_sensitive_string(auth->auth);
auth->auth = NULL;
free_sensitive_string(auth->server_address);
auth->server_address = NULL;
free_sensitive_string(auth->identity_token);
auth->identity_token = NULL;
free_sensitive_string(auth->registry_token);
auth->registry_token = NULL;
free(auth);
}
void free_isula_pull_request(struct isula_pull_request *req)
{
if (req == NULL) {
return;
}
free_image_spec(req->image);
req->image = NULL;
free_isula_auth_config(req->auth);
req->auth = NULL;
free(req);
}
void free_isula_pull_response(struct isula_pull_response *resp)
{
if (resp == NULL) {
return;
}
free(resp->image_ref);
resp->image_ref = NULL;
free(resp->errmsg);
resp->errmsg = NULL;
resp->cc = 0;
free(resp);
}
void free_isula_prepare_request(struct isula_prepare_request *req)
{
if (req == NULL) {
return;
}
free(req->id);
req->id = NULL;
free(req->name);
req->name = NULL;
free(req->image);
req->image = NULL;
util_free_array_by_len(req->storage_opts, req->storage_opts_len);
2019-12-25 15:50:34 +08:00
req->storage_opts = NULL;
req->storage_opts_len = 0;
free(req);
}
void free_isula_prepare_response(struct isula_prepare_response *resp)
{
if (resp == NULL) {
return;
}
free(resp->mount_point);
resp->mount_point = NULL;
free(resp->image_conf);
resp->image_conf = NULL;
free(resp->errmsg);
resp->errmsg = NULL;
resp->cc = 0;
free(resp);
}
void free_isula_remove_request(struct isula_remove_request *req)
{
if (req == NULL) {
return;
}
free(req->name_id);
req->name_id = NULL;
free(req);
}
void free_isula_remove_response(struct isula_remove_response *resp)
{
if (resp == NULL) {
return;
}
free(resp->errmsg);
resp->errmsg = NULL;
resp->cc = 0;
free(resp);
}
void free_isula_mount_request(struct isula_mount_request *req)
{
if (req == NULL) {
return;
}
free(req->name_id);
req->name_id = NULL;
free(req);
}
void free_isula_mount_response(struct isula_mount_response *resp)
{
if (resp == NULL) {
return;
}
free(resp->errmsg);
resp->errmsg = NULL;
resp->cc = 0;
free(resp);
}
void free_isula_umount_request(struct isula_umount_request *req)
{
if (req == NULL) {
return;
}
free(req->name_id);
req->name_id = NULL;
free(req);
}
void free_isula_umount_response(struct isula_umount_response *resp)
{
if (resp == NULL) {
return;
}
free(resp->errmsg);
resp->errmsg = NULL;
resp->cc = 0;
free(resp);
}
void free_isula_containers_list_request(struct isula_containers_list_request *req)
{
if (req == NULL) {
return;
}
free(req);
}
void free_isula_containers_list_response(struct isula_containers_list_response *resp)
{
if (resp == NULL) {
return;
}
free_json_map_string_bool(resp->containers);
free(resp->errmsg);
resp->errmsg = NULL;
resp->cc = 0;
free(resp);
}
void free_image_metadata(struct image_metadata *data)
{
if (data == NULL) {
return;
}
free(data->id);
data->id = NULL;
util_free_array_by_len(data->repo_tags, data->repo_tags_len);
2019-12-25 15:50:34 +08:00
data->repo_tags = NULL;
data->repo_tags_len = 0;
util_free_array_by_len(data->repo_digests, data->repo_digests_len);
2019-12-25 15:50:34 +08:00
data->repo_digests = NULL;
data->repo_digests_len = 0;
free(data->username);
data->username = NULL;
free(data->created);
data->created = NULL;
free(data->loaded);
data->loaded = NULL;
free(data->oci_spec);
data->oci_spec = NULL;
free(data);
}
void free_isula_status_request(struct isula_status_request *req)
{
if (req == NULL) {
return;
}
free_image_spec(req->image);
req->image = NULL;
free(req);
}
void free_isula_status_response(struct isula_status_response *resp)
{
if (resp == NULL) {
return;
}
free_image_metadata(resp->image);
resp->image = NULL;
free_json_map_string_string(resp->info);
resp->info = NULL;
free(resp->errmsg);
resp->errmsg = NULL;
free(resp);
}
void free_isula_list_request(struct isula_list_request *req)
{
if (req == NULL) {
return;
}
free(req->filter);
req->filter = NULL;
free(req);
}
void free_isula_list_response(struct isula_list_response *resp)
{
size_t i = 0;
if (resp == NULL) {
return;
}
for (; i < resp->images_len; i++) {
free_image_metadata(resp->images[i]);
resp->images[i] = NULL;
}
free(resp->images);
resp->images = NULL;
resp->images_len = 0;
free(resp->errmsg);
resp->errmsg = NULL;
free(resp);
}
void free_isula_rmi_request(struct isula_rmi_request *ptr)
{
if (ptr == NULL) {
return;
}
free_image_spec(ptr->image);
ptr->image = NULL;
free(ptr);
}
void free_isula_rmi_response(struct isula_rmi_response *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr->errmsg);
ptr->errmsg = NULL;
free(ptr);
}
void free_isula_load_request(struct isula_load_request *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr->file);
ptr->file = NULL;
free(ptr->tag);
ptr->tag = NULL;
free(ptr);
}
void free_isula_load_response(struct isula_load_response *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr->outmsg);
ptr->outmsg = NULL;
free(ptr->errmsg);
ptr->errmsg = NULL;
free(ptr);
}
void free_isula_login_request(struct isula_login_request *ptr)
{
if (ptr == NULL) {
return;
}
free_sensitive_string(ptr->password);
ptr->password = NULL;
free_sensitive_string(ptr->username);
ptr->username = NULL;
free(ptr->server);
ptr->server = NULL;
free(ptr);
}
void free_isula_login_response(struct isula_login_response *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr->errmsg);
ptr->errmsg = NULL;
free(ptr);
}
void free_isula_logout_request(struct isula_logout_request *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr->server);
ptr->server = NULL;
free(ptr);
}
void free_isula_logout_response(struct isula_logout_response *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr->errmsg);
ptr->errmsg = NULL;
free(ptr);
}
void free_filesystem_usage(struct filesystem_usage *usage)
{
if (usage == NULL) {
return;
}
free(usage->uuid);
usage->uuid = NULL;
free(usage->used_bytes);
usage->used_bytes = NULL;
free(usage->inodes_used);
usage->inodes_used = NULL;
free(usage);
}
void free_isula_image_fs_info_request(struct isula_image_fs_info_request *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr);
}
void free_isula_image_fs_info_response(struct isula_image_fs_info_response *ptr)
{
size_t i = 0;
if (ptr == NULL) {
return;
}
for (; i < ptr->image_filesystems_len; i++) {
free_filesystem_usage(ptr->image_filesystems[i]);
ptr->image_filesystems[i] = NULL;
}
ptr->image_filesystems_len = 0;
free(ptr->image_filesystems);
ptr->image_filesystems = NULL;
free(ptr);
}
void free_isula_export_request(struct isula_export_request *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr->name_id);
ptr->name_id = NULL;
free(ptr->output);
ptr->output = NULL;
free(ptr);
}
void free_isula_export_response(struct isula_export_response *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr->errmsg);
ptr->errmsg = NULL;
free(ptr);
}
void free_isula_container_fs_usage_request(struct isula_container_fs_usage_request *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr->name_id);
ptr->name_id = NULL;
free(ptr);
}
void free_isula_container_fs_usage_response(struct isula_container_fs_usage_response *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr->usage);
ptr->usage = NULL;
free(ptr->errmsg);
ptr->errmsg = NULL;
free(ptr);
}
void free_isula_storage_status_request(struct isula_storage_status_request *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr);
}
void free_isula_storage_status_response(struct isula_storage_status_response *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr->status);
ptr->status = NULL;
2019-12-25 15:50:34 +08:00
free(ptr->errmsg);
ptr->errmsg = NULL;
free(ptr);
}
void free_isula_health_check_request(struct isula_health_check_request *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr);
}
void free_isula_health_check_response(struct isula_health_check_response *ptr)
{
if (ptr == NULL) {
return;
}
free(ptr->errmsg);
ptr->errmsg = NULL;
free(ptr);
}