From b7e528d124479cbbac636279a10abb527c987fe2 Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Wed, 9 Oct 2013 13:38:05 +0200 Subject: logicalfile: more intrinsic methods for LMI_RootDirectory Add EnumerateInstances() and GetInstance(). --- src/logicalfile/LMI_RootDirectoryProvider.c | 32 ++++++++++++++++++++++++++--- src/logicalfile/test/test_basic.py | 27 ++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 3 deletions(-) (limited to 'src/logicalfile') diff --git a/src/logicalfile/LMI_RootDirectoryProvider.c b/src/logicalfile/LMI_RootDirectoryProvider.c index b798d86..45660a8 100644 --- a/src/logicalfile/LMI_RootDirectoryProvider.c +++ b/src/logicalfile/LMI_RootDirectoryProvider.c @@ -206,7 +206,33 @@ static CMPIStatus LMI_RootDirectoryEnumInstances( const CMPIObjectPath* cop, const char** properties) { - CMReturn(CMPI_RC_ERR_NOT_SUPPORTED); + CMPIObjectPath *o; + CMPIStatus st; + char *fsname; + const char *ns = KNameSpace(cop); + const char *ccname = lmi_get_system_creation_class_name(); + + LMI_RootDirectory lmi_rd; + LMI_RootDirectory_Init(&lmi_rd, _cb, ns); + + CIM_ComputerSystemRef cim_csr; + CIM_ComputerSystemRef_Init(&cim_csr, _cb, ns); + CIM_ComputerSystemRef_Set_Name(&cim_csr, lmi_get_system_name()); + CIM_ComputerSystemRef_Set_CreationClassName(&cim_csr, ccname); + o = CIM_ComputerSystemRef_ToObjectPath(&cim_csr, NULL); + CMSetClassName(o, ccname); + LMI_RootDirectory_SetObjectPath_GroupComponent(&lmi_rd, o); + + LMI_UnixDirectory lmi_ud; + LMI_UnixDirectory_Init(&lmi_ud, _cb, ns); + st = get_fsname_from_path(_cb, "/", &fsname); + check_status(st); + fill_logicalfile(LMI_UnixDirectory, &lmi_ud, "/", fsname, LMI_UnixDirectory_ClassName); + o = LMI_UnixDirectory_ToObjectPath(&lmi_ud, NULL); + LMI_RootDirectory_SetObjectPath_PartComponent(&lmi_rd, o); + + free(fsname); + return CMReturnInstance(cr, LMI_RootDirectory_ToInstance(&lmi_rd, NULL)); } static CMPIStatus LMI_RootDirectoryGetInstance( @@ -216,8 +242,8 @@ static CMPIStatus LMI_RootDirectoryGetInstance( const CMPIObjectPath* cop, const char** properties) { - /* TODO TBI */ - CMReturn(CMPI_RC_OK); + return KDefaultGetInstance( + _cb, mi, cc, cr, cop, properties); } static CMPIStatus LMI_RootDirectoryCreateInstance( diff --git a/src/logicalfile/test/test_basic.py b/src/logicalfile/test/test_basic.py index 72e1f33..f682b33 100644 --- a/src/logicalfile/test/test_basic.py +++ b/src/logicalfile/test/test_basic.py @@ -390,6 +390,33 @@ class TestLogicalFile(LogicalFileTestBase): self.assertEquals(len(assocs), 1) self.assertEquals(assocs[0]['PartComponent']['Name'], '/') + ### EnumerateInstances and GetInstance + insts = self.wbemconnection.EnumerateInstances(assoc_class) + self.assertEquals(len(insts), 1) + system = insts[0]['GroupComponent'] + rootdir = insts[0]['PartComponent'] + self.assertEquals(system['CreationClassName'], self.SYSTEM_CLASS_NAME) + self.assertEquals(system['Name'], self.SYSTEM_NAME) + self.assertEquals(rootdir['CSCreationClassName'], self.SYSTEM_CLASS_NAME) + self.assertEquals(rootdir['CSName'], self.SYSTEM_NAME) + self.assertEquals(rootdir['Name'], '/') + + inst_cop = pywbem.CIMInstanceName(classname=assoc_class, + namespace='root/cimv2', + keybindings={ + 'GroupComponent':system, + 'PartComponent':rootdir + }) + inst = self.wbemconnection.GetInstance(inst_cop) + self.assertTrue(inst is not None) + system = inst['GroupComponent'] + rootdir = inst['PartComponent'] + self.assertEquals(system['CreationClassName'], self.SYSTEM_CLASS_NAME) + self.assertEquals(system['Name'], self.SYSTEM_NAME) + self.assertEquals(rootdir['CSCreationClassName'], self.SYSTEM_CLASS_NAME) + self.assertEquals(rootdir['CSName'], self.SYSTEM_NAME) + self.assertEquals(rootdir['Name'], '/') + def test_mkdir(self): def mkdir(path): cop = self.cop.copy() -- cgit