ref: refs/heads/master
commit c61243459606634d031ab944bcce797bc12a1697
Author: Michael Calmer
Date: Wed Feb 11 17:45:44 2009 +0100
Implement SUSE_RepositoryAvailableForSoftwareIdentity
---
mof/CMakeLists.txt | 2 +
...SUSE_RepositoryAvailableForSoftwareIdentity.mof | 32 ++
...RepositoryAvailableForSoftwareIdentity.sfcb.reg | 5 +
mof/deploy.mof | 1 +
src/CMakeLists.txt | 2 +
...positoryAvailableForSoftwareIdentityProvider.cc | 492 ++++++++++++++++++++
...epositoryAvailableForSoftwareIdentityProvider.h | 41 ++
7 files changed, 575 insertions(+), 0 deletions(-)
diff --git a/mof/CMakeLists.txt b/mof/CMakeLists.txt
index 0ab988e..5c4fe35 100644
--- a/mof/CMakeLists.txt
+++ b/mof/CMakeLists.txt
@@ -26,6 +26,8 @@ INSTALL( FILES
SUSE_HostedRepository.sfcb.reg
SUSE_InstallationServiceRepositoryDependency.mof
SUSE_InstallationServiceRepositoryDependency.sfcb.reg
+ SUSE_RepositoryAvailableForSoftwareIdentity.mof
+ SUSE_RepositoryAvailableForSoftwareIdentity.sfcb.reg
deploy.mof
DESTINATION ${CMPIZYPP_DATA_DIR}/
)
diff --git a/mof/SUSE_RepositoryAvailableForSoftwareIdentity.mof b/mof/SUSE_RepositoryAvailableForSoftwareIdentity.mof
new file mode 100644
index 0000000..9323349
--- /dev/null
+++ b/mof/SUSE_RepositoryAvailableForSoftwareIdentity.mof
@@ -0,0 +1,32 @@
+//#pragma namespace ("root/cimv2")
+
+
+// -------------------------------------------------------------------
+// *******************************************************************
+// Classes
+// *******************************************************************
+// -------------------------------------------------------------------
+
+
+
+// ===================================================================
+// SUSE_RepositoryAvailableForSoftwareIdentity
+// ===================================================================
+
+[ Provider("cmpi:cmpi-zypp"),
+ Description ("Association between the SoftwareIdentity and a SoftwareRepository")
+]
+class SUSE_RepositoryAvailableForSoftwareIdentity : CIM_SAPAvailableForElement
+{
+
+ [Key, Description (
+ "The Repository that is available." )]
+ SUSE_SoftwareRepository REF AvailableSAP;
+
+ [Key, Description (
+ "The SoftwareIdentity which exist in the Repository." )]
+ SUSE_SoftwareIdentity REF ManagedElement;
+
+};
+
+
diff --git a/mof/SUSE_RepositoryAvailableForSoftwareIdentity.sfcb.reg b/mof/SUSE_RepositoryAvailableForSoftwareIdentity.sfcb.reg
new file mode 100644
index 0000000..c187216
--- /dev/null
+++ b/mof/SUSE_RepositoryAvailableForSoftwareIdentity.sfcb.reg
@@ -0,0 +1,5 @@
+[SUSE_RepositoryAvailableForSoftwareIdentity]
+ provider: SUSE_RepositoryAvailableForSoftwareIdentityProvider
+ location: cmpi-zypp
+ type: instance association
+ namespace: root/cimv2
diff --git a/mof/deploy.mof b/mof/deploy.mof
index 4841614..2eec533 100644
--- a/mof/deploy.mof
+++ b/mof/deploy.mof
@@ -12,3 +12,4 @@
#pragma include ("SUSE_SoftwareRepository.mof")
#pragma include ("SUSE_HostedRepository.mof")
#pragma include ("SUSE_InstallationServiceRepositoryDependency.mof")
+#pragma include ("SUSE_RepositoryAvailableForSoftwareIdentity.mof")
\ No newline at end of file
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6e405f6..902176e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -22,6 +22,7 @@ SET( CMPIZYPP_SRCS
SUSE_SoftwareRepositoryProvider.cc
SUSE_HostedRepositoryProvider.cc
SUSE_InstallationServiceRepositoryDependencyProvider.cc
+ SUSE_RepositoryAvailableForSoftwareIdentityProvider.cc
)
SET( CMPIZYPP_HEADERS
SUSE_Common.h
@@ -40,6 +41,7 @@ SET( CMPIZYPP_HEADERS
SUSE_SoftwareRepositoryProvider.h
SUSE_HostedRepositoryProvider.h
SUSE_InstallationServiceRepositoryDependencyProvider.h
+ SUSE_RepositoryAvailableForSoftwareIdentityProvider.h
)
ADD_LIBRARY(cmpi-zypp SHARED ${CMPIZYPP_SRCS})
diff --git a/src/SUSE_RepositoryAvailableForSoftwareIdentityProvider.cc b/src/SUSE_RepositoryAvailableForSoftwareIdentityProvider.cc
new file mode 100644
index 0000000..71bbb55
--- /dev/null
+++ b/src/SUSE_RepositoryAvailableForSoftwareIdentityProvider.cc
@@ -0,0 +1,492 @@
+
+#include <iostream>
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+#include "SUSE_zypp.h"
+#include "SUSE_Common.h"
+#include "SUSE_SoftwareIdentityProvider.h"
+#include "SUSE_SoftwareRepositoryProvider.h"
+#include "SUSE_RepositoryAvailableForSoftwareIdentityProvider.h"
+
+using namespace zypp;
+using std::endl;
+
+namespace cmpizypp
+{
+ namespace
+ {
+ const char * _ClassName = "SUSE_RepositoryAvailableForSoftwareIdentity";
+ const char * _RefLeft = "AvailableSAP";
+ const char * _RefRight = "ManagedElement";
+ const char * _RefLeftClass = "SUSE_SoftwareRepository";
+ const char * _RefRightClass = "SUSE_SoftwareIdentity";
+
+ } // namespace
+
+ SUSE_RepositoryAvailableForSoftwareIdentityProviderClass::SUSE_RepositoryAvailableForSoftwareIdentityProviderClass( const CmpiBroker & mbp, const CmpiContext & ctx )
+ : CmpiBaseMI( mbp, ctx )
+ , CmpiInstanceMI( mbp, ctx )
+ , CmpiAssociationMI( mbp, ctx )
+ {
+ }
+
+ CmpiStatus SUSE_RepositoryAvailableForSoftwareIdentityProviderClass::enumInstanceNames( const CmpiContext& ctx, CmpiResult& rslt, const CmpiObjectPath & cop )
+ {
+ _CMPIZYPP_TRACE(1,("--- %s CMPI EnumInstanceNames() called",_ClassName));
+
+ CmpiObjectPath op(cop.getNameSpace(), _RefLeftClass); // Enum over Repositories
+ CmpiEnumeration en = broker->enumInstanceNames( ctx, op );
+ if( en.isNull() )
+ {
+ CmpiStatus st( CMPI_RC_ERR_FAILED, "EnumInstanceNames failed.");
+ _CMPIZYPP_TRACE(1,("--- %s CMPI EnumInstanceNames() failed: %s", _ClassName, st.msg() ) );
+ return st;
+ }
+
+ // zypp init
+ zypp::scoped_ptr<ZyppAC> zyppac;
+ try
+ {
+ zyppac.reset( new ZyppAC() );
+ }
+ catch ( const zypp::Exception & err )
+ {
+ CmpiStatus rc( CMPI_RC_ERR_FAILED, ZyppAC::exceptionString( err, "Could not initialize zypp: " ).c_str() );
+ _CMPIZYPP_TRACE(1,("--- %s CMPI EnumInstanceNames() failed : %s", _ClassName, rc.msg()));
+ return rc;
+ }
+
+ while( en.hasNext() )
+ {
+ CmpiObjectPath leftop = en.getNext();
+ const char* repoalias = leftop.getKey( "Name" );
+
+ try
+ {
+ ResPool pool( zyppac->pool() );
+ Repository r ( pool.reposFind( repoalias ) );
+ if( !r )
+ {
+ continue;
+ }
+
+ _CMPIZYPP_TRACE(1,("--- list SoftwareIdentities in %s ", repoalias ));
+
+ for_( it, r.solvablesBegin(), r.solvablesEnd() )
+ {
+ CmpiObjectPath rightop ( cop.getNameSpace(), _RefRightClass );
+ rightop.setKey( "InstanceID", zyppac->SoftwareIdentityInstanceId( *it ).c_str() );
+
+ CmpiObjectPath resop( cop.getNameSpace(), _ClassName );
+ resop.setKey( _RefLeft, leftop );
+ resop.setKey( _RefRight, rightop );
+ rslt.returnData( resop );
+ }
+ }
+ catch( const zypp::Exception & err )
+ {
+ CmpiStatus rc( CMPI_RC_ERR_FAILED, ZyppAC::exceptionString( err, "" ).c_str() );
+ _CMPIZYPP_TRACE(1,("--- %s CMPI EnumInstanceNames() failed : %s", _ClassName, rc.msg()));
+ return rc;
+ }
+ }
+
+ rslt.returnDone();
+ _CMPIZYPP_TRACE(1,("--- %s CMPI EnumInstanceNames() exited",_ClassName));
+ return CmpiStatus(CMPI_RC_OK);
+ }
+
+ CmpiStatus SUSE_RepositoryAvailableForSoftwareIdentityProviderClass::enumInstances( const CmpiContext & ctx, CmpiResult & rslt, const CmpiObjectPath & cop, const char** properties )
+ {
+ _CMPIZYPP_TRACE(1,("--- %s CMPI EnumInstances() called",_ClassName));
+
+ CmpiObjectPath op(cop.getNameSpace(), _RefLeftClass); // Enum over Rpositories
+ CmpiEnumeration en = broker->enumInstanceNames( ctx, op );
+ if( en.isNull() )
+ {
+ CmpiStatus st( CMPI_RC_ERR_FAILED, "EnumInstanceNames failed.");
+ _CMPIZYPP_TRACE(1,("--- %s CMPI EnumInstances() failed: %s", _ClassName, st.msg() ) );
+ return st;
+ }
+
+ // zypp init
+ zypp::scoped_ptr<ZyppAC> zyppac;
+ try
+ {
+ zyppac.reset( new ZyppAC() );
+ }
+ catch ( const zypp::Exception & err )
+ {
+ CmpiStatus rc( CMPI_RC_ERR_FAILED, ZyppAC::exceptionString( err, "Could not initialize zypp: " ).c_str() );
+ _CMPIZYPP_TRACE(1,("--- %s CMPI EnumInstances() failed : %s", _ClassName, rc.msg()));
+ return rc;
+ }
+
+ while( en.hasNext() )
+ {
+ CmpiObjectPath leftop = en.getNext();
+ const char* repoalias = leftop.getKey( "Name" );
+
+ try
+ {
+ ResPool pool( zyppac->pool() );
+ Repository r ( pool.reposFind( repoalias ) );
+ if( !r )
+ {
+ continue;
+ }
+
+ _CMPIZYPP_TRACE(1,("--- list SoftwareIdentities in %s", repoalias ));
+
+ for_( it, r.solvablesBegin(), r.solvablesEnd() )
+ {
+ CmpiObjectPath rightop ( cop.getNameSpace(), _RefRightClass );
+ rightop.setKey( "InstanceID", zyppac->SoftwareIdentityInstanceId( *it ).c_str() );
+
+ CmpiInstance resinst( CmpiObjectPath(cop.getNameSpace(), _ClassName ) );
+ resinst.setProperty( _RefLeft, leftop );
+ resinst.setProperty( _RefRight, rightop );
+ rslt.returnData( resinst );
+ }
+ }
+ catch( const zypp::Exception & err )
+ {
+ CmpiStatus rc( CMPI_RC_ERR_FAILED, ZyppAC::exceptionString( err, "" ).c_str() );
+ _CMPIZYPP_TRACE(1,("--- %s CMPI EnumInstances() failed : %s", _ClassName, rc.msg()));
+ return rc;
+ }
+ }
+
+
+ rslt.returnDone();
+ _CMPIZYPP_TRACE(1,("--- %s CMPI EnumInstances() exited",_ClassName));
+ return CmpiStatus(CMPI_RC_OK);
+ }
+
+
+ CmpiStatus SUSE_RepositoryAvailableForSoftwareIdentityProviderClass::getInstance( const CmpiContext &ctx, CmpiResult &rslt, const CmpiObjectPath &cop, const char **properties )
+ {
+ _CMPIZYPP_TRACE(1,("--- %s CMPI GetInstance() called",_ClassName));
+
+ CmpiInstance ci = assoc_get_inst( *broker, ctx, cop, _ClassName, _RefLeft, _RefRight);
+
+ rslt.returnData( ci );
+ rslt.returnDone();
+ _CMPIZYPP_TRACE(1,("--- %s CMPI GetInstance() exited",_ClassName));
+ return CmpiStatus(CMPI_RC_OK);
+ }
+
+
+
+ CmpiStatus SUSE_RepositoryAvailableForSoftwareIdentityProviderClass::associators( const CmpiContext& ctx, CmpiResult& rslt,
+ const CmpiObjectPath& cop, const char* assocClass, const char* resultClass,
+ const char* role, const char* resultRole, const char** properties )
+ {
+ _CMPIZYPP_TRACE(1,("--- %s CMPI associators() called",_ClassName));
+
+ CmpiObjectPath op( cop.getNameSpace(), _ClassName );
+
+ if ( !assocClass || op.classPathIsA( assocClass ) )
+ {
+ if ( assoc_check_parameter_const( cop, _RefLeft, _RefRight, _RefLeftClass, _RefRightClass,
+ resultClass, role, resultRole ) )
+ {
+ // zypp init
+ zypp::scoped_ptr<ZyppAC> zyppac;
+ try
+ {
+ zyppac.reset( new ZyppAC() );
+ }
+ catch ( const zypp::Exception & err )
+ {
+ CmpiStatus rc( CMPI_RC_ERR_FAILED, ZyppAC::exceptionString( err, "Could not initialize zypp: " ).c_str() );
+ _CMPIZYPP_TRACE(1,("--- %s CMPI associators() failed : %s", _ClassName, rc.msg()));
+ return rc;
+ }
+
+ if ( cop.classPathIsA(_RefLeftClass) ) //SUSE_SoftwareRepository
+ {
+ const char* repoalias = cop.getKey( "Name" );
+
+ try
+ {
+ ResPool pool( zyppac->pool() );
+ for_( it, pool.begin(), pool.end() )
+ {
+ if( (*it)->repository().alias() != repoalias )
+ {
+ continue;
+ }
+ _CMPIZYPP_TRACE(1,("--- list SoftwareIdentities in %s", repoalias ));
+
+ rslt.returnData(SUSE_SoftwareIdentityProviderClass::makeSoftwareIdentityInstance( *it, *zyppac, cop, properties));
+ }
+ }
+ catch( const zypp::Exception & err )
+ {
+ CmpiStatus rc( CMPI_RC_ERR_FAILED, ZyppAC::exceptionString( err, "" ).c_str() );
+ _CMPIZYPP_TRACE(1,("--- %s CMPI associators() failed : %s", _ClassName, rc.msg()));
+ return rc;
+ }
+ }
+ else // SUSE_SoftwareIdentity
+ {
+ const char* instanceID = cop.getKey("InstanceID");
+
+ PoolItem pi = zyppac->findSoftwareIdentityInstanceId( instanceID );
+
+ CmpiObjectPath csop = get_this_computersystem(*broker, ctx, cop);
+
+ rslt.returnData( SUSE_SoftwareRepositoryProviderClass::makeInstance( pi->repository().info(), cop, csop, properties ) );
+ }
+ }
+ }
+
+ rslt.returnDone();
+ _CMPIZYPP_TRACE(1,("--- %s CMPI associators() exited",_ClassName));
+ return CmpiStatus(CMPI_RC_OK);
+ }
+
+ CmpiStatus SUSE_RepositoryAvailableForSoftwareIdentityProviderClass::associatorNames( const CmpiContext& ctx, CmpiResult& rslt,
+ const CmpiObjectPath& cop, const char* assocClass, const char* resultClass,
+ const char* role, const char* resultRole )
+ {
+ _CMPIZYPP_TRACE(1,("--- %s CMPI associatorNames() called",_ClassName));
+
+ CmpiObjectPath op( cop.getNameSpace(), _ClassName );
+
+ if ( !assocClass || op.classPathIsA( assocClass ) )
+ {
+ if ( assoc_check_parameter_const( cop, _RefLeft, _RefRight, _RefLeftClass, _RefRightClass,
+ resultClass, role, resultRole ) )
+ {
+ // zypp init
+ zypp::scoped_ptr<ZyppAC> zyppac;
+ try
+ {
+ zyppac.reset( new ZyppAC() );
+ }
+ catch ( const zypp::Exception & err )
+ {
+ CmpiStatus rc( CMPI_RC_ERR_FAILED, ZyppAC::exceptionString( err, "Could not initialize zypp: " ).c_str() );
+ _CMPIZYPP_TRACE(1,("--- %s CMPI associatorNames() failed : %s", _ClassName, rc.msg()));
+ return rc;
+ }
+
+ if ( cop.classPathIsA(_RefLeftClass) ) //SUSE_SoftwareRepository
+ {
+ const char* repoalias = cop.getKey( "Name" );
+
+ try
+ {
+ ResPool pool( zyppac->pool() );
+ for_( it, pool.begin(), pool.end() )
+ {
+ if( (*it)->repository().alias() != repoalias )
+ {
+ continue;
+ }
+ _CMPIZYPP_TRACE(1,("--- list SoftwareIdentities in %s", repoalias ));
+
+ rslt.returnData(SUSE_SoftwareIdentityProviderClass::makeSoftwareIdentityOP( *it, *zyppac, cop ));
+ }
+ }
+ catch( const zypp::Exception & err )
+ {
+ CmpiStatus rc( CMPI_RC_ERR_FAILED, ZyppAC::exceptionString( err, "" ).c_str() );
+ _CMPIZYPP_TRACE(1,("--- %s CMPI associatorNames() failed : %s", _ClassName, rc.msg()));
+ return rc;
+ }
+ }
+ else // SUSE_SoftwareIdentity
+ {
+ const char* instanceID = cop.getKey("InstanceID");
+
+ PoolItem pi = zyppac->findSoftwareIdentityInstanceId( instanceID );
+
+ CmpiObjectPath csop = get_this_computersystem(*broker, ctx, cop);
+
+ rslt.returnData( SUSE_SoftwareRepositoryProviderClass::makeObjectPath( pi->repository().info(), cop, csop ) );
+ }
+ }
+ }
+
+ rslt.returnDone();
+ _CMPIZYPP_TRACE(1,("--- %s CMPI associatorNames() exited",_ClassName));
+ return CmpiStatus(CMPI_RC_OK);
+ }
+
+ CmpiStatus SUSE_RepositoryAvailableForSoftwareIdentityProviderClass::references( const CmpiContext& ctx, CmpiResult& rslt,
+ const CmpiObjectPath& cop, const char* resultClass, const char* role,
+ const char** properties )
+ {
+ _CMPIZYPP_TRACE(1,("--- %s CMPI references() called",_ClassName));
+
+ CmpiObjectPath op( cop.getNameSpace(), _ClassName );
+
+ if ( !resultClass || op.classPathIsA( resultClass ) )
+ {
+ if ( assoc_check_parameter_const( cop, _RefLeft, _RefRight, _RefLeftClass, _RefRightClass,
+ NULL/*resultClass*/, role, NULL /*resultRole*/ ) )
+ {
+ // zypp init
+ zypp::scoped_ptr<ZyppAC> zyppac;
+ try
+ {
+ zyppac.reset( new ZyppAC() );
+ }
+ catch ( const zypp::Exception & err )
+ {
+ CmpiStatus rc( CMPI_RC_ERR_FAILED, ZyppAC::exceptionString( err, "Could not initialize zypp: " ).c_str() );
+ _CMPIZYPP_TRACE(1,("--- %s CMPI references() failed : %s", _ClassName, rc.msg()));
+ return rc;
+ }
+
+ if ( cop.classPathIsA(_RefLeftClass) ) //SUSE_SoftwareRepository
+ {
+ const char* repoalias = cop.getKey( "Name" );
+
+ try
+ {
+ ResPool pool( zyppac->pool() );
+ for_( it, pool.begin(), pool.end() )
+ {
+ if( (*it)->repository().alias() != repoalias )
+ {
+ continue;
+ }
+ _CMPIZYPP_TRACE(1,("--- list SoftwareIdentities in %s", repoalias ));
+
+ CmpiInstance ci( CmpiObjectPath(cop.getNameSpace(), _ClassName) );
+ ci.setProperty( _RefLeft, cop );
+ ci.setProperty( _RefRight, SUSE_SoftwareIdentityProviderClass::makeSoftwareIdentityOP( *it, *zyppac, cop ) );
+
+ rslt.returnData( ci );
+ }
+ }
+ catch( const zypp::Exception & err )
+ {
+ CmpiStatus rc( CMPI_RC_ERR_FAILED, ZyppAC::exceptionString( err, "" ).c_str() );
+ _CMPIZYPP_TRACE(1,("--- %s CMPI references() failed : %s", _ClassName, rc.msg()));
+ return rc;
+ }
+ }
+ else // SUSE_SoftwareIdentity
+ {
+ const char* instanceID = cop.getKey("InstanceID");
+
+ PoolItem pi = zyppac->findSoftwareIdentityInstanceId( instanceID );
+
+ CmpiObjectPath csop = get_this_computersystem(*broker, ctx, cop);
+
+ CmpiInstance ci( CmpiObjectPath(cop.getNameSpace(), _ClassName) );
+ ci.setProperty( _RefLeft, SUSE_SoftwareRepositoryProviderClass::makeObjectPath( pi->repository().info(), cop, csop ) );
+ ci.setProperty( _RefRight, cop );
+
+ rslt.returnData( ci );
+ }
+ }
+ }
+
+ rslt.returnDone();
+ _CMPIZYPP_TRACE(1,("--- %s CMPI references() exited",_ClassName));
+ return CmpiStatus(CMPI_RC_OK);
+ }
+
+ CmpiStatus SUSE_RepositoryAvailableForSoftwareIdentityProviderClass::referenceNames( const CmpiContext& ctx, CmpiResult& rslt,
+ const CmpiObjectPath& cop, const char* resultClass, const char* role )
+ {
+ _CMPIZYPP_TRACE(1,("--- %s CMPI referenceNames() called",_ClassName));
+
+ CmpiObjectPath op( cop.getNameSpace(), _ClassName );
+
+ if ( !resultClass || op.classPathIsA( resultClass ) )
+ {
+ if ( assoc_check_parameter_const( cop, _RefLeft, _RefRight, _RefLeftClass, _RefRightClass,
+ NULL/*resultClass*/, role, NULL /*resultRole*/ ) )
+ {
+ // zypp init
+ zypp::scoped_ptr<ZyppAC> zyppac;
+ try
+ {
+ zyppac.reset( new ZyppAC() );
+ }
+ catch ( const zypp::Exception & err )
+ {
+ CmpiStatus rc( CMPI_RC_ERR_FAILED, ZyppAC::exceptionString( err, "Could not initialize zypp: " ).c_str() );
+ _CMPIZYPP_TRACE(1,("--- %s CMPI referenceNames() failed : %s", _ClassName, rc.msg()));
+ return rc;
+ }
+
+ if ( cop.classPathIsA(_RefLeftClass) ) //SUSE_SoftwareRepository
+ {
+ const char* repoalias = cop.getKey( "Name" );
+
+ try
+ {
+ ResPool pool( zyppac->pool() );
+ for_( it, pool.begin(), pool.end() )
+ {
+ if( (*it)->repository().alias() != repoalias )
+ {
+ continue;
+ }
+ _CMPIZYPP_TRACE(1,("--- list SoftwareIdentities in %s", repoalias ));
+
+ CmpiInstance ci( CmpiObjectPath(cop.getNameSpace(), _ClassName) );
+ ci.setProperty( _RefLeft, cop );
+ ci.setProperty( _RefRight, SUSE_SoftwareIdentityProviderClass::makeSoftwareIdentityOP( *it, *zyppac, cop ) );
+
+ CmpiObjectPath tmp = ci.getObjectPath();
+ tmp.setNameSpace(cop.getNameSpace());
+
+ rslt.returnData( tmp );
+ }
+ }
+ catch( const zypp::Exception & err )
+ {
+ CmpiStatus rc( CMPI_RC_ERR_FAILED, ZyppAC::exceptionString( err, "" ).c_str() );
+ _CMPIZYPP_TRACE(1,("--- %s CMPI referenceNames() failed : %s", _ClassName, rc.msg()));
+ return rc;
+ }
+ }
+ else // SUSE_SoftwareIdentity
+ {
+ const char* instanceID = cop.getKey("InstanceID");
+
+ PoolItem pi = zyppac->findSoftwareIdentityInstanceId( instanceID );
+
+ CmpiObjectPath csop = get_this_computersystem(*broker, ctx, cop);
+
+ CmpiInstance ci( CmpiObjectPath(cop.getNameSpace(), _ClassName) );
+ ci.setProperty( _RefLeft, SUSE_SoftwareRepositoryProviderClass::makeObjectPath( pi->repository().info(), cop, csop ) );
+ ci.setProperty( _RefRight, cop );
+
+ CmpiObjectPath tmp = ci.getObjectPath();
+ tmp.setNameSpace(cop.getNameSpace());
+
+ rslt.returnData( tmp );
+ }
+ }
+ }
+
+ rslt.returnDone();
+ _CMPIZYPP_TRACE(1,("--- %s CMPI referenceNames() exited",_ClassName));
+ return CmpiStatus(CMPI_RC_OK);
+ }
+
+} // namespace cmpizypp
+
+CMProviderBase( SUSE_RepositoryAvailableForSoftwareIdentityProvider );
+
+CMInstanceMIFactory( cmpizypp::SUSE_RepositoryAvailableForSoftwareIdentityProviderClass, SUSE_RepositoryAvailableForSoftwareIdentityProvider );
+CMAssociationMIFactory( cmpizypp::SUSE_RepositoryAvailableForSoftwareIdentityProviderClass, SUSE_RepositoryAvailableForSoftwareIdentityProvider );
diff --git a/src/SUSE_RepositoryAvailableForSoftwareIdentityProvider.h b/src/SUSE_RepositoryAvailableForSoftwareIdentityProvider.h
new file mode 100644
index 0000000..e19e2a1
--- /dev/null
+++ b/src/SUSE_RepositoryAvailableForSoftwareIdentityProvider.h
@@ -0,0 +1,41 @@
+#ifndef SUSE_REPOSITORYAVAILABLEFORSOFTWAREIDENTITYPROVIDERCLASS_H
+#define SUSE_REPOSITORYAVAILABLEFORSOFTWAREIDENTITYPROVIDERCLASS_H
+
+#include
+#include
+
+namespace cmpizypp
+{
+ /**
+ */
+ class SUSE_RepositoryAvailableForSoftwareIdentityProviderClass : public CmpiInstanceMI, public CmpiAssociationMI
+ {
+ public:
+ SUSE_RepositoryAvailableForSoftwareIdentityProviderClass( const CmpiBroker & mbp, const CmpiContext & ctx );
+
+ virtual CmpiStatus enumInstanceNames( const CmpiContext& ctx, CmpiResult& rslt, const CmpiObjectPath & cop );
+ virtual CmpiStatus enumInstances( const CmpiContext & ctx, CmpiResult & rslt, const CmpiObjectPath & cop, const char** properties );
+ virtual CmpiStatus getInstance( const CmpiContext &ctx, CmpiResult &rslt, const CmpiObjectPath &cop, const char **properties );
+
+ virtual CmpiStatus associators
+ (const CmpiContext& ctx, CmpiResult& rslt,
+ const CmpiObjectPath& cop, const char* assocClass, const char* resultClass,
+ const char* role, const char* resultRole, const char** properties);
+
+ virtual CmpiStatus associatorNames
+ (const CmpiContext& ctx, CmpiResult& rslt,
+ const CmpiObjectPath& cop, const char* assocClass, const char* resultClass,
+ const char* role, const char* resultRole);
+
+ virtual CmpiStatus references
+ (const CmpiContext& ctx, CmpiResult& rslt,
+ const CmpiObjectPath& cop, const char* resultClass, const char* role,
+ const char** properties);
+
+ virtual CmpiStatus referenceNames
+ (const CmpiContext& ctx, CmpiResult& rslt,
+ const CmpiObjectPath& cop, const char* resultClass, const char* role);
+ };
+} // namespace cmpizypp
+
+#endif // SUSE_REPOSITORYAVAILABLEFORSOFTWAREIDENTITYPROVIDERCLASS_H
--
To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org
For additional commands, e-mail: zypp-commit+help@opensuse.org