Changeset 26364


Ignore:
Timestamp:
06/14/10 18:24:56 (7 years ago)
Author:
piotras
Message:

Disable or enable quota, dbus or replication. Refs #1851

Location:
branches/ragnaroek/midgard/core/midgard
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/ragnaroek/midgard/core/midgard/midgard/midgard_connection.h

    r19607 r26364  
    372372extern MidgardUser *midgard_connection_get_user(MidgardConnection *mgd);
    373373
     374extern void                    midgard_connection_enable_quota                 (MidgardConnection *self, gboolean toggle);
     375extern void                    midgard_connection_enable_replication           (MidgardConnection *self, gboolean toggle);
     376extern void                    midgard_connection_enable_dbus                  (MidgardConnection *self, gboolean toggle);
     377extern gboolean                midgard_connection_is_enabled_quota             (MidgardConnection *self);
     378extern gboolean                midgard_connection_is_enabled_replication       (MidgardConnection *self);
     379extern gboolean                midgard_connection_is_enabled_dbus              (MidgardConnection *self);
     380
    374381extern void midgard_connection_unref_implicit_user(MidgardConnection *mgd);
    375382
  • branches/ragnaroek/midgard/core/midgard/src/midgard_connection.c

    r26153 r26364  
    145145        self->priv->implicit_user = FALSE;
    146146        self->priv->is_copy = FALSE;
    147        
     147
     148        self->priv->enable_replication = TRUE;
     149        self->priv->enable_dbus = TRUE;
     150        self->priv->enable_quota = TRUE;
     151
    148152        /* Sitegroup cache */
    149153        self->priv->sg_ids = NULL;
     
    715719}
    716720
     721void
     722midgard_connection_enable_quota (MidgardConnection *self, gboolean toggle)
     723{
     724        g_return_if_fail (self != NULL);
     725        self->priv->enable_quota = toggle;
     726}
     727
     728void
     729midgard_connection_enable_replication (MidgardConnection *self, gboolean toggle)
     730{
     731        g_return_if_fail (self != NULL);
     732        self->priv->enable_replication = toggle;
     733}
     734
     735void
     736midgard_connection_enable_dbus (MidgardConnection *self, gboolean toggle)
     737{
     738        g_return_if_fail (self != NULL);
     739        self->priv->enable_dbus = toggle;
     740}
     741
     742gboolean
     743midgard_connection_is_enabled_quota (MidgardConnection *self)
     744{
     745        g_return_val_if_fail (self != NULL, FALSE);
     746        return self->priv->enable_quota;
     747}
     748
     749gboolean
     750midgard_connection_is_enabled_replication (MidgardConnection *self)
     751{
     752        g_return_val_if_fail (self != NULL, FALSE);
     753        return self->priv->enable_replication;
     754}
     755
     756gboolean
     757midgard_connection_is_enabled_dbus (MidgardConnection *self)
     758{
     759        g_return_val_if_fail (self != NULL, FALSE);
     760        return self->priv->enable_dbus;
     761}
     762
    717763/* This is HACK! It's required for legacy mgd_auth_su. */
    718764void midgard_connection_unref_implicit_user(MidgardConnection *mgd)
  • branches/ragnaroek/midgard/core/midgard/src/midgard_core_object.h

    r21776 r26364  
    130130        gpointer sg_ids;
    131131        gboolean is_copy;
    132 };
     132
     133        gboolean enable_replication;
     134        gboolean enable_quota;
     135        gboolean enable_dbus;
     136};
     137
     138#define MGD_CNC_QUOTA(_cnc) _cnc->priv->enable_quota
     139#define MGD_CNC_REPLICATION(_cnc) _cnc->priv->enable_replication
     140#define MGD_CNC_DBUS(_cnc) _cnc->priv->enable_dbus
    133141
    134142typedef enum {
  • branches/ragnaroek/midgard/core/midgard/src/midgard_quota.c

    r17090 r26364  
    4545        GList *list;
    4646        midgard *mgd = object->mgd;
     47        MidgardConnection *new_mgd = mgd->_mgd;
     48        if (!MGD_CNC_QUOTA (new_mgd))
     49                return FALSE;
    4750
    4851        MidgardObjectClass *klass = MIDGARD_OBJECT_GET_CLASS(object);
     
    121124
    122125        g_assert(object != NULL);
     126        MidgardConnection *mgd = MGD_OBJECT_CNC (object);
     127
     128        if (!MGD_CNC_QUOTA (mgd))
     129                return 0;
    123130
    124131        MidgardObjectClass *klass = MIDGARD_OBJECT_GET_CLASS(object);
     
    184191        g_assert(object->mgd != NULL);
    185192
     193        MidgardConnection *mgd = MGD_OBJECT_CNC (object);
     194        if (!MGD_CNC_QUOTA (mgd))
     195                return TRUE;
    186196
    187197        guint size = 0;
     
    275285        g_assert(object != NULL);
    276286
     287        MidgardConnection *mgd = MGD_OBJECT_CNC (object);
     288        if (!MGD_CNC_QUOTA (mgd))
     289                return TRUE;
     290
    277291        GString *query;
    278292        gint tmp_type_limit, tmp_limit;
     
    369383        g_assert(object != NULL);
    370384        g_assert(object->mgd != NULL);
     385
     386        MidgardConnection *mgd = MGD_OBJECT_CNC (object);
     387        if (!MGD_CNC_QUOTA (mgd))
     388                return 0;
    371389
    372390        /* This is overloaded function
     
    561579
    562580        g_assert(object != NULL);
     581       
     582        MidgardConnection *mgd = MGD_OBJECT_CNC (object);
     583        if (!MGD_CNC_QUOTA (mgd))
     584                return;
    563585
    564586        GString *query;
  • branches/ragnaroek/midgard/core/midgard/src/types.c

    r25425 r26364  
    6363
    6464#define __dbus_send(_obj, _action) \
    65         gchar *_dbus_path = g_strconcat("/mgdschema/", \
    66                         G_OBJECT_TYPE_NAME(G_OBJECT(_obj)), \
    67                         "/", _action, NULL); \
    68         _midgard_core_dbus_send_serialized_object(_obj, _dbus_path); \
    69         g_free(_dbus_path);
     65        MidgardConnection *__mgd = MGD_OBJECT_CNC (_obj); \
     66        if (MGD_CNC_DBUS (__mgd)) { \
     67                gchar *_dbus_path = g_strconcat("/mgdschema/", \
     68                                G_OBJECT_TYPE_NAME(G_OBJECT(_obj)), \
     69                                "/", _action, NULL); \
     70                _midgard_core_dbus_send_serialized_object(_obj, _dbus_path); \
     71                g_free(_dbus_path); \
     72        }
    7073
    7174static void
     
    991994        GHashTable *sqls;
    992995        const gchar *table;
     996        MidgardConnection *mgd = MGD_OBJECT_CNC (gobj);
    993997
    994998        if(_midgard_object_violates_sitegroup(gobj))
     
    12401244       
    12411245                midgard_quota_update(gobj);   
    1242                
    1243                 sql = g_string_new(
    1244                                 "UPDATE repligard SET changed=NULL,action='update',");
    1245                 g_string_append_printf(sql,
    1246                                 "typename='%s', object_action=%d "
    1247                                 " WHERE guid='%s' AND realm='%s' "
    1248                                 " AND sitegroup = %d",
    1249                                 G_OBJECT_TYPE_NAME(gobj),
    1250                                 MGD_OBJECT_ACTION_UPDATE,
    1251                                 gobj->private->guid,
    1252                                 table, gobj->private->sg);
    1253                 fquery = g_string_free(sql, FALSE);
    1254                 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "query=%s", fquery);
    1255                 mysql_query(gobj->mgd->msql->mysql, fquery);
    1256                 g_free(fquery);
    1257                 /* Should I worry about error in repligard table here? */               
     1246       
     1247                if (MGD_CNC_REPLICATION (mgd)) {       
     1248                        sql = g_string_new(
     1249                                        "UPDATE repligard SET changed=NULL,action='update',");
     1250                        g_string_append_printf(sql,
     1251                                        "typename='%s', object_action=%d "
     1252                                        " WHERE guid='%s' AND realm='%s' "
     1253                                        " AND sitegroup = %d",
     1254                                        G_OBJECT_TYPE_NAME(gobj),
     1255                                        MGD_OBJECT_ACTION_UPDATE,
     1256                                        gobj->private->guid,
     1257                                        table, gobj->private->sg);
     1258                        fquery = g_string_free(sql, FALSE);
     1259                        g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "query=%s", fquery);
     1260                        mysql_query(gobj->mgd->msql->mysql, fquery);
     1261                        g_free(fquery);
     1262                        /* Should I worry about error in repligard table here? */               
     1263                }
    12581264        }
    12591265
     
    13221328        MidgardObjectClass *klass = MIDGARD_OBJECT_GET_CLASS (object);
    13231329        const gchar *table = midgard_object_class_get_table (klass);
     1330        MidgardConnection *mgd = MGD_OBJECT_CNC (object);
    13241331        /* Disable person check */
    13251332        /*
     
    14851492                        g_object_set(G_OBJECT(object), "id", rid, NULL); /* FIXME */           
    14861493                        midgard_quota_update(object);           
    1487                         query = g_string_new("INSERT INTO repligard SET ");
    1488                         g_string_append_printf(query,
    1489                                         "realm='%s', guid='%s', changed=NULL, "
    1490                                         "action='create', typename='%s', id=%d, "
    1491                                         " sitegroup=%d, object_action = %d ",
    1492                                         table, object->private->guid,
    1493                                         G_OBJECT_TYPE_NAME(object), rid,
    1494                                         object->private->sg,
    1495                                         MGD_OBJECT_ACTION_CREATE);
    14961494                       
    1497                         fquery = g_string_free(query, FALSE);
    1498                         g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "query=%s", fquery);
    1499                         qr = mysql_query(object->mgd->msql->mysql, fquery);
    1500                         g_free(fquery);
    1501                        
    1502                         if (qr != 0) {
    1503                                 g_warning("query failed: %s", mysql_error(object->mgd->msql->mysql));
    1504                                 MIDGARD_ERRNO_SET(object->mgd, MGD_ERR_INTERNAL);               
     1495                        if (MGD_CNC_REPLICATION (mgd)) {
     1496                                query = g_string_new("INSERT INTO repligard SET ");
     1497                                g_string_append_printf(query,
     1498                                                "realm='%s', guid='%s', changed=NULL, "
     1499                                                "action='create', typename='%s', id=%d, "
     1500                                                " sitegroup=%d, object_action = %d ",
     1501                                                table, object->private->guid,
     1502                                                G_OBJECT_TYPE_NAME(object), rid,
     1503                                                object->private->sg,
     1504                                                MGD_OBJECT_ACTION_CREATE);
     1505                                fquery = g_string_free(query, FALSE);
     1506                                g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "query=%s", fquery);
     1507                                qr = mysql_query(object->mgd->msql->mysql, fquery);
     1508                                g_free(fquery);
     1509       
     1510                                if (qr != 0) {
     1511                                        g_warning("query failed: %s", mysql_error(object->mgd->msql->mysql));
     1512                                        MIDGARD_ERRNO_SET(object->mgd, MGD_ERR_INTERNAL);               
     1513                                }
    15051514                        }
    15061515                       
     
    26592668        const gchar *table =
    26602669                midgard_object_class_get_table(MIDGARD_OBJECT_GET_CLASS(object));
    2661        
     2670        MidgardConnection *mgd = MGD_OBJECT_CNC (object);
     2671
    26622672        if(table  == NULL) {
    26632673                /* Object has no storage defined. Return FALSE as there is nothing to update */
     
    27922802       
    27932803                g_free(query);
    2794                 sql = g_string_new("UPDATE repligard SET ");
    2795                 g_string_append_printf(sql,
    2796                                 "object_action = %d "
    2797                                 "WHERE guid = '%s' AND typename = '%s'"
    2798                                 " AND sitegroup = %d",
    2799                                 /* FIXME , lang column should be updated when
    2800                                  * we move lang data to object's table again */
    2801                                 MGD_OBJECT_ACTION_DELETE,
    2802                                 guid,
    2803                                 G_OBJECT_TYPE_NAME(G_OBJECT(object)),
    2804                                 object->private->sg);
    2805                
    2806                 g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "query=%s", sql->str);
    2807                 mysql_query(object->mgd->msql->mysql, sql->str);
    2808                 g_string_free(sql, TRUE);
     2804               
     2805                if (MGD_CNC_REPLICATION (mgd)) {
     2806                        sql = g_string_new("UPDATE repligard SET ");
     2807                        g_string_append_printf(sql,
     2808                                        "object_action = %d "
     2809                                        "WHERE guid = '%s' AND typename = '%s'"
     2810                                        " AND sitegroup = %d",
     2811                                        /* FIXME , lang column should be updated when
     2812                                         * we move lang data to object's table again */
     2813                                        MGD_OBJECT_ACTION_DELETE,
     2814                                        guid,
     2815                                        G_OBJECT_TYPE_NAME(G_OBJECT(object)),
     2816                                        object->private->sg);
     2817               
     2818                        g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "query=%s", sql->str);
     2819                        mysql_query(object->mgd->msql->mysql, sql->str);
     2820                        g_string_free(sql, TRUE);
     2821                }
    28092822        }
    28102823
     
    28462859       
    28472860        MidgardObjectClass *klass = MIDGARD_OBJECT_GET_CLASS(object);
     2861        MidgardConnection *mgd = MGD_OBJECT_CNC (object);
    28482862        table = midgard_object_class_get_table(klass);   
    28492863        if(table == NULL) {
     
    29462960        g_value_unset(&tval);
    29472961
    2948         dsql = g_string_new("UPDATE repligard SET ");
    2949         g_string_append_printf(dsql,
    2950                         "updated = 0, action = 'delete', "
    2951                         "object_action = %d, object_action_date = '%s' "
    2952                         " WHERE typename='%s' AND guid='%s' AND sitegroup = %d",
    2953                         MGD_OBJECT_ACTION_PURGE,
    2954                         timedeleted,
    2955                         G_OBJECT_TYPE_NAME(object),
    2956                         object->private->guid, object->private->sg);
    2957         g_free(timedeleted);
    2958         tmpstr = g_string_free(dsql, FALSE);
    2959         mgd_exec(object->mgd, tmpstr);
    2960         g_free(tmpstr);
    2961        
     2962        if (MGD_CNC_REPLICATION (mgd)) {
     2963                dsql = g_string_new("UPDATE repligard SET ");
     2964                g_string_append_printf(dsql,
     2965                                "updated = 0, action = 'delete', "
     2966                                "object_action = %d, object_action_date = '%s' "
     2967                                " WHERE typename='%s' AND guid='%s' AND sitegroup = %d",
     2968                                MGD_OBJECT_ACTION_PURGE,
     2969                                timedeleted,
     2970                                G_OBJECT_TYPE_NAME(object),
     2971                                object->private->guid, object->private->sg);
     2972                tmpstr = g_string_free(dsql, FALSE);
     2973                mgd_exec(object->mgd, tmpstr);
     2974                g_free(tmpstr);
     2975        }
     2976       
     2977        g_free (timedeleted);
     2978
    29622979        /* Only support for multilang now */
    29632980        if (midgard_object_class_is_multilang(klass)) {
Note: See TracChangeset for help on using the changeset viewer.