Changeset 536

Show
Ignore:
Timestamp:
02/19/07 14:39:27 (2 years ago)
Author:
hollow
Message:

cleanup vg methods

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/vcd/methods/vg/vg_add.c

    r534 r536  
    4444                                "invalid groupname value: %s", group); 
    4545 
    46         if (str_equal(group, "default")) 
    47                 method_return_faultf(env, MEINVAL, 
    48                                 "reserved groupname: %s", group); 
     46        if (str_equal(group, "all")) 
     47                return xmlrpc_nil_new(env); 
    4948 
    5049        rc = vxdb_prepare(&dbr, 
  • trunk/src/vcd/methods/vg/vg_list.c

    r534 r536  
    4040        response = xmlrpc_array_new(env); 
    4141 
    42         /* add virtual default group */ 
    43         xmlrpc_array_append_item(env, response, xmlrpc_build_value(env, 
    44                         "{s:s,s:i}", 
    45                         "groupname", "default", 
    46                         "gid",       0)); 
    47  
    4842        vxdb_foreach_step(rc, dbr) 
    4943                xmlrpc_array_append_item(env, response, xmlrpc_build_value(env, 
  • trunk/src/vcd/methods/vg/vg_remove.c

    r534 r536  
    4444                                "invalid groupname value: %s", group); 
    4545 
    46         if (str_equal(group, "default")) 
     46        if (str_equal(group, "all")) 
    4747                method_return_faultf(env, MEINVAL, 
    48                                 "reserved groupname: %s", group); 
     48                                "cannot remove from reserved group '%s'", group); 
    4949 
    50         gid = vxdb_getgid(group); 
     50        if (!(gid = vxdb_getgid(group))) 
     51                method_return_fault(env, MENOVG); 
    5152 
    52         if (gid != 0) { 
    53                 rc = vxdb_exec( 
    54                         "BEGIN TRANSACTION;" 
    55                         "DELETE FROM xid_gid_map WHERE gid = %d;" 
    56                         "DELETE FROM groups WHERE gid = %d;" 
    57                         "COMMIT TRANSACTION;", 
    58                 gid, gid); 
     53        rc = vxdb_exec( 
     54                "BEGIN EXCLUSIVE TRANSACTION;" 
     55                "DELETE FROM xid_gid_map WHERE gid = %d;" 
     56                "DELETE FROM groups WHERE gid = %d;" 
     57                "COMMIT TRANSACTION;", 
     58                gid, gid); 
    5959 
    60                 if (rc != VXDB_OK) 
    61                         method_return_vxdb_fault(env); 
    62         } 
    63  
    64         else 
    65                 method_return_faultf(env, MEINVAL, 
    66                                 "group doesn't exist: %s", group); 
     60        if (rc != VXDB_OK) 
     61                method_return_vxdb_fault(env); 
    6762 
    6863        return xmlrpc_nil_new(env); 
  • trunk/src/vcd/methods/vg/vg_vx_add.c

    r534 r536  
    2929 
    3030        xmlrpc_value *params; 
    31         char *group, *vserver
     31        char *group, *name
    3232        int rc, gid, xid; 
    3333 
     
    3838                        "{s:s,s:s,*}", 
    3939                        "groupname", &group, 
    40                         "vsname", &vserver); 
     40                        "name", &name); 
    4141        method_return_if_fault(env); 
    4242 
     
    4545                                "invalid groupname value: %s", group); 
    4646 
    47         if (!validate_name(vserver)) 
     47        if (!validate_name(name)) 
    4848                method_return_faultf(env, MEINVAL, 
    49                                 "invalid vsname value: %s", vserver); 
     49                                "invalid name value: %s", name); 
    5050 
    51         if (str_equal(group, "default")) 
     51        if (str_equal(group, "all")) 
    5252                return xmlrpc_nil_new(env); 
    5353 
    54         gid = vxdb_getgid(group); 
     54        if (!(xid = vxdb_getxid(name))) 
     55                method_return_fault(env, MENOVPS); 
    5556 
    56         xid = vxdb_getxid(vserver); 
     57        if (!(gid = vxdb_getgid(group))) 
     58                method_return_fault(env, MENOVG); 
    5759 
    58         if (gid != 0 && xid != 0) { 
    59                 rc = vxdb_exec( 
    60                                 "INSERT INTO xid_gid_map (xid, gid) " 
    61                                 "VALUES (%d, %d)", 
    62                                 xid, gid); 
     60        rc = vxdb_exec( 
     61                        "INSERT INTO xid_gid_map (xid, gid) " 
     62                        "VALUES (%d, %d)", 
     63                        xid, gid); 
    6364 
    64                 if (rc != VXDB_OK) 
    65                         method_return_vxdb_fault(env); 
    66         } 
    67  
    68         else 
    69                 method_return_faultf(env, MEINVAL, 
    70                                 "group or vserver don't exist: %s / %s", group, vserver); 
     65        if (rc != VXDB_OK) 
     66                method_return_vxdb_fault(env); 
    7167 
    7268        return xmlrpc_nil_new(env); 
  • trunk/src/vcd/methods/vg/vg_vx_list.c

    r534 r536  
    2121#include "vxdb.h" 
    2222 
    23 #include <lucid/list.h> 
    2423#include <lucid/log.h> 
    25 #include <lucid/mem.h> 
    2624#include <lucid/str.h> 
    2725 
     
    3028        LOG_TRACEME 
    3129 
    32         typedef struct { 
    33                 list_t list; 
    34                 xid_t   xid; 
    35         } xid_list_t; 
    36  
    37         xmlrpc_value *params, *response = NULL; 
    38         char *group, *vsname; 
     30        xmlrpc_value *params, *response; 
     31        char *group; 
    3932        int rc, gid; 
    40         xid_list_t _xids, *xids = &_xids, *st; 
    41         list_t *pos; 
    4233 
    4334        params = method_init(env, p, c, VCD_CAP_AUTH, 0); 
     
    5344                                "invalid groupname value: %s", group); 
    5445 
    55         if (str_equal(group, "default")) { 
    56                 rc = vxdb_prepare(&dbr
    57                                 "SELECT xid FROM xid_name_map ORDER BY xid DESC"); 
     46        if (str_equal(group, "all")) 
     47                method_return_faultf(env, MEINVAL
     48                                "cannot list group '%s', use vxdb.list instead", group); 
    5849 
    59                 if (rc != VXDB_OK) 
    60                         method_return_vxdb_fault(env); 
    61         } 
     50        if (!(gid = vxdb_getgid(group))) 
     51                method_return_fault(env, MENOVG); 
    6252 
    63         else { 
    64                 gid = vxdb_getgid(group); 
     53        rc = vxdb_prepare(&dbr, 
     54                        "SELECT xid_name_map.name FROM xid_name_map " 
     55                        "INNER JOIN xid_gid_map " 
     56                        "ON xid_name_map.xid = xid_gid_map.xid " 
     57                        "WHERE xid_gid_map.gid = %d " 
     58                        "ORDER BY xid ASC", 
     59                        gid); 
    6560 
    66                 if (gid != 0) { 
    67                         rc = vxdb_prepare(&dbr, 
    68                                         "SELECT xid FROM xid_gid_map WHERE gid = %d ORDER BY xid DESC", 
    69                                         gid); 
    70  
    71                         if (rc != VXDB_OK) 
    72                                 method_return_vxdb_fault(env); 
    73                 } 
    74  
    75                 else 
    76                         method_return_faultf(env, MEINVAL, 
    77                                         "group doesn't exist: %s", group); 
    78         } 
    79  
    80         INIT_LIST_HEAD(&(xids->list)); 
    81  
    82         vxdb_foreach_step(rc, dbr) { 
    83                 xid_list_t *new = mem_alloc(sizeof(xid_list_t)); 
    84                 new->xid = vxdb_column_int(dbr, 0); 
    85                 list_add(&(new->list), &(xids->list)); 
    86         } 
    87  
    88          if (rc != VXDB_DONE) 
     61        if (rc != VXDB_OK) 
    8962                method_return_vxdb_fault(env); 
    90  
    91         vxdb_finalize(dbr); 
    9263 
    9364        response = xmlrpc_array_new(env); 
    9465 
    95         list_for_each(pos, &(xids->list)) { 
    96                 st = list_entry(pos, xid_list_t, list); 
    97  
    98                 vsname = vxdb_getname(st->xid); 
    99  
     66        vxdb_foreach_step(rc, dbr) 
    10067                xmlrpc_array_append_item(env, response, xmlrpc_build_value(env, 
    101                                 "{s:s,s:i}", 
    102                                 "vsname", vsname, 
    103                                 "xid",    st->xid)); 
    104         } 
     68                                "s", vxdb_column_text(dbr, 0))); 
    10569 
    10670        return response; 
  • trunk/src/vcd/methods/vg/vg_vx_remove.c

    r534 r536  
    2929 
    3030        xmlrpc_value *params; 
    31         char *group, *vserver
     31        char *group, *name
    3232        int rc, gid, xid; 
    3333 
     
    3838                        "{s:s,s:s,*}", 
    3939                        "groupname", &group, 
    40                         "vsname", &vserver); 
     40                        "name", &name); 
    4141        method_return_if_fault(env); 
    4242 
     
    4545                                "invalid groupname value: %s", group); 
    4646 
    47         if (!validate_name(vserver)) 
     47        if (!validate_name(name)) 
    4848                method_return_faultf(env, MEINVAL, 
    49                                 "invalid vsname value: %s", vserver); 
     49                                "invalid name value: %s", name); 
    5050 
    51         if (str_equal(group, "default")) 
     51        if (str_equal(group, "all")) 
    5252                method_return_faultf(env, MEINVAL, 
    53                                 "cannot remove vservers from group: %s", group); 
     53                                "cannot remove from reserved group '%s'", group); 
    5454 
    55         gid = vxdb_getgid(group); 
     55        if (!(gid = vxdb_getgid(group))) 
     56                method_return_fault(env, MENOVG); 
    5657 
    57         xid = vxdb_getxid(vserver); 
     58        if (!(xid = vxdb_getxid(name))) 
     59                method_return_fault(env, MENOVPS); 
    5860 
    59         if (gid != 0 && xid != 0) { 
    60                 rc = vxdb_exec( 
    61                         "DELETE FROM xid_gid_map WHERE xid = %d AND gid = %d", 
    62                         xid, gid); 
     61        rc = vxdb_exec( 
     62                "DELETE FROM xid_gid_map WHERE xid = %d AND gid = %d", 
     63                xid, gid); 
    6364 
    64                 if (rc != VXDB_OK) 
    65                         method_return_vxdb_fault(env); 
    66         } 
    67  
    68         else 
    69                 method_return_faultf(env, MEINVAL, 
    70                                 "group or vserver don't exist: %s / %s", group, vserver); 
     65        if (rc != VXDB_OK) 
     66                method_return_vxdb_fault(env); 
    7167 
    7268        return xmlrpc_nil_new(env);