diff options
author | Radek Novacek <rnovacek@redhat.com> | 2012-08-27 15:01:46 +0200 |
---|---|---|
committer | Radek Novacek <rnovacek@redhat.com> | 2012-08-28 14:37:33 +0200 |
commit | 4721a6cb186e7d6908ff1f361d0bc81e182473ad (patch) | |
tree | d63f8e7b8db9bdbfca8b6c85d21642ad237fc6eb /src/account/LMI_AssignedGroupIdentityProvider.c | |
parent | 3333004967971ad1720b74da4ce09949f023852e (diff) | |
download | openlmi-providers-4721a6cb186e7d6908ff1f361d0bc81e182473ad.tar.gz openlmi-providers-4721a6cb186e7d6908ff1f361d0bc81e182473ad.tar.xz openlmi-providers-4721a6cb186e7d6908ff1f361d0bc81e182473ad.zip |
Rename prefix from Cura_ to LMI_
Diffstat (limited to 'src/account/LMI_AssignedGroupIdentityProvider.c')
-rw-r--r-- | src/account/LMI_AssignedGroupIdentityProvider.c | 253 |
1 files changed, 253 insertions, 0 deletions
diff --git a/src/account/LMI_AssignedGroupIdentityProvider.c b/src/account/LMI_AssignedGroupIdentityProvider.c new file mode 100644 index 0000000..e7c9456 --- /dev/null +++ b/src/account/LMI_AssignedGroupIdentityProvider.c @@ -0,0 +1,253 @@ +#include <konkret/konkret.h> +#include "LMI_AssignedGroupIdentity.h" +#include "LMI_Identity.h" +#include "LMI_Group.h" + +#include "aux_lu.h" +#include "macros.h" +#include "globals.h" + +#include <libuser/entity.h> +#include <libuser/user.h> + +static const CMPIBroker* _cb; + +static void LMI_AssignedGroupIdentityInitialize() +{ +} + +static CMPIStatus LMI_AssignedGroupIdentityCleanup( + CMPIInstanceMI* mi, + const CMPIContext* cc, + CMPIBoolean term) +{ + CMReturn(CMPI_RC_OK); +} + +static CMPIStatus LMI_AssignedGroupIdentityEnumInstanceNames( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop) +{ + return KDefaultEnumerateInstanceNames( + _cb, mi, cc, cr, cop); +} + +static CMPIStatus LMI_AssignedGroupIdentityEnumInstances( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char** properties) +{ + LMI_IdentityRef liref; + LMI_GroupRef lgref; + LMI_AssignedGroupIdentity lagi; + + struct lu_context *luc = NULL; + struct lu_error *error = NULL; + GPtrArray *groups = NULL; + struct lu_ent *lue = NULL; + + size_t i; + const char *nameSpace = KNameSpace(cop); + char *gid = NULL; + + luc = lu_start(NULL, lu_group, NULL, NULL, lu_prompt_console_quiet, NULL, &error); + if (!luc) + { + fprintf(stderr, "Error initializing: %s\n", lu_strerror(error)); + exit(1); + } + gid = malloc(256 * sizeof(char)); + groups = lu_groups_enumerate_full(luc, "*", &error); + for (i = 0; (groups != NULL) && (i < groups->len); i++) + { + lue = g_ptr_array_index(groups, i); + + LMI_GroupRef_Init(&lgref, _cb, nameSpace); + LMI_GroupRef_Set_CreationClassName(&lgref, LMI_Group_ClassName); + LMI_GroupRef_Set_Name(&lgref, aux_lu_get_str(lue, LU_GROUPNAME)); + + LMI_IdentityRef_Init(&liref, _cb, nameSpace); + snprintf(gid, 255, ORGID":GID:%ld", + aux_lu_get_long(lue, LU_GIDNUMBER)); + LMI_IdentityRef_Set_InstanceID(&liref, gid); + + LMI_AssignedGroupIdentity_Init(&lagi, _cb, nameSpace); + LMI_AssignedGroupIdentity_Set_IdentityInfo(&lagi, &liref); + LMI_AssignedGroupIdentity_Set_ManagedElement(&lagi, &lgref); + + KReturnInstance(cr, lagi); + lu_ent_free(lue); + } /* for */ + free(gid); + CMReturn(CMPI_RC_OK); +} + +static CMPIStatus LMI_AssignedGroupIdentityGetInstance( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char** properties) +{ + return KDefaultGetInstance( + _cb, mi, cc, cr, cop, properties); +} + +static CMPIStatus LMI_AssignedGroupIdentityCreateInstance( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const CMPIInstance* ci) +{ + CMReturn(CMPI_RC_ERR_NOT_SUPPORTED); +} + +static CMPIStatus LMI_AssignedGroupIdentityModifyInstance( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const CMPIInstance* ci, + const char**properties) +{ + CMReturn(CMPI_RC_ERR_NOT_SUPPORTED); +} + +static CMPIStatus LMI_AssignedGroupIdentityDeleteInstance( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop) +{ + CMReturn(CMPI_RC_ERR_NOT_SUPPORTED); +} + +static CMPIStatus LMI_AssignedGroupIdentityExecQuery( + CMPIInstanceMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char* lang, + const char* query) +{ + CMReturn(CMPI_RC_ERR_NOT_SUPPORTED); +} + +static CMPIStatus LMI_AssignedGroupIdentityAssociationCleanup( + CMPIAssociationMI* mi, + const CMPIContext* cc, + CMPIBoolean term) +{ + CMReturn(CMPI_RC_OK); +} + +static CMPIStatus LMI_AssignedGroupIdentityAssociators( + CMPIAssociationMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char* assocClass, + const char* resultClass, + const char* role, + const char* resultRole, + const char** properties) +{ + return KDefaultAssociators( + _cb, + mi, + cc, + cr, + cop, + LMI_AssignedGroupIdentity_ClassName, + assocClass, + resultClass, + role, + resultRole, + properties); +} + +static CMPIStatus LMI_AssignedGroupIdentityAssociatorNames( + CMPIAssociationMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char* assocClass, + const char* resultClass, + const char* role, + const char* resultRole) +{ + return KDefaultAssociatorNames( + _cb, + mi, + cc, + cr, + cop, + LMI_AssignedGroupIdentity_ClassName, + assocClass, + resultClass, + role, + resultRole); +} + +static CMPIStatus LMI_AssignedGroupIdentityReferences( + CMPIAssociationMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char* assocClass, + const char* role, + const char** properties) +{ + return KDefaultReferences( + _cb, + mi, + cc, + cr, + cop, + LMI_AssignedGroupIdentity_ClassName, + assocClass, + role, + properties); +} + +static CMPIStatus LMI_AssignedGroupIdentityReferenceNames( + CMPIAssociationMI* mi, + const CMPIContext* cc, + const CMPIResult* cr, + const CMPIObjectPath* cop, + const char* assocClass, + const char* role) +{ + return KDefaultReferenceNames( + _cb, + mi, + cc, + cr, + cop, + LMI_AssignedGroupIdentity_ClassName, + assocClass, + role); +} + +CMInstanceMIStub( + LMI_AssignedGroupIdentity, + LMI_AssignedGroupIdentity, + _cb, + LMI_AssignedGroupIdentityInitialize()) + +CMAssociationMIStub( + LMI_AssignedGroupIdentity, + LMI_AssignedGroupIdentity, + _cb, + LMI_AssignedGroupIdentityInitialize()) + +KONKRET_REGISTRATION( + "root/cimv2", + "LMI_AssignedGroupIdentity", + "LMI_AssignedGroupIdentity", + "instance association") |