def MI_enumInstanceNames(self,
                             env,
                             ns,
                             cimClass):
        # pylint: disable=invalid-name
        """Return instance names of a given CIM class

        Implements the WBEM operation EnumerateInstanceNames in terms
        of the enum_instances method.  A derived class will not normally
        override this method.

        """

        logger = env.get_logger()
        logger.log_debug('CIMProvider MI_enumInstanceNames called...')
        provClass = False
        keys = pywbem.NocaseDict()
        [keys.__setitem__(p.name, p) for p in cimClass.properties.values() \
                if 'key' in p.qualifiers]

        _strip_quals(keys)
        path = pywbem.CIMInstanceName(classname=cimClass.classname,
                                      namespace=ns)
        model = pywbem.CIMInstance(classname=cimClass.classname,
                                   properties=keys,
                                   path=path)
        gen = self.enum_instances(env=env,
                                  model=model,
                                  cim_class=cimClass,
                                  keys_only=True)
        try:
            iter(gen)
        except TypeError:
            logger.log_debug('CIMProvider MI_enumInstanceNames returning')
            return

        for inst in gen:
            rval = build_instance_name(inst)
            yield rval
        logger.log_debug('CIMProvider MI_enumInstanceNames returning')
Return instance names of a given CIM class

        Implements the WBEM operation EnumerateInstanceNames in terms
        of the enum_instances method.  A derived class will not normally
        override this method.