|
87 | 87 | #define COMMAND_STATUS "status" |
88 | 88 | #define COMMAND_STATUS_DETAILS "status-details" |
89 | 89 | #define COMMAND_VERIFY "verify" |
| 90 | +#define COMMAND_S3 "s3" |
90 | 91 |
|
91 | 92 | #define OUTPUT_FORMAT_JSON "json" |
92 | 93 | #define OUTPUT_FORMAT_TEXT "text" |
@@ -118,6 +119,7 @@ static void display_helper(char* command); |
118 | 119 |
|
119 | 120 | static int backup(SSL* ssl, int socket, char* server, uint8_t compression, uint8_t encryption, char* incremental, int32_t output_format); |
120 | 121 | static int list_backup(SSL* ssl, int socket, char* server, char* sort_order, uint8_t compression, uint8_t encryption, int32_t output_format); |
| 122 | +static int list_s3_objects(SSL* ssl, int socket, char* server, uint8_t compression, uint8_t encryption, int32_t output_format); |
121 | 123 | static int restore(SSL* ssl, int socket, char* server, char* backup_id, char* position, char* directory, uint8_t compression, uint8_t encryption, int32_t output_format); |
122 | 124 | static int verify(SSL* ssl, int socket, char* server, char* backup_id, char* directory, char* files, uint8_t compression, uint8_t encryption, int32_t output_format); |
123 | 125 | static int archive(SSL* ssl, int socket, char* server, char* backup_id, char* position, char* directory, uint8_t compression, uint8_t encryption, int32_t output_format); |
@@ -253,6 +255,12 @@ struct pgmoneta_command command_table[] = { |
253 | 255 | .deprecated = false, |
254 | 256 | .log_message = "<list-backup> [%s]", |
255 | 257 | }, |
| 258 | + {.command = "s3", |
| 259 | + .subcommand = "ls", |
| 260 | + .accepted_argument_count = {1, 2}, |
| 261 | + .action = MANAGEMENT_S3_LS, |
| 262 | + .deprecated = false, |
| 263 | + .log_message = "<s3 ls>"}, |
256 | 264 | { |
257 | 265 | .command = "restore", |
258 | 266 | .subcommand = "", |
@@ -894,6 +902,10 @@ main(int argc, char** argv) |
894 | 902 | { |
895 | 903 | exit_code = list_backup(s_ssl, socket, parsed.args[0], sort_option, compression, encryption, output_format); |
896 | 904 | } |
| 905 | + else if (parsed.cmd->action == MANAGEMENT_S3_LS) |
| 906 | + { |
| 907 | + exit_code = list_s3_objects(s_ssl, socket, parsed.args[0], compression, encryption, output_format); |
| 908 | + } |
897 | 909 | else if (parsed.cmd->action == MANAGEMENT_RESTORE) |
898 | 910 | { |
899 | 911 | if (parsed.args[3]) |
@@ -1092,6 +1104,12 @@ help_list_backup(void) |
1092 | 1104 | printf("List backups for a server\n"); |
1093 | 1105 | printf(" pgmoneta-cli list-backup <server> [--sort asc|desc]\n"); |
1094 | 1106 | } |
| 1107 | +static void |
| 1108 | +help_s3(void) |
| 1109 | +{ |
| 1110 | + printf("Manage the s3\n"); |
| 1111 | + printf(" pgmoneta-cli s3 [ls] <server>\n"); |
| 1112 | +} |
1095 | 1113 |
|
1096 | 1114 | static void |
1097 | 1115 | help_restore(void) |
@@ -1233,6 +1251,10 @@ display_helper(char* command) |
1233 | 1251 | { |
1234 | 1252 | help_list_backup(); |
1235 | 1253 | } |
| 1254 | + else if (!strcmp(command, COMMAND_S3)) |
| 1255 | + { |
| 1256 | + help_s3(); |
| 1257 | + } |
1236 | 1258 | else if (!strcmp(command, COMMAND_RESTORE)) |
1237 | 1259 | { |
1238 | 1260 | help_restore(); |
@@ -1350,7 +1372,21 @@ list_backup(SSL* ssl, int socket, char* server, char* sort_order, uint8_t compre |
1350 | 1372 |
|
1351 | 1373 | return 1; |
1352 | 1374 | } |
1353 | | - |
| 1375 | +static int |
| 1376 | +list_s3_objects(SSL* ssl, int socket, char* server, uint8_t compression, uint8_t encryption, int32_t output_format) |
| 1377 | +{ |
| 1378 | + if (pgmoneta_management_request_list_s3_objects(ssl, socket, server, compression, encryption, output_format)) |
| 1379 | + { |
| 1380 | + goto error; |
| 1381 | + } |
| 1382 | + if (process_result(ssl, socket, output_format)) |
| 1383 | + { |
| 1384 | + goto error; |
| 1385 | + } |
| 1386 | + return 0; |
| 1387 | +error: |
| 1388 | + return 1; |
| 1389 | +} |
1354 | 1390 | static int |
1355 | 1391 | restore(SSL* ssl, int socket, char* server, char* backup_id, char* position, char* directory, uint8_t compression, uint8_t encryption, int32_t output_format) |
1356 | 1392 | { |
@@ -2498,6 +2534,11 @@ translate_command(int32_t cmd_code) |
2498 | 2534 | case MANAGEMENT_LIST_BACKUP: |
2499 | 2535 | command_output = pgmoneta_append(command_output, COMMAND_LIST_BACKUP); |
2500 | 2536 | break; |
| 2537 | + case MANAGEMENT_S3_LS: |
| 2538 | + command_output = pgmoneta_append(command_output, COMMAND_S3); |
| 2539 | + command_output = pgmoneta_append_char(command_output, ' '); |
| 2540 | + command_output = pgmoneta_append(command_output, "ls"); |
| 2541 | + break; |
2501 | 2542 | case MANAGEMENT_RESTORE: |
2502 | 2543 | command_output = pgmoneta_append(command_output, COMMAND_RESTORE); |
2503 | 2544 | break; |
@@ -3169,6 +3210,16 @@ translate_json_object(struct json* j) |
3169 | 3210 | } |
3170 | 3211 | pgmoneta_json_iterator_destroy(backup_it); |
3171 | 3212 | break; |
| 3213 | + case MANAGEMENT_S3_LS: |
| 3214 | + translate_response_argument(response); |
| 3215 | + servers = (struct json*)pgmoneta_json_get(response, MANAGEMENT_ARGUMENT_SERVERS); |
| 3216 | + pgmoneta_json_iterator_create(servers, &server_it); |
| 3217 | + while (pgmoneta_json_iterator_next(server_it)) |
| 3218 | + { |
| 3219 | + translate_servers_argument((struct json*)pgmoneta_value_data(server_it->value)); |
| 3220 | + } |
| 3221 | + pgmoneta_json_iterator_destroy(server_it); |
| 3222 | + break; |
3172 | 3223 | case MANAGEMENT_STATUS_DETAILS: |
3173 | 3224 | translate_response_argument(response); |
3174 | 3225 | servers = (struct json*)pgmoneta_json_get(response, MANAGEMENT_ARGUMENT_SERVERS); |
|
0 commit comments