void instance_create_from_image_id(char *image_id, void (*completion_func)(char *instance_id, void *data), void *data) { struct deltacloud_api api; char *instance_id; int rc; rc = deltacloud_initialize(&api, "http://localhost:3001/api", "dep-wp", ""); if (rc < 0) { qb_log(LOG_ERR, "Failed to initialize libdeltacloud: %s", deltacloud_get_last_error_string()); qb_leave(); return; } rc = deltacloud_create_instance(&api, image_id, NULL, 0, &instance_id); if (rc < 0) { qb_log(LOG_ERR, "Failed to initialize libdeltacloud: %s", deltacloud_get_last_error_string()); qb_leave(); return; } completion_func(instance_id, data); deltacloud_free(&api); }
/* * External API */ void instance_state_get(char *instance_id, void (*completion_func)(char *status, char *ip_addr, void *data), void *data) { struct deltacloud_api api; struct deltacloud_instance instance; int rc; rc = deltacloud_initialize(&api, "http://localhost:3001/api", "dep-wp", ""); if (rc < 0) { qb_log(LOG_ERR, "Failed to initialize libdeltacloud: %s", deltacloud_get_last_error_string()); qb_leave(); return; } rc = deltacloud_get_instance_by_id(&api, instance_id, &instance); if (strcmp(instance.state, "RUNNING") == 0 && instance.private_addresses->address) { completion_func("ACTIVE", instance.private_addresses->address, data); } else { completion_func("PENDING", NULL, data); } }
void instance_destroy_by_instance_id(char *instance_id, void (*completion_func)(void *data), void *data) { struct deltacloud_api api; struct deltacloud_instance instance; int rc; rc = deltacloud_initialize(&api, "http://localhost:3001/api", "dep-wp", ""); if (rc < 0) { qb_log(LOG_ERR, "Failed to initialize libdeltacloud: %s", deltacloud_get_last_error_string()); qb_leave(); return; } rc = deltacloud_get_instance_by_id(&api, instance_id, &instance); deltacloud_instance_destroy(&api, &instance); completion_func(data); }
void image_id_get(char *image_name, void (*completion_func)(char *image_id, void *data), void *data) { static struct deltacloud_api api; struct deltacloud_image *images_head; struct deltacloud_image *images; int rc; qb_enter(); if (deltacloud_initialize(&api, "http://localhost:3001/api", "dep-wp", "") < 0) { qb_log(LOG_ERR, "Failed to initialize libdeltacloud: %s", deltacloud_get_last_error_string()); qb_leave(); return; } rc = deltacloud_get_images(&api, &images); if (rc < 0) { qb_log(LOG_ERR, "Failed to initialize libdeltacloud: %s", deltacloud_get_last_error_string()); qb_leave(); return; } for (images_head = images; images; images = images->next) { if (strcmp(images->name, image_name) == 0) { completion_func(images->id, data); break; } } deltacloud_free_image_list(&images_head); deltacloud_free(&api); qb_leave(); }
char *get_command_line(int new_cmd, int comp_type) { int c, ind = 0, len = 0, res; char input_buf[READ_BUF_SIZE]; char *str; if (set_term_flags() != 0) exit(1); get_history_new(new_cmd); memset(input_buf, 0, READ_BUF_SIZE); for (;;) { c = getchar(); len = strlen(input_buf); if (len >= (READ_BUF_SIZE - 1)) c = NL_KEY; switch (c) { case CTRL_A_KEY: go_to_begin(ind); ind = print_str_by_index(input_buf, 0, 0); break; case CTRL_B_KEY: printf("%c", '\b'); ind--; if (ind < 0) { ind = 0; printf("%c", ' '); }; break; case CTRL_D_KEY: if (ind == len) break; ind = delete_char(input_buf, len, ind, 1); break; case CTRL_E_KEY: ind = print_str_by_index(input_buf, ind, len); break; case CTRL_G_KEY: case CTRL_L_KEY: printf("%c", c); break; case CTRL_F_KEY: ind = print_str_by_index(input_buf, ind, ind + 1); break; case TAB_KEY: res = completion_func(comp_type, input_buf, &complition_struct); if (res == 0) break; if (res == 1) { strcpy(input_buf, complition_struct.items[0]); strcat(input_buf, " "); ind = print_str_by_index(input_buf, ind, -1); break; }; memset(input_buf, 0, READ_BUF_SIZE); strncpy(input_buf, complition_struct.items[0], complition_struct.comp_len); ind = print_str_by_index(input_buf, ind, -1); break; case NL_KEY: printf("%c", c); if (current_hist_ind != hist_ind) add_to_history(input_buf, hist_ind); if (strlen(input_buf) == 0) return(""); add_to_history(input_buf, current_hist_ind); return(History[current_hist_ind]); case CTRL_K_KEY: clear_line(ind, len); memset(input_buf + ind, 0, len - ind); print_str_by_index(input_buf, 0, ind); break; case CTRL_N_KEY: ungetc(DOWN_KEY, stdin); ungetc(CTRL2_KEY, stdin); ungetc(CTRL1_KEY, stdin); break; case CTRL_R_KEY: case CTRL_S_KEY: res = find_command(input_buf, hist_ind, (c == CTRL_S_KEY)); if (res != hist_ind) { hist_ind = res; memset(input_buf, 0, READ_BUF_SIZE); strcpy(input_buf, History[hist_ind]); }; print_str_by_index(Title, 0, -1); ind = print_str_by_index(input_buf, 0, -1); break; case CTRL1_KEY: c = getchar(); if (c != CTRL2_KEY) break; c = getchar(); switch (c) { case INSERT_KEY: getchar(); is_insert_key = (is_insert_key) ? 0 : 1; break; case DELETE_KEY: getchar(); if (ind == len) break; ind = delete_char(input_buf, len, ind, 1); break; case LEFT_KEY: printf("%c", '\b'); ind--; if (ind < 0) { ind = 0; printf("%c", ' '); }; break; case RIGHT_KEY: ind++; if (ind > len) ind = len; else print_str_by_index(input_buf, ind - 1, ind); break; case UP_KEY: case DOWN_KEY: clear_line(ind, len); if (c == UP_KEY) str = get_history_prev(input_buf); else str = get_history_next(input_buf); memset(input_buf, 0, READ_BUF_SIZE); strcpy(input_buf, str); len = strlen(input_buf); ind = print_str_by_index(input_buf, 0, len); break; case PGUP_KEY: case PGDOWN_KEY: getchar(); add_to_history(input_buf, hist_ind); clear_line(ind, len); hist_ind = (c == PGUP_KEY) ? 0 : current_hist_ind; str = History[hist_ind]; memset(input_buf, 0, READ_BUF_SIZE); strcpy(input_buf, str); len = strlen(input_buf); ind = print_str_by_index(input_buf, 0, len); break; case HOME_KEY: go_to_begin(ind); ind = print_str_by_index(input_buf, 0, 0); break; case END_KEY: ind = print_str_by_index(input_buf, ind, len); break; }; break; case CTRL_H_KEY: case BACKSP_KEY: ind = (ind <= 0) ? 0 : delete_char(input_buf, len, ind, 0); break; default: if (ind == len) { input_buf[ind++] = c; printf("%c", c); break; }; ind = add_char(input_buf, len, c, ind); break; }; if (ind >= (READ_BUF_SIZE - 1)) { if (current_hist_ind != hist_ind) add_to_history(input_buf, hist_ind); add_to_history(input_buf, current_hist_ind); return(History[current_hist_ind]); } }; return((char *)NULL); }