Beispiel #1
0
static void _update_info_block(List block_list,
			       GtkTreeView *tree_view)
{
	ListIterator itr;
	sview_block_info_t *block_ptr = NULL;
	GtkTreeModel *model = gtk_tree_view_get_model(tree_view);
	char *name = NULL;

	if (!block_list) {
		g_print("No block_list given");
		return;
	}

	set_for_update(model, SORTID_UPDATED);

 	/* Report the BG Blocks */

	itr = list_iterator_create(block_list);
	while ((block_ptr = (sview_block_info_t*) list_next(itr))) {
		if (block_ptr->cnode_cnt == 0)
			block_ptr->cnode_cnt = block_ptr->size;
		if (!block_ptr->slurm_part_name)
			block_ptr->slurm_part_name = xstrdup("no part");

		/* This means the tree_store changed (added new column
		   or something). */
		if (last_model != model)
			block_ptr->iter_set = false;

		if (block_ptr->iter_set) {
			gtk_tree_model_get(model, &block_ptr->iter_ptr,
					   SORTID_BLOCK, &name, -1);
			if (xstrcmp(name, block_ptr->bg_block_name)) {
				/* Bad pointer */
				block_ptr->iter_set = false;
			}
			g_free(name);
		}
		if (block_ptr->iter_set)
			_update_block_record(block_ptr,
					     GTK_TREE_STORE(model));
		else {
			_append_block_record(block_ptr,
					     GTK_TREE_STORE(model));
			block_ptr->iter_set = true;
		}
	}

	list_iterator_destroy(itr);

	/* remove all old blocks */
	remove_old(model, SORTID_UPDATED);
	last_model = model;
}
Beispiel #2
0
static void _update_info_front_end(List info_list, GtkTreeView *tree_view)
{
	GtkTreeModel *model = gtk_tree_view_get_model(tree_view);
	char *name;
	ListIterator itr = NULL;
	sview_front_end_info_t *sview_front_end_info = NULL;

	set_for_update(model, SORTID_UPDATED);

	itr = list_iterator_create(info_list);
	while ((sview_front_end_info = list_next(itr))) {
		/* This means the tree_store changed (added new column
		   or something). */
		if (last_model != model)
			sview_front_end_info->iter_set = false;

		if (sview_front_end_info->iter_set) {
			gtk_tree_model_get(model,
					   &sview_front_end_info->iter_ptr,
					   SORTID_NAME, &name, -1);
			if (xstrcmp(name,
				    sview_front_end_info->front_end_name)) {
				/* Bad pointer */
				sview_front_end_info->iter_set = false;
				//g_print("bad front_end iter pointer\n");
			}
			g_free(name);
		}
		if (sview_front_end_info->iter_set)
			_update_front_end_record(sview_front_end_info,
						 GTK_TREE_STORE(model));
		else {
			_append_front_end_record(sview_front_end_info,
						 GTK_TREE_STORE(model));
			sview_front_end_info->iter_set = true;
		}
	}
	list_iterator_destroy(itr);

	/* remove all old front_ends */
	remove_old(model, SORTID_UPDATED);
	last_model = model;
}
int tls_request_certificate(requiem_client_profile_t *cp, requiem_io_t *fd,
                            gnutls_x509_privkey key, requiem_connection_permission_t permission)
{
        ssize_t ret;
        ssize_t rsize;
        char buf[65535];
        unsigned char *rbuf;
        gnutls_x509_crq crq;
        size_t size = sizeof(buf);

        requiem_log_debug(1, "Sending certificate request.\n");

        crq = generate_certificate_request(cp, permission, key, (unsigned char *) buf, &size);
        if ( ! crq )
                return -1;

        gnutls_x509_crq_deinit(crq);

        ret = requiem_io_write_delimited(fd, buf, size);
        if ( ret < 0 || (size_t) ret != size ) {
                requiem_perror(ret, "error sending certificate request");
                return -1;
        }

        requiem_log_debug(1, "Receiving signed certificate.\n");
        rsize = requiem_io_read_delimited(fd, &rbuf);
        if ( rsize < 0 ) {
                requiem_perror(rsize, "error receiving CA-signed certificate");
                return -1;
        }

        requiem_client_profile_get_tls_client_keycert_filename(cp, buf, sizeof(buf));
        ret = remove_old(buf, rbuf, rsize);
        if ( ret < 0 )
                return ret;

        ret = save_buf(buf, requiem_client_profile_get_uid(cp), requiem_client_profile_get_gid(cp), rbuf, rsize);
        if ( ret < 0 )
                return ret;

        free(rbuf);

        requiem_log_debug(1, "Receiving CA certificate.\n");

        rsize = requiem_io_read_delimited(fd, &rbuf);
        if ( rsize < 0 ) {
                requiem_perror(rsize, "error receiving server certificate");
                return rsize;
        }

        requiem_client_profile_get_tls_client_trusted_cert_filename(cp, buf, sizeof(buf));
        ret = remove_old(buf, rbuf, rsize);
        if ( ret < 0 )
                return ret;

        ret = save_buf(buf, requiem_client_profile_get_uid(cp), requiem_client_profile_get_gid(cp), rbuf, rsize);
        if ( ret < 0 )
                return ret;

        free(rbuf);

        return 0;
}
Beispiel #4
0
static void _update_info_resv(List info_list,
			      GtkTreeView *tree_view)
{
	GtkTreeModel *model = gtk_tree_view_get_model(tree_view);
	static GtkTreeModel *last_model = NULL;
	reserve_info_t *resv_ptr = NULL;
	char *name = NULL;
	ListIterator itr = NULL;
	sview_resv_info_t *sview_resv_info = NULL;

	set_for_update(model, SORTID_UPDATED);

	itr = list_iterator_create(info_list);
	while ((sview_resv_info = (sview_resv_info_t*) list_next(itr))) {
		resv_ptr = sview_resv_info->resv_ptr;

		/* This means the tree_store changed (added new column
		   or something). */
		if (last_model != model)
			sview_resv_info->iter_set = false;

		if (sview_resv_info->iter_set) {
			gtk_tree_model_get(model, &sview_resv_info->iter_ptr,
					   SORTID_NAME, &name, -1);
			if (strcmp(name, resv_ptr->name)) { /* Bad pointer */
				sview_resv_info->iter_set = false;
				//g_print("bad resv iter pointer\n");
			}
			g_free(name);
		}
		if (sview_resv_info->iter_set) {
			_update_resv_record(sview_resv_info,
					    GTK_TREE_STORE(model));
		} else {
			GtkTreePath *path = gtk_tree_path_new_first();

			/* get the iter, or find out the list is empty
			 * goto add */
			if (gtk_tree_model_get_iter(
				    model, &sview_resv_info->iter_ptr, path)) {
				do {
					/* search for the jobid and
					   check to see if it is in
					   the list */
					gtk_tree_model_get(
						model,
						&sview_resv_info->iter_ptr,
						SORTID_NAME,
						&name, -1);
					if (!strcmp(name, resv_ptr->name)) {
						/* update with new info */
						g_free(name);
						_update_resv_record(
							sview_resv_info,
							GTK_TREE_STORE(model));
						sview_resv_info->iter_set = 1;
						break;
					}
					g_free(name);
				} while (gtk_tree_model_iter_next(
						 model,
						 &sview_resv_info->iter_ptr));
			}

			if (!sview_resv_info->iter_set) {
				_append_resv_record(sview_resv_info,
						    GTK_TREE_STORE(model));
				sview_resv_info->iter_set = true;
			}
			gtk_tree_path_free(path);
		}
	}
	list_iterator_destroy(itr);

	/* remove all old reservations */
	remove_old(model, SORTID_UPDATED);
	last_model = model;
}
Beispiel #5
0
static void _update_info_block(List block_list,
			       GtkTreeView *tree_view)
{
	ListIterator itr;
	sview_block_info_t *block_ptr = NULL;
	GtkTreePath *path = gtk_tree_path_new_first();
	GtkTreeModel *model = gtk_tree_view_get_model(tree_view);
	GtkTreeIter iter;
	char *name = NULL;
	char *host = NULL;
	int line = 0;

	if (!block_list) {
		g_print("No block_list given");
		return;
	}

	/* get the iter, or find out the list is empty goto add */
	if (gtk_tree_model_get_iter(model, &iter, path)) {
		/* make sure all the partitions are still here */
		while (1) {
			gtk_tree_store_set(GTK_TREE_STORE(model), &iter,
					   SORTID_UPDATED, 0, -1);
			if (!gtk_tree_model_iter_next(model, &iter)) {
				break;
			}
		}
	}


 	/* Report the BG Blocks */

	itr = list_iterator_create(block_list);
	while ((block_ptr = (sview_block_info_t*) list_next(itr))) {
		if (block_ptr->cnode_cnt == 0)
			block_ptr->cnode_cnt = block_ptr->size;
		if (!block_ptr->slurm_part_name)
			block_ptr->slurm_part_name = xstrdup("no part");

		/* get the iter, or find out the list is empty goto add */
		if (!gtk_tree_model_get_iter(model, &iter, path)) {
			goto adding;
		}
		line = 0;
		while (1) {
			/* search for the jobid and check to see if
			   it is in the list */
			gtk_tree_model_get(model, &iter, SORTID_BLOCK,
					   &name, -1);
			if (!strcmp(name, block_ptr->bg_block_name)) {
				/* update with new info */
				g_free(name);
				_update_block_record(block_ptr,
						     GTK_TREE_STORE(model),
						     &iter);
				goto found;
			}
			g_free(name);

			line++;
			if (!gtk_tree_model_iter_next(model, &iter)) {
				break;
			}
		}
	adding:
		_append_block_record(block_ptr, GTK_TREE_STORE(model),
				     &iter, line);
	found:
		;
	}

	list_iterator_destroy(itr);
	if (host)
		free(host);

	gtk_tree_path_free(path);
	/* remove all old blocks */
	remove_old(model, SORTID_UPDATED);
}