ipa_rules_common.c revision 9a18f78f38e274f4906af6ef8e1a82d844fde4cc
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio Stephen Gallagher <sgallagh@redhat.com>
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio Copyright (C) 2011 Red Hat
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio This program is free software; you can redistribute it and/or modify
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio it under the terms of the GNU General Public License as published by
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio the Free Software Foundation; either version 3 of the License, or
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio (at your option) any later version.
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio This program is distributed in the hope that it will be useful,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio but WITHOUT ANY WARRANTY; without even the implied warranty of
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio GNU General Public License for more details.
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio You should have received a copy of the GNU General Public License
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio along with this program. If not, see <http://www.gnu.org/licenses/>.
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncioipa_common_save_list(struct sss_domain_info *domain,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio DEBUG(SSSDBG_CRIT_FAILURE, "talloc_new failed.\n");
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio base_dn = sysdb_custom_subtree_dn(tmp_ctx, domain, subdir);
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio ret = sysdb_delete_recursive(domain->sysdb, base_dn, true);
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio DEBUG(SSSDBG_CRIT_FAILURE, "sysdb_delete_recursive failed.\n");
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio for (c = 0; c < count; c++) {
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio ret = sysdb_attrs_get_el(list[c], naming_attribute, &el);
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio DEBUG(SSSDBG_CRIT_FAILURE, "sysdb_attrs_get_el failed.\n");
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio DEBUG(SSSDBG_CRIT_FAILURE, "[%s] not found.\n", naming_attribute);
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio object_name = talloc_strndup(tmp_ctx, (const char *)el->values[0].data,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio DEBUG(SSSDBG_CRIT_FAILURE, "talloc_strndup failed.\n");
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio DEBUG(SSSDBG_TRACE_ALL, "Object name: [%s].\n", object_name);
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio ret = sysdb_store_custom(domain, object_name, subdir, list[c]);
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio DEBUG(SSSDBG_CRIT_FAILURE, "sysdb_store_custom failed.\n");
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncioipa_common_entries_and_groups_sysdb_save(struct sss_domain_info *domain,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio if ((primary_count == 0 || primary == NULL)
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio /* There always has to be at least one
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio * primary entry.
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio /* Save the entries and groups to the cache */
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio ret = sysdb_transaction_start(domain->sysdb);
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio DEBUG(SSSDBG_CRIT_FAILURE, "Failed to start transaction\n");
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio /* First, save the specific entries */
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio ret = ipa_common_save_list(domain, true, primary_subdir,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio DEBUG(SSSDBG_CRIT_FAILURE, "Could not save %s. [%d][%s]\n",
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio /* Second, save the groups */
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio ret = ipa_common_save_list(domain, true, group_subdir,
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio DEBUG(SSSDBG_CRIT_FAILURE, "Could not save %s. [%d][%s]\n",
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio ret = sysdb_transaction_commit(domain->sysdb);
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio DEBUG(SSSDBG_CRIT_FAILURE, "Failed to commit transaction\n");
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio sret = sysdb_transaction_cancel(domain->sysdb);
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio DEBUG(SSSDBG_FATAL_FAILURE, "Could not cancel sysdb transaction\n");
9a18f78f38e274f4906af6ef8e1a82d844fde4ccFabiano Fidêncio DEBUG(SSSDBG_MINOR_FAILURE, "Error [%d][%s]\n", ret, strerror(ret));