Changeset 559
- Timestamp:
- 02/21/07 02:26:15 (2 years ago)
- Files:
-
- trunk/TODO (modified) (1 diff)
- trunk/src/vcc/Makefile.am (modified) (1 diff)
- trunk/src/vcc/vce/Makefile.am (modified) (1 diff)
- trunk/src/vcc/vce/cmd.c (modified) (2 diffs)
- trunk/src/vcc/vce/cmd.h (modified) (1 diff)
- trunk/src/vcc/vce/dep.c (added)
- trunk/src/vcd/methods.c (modified) (1 diff)
- trunk/src/vcd/methods.h (modified) (1 diff)
- trunk/src/vcd/methods/Makefile.am (modified) (1 diff)
- trunk/src/vcd/methods/vx/vx_create.c (modified) (2 diffs)
- trunk/src/vcd/methods/vx/vx_remove.c (modified) (2 diffs)
- trunk/src/vcd/methods/vx/vx_start.c (modified) (3 diffs)
- trunk/src/vcd/methods/vxdb/vxdb_dep_add.c (added)
- trunk/src/vcd/methods/vxdb/vxdb_dep_remove.c (added)
- trunk/src/vcd/vxdb-tables.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/TODO
r539 r559 4 4 5 5 NEEDED FEATURES: 6 - onboot settings, to start VServers on VCD startup7 6 - debian/ dir, RPM .spec file, init scripts, distrib make targets, pathprog probably 8 7 trunk/src/vcc/Makefile.am
r547 r559 50 50 vce_vce_CPPFLAGS = -I$(srcdir)/vce $(PATH_CPPFLAGS) 51 51 52 vgc_vgc_SOURCES = main.c vlogin.c52 vgc_vgc_SOURCES = main.c 53 53 vgc_vgc_LDADD = vgc/libcmd.a $(COMMON_LIBS) 54 54 vgc_vgc_CPPFLAGS = -I$(srcdir)/vgc $(PATH_CPPFLAGS) trunk/src/vcc/vce/Makefile.am
r547 r559 23 23 24 24 libcmd_a_SOURCES = cmd.c \ 25 dep.c \ 25 26 dx_limit.c \ 26 27 init.c \ trunk/src/vcc/vce/cmd.c
r547 r559 23 23 24 24 cmd_t CMDS[] = { 25 { "dep.add", cmd_dep_add }, 26 { "dep.remove", cmd_dep_remove }, 25 27 { "dx.limit.get", cmd_dx_limit_get }, 26 28 { "dx.limit.remove", cmd_dx_limit_remove }, … … 66 68 " list [<username>]\n" 67 69 "\n" 70 " dep.add <name> <depname>\n" 71 " dep.remove <name> <depname>\n" 72 "\n" 68 73 " dx.limit.get <name>\n" 69 74 " dx.limit.remove <name>\n" trunk/src/vcc/vce/cmd.h
r547 r559 21 21 void usage(int rc); 22 22 23 void cmd_dep_add (xmlrpc_env *env, int argc, char **argv); 24 void cmd_dep_remove (xmlrpc_env *env, int argc, char **argv); 23 25 void cmd_dx_limit_get (xmlrpc_env *env, int argc, char **argv); 24 26 void cmd_dx_limit_remove (xmlrpc_env *env, int argc, char **argv); trunk/src/vcd/methods.c
r554 r559 115 115 116 116 /* vxdb */ 117 MREGISTER("vxdb.dep.add", m_vxdb_dep_add); 118 MREGISTER("vxdb.dep.remove", m_vxdb_dep_remove); 117 119 MREGISTER("vxdb.dx.limit.get", m_vxdb_dx_limit_get); 118 120 MREGISTER("vxdb.dx.limit.remove", m_vxdb_dx_limit_remove); trunk/src/vcd/methods.h
r551 r559 158 158 159 159 /* vxdb */ 160 MPROTO(m_vxdb_dep_add); 161 MPROTO(m_vxdb_dep_remove); 160 162 MPROTO(m_vxdb_dx_limit_get); 161 163 MPROTO(m_vxdb_dx_limit_remove); trunk/src/vcd/methods/Makefile.am
r551 r559 50 50 vx/vx_stop.c 51 51 52 M_VXDB = vxdb/vxdb_dx_limit_get.c \ 52 M_VXDB = vxdb/vxdb_dep_add.c \ 53 vxdb/vxdb_dep_remove.c \ 54 vxdb/vxdb_dx_limit_get.c \ 53 55 vxdb/vxdb_dx_limit_remove.c \ 54 56 vxdb/vxdb_dx_limit_set.c \ trunk/src/vcd/methods/vx/vx_create.c
r545 r559 400 400 /* remove any existing stuff */ 401 401 stralloc_catf(sa, 402 "DELETE FROM deps WHERE xid = %d;" 403 "DELETE FROM deps WHERE depxid = %d;" 402 404 "DELETE FROM dx_limit WHERE xid = %d;" 403 405 "DELETE FROM init WHERE xid = %d;" … … 413 415 "DELETE FROM vx_sched WHERE xid = %d;" 414 416 "DELETE FROM vx_uname WHERE xid = %d;" 415 "DELETE FROM xid_name_map WHERE xid = %d;", /* 1 4*/416 xid, xid, xid, xid, xid, xid, xid, 417 xid, xid, xid, xid, xid, xid, xid );417 "DELETE FROM xid_name_map WHERE xid = %d;", /* 16 */ 418 xid, xid, xid, xid, xid, xid, xid, xid, 419 xid, xid, xid, xid, xid, xid, xid, xid); 418 420 419 421 /* get init configuration */ trunk/src/vcd/methods/vx/vx_remove.c
r534 r559 51 51 52 52 rc = vxdb_exec("BEGIN EXCLUSIVE TRANSACTION;" 53 "DELETE FROM deps WHERE xid = %d;" 54 "DELETE FROM deps WHERE depxid = %d;" 53 55 "DELETE FROM dx_limit WHERE xid = %d;" 54 56 "DELETE FROM init WHERE xid = %d;" … … 66 68 "DELETE FROM xid_gid_map WHERE xid = %d;" 67 69 "DELETE FROM xid_name_map WHERE xid = %d;" 68 "DELETE FROM xid_uid_map WHERE xid = %d;" /* 1 6*/70 "DELETE FROM xid_uid_map WHERE xid = %d;" /* 18 */ 69 71 "COMMIT TRANSACTION;", 70 xid, xid, xid, xid, xid, xid, xid, xid, 71 xid, xid, xid, xid, xid, xid, xid, xid );72 xid, xid, xid, xid, xid, xid, xid, xid, xid, 73 xid, xid, xid, xid, xid, xid, xid, xid, xid); 72 74 73 75 if (rc != VXDB_OK) trunk/src/vcd/methods/vx/vx_start.c
r534 r559 24 24 #include "vxdb.h" 25 25 26 #include <lucid/list.h> 26 27 #include <lucid/log.h> 27 28 #include <lucid/printf.h> … … 38 39 LOG_TRACEME 39 40 41 typedef struct { 42 list_t list; 43 xid_t xid; 44 } xid_list_t; 45 40 46 xmlrpc_value *params; 41 char *name ;47 char *name, *depname; 42 48 xid_t xid; 43 49 pid_t pid; 44 int status; 50 int status, rc; 51 xid_list_t _xids, *xids = &_xids, *pos; 45 52 nx_flags_t ncf; 46 53 vx_flags_t vcf; … … 56 63 if (!(xid = vxdb_getxid(name))) 57 64 method_return_fault(env, MENOVPS); 65 66 /* resolve deps to ensure all needed vservers are started */ 67 rc = vxdb_prepare(&dbr, 68 "SELECT depxid FROM deps WHERE xid = %d", 69 xid); 70 71 if (rc != VXDB_OK) 72 method_return_vxdb_fault(env); 73 74 INIT_LIST_HEAD(&(xids->list)); 75 76 vxdb_foreach_step(rc, dbr) { 77 LIST_NODE_ALLOC(xid_list_t, new); 78 79 new->xid = vxdb_column_int(dbr, 0); 80 81 list_add(&(new->list), &(xids->list)); 82 } 83 84 if (rc != VXDB_DONE) 85 method_return_vxdb_fault(env); 86 87 vxdb_finalize(dbr); 88 89 list_for_each_entry(pos, &(xids->list), list) { 90 /* needed vserver is stopped, let's start it, by calling 91 ourselves again, and we need the name for that */ 92 if (vx_info(pos->xid, NULL) == -1) { 93 if (errno == ESRCH) { 94 depname = vxdb_getname(pos->xid); 95 params = xmlrpc_build_value(env, "{s:s}", "name", depname); 96 m_vx_start(env, params, METHOD_INTERNAL); 97 } 98 99 else 100 method_return_sys_fault(env, "vx_info"); 101 } 102 } 58 103 59 104 /* remove persistent in case previous helper failed */ trunk/src/vcd/vxdb-tables.h
r538 r559 49 49 50 50 /* generate table definition */ 51 VXDB_COLUMNS_NEW(deps, "xid", "depxid") 52 VXDB_UNIQUE_NEW(deps, "xid,depxid") 53 51 54 VXDB_COLUMNS_NEW(dx_limit, "xid", "space", "inodes", "reserved") 52 55 VXDB_UNIQUE_NEW(dx_limit, "xid") … … 115 118 /* generate database definition */ 116 119 VXDB_DATABASE_START 120 VXDB_TABLE_NEW(deps) 117 121 VXDB_TABLE_NEW(dx_limit) 118 122 VXDB_TABLE_NEW(groups)
