Exemplo n.º 1
0
/*
 * Open HTTPS session to a host, handling redirection as necessary
 */
static void open_session(char *server, char *username, char *xenhex)
{
    char password[XVP_MAX_XEN_PW + 1], escpassword[256];

    curl_global_init(CURL_GLOBAL_ALL);
    xmlInitParser();
    xen_init();
    memset(password, 0, sizeof(password));

    sprintf(server_url, "https://%s", server);

    xvp_password_decrypt(xenhex, password, XVP_PASSWORD_XEN);
    (void)xvp_xmlescape(password, escpassword, sizeof(escpassword));

    session = xen_session_login_with_password(call_func, NULL,
		  username, escpassword, xen_api_version_1_5);

    if (!session->ok &&
	session->error_description_count > 0 &&
	!strcmp(session->error_description[0], "HOST_IS_SLAVE")) {
	sprintf(server_url, "https://%s", session->error_description[1]);
	xen_session_logout(session);
	session = xen_session_login_with_password(call_func, NULL,
		      username, escpassword, xen_api_version_1_5);
    }

    memset(password, 0, sizeof(password));
    memset(escpassword, 0, sizeof(escpassword));

    if (!session->ok)
	fail_session();
}
Exemplo n.º 2
0
/*
 * Clean up session connection etc
 */
static void cleanup(void)
{
    curl_global_cleanup();
    xmlCleanupParser();
    xen_session_logout(session);
    xen_fini();
}
int main(int argc, char **argv)
{
	if (argc != 4)
	{
		fprintf(stderr, "Usage:\n\n%s <url> <username> <password>\n", argv[0]);
	}

	url = argv[1];

	/* General setup */
	xen_init();
	curl_global_init(CURL_GLOBAL_ALL);
	
	xen_session *session =
		xen_session_login_with_password(call_func, NULL, argv[2], argv[3]);

	if(session->ok)
	{
		/* Get the host */
		xen_host host;
		xen_session_get_this_host(session, &host, session);
		/* Get the set of VMs */
		struct xen_vm_set * VMs;
		xen_host_get_resident_vms(session, &VMs, host);
		/* Print the names */
		for(unsigned int i=0 ; i<VMs->size ; i++)
		{
			char * name;
			xen_host_get_name_label(session, &name, host);
			printf("VM %d: %s\n", i, name);
		}
	}
	else
	{
		printf(stderr, "Connection failed\n");
	}
	xen_session_logout(session);
	curl_global_cleanup();
	xen_fini();
	return 0;
}