summaryrefslogtreecommitdiffstats
path: root/src/logicalfile
diff options
context:
space:
mode:
authorJan Synacek <jsynacek@redhat.com>2013-10-09 13:38:05 +0200
committerJan Synacek <jsynacek@redhat.com>2013-10-09 14:27:45 +0200
commitb7e528d124479cbbac636279a10abb527c987fe2 (patch)
treea2dea8fe43a6318754d7cadc64d2ff0eb65236bc /src/logicalfile
parent703ebe4493b59397f30bc2ee124c0d9c76be57f5 (diff)
downloadopenlmi-providers-b7e528d124479cbbac636279a10abb527c987fe2.tar.gz
openlmi-providers-b7e528d124479cbbac636279a10abb527c987fe2.tar.xz
openlmi-providers-b7e528d124479cbbac636279a10abb527c987fe2.zip
logicalfile: more intrinsic methods for LMI_RootDirectory
Add EnumerateInstances() and GetInstance().
Diffstat (limited to 'src/logicalfile')
-rw-r--r--src/logicalfile/LMI_RootDirectoryProvider.c32
-rw-r--r--src/logicalfile/test/test_basic.py27
2 files changed, 56 insertions, 3 deletions
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()