Changeset 547
- Timestamp:
- 02/20/07 11:29:12 (2 years ago)
- Files:
-
- trunk/configure.ac (modified) (2 diffs)
- trunk/src/Makefile.am (modified) (1 diff)
- trunk/src/vcc/Makefile.am (modified) (1 diff)
- trunk/src/vcc/main.c (modified) (5 diffs)
- trunk/src/vcc/vcc (added)
- trunk/src/vcc/vcc.h (moved) (moved from trunk/src/vcc/cmd.h) (3 diffs)
- trunk/src/vcc/vcc/Makefile.am (added)
- trunk/src/vcc/vcc/cmd.c (moved) (moved from trunk/src/vcc/cmd.c) (2 diffs)
- trunk/src/vcc/vcc/cmd.h (copied) (copied from trunk/src/vcc/cmd.h) (1 diff)
- trunk/src/vcc/vcc/create.c (moved) (moved from trunk/src/vcc/create.c) (2 diffs)
- trunk/src/vcc/vcc/exec.c (moved) (moved from trunk/src/vcc/exec.c) (2 diffs)
- trunk/src/vcc/vcc/kill.c (moved) (moved from trunk/src/vcc/kill.c) (2 diffs)
- trunk/src/vcc/vcc/list.c (moved) (moved from trunk/src/vcc/list.c) (2 diffs)
- trunk/src/vcc/vcc/load.c (moved) (moved from trunk/src/vcc/load.c) (2 diffs)
- trunk/src/vcc/vcc/login.c (moved) (moved from trunk/src/vcc/login.c) (3 diffs)
- trunk/src/vcc/vcc/reboot.c (moved) (moved from trunk/src/vcc/reboot.c) (1 diff)
- trunk/src/vcc/vcc/remove.c (moved) (moved from trunk/src/vcc/remove.c) (1 diff)
- trunk/src/vcc/vcc/rename.c (moved) (moved from trunk/src/vcc/rename.c) (2 diffs)
- trunk/src/vcc/vcc/restart.c (moved) (moved from trunk/src/vcc/restart.c) (1 diff)
- trunk/src/vcc/vcc/start.c (moved) (moved from trunk/src/vcc/start.c) (1 diff)
- trunk/src/vcc/vcc/status.c (moved) (moved from trunk/src/vcc/status.c) (2 diffs)
- trunk/src/vcc/vcc/stop.c (moved) (moved from trunk/src/vcc/stop.c) (1 diff)
- trunk/src/vcc/vcc/templates.c (moved) (moved from trunk/src/vcc/templates.c) (2 diffs)
- trunk/src/vcc/vcdadm (added)
- trunk/src/vcc/vcdadm/Makefile.am (added)
- trunk/src/vcc/vcdadm/cmd.c (copied) (copied from trunk/src/vcdadm/cmd.c) (2 diffs)
- trunk/src/vcc/vcdadm/cmd.h (copied) (copied from trunk/src/vcdadm/cmd.h) (1 diff)
- trunk/src/vcc/vcdadm/status.c (copied) (copied from trunk/src/vcdadm/status.c) (2 diffs)
- trunk/src/vcc/vcdadm/user.c (copied) (copied from trunk/src/vcdadm/user.c) (4 diffs)
- trunk/src/vcc/vcdadm/user_caps.c (copied) (copied from trunk/src/vcdadm/user_caps.c) (4 diffs)
- trunk/src/vcc/vce (added)
- trunk/src/vcc/vce/Makefile.am (added)
- trunk/src/vcc/vce/cmd.c (copied) (copied from trunk/src/vce/cmd.c) (2 diffs)
- trunk/src/vcc/vce/cmd.h (copied) (copied from trunk/src/vce/cmd.h) (1 diff)
- trunk/src/vcc/vce/dx_limit.c (copied) (copied from trunk/src/vce/dx_limit.c) (4 diffs)
- trunk/src/vcc/vce/init.c (copied) (copied from trunk/src/vce/init.c) (3 diffs)
- trunk/src/vcc/vce/list.c (copied) (copied from trunk/src/vce/list.c) (2 diffs)
- trunk/src/vcc/vce/mount.c (copied) (copied from trunk/src/vce/mount.c) (4 diffs)
- trunk/src/vcc/vce/nx_addr.c (copied) (copied from trunk/src/vce/nx_addr.c) (5 diffs)
- trunk/src/vcc/vce/nx_broadcast.c (copied) (copied from trunk/src/vce/nx_broadcast.c) (4 diffs)
- trunk/src/vcc/vce/vx_bcaps.c (copied) (copied from trunk/src/vce/vx_bcaps.c) (4 diffs)
- trunk/src/vcc/vce/vx_ccaps.c (copied) (copied from trunk/src/vce/vx_ccaps.c) (4 diffs)
- trunk/src/vcc/vce/vx_flags.c (copied) (copied from trunk/src/vce/vx_flags.c) (4 diffs)
- trunk/src/vcc/vce/vx_limit.c (copied) (copied from trunk/src/vce/vx_limit.c) (4 diffs)
- trunk/src/vcc/vce/vx_sched.c (copied) (copied from trunk/src/vce/vx_sched.c) (4 diffs)
- trunk/src/vcc/vce/vx_uname.c (copied) (copied from trunk/src/vce/vx_uname.c) (4 diffs)
- trunk/src/vcc/vgc (added)
- trunk/src/vcc/vgc/Makefile.am (added)
- trunk/src/vcc/vgc/cmd.c (copied) (copied from trunk/src/vgc/cmd.c) (2 diffs)
- trunk/src/vcc/vgc/cmd.h (copied) (copied from trunk/src/vgc/cmd.h) (2 diffs)
- trunk/src/vcc/vgc/group.c (copied) (copied from trunk/src/vgc/group.c) (4 diffs)
- trunk/src/vcc/vgc/vserver.c (copied) (copied from trunk/src/vgc/vserver.c) (4 diffs)
- trunk/src/vcc/vgc/wrapper.c (copied) (copied from trunk/src/vgc/wrapper.c)
- trunk/src/vcdadm (deleted)
- trunk/src/vce (deleted)
- trunk/src/vgc (deleted)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/configure.ac
r534 r547 31 31 # Checks for programs. 32 32 AC_PROG_CC 33 AM_PROG_CC_C_O 33 34 AC_PROG_LIBTOOL 34 35 AC_PROG_INSTALL … … 187 188 AC_CONFIG_FILES([Makefile 188 189 doc/Makefile 190 src/vcc/vcc/Makefile 191 src/vcc/vcdadm/Makefile 192 src/vcc/vce/Makefile 193 src/vcc/vgc/Makefile 189 194 src/vcc/Makefile 190 195 src/vcd/methods/Makefile 191 196 src/vcd/Makefile 192 src/vcdadm/Makefile193 src/vce/Makefile194 src/vgc/Makefile195 197 src/vshelper/Makefile 196 198 src/vxpasswd/Makefile trunk/src/Makefile.am
r534 r547 18 18 SUBDIRS = vcc \ 19 19 vcd \ 20 vcdadm \21 vce \22 vgc \23 20 vshelper \ 24 21 vxpasswd trunk/src/vcc/Makefile.am
r534 r547 18 18 if ENABLE_CLIENT 19 19 20 SUBDIRS = vcc \ 21 vcdadm \ 22 vce \ 23 vgc 24 20 25 EXTRA_DIST = vcc.conf 21 26 22 AM_CPPFLAGS = $(PATH_CPPFLAGS) 27 noinst_HEADERS = vcc.h 23 28 24 noinst_HEADERS = cmd.h 29 sbin_PROGRAMS = vcc/vcc \ 30 vcdadm/vcdadm \ 31 vce/vce \ 32 vgc/vgc 25 33 26 sbin_PROGRAMS = vcc 34 COMMON_LIBS = $(LUCID_LIBS) \ 35 $(CONFUSE_LIBS) \ 36 $(UTIL_LIBS) \ 37 $(VSERVER_LIBS) \ 38 $(XMLRPC_C_CLIENT_LIBS) 27 39 28 vcc_SOURCES = cmd.c \ 29 create.c \ 30 exec.c \ 31 kill.c \ 32 list.c \ 33 load.c \ 34 login.c \ 35 main.c \ 36 reboot.c \ 37 remove.c \ 38 rename.c \ 39 restart.c \ 40 start.c \ 41 status.c \ 42 stop.c \ 43 templates.c \ 44 vlogin.c 40 vcc_vcc_SOURCES = main.c vlogin.c 41 vcc_vcc_LDADD = vcc/libcmd.a $(COMMON_LIBS) 42 vcc_vcc_CPPFLAGS = -I$(srcdir)/vcc $(PATH_CPPFLAGS) 45 43 46 vcc_LDADD = $(LUCID_LIBS) \ 47 $(CONFUSE_LIBS) \ 48 $(UTIL_LIBS) \ 49 $(VSERVER_LIBS) \ 50 $(XMLRPC_C_CLIENT_LIBS) 44 vcdadm_vcdadm_SOURCES = main.c 45 vcdadm_vcdadm_LDADD = vcdadm/libcmd.a $(COMMON_LIBS) 46 vcdadm_vcdadm_CPPFLAGS = -I$(srcdir)/vcdadm $(PATH_CPPFLAGS) 47 48 vce_vce_SOURCES = main.c 49 vce_vce_LDADD = vce/libcmd.a $(COMMON_LIBS) 50 vce_vce_CPPFLAGS = -I$(srcdir)/vce $(PATH_CPPFLAGS) 51 52 vgc_vgc_SOURCES = main.c vlogin.c 53 vgc_vgc_LDADD = vgc/libcmd.a $(COMMON_LIBS) 54 vgc_vgc_CPPFLAGS = -I$(srcdir)/vgc $(PATH_CPPFLAGS) 51 55 52 56 install-data-local: trunk/src/vcc/main.c
r540 r547 30 30 #include <lucid/str.h> 31 31 32 #include "vcc.h" 32 33 #include "cmd.h" 33 34 34 35 static char *host = "localhost"; 35 36 static int port = 13386; 37 38 char *uri = NULL; 39 char *user = "admin"; 40 char *pass = NULL; 41 char *name = NULL; 36 42 37 43 static cfg_opt_t CFG_OPTS[] = { … … 42 48 CFG_END() 43 49 }; 44 45 void usage(int rc)46 {47 printf("Usage: vcc <opts>* <command>\n"48 "\n"49 "Available commands:\n"50 " create <name> <template> [<force> [<copy> [<vdir>]]]\n"51 " exec <name> <command> <args>*\n"52 " kill <name> <pid> <sig>\n"53 " list [<username>]\n"54 " load <name>\n"55 " login <name>\n"56 " reboot <name>\n"57 " remove <name>\n"58 " rename <name> <newname>\n"59 " start <name>\n"60 " status <name>\n"61 " stop <name>\n"62 " templates [<name>]\n"63 "\n"64 "Available options:\n"65 " -c <path> configuration file (default: %s/vcc.conf)\n"66 " -h <host> server hostname (default: localhost)\n"67 " -p <port> server port (default: 13386)\n"68 " -u <user> server username (default: admin)\n",69 SYSCONFDIR);70 exit(rc);71 }72 50 73 51 static … … 137 115 xmlrpc_env env; 138 116 117 /* start logging */ 139 118 log_options_t log_options = { 140 119 .log_ident = argv[0], … … 173 152 } 174 153 154 /* no command given */ 155 if (argc < optind + 1) 156 usage(EXIT_FAILURE); 157 158 cmd = argv[optind++]; 159 160 /* no username in config or command line given */ 175 161 if (str_isempty(user)) 176 162 log_error_and_die("no user for login given"); 177 163 178 if (argc < optind + 1) 179 usage(EXIT_FAILURE); 180 181 cmd = argv[optind++]; 182 183 if (argc < optind + 1) 184 name = ""; 185 else 186 name = argv[optind++]; 187 188 for (i = 0; CMDS[i].name; i++) 189 if (str_equal(cmd, CMDS[i].name)) 190 goto init; 191 192 log_error_and_die("invalid command: %s", cmd); 193 194 init: 164 /* init XML-RPC client */ 195 165 xmlrpc_env_init(&env); 196 166 … … 204 174 asprintf(&uri, "http://%s:%d/RPC2", host, port); 205 175 176 /* try to find command */ 177 for (i = 0; CMDS[i].name; i++) 178 if (str_equal(cmd, CMDS[i].name)) 179 goto found; 180 181 log_error_and_die("invalid command: %s", cmd); 182 183 found: 184 /* read password if none in config */ 206 185 read_password(); 207 186 208 for (i = 0; CMDS[i].name; i++) 209 if (str_equal(cmd, CMDS[i].name)) 210 CMDS[i].func(&env, argc - optind, argv + optind); 187 /* call command helper */ 188 CMDS[i].func(&env, argc - optind, argv + optind); 211 189 212 190 if (env.fault_occurred) trunk/src/vcc/vcc.h
r534 r547 16 16 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 17 18 #ifndef _VCC_ CMD_H19 #define _VCC_ CMD_H18 #ifndef _VCC_VCC_H 19 #define _VCC_VCC_H 20 20 21 21 #include <xmlrpc-c/base.h> … … 31 31 extern cmd_t CMDS[]; 32 32 33 #define return_if_fault(ENV) do { \34 if (ENV->fault_occurred) return; \35 } while(0)36 37 #define SIGNATURE(S) "({s:s,s:s}" S ")", "username", user, "password", pass38 39 33 extern char *uri; 40 34 extern char *user; … … 44 38 void do_vlogin(int argc, char **argv); 45 39 46 void usage(int rc); 40 #define return_if_fault(ENV) do { \ 41 if (ENV->fault_occurred) return; \ 42 } while(0) 47 43 48 void cmd_create (xmlrpc_env *env, int argc, char **argv); 49 void cmd_exec (xmlrpc_env *env, int argc, char **argv); 50 void cmd_kill (xmlrpc_env *env, int argc, char **argv); 51 void cmd_list (xmlrpc_env *env, int argc, char **argv); 52 void cmd_load (xmlrpc_env *env, int argc, char **argv); 53 void cmd_login (xmlrpc_env *env, int argc, char **argv); 54 void cmd_reboot (xmlrpc_env *env, int argc, char **argv); 55 void cmd_remove (xmlrpc_env *env, int argc, char **argv); 56 void cmd_rename (xmlrpc_env *env, int argc, char **argv); 57 void cmd_restart (xmlrpc_env *env, int argc, char **argv); 58 void cmd_start (xmlrpc_env *env, int argc, char **argv); 59 void cmd_status (xmlrpc_env *env, int argc, char **argv); 60 void cmd_stop (xmlrpc_env *env, int argc, char **argv); 61 void cmd_templates(xmlrpc_env *env, int argc, char **argv); 44 #define client_call(M, S, ...) \ 45 xmlrpc_client_call(env, uri, #M, "({s:s,s:s}" S ")", \ 46 "username", user, "password", pass, __VA_ARGS__) 47 48 #define client_call0(M) \ 49 xmlrpc_client_call(env, uri, #M, "({s:s,s:s}s)", \ 50 "username", user, "password", pass, "") 51 52 #define COMMON_USAGE \ 53 "Available options:\n" \ 54 " -c <path> configuration file (default: " SYSCONFDIR "/vcc.conf)\n" \ 55 " -h <host> server hostname (default: localhost)\n" \ 56 " -p <port> server port (default: 13386)\n" \ 57 " -u <user> server username (default: admin)\n" 62 58 63 59 #endif trunk/src/vcc/vcc/cmd.c
r534 r547 16 16 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 17 18 #include <stdlib.h> 19 #include <lucid/printf.h> 20 21 #include "vcc.h" 18 22 #include "cmd.h" 19 20 char *uri = NULL;21 char *user = "admin";22 char *pass = NULL;23 char *name = NULL;24 23 25 24 cmd_t CMDS[] = { … … 40 39 { NULL, NULL } 41 40 }; 41 42 void usage(int rc) 43 { 44 printf("Usage: vcc <opts>* <command>\n" 45 "\n" 46 "Available commands:\n" 47 " create <name> <template> [<force> [<copy> [<vdir>]]]\n" 48 " exec <name> <command> <args>*\n" 49 " kill <name> <pid> <sig>\n" 50 " list [<username>]\n" 51 " load <name>\n" 52 " login <name>\n" 53 " reboot <name>\n" 54 " remove <name>\n" 55 " rename <name> <newname>\n" 56 " start <name>\n" 57 " status <name>\n" 58 " stop <name>\n" 59 " templates [<name>]\n" 60 "\n" 61 COMMON_USAGE); 62 exit(rc); 63 } trunk/src/vcc/vcc/cmd.h
r534 r547 19 19 #define _VCC_CMD_H 20 20 21 #include <xmlrpc-c/base.h>22 #include <xmlrpc-c/client.h>23 24 typedef void (*CMD)(xmlrpc_env *env, int argc, char **argv);25 26 typedef struct {27 char *name;28 CMD func;29 } cmd_t;30 31 extern cmd_t CMDS[];32 33 #define return_if_fault(ENV) do { \34 if (ENV->fault_occurred) return; \35 } while(0)36 37 #define SIGNATURE(S) "({s:s,s:s}" S ")", "username", user, "password", pass38 39 extern char *uri;40 extern char *user;41 extern char *pass;42 extern char *name;43 44 void do_vlogin(int argc, char **argv);45 46 21 void usage(int rc); 47 22 trunk/src/vcc/vcc/create.c
r534 r547 18 18 19 19 #include <stdlib.h> 20 21 20 #include <lucid/scanf.h> 22 21 22 #include "vcc.h" 23 23 #include "cmd.h" 24 24 … … 42 42 vdir = argv[3]; 43 43 44 xmlrpc_client_call(env, uri, "vx.create", 45 SIGNATURE("{s:s,s:s,s:b,s:b,s:s}"), 46 "name", name, 47 "template", template, 48 "force", force, 49 "copy", copy, 50 "vdir", vdir); 44 client_call("vx.create", "{s:s,s:s,s:b,s:b,s:s}", 45 "name", name, 46 "template", template, 47 "force", force, 48 "copy", copy, 49 "vdir", vdir); 51 50 } trunk/src/vcc/vcc/exec.c
r534 r547 22 22 #include <lucid/strtok.h> 23 23 24 #include "vcc.h" 24 25 #include "cmd.h" 25 26 … … 40 41 log_perror_and_die("strtok_tostr"); 41 42 42 result = xmlrpc_client_call(env, uri, "vx.exec", 43 SIGNATURE("{s:s,s:s}"), 44 "name", name, 45 "command", command); 43 result = client_call("vx.exec", "{s:s,s:s}", "name", name, 44 "command", command); 46 45 return_if_fault(env); 47 46 trunk/src/vcc/vcc/kill.c
r534 r547 20 20 #include <lucid/scanf.h> 21 21 22 #include "vcc.h" 22 23 #include "cmd.h" 23 24 … … 32 33 sscanf(argv[1], "%d", &sig); 33 34 34 xmlrpc_client_call(env, uri, "vx.kill", 35 SIGNATURE("{s:s,s:i,s:i}"), 36 "name", name, 37 "pid", pid, 38 "sig", sig); 35 client_call("vx.kill", "{s:s,s:i,s:i}", 36 "name", name, 37 "pid", pid, 38 "sig", sig); 39 39 } trunk/src/vcc/vcc/list.c
r534 r547 18 18 #include <lucid/printf.h> 19 19 20 #include "vcc.h" 20 21 #include "cmd.h" 21 22 … … 26 27 int len, i; 27 28 28 response = xmlrpc_client_call(env, uri, "vxdb.list", 29 SIGNATURE("{s:s}"), 30 "username", name); 29 response = client_call("vxdb.list", "{s:s}", "username", name); 31 30 return_if_fault(env); 32 31 trunk/src/vcc/vcc/load.c
r429 r547 18 18 #include <lucid/printf.h> 19 19 20 #include "vcc.h" 20 21 #include "cmd.h" 21 22 … … 25 26 char *loadavg1m, *loadavg5m, *loadavg15m; 26 27 27 result = xmlrpc_client_call(env, uri, "vx.load", 28 SIGNATURE("{s:s}"), 29 "name", name); 28 result = client_call("vx.load", "{s:s}", "name", name); 30 29 return_if_fault(env); 31 30 trunk/src/vcc/vcc/login.c
r534 r547 23 23 #include <lucid/log.h> 24 24 25 #include "vcc.h" 25 26 #include "cmd.h" 26 27 … … 32 33 char *av[] = { "/bin/sh", NULL }; 33 34 34 result = xmlrpc_client_call(env, uri, "vxdb.xid.get", 35 SIGNATURE("{s:s}"), 36 "name", name); 35 result = client_call("vxdb.xid.get", "{s:s}", "name", name); 37 36 return_if_fault(env); 38 37 … … 42 41 xmlrpc_DECREF(result); 43 42 44 result = xmlrpc_client_call(env, uri, "vxdb.vdir.get", 45 SIGNATURE("{s:s}"), 46 "name", name); 43 result = client_call("vxdb.vdir.get", "{s:s}", "name", name); 47 44 return_if_fault(env); 48 45 trunk/src/vcc/vcc/reboot.c
r534 r547 16 16 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 17 18 #include "vcc.h" 18 19 #include "cmd.h" 19 20 20 21 void cmd_reboot(xmlrpc_env *env, int argc, char **argv) 21 22 { 22 xmlrpc_client_call(env, uri, "vx.reboot", 23 SIGNATURE("{s:s}"), 24 "name", name); 23 client_call("vx.reboot", "{s:s}", "name", name); 25 24 } trunk/src/vcc/vcc/remove.c
r534 r547 16 16 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 17 18 #include "vcc.h" 18 19 #include "cmd.h" 19 20 20 21 void cmd_remove(xmlrpc_env *env, int argc, char **argv) 21 22 { 22 xmlrpc_client_call(env, uri, "vx.remove", 23 SIGNATURE("{s:s}"), 24 "name", name); 23 client_call("vx.remove", "{s:s}", "name", name); 25 24 } trunk/src/vcc/vcc/rename.c
r534 r547 18 18 #include <stdlib.h> 19 19 20 #include "vcc.h" 20 21 #include "cmd.h" 21 22 … … 29 30 newname = argv[0]; 30 31 31 xmlrpc_client_call(env, uri, "vx.rename", 32 SIGNATURE("{s:s,s:s}"), 33 "name", name, 34 "newname", newname); 32 client_call("vx.rename", "{s:s,s:s}", "name", name, "newname", newname); 35 33 } trunk/src/vcc/vcc/restart.c
r534 r547 16 16 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 17 18 #include "vcc.h" 18 19 #include "cmd.h" 19 20 20 21 void cmd_restart(xmlrpc_env *env, int argc, char **argv) 21 22 { 22 xmlrpc_client_call(env, uri, "vx.restart", 23 SIGNATURE("{s:s}"), 24 "name", name); 23 client_call("vx.restart", "{s:s}", "name", name); 25 24 } trunk/src/vcc/vcc/start.c
r534 r547 16 16 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 17 18 #include "vcc.h" 18 19 #include "cmd.h" 19 20 20 21 void cmd_start(xmlrpc_env *env, int argc, char **argv) 21 22 { 22 xmlrpc_client_call(env, uri, "vx.start", 23 SIGNATURE("{s:s}"), 24 "name", name); 23 client_call("vx.start", "{s:s}", "name", name); 25 24 } trunk/src/vcc/vcc/status.c
r429 r547 19 19 #include <lucid/printf.h> 20 20 21 #include "vcc.h" 21 22 #include "cmd.h" 22 23 … … 50 51 int running, nproc, uptime; 51 52 52 result = xmlrpc_client_call(env, uri, "vx.status", 53 SIGNATURE("{s:s}"), 54 "name", name); 53 result = client_call("vx.status", "{s:s}", "name", name); 55 54 return_if_fault(env); 56 55 trunk/src/vcc/vcc/stop.c
r534 r547 16 16 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 17 18 #include "vcc.h" 18 19 #include "cmd.h" 19 20 20 21 void cmd_stop(xmlrpc_env *env, int argc, char **argv) 21 22 { 22 xmlrpc_client_call(env, uri, "vx.stop", 23 SIGNATURE("{s:s}"), 24 "name", name); 23 client_call("vx.stop", "{s:s}", "name", name); 25 24 } trunk/src/vcc/vcc/templates.c
r534 r547 18 18 #include <lucid/printf.h> 19 19 20 #include "vcc.h" 20 21 #include "cmd.h" 21 22 … … 26 27 int len, i; 27 28 28 response = xmlrpc_client_call(env, uri, "vx.templates", 29 SIGNATURE("{s:s}"), 30 "name", name); 29 response = client_call("vx.templates", "{s:s}", "name", name); 31 30 return_if_fault(env); 32 31 trunk/src/vcc/vcdadm/cmd.c
r504 r547 16 16 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 17 18 #include <stdlib.h> 19 #include <lucid/printf.h> 20 21 #include "vcc.h" 18 22 #include "cmd.h" 19 20 char *uri = NULL;21 char *user = "admin";22 char *pass = NULL;23 char *name = NULL;24 23 25 24 cmd_t CMDS[] = { … … 33 32 { NULL, NULL } 34 33 }; 34 35 void usage(int rc) 36 { 37 printf("Usage: vcdadm <opts>* <command>\n" 38 "\n" 39 "Available commands:\n" 40 " status\n" 41 "\n" 42 " user.set <username> <admin> [<password>]\n" 43 " user.get [<username>]\n" 44 " user.remove <username>\n" 45 "\n" 46 " user.caps.add <username> <cap>\n" 47 " user.caps.get <username>\n" 48 " user.caps.remove <username> [<cap>]\n" 49 "\n" 50 COMMON_USAGE); 51 exit(rc); 52 } trunk/src/vcc/vcdadm/cmd.h
r534 r547 19 19 #define _VCDADM_CMD_H 20 20 21 #include <xmlrpc-c/base.h>22 #include <xmlrpc-c/client.h>23 24 typedef void (*CMD)(xmlrpc_env *env, int argc, char **argv);25 26 typedef struct {27 char *name;28 CMD func;29 } cmd_t;30 31 extern cmd_t CMDS[];32 33 #define return_if_fault(ENV) do { \34 if (ENV->fault_occurred) return; \35 } while(0)36 37 #define SIGNATURE(S) "({s:s,s:s}" S ")", "username", user, "password", pass38 39 extern char *uri;40 extern char *user;41 extern char *pass;42 extern char *name;43 44 21 void usage(int rc); 45 22 trunk/src/vcc/vcdadm/status.c
r534 r547 18 18 #include <lucid/printf.h> 19 19 20 #include "vcc.h" 20 21 #include "cmd.h" 21 22 … … 49 50 int uptime, requests, nomethod, flogins; 50 51 51 result = xmlrpc_client_call(env, uri, "vcd.status", 52 SIGNATURE("s"), ""); 52 result = client_call0("vcd.status"); 53 53 return_if_fault(env); 54 54 trunk/src/vcc/vcdadm/user.c
r534 r547 21 21 #include <lucid/scanf.h> 22 22 23 #include "vcc.h" 23 24 #include "cmd.h" 24 25 … … 29 30 int len, i, uid, admin; 30 31 31 response = xmlrpc_client_call(env, uri,"vcd.user.get",32 SIGNATURE("{s:s}"),32 response = client_call("vcd.user.get", 33 "{s:s}", 33 34 "username", name); 34 35 return_if_fault(env); … … 58 59 void cmd_user_remove(xmlrpc_env *env, int argc, char **argv) 59 60 { 60 xmlrpc_client_call(env, uri,"vcd.user.remove",61 SIGNATURE("{s:s}"),61 client_call("vcd.user.remove", 62 "{s:s}", 62 63 "username", name); 63 64 } … … 78 79 password = ""; 79 80 80 xmlrpc_client_call(env, uri,"vcd.user.set",81 SIGNATURE("{s:s,s:b,s:s}"),81 client_call("vcd.user.set", 82 "{s:s,s:b,s:s}", 82 83 "username", name, 83 84 "admin", admin, trunk/src/vcc/vcdadm/user_caps.c
r524 r547 20 20 #include <lucid/printf.h> 21 21 22 #include "vcc.h" 22 23 #include "cmd.h" 23 24 … … 31 32 cap = argv[0]; 32 33 33 xmlrpc_client_call(env, uri,"vcd.user.caps.add",34 SIGNATURE("{s:s,s:s}"),34 client_call("vcd.user.caps.add", 35 "{s:s,s:s}", 35 36 "username", name, 36 37 "cap", cap); … … 43 44 int len, i; 44 45 45 response = xmlrpc_client_call(env, uri,"vcd.user.caps.get",46 SIGNATURE("{s:s}"),46 response = client_call("vcd.user.caps.get", 47 "{s:s}", 47 48 "username", name); 48 49 return_if_fault(env); … … 75 76 cap = argv[0]; 76 77 77 xmlrpc_client_call(env, uri,"vcd.user.caps.remove",78 SIGNATURE("{s:s,s:s}"),78 client_call("vcd.user.caps.remove", 79 "{s:s,s:s}", 79 80 "username", name, 80 81 "cap", cap); trunk/src/vcc/vce/cmd.c
r534 r547 16 16 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 17 18 #include <stdlib.h> 19 #include <lucid/printf.h> 20 21 #include "vcc.h" 18 22 #include "cmd.h" 19 20 char *uri = NULL;21 char *user = "admin";22 char *pass = NULL;23 char *name = NULL;24 23 25 24 cmd_t CMDS[] = { … … 59 58 { NULL, NULL } 60 59 }; 60 61 void usage(int rc) 62 { 63 printf("Usage: vce <opts>* <command>\n" 64 &n
