(file) Return to TheRepositoryasDefaultInstanceProvider.htm CVS log (file) (dir) Up to [Pegasus] / pegasus / doc / WorkPapers

File: [Pegasus] / pegasus / doc / WorkPapers / TheRepositoryasDefaultInstanceProvider.htm (download) / (as text)
Revision: 1.2, Thu Dec 13 14:53:31 2001 UTC (22 years, 4 months ago) by mike
Branch: MAIN
CVS Tags: test, preBug9676, postBug9676, pep_88, pegasus25BeforeLicenseUpdate, merge_of_dev, mday-merge-start, mday-merge-pegasus/src/Pegasus/Server, mday-merge-pegasus/src/Pegasus/Common, mday-2-0-patches, local, VERSION_2_1_RELEASE_HEAD, VERSION_2_1_RELEASE_BRANCH, VERSION_2_1_RELEASE, VERSION_2_1_1_RELEASE, VERSION_2_01_01, VERSION_2_00_RC_4, VERSION_2_00_RC_3, VERSION_2_00_RC_2, VERSION_2_00_RC_1, VERSION_2_00_BRANCH, VERSION_1_10, VERSION_1_09, VERSION_1_08, VERSION_1_07, TEST, TASK_PEP328_SOLARIS_NEVADA_PORT, TASK_PEP317_1JUNE_2013, TASK_PEP233_EmbeddedInstSupport-merge_out_trunk, TASK_BUG_5314_IPC_REFACTORING_ROOT, TASK_BUG_5314_IPC_REFACTORING_BRANCH, TASK_BUG_5314_IPC_REFACTORING-V1, TASK_BUG_5191_QUEUE_CONSOLIDATION_ROOT, TASK_BUG_5191_QUEUE_CONSOLIDATION_BRANCH, TASK-TASK_PEP362_RestfulService_branch-root, TASK-TASK_PEP362_RestfulService_branch-merged_out_from_trunk, TASK-TASK_PEP362_RestfulService_branch-merged_in_to_trunk, TASK-TASK_PEP362_RestfulService_branch-merged_in_from_branch, TASK-TASK_PEP362_RestfulService_branch-branch, TASK-TASK-BUG4011_WinLocalConnect-branch-New-root, TASK-TASK-BUG4011_WinLocalConnect-branch-New-merged_out_to_branch, TASK-TASK-BUG4011_WinLocalConnect-branch-New-merged_out_from_trunk, TASK-TASK-BUG4011_WinLocalConnect-branch-New-merged_in_to_trunk, TASK-TASK-BUG4011_WinLocalConnect-branch-New-merged_in_from_branch, TASK-TASK-BUG4011_WinLocalConnect-branch-New-branch, TASK-PEP362_RestfulService-root, TASK-PEP362_RestfulService-merged_out_to_branch, TASK-PEP362_RestfulService-merged_out_from_trunk, TASK-PEP362_RestfulService-merged_in_to_trunk, TASK-PEP362_RestfulService-merged_in_from_branch, TASK-PEP362_RestfulService-branch, TASK-PEP348_SCMO-root, TASK-PEP348_SCMO-merged_out_to_branch, TASK-PEP348_SCMO-merged_out_from_trunk, TASK-PEP348_SCMO-merged_in_to_trunk, TASK-PEP348_SCMO-merged_in_from_branch, TASK-PEP348_SCMO-branch, TASK-PEP328_SOLARIS_NEVADA_PORT_v2-root, TASK-PEP328_SOLARIS_NEVADA_PORT_v2-branch, TASK-PEP328_SOLARIS_NEVADA_PORT-root, TASK-PEP328_SOLARIS_NEVADA_PORT-branch, TASK-PEP328_SOLARIS_IX86_CC_PORT-root, TASK-PEP328_SOLARIS_IX86_CC_PORT-branch-v2, TASK-PEP328_SOLARIS_IX86_CC_PORT-branch, TASK-PEP317_pullop-root, TASK-PEP317_pullop-merged_out_to_branch, TASK-PEP317_pullop-merged_out_from_trunk, TASK-PEP317_pullop-merged_in_to_trunk, TASK-PEP317_pullop-merged_in_from_branch, TASK-PEP317_pullop-branch, TASK-PEP311_WSMan-root, TASK-PEP311_WSMan-branch, TASK-PEP305_VXWORKS-root, TASK-PEP305_VXWORKS-branch-pre-solaris-port, TASK-PEP305_VXWORKS-branch-post-solaris-port, TASK-PEP305_VXWORKS-branch-beta2, TASK-PEP305_VXWORKS-branch, TASK-PEP305_VXWORKS-2008-10-23, TASK-PEP291_IPV6-root, TASK-PEP291_IPV6-branch, TASK-PEP286_PRIVILEGE_SEPARATION-root, TASK-PEP286_PRIVILEGE_SEPARATION-branch, TASK-PEP274_dacim-root, TASK-PEP274_dacim-merged_out_to_branch, TASK-PEP274_dacim-merged_out_from_trunk, TASK-PEP274_dacim-merged_in_to_trunk, TASK-PEP274_dacim-merged_in_from_branch, TASK-PEP274_dacim-branch, TASK-PEP268_SSLClientCertificatePropagation-root, TASK-PEP268_SSLClientCertificatePropagation-merged_out_to_branch, TASK-PEP268_SSLClientCertificatePropagation-merged_out_from_trunk, TASK-PEP268_SSLClientCertificatePropagation-merged_in_to_trunk, TASK-PEP268_SSLClientCertificatePropagation-merged_in_from_branch, TASK-PEP268_SSLClientCertificatePropagation-branch, TASK-PEP267_SLPReregistrationSupport-root, TASK-PEP267_SLPReregistrationSupport-merging_out_to_branch, TASK-PEP267_SLPReregistrationSupport-merging_out_from_trunk, TASK-PEP267_SLPReregistrationSupport-merged_out_to_branch, TASK-PEP267_SLPReregistrationSupport-merged_out_from_trunk, TASK-PEP267_SLPReregistrationSupport-merged_in_to_trunk, TASK-PEP267_SLPReregistrationSupport-merged_in_from_branch, TASK-PEP267_SLPReregistrationSupport-branch, TASK-PEP250_RPMProvider-root, TASK-PEP250_RPMProvider-merged_out_to_branch, TASK-PEP250_RPMProvider-merged_out_from_trunk, TASK-PEP250_RPMProvider-merged_in_to_trunk, TASK-PEP250_RPMProvider-merged_in_from_branch, TASK-PEP250_RPMProvider-branch, TASK-PEP245_CimErrorInfrastructure-root, TASK-PEP245_CimErrorInfrastructure-merged_out_to_branch, TASK-PEP245_CimErrorInfrastructure-merged_out_from_trunk, TASK-PEP245_CimErrorInfrastructure-merged_in_to_trunk, TASK-PEP245_CimErrorInfrastructure-merged_in_from_branch, TASK-PEP245_CimErrorInfrastructure-branch, TASK-PEP241_OpenPegasusStressTests-root, TASK-PEP241_OpenPegasusStressTests-merged_out_to_branch, TASK-PEP241_OpenPegasusStressTests-merged_out_from_trunk, TASK-PEP241_OpenPegasusStressTests-merged_in_to_trunk, TASK-PEP241_OpenPegasusStressTests-merged_in_from_branch, TASK-PEP241_OpenPegasusStressTests-branch, TASK-Bugs5690_3913_RemoteCMPI-root, TASK-Bugs5690_3913_RemoteCMPI-merged_out_to_branch, TASK-Bugs5690_3913_RemoteCMPI-merged_out_from_trunk, TASK-Bugs5690_3913_RemoteCMPI-merged_in_to_trunk, TASK-Bugs5690_3913_RemoteCMPI-merged_in_from_branch, TASK-Bugs5690_3913_RemoteCMPI-branch, TASK-Bug2102_RCMPIWindows-root, TASK-Bug2102_RCMPIWindows-merged_out_to_branch, TASK-Bug2102_RCMPIWindows-merged_out_from_trunk, TASK-Bug2102_RCMPIWindows-merged_in_to_trunk, TASK-Bug2102_RCMPIWindows-merged_in_from_branch, TASK-Bug2102_RCMPIWindows-branch, TASK-Bug2102Final-root, TASK-Bug2102Final-merged_out_to_branch, TASK-Bug2102Final-merged_out_from_trunk, TASK-Bug2102Final-merged_in_to_trunk, TASK-Bug2102Final-merged_in_from_branch, TASK-Bug2102Final-branch, TASK-Bug2021_RemoteCMPIonWindows-root, TASK-Bug2021_RemoteCMPIonWindows-merged_out_to_branch, TASK-Bug2021_RemoteCMPIonWindows-merged_out_from_trunk, TASK-Bug2021_RemoteCMPIonWindows-merged_in_to_trunk, TASK-Bug2021_RemoteCMPIonWindows-merged_in_from_branch, TASK-Bug2021_RemoteCMPIonWindows-branch, TASK-Bug2021_RCMPIonWindows-root, TASK-Bug2021_RCMPIonWindows-merged_out_to_branch, TASK-Bug2021_RCMPIonWindows-merged_out_from_trunk, TASK-Bug2021_RCMPIonWindows-merged_in_to_trunk, TASK-Bug2021_RCMPIonWindows-merged_in_from_branch, TASK-Bug2021_RCMPIonWindows-branch, TASK-BUG7240-root, TASK-BUG7240-branch, TASK-BUG7146_SqlRepositoryPrototype-root, TASK-BUG7146_SqlRepositoryPrototype-merged_out_to_branch, TASK-BUG7146_SqlRepositoryPrototype-merged_out_from_trunk, TASK-BUG7146_SqlRepositoryPrototype-merged_in_to_trunk, TASK-BUG7146_SqlRepositoryPrototype-merged_in_from_branch, TASK-BUG7146_SqlRepositoryPrototype-branch, TASK-BUG4011_WinLocalConnect-root, TASK-BUG4011_WinLocalConnect-merged_out_to_branch, TASK-BUG4011_WinLocalConnect-merged_out_from_trunk, TASK-BUG4011_WinLocalConnect-merged_in_to_trunk, TASK-BUG4011_WinLocalConnect-merged_in_from_branch, TASK-BUG4011_WinLocalConnect-branch-New, TASK-BUG4011_WinLocalConnect-branch, STABLE, SLPPERFINST-root, SLPPERFINST-branch, RELEASE_2_9_2-RC2, RELEASE_2_9_2-RC1, RELEASE_2_9_2, RELEASE_2_9_1-RC1, RELEASE_2_9_1, RELEASE_2_9_0-RC1, RELEASE_2_9_0-FC, RELEASE_2_9_0, RELEASE_2_9-root, RELEASE_2_9-branch, RELEASE_2_8_2-RC1, RELEASE_2_8_2, RELEASE_2_8_1-RC1, RELEASE_2_8_1, RELEASE_2_8_0_BETA, RELEASE_2_8_0-RC2, RELEASE_2_8_0-RC1, RELEASE_2_8_0-FC, RELEASE_2_8_0, RELEASE_2_8-root, RELEASE_2_8-branch, RELEASE_2_7_3-RC1, RELEASE_2_7_3, RELEASE_2_7_2-RC1, RELEASE_2_7_2, RELEASE_2_7_1-RC1, RELEASE_2_7_1, RELEASE_2_7_0-RC1, RELEASE_2_7_0-BETA, RELEASE_2_7_0, RELEASE_2_7-root, RELEASE_2_7-branch, RELEASE_2_6_3-RC2, RELEASE_2_6_3-RC1, RELEASE_2_6_3, RELEASE_2_6_2-RC1, RELEASE_2_6_2, RELEASE_2_6_1-RC1, RELEASE_2_6_1, RELEASE_2_6_0-RC1, RELEASE_2_6_0-FC, RELEASE_2_6_0, RELEASE_2_6-root, RELEASE_2_6-branch-clean, RELEASE_2_6-branch, RELEASE_2_5_5-RC2, RELEASE_2_5_5-RC1, RELEASE_2_5_5, RELEASE_2_5_4-RC2, RELEASE_2_5_4-RC1, RELEASE_2_5_4, RELEASE_2_5_3-RC1, RELEASE_2_5_3, RELEASE_2_5_2-RC1, RELEASE_2_5_2, RELEASE_2_5_1-RC1, RELEASE_2_5_1, RELEASE_2_5_0-RC1, RELEASE_2_5_0, RELEASE_2_5-root, RELEASE_2_5-branch, RELEASE_2_4_FC_CANDIDATE_1, RELEASE_2_4_3, RELEASE_2_4_2, RELEASE_2_4_1-BETA3, RELEASE_2_4_1-BETA2, RELEASE_2_4_1-BETA1, RELEASE_2_4_1, RELEASE_2_4_0-RC3, RELEASE_2_4_0-RC2, RELEASE_2_4_0, RELEASE_2_4-root, RELEASE_2_4-branch, RELEASE_2_3_2-testfreeze, RELEASE_2_3_2-root, RELEASE_2_3_2-releasesnapshot, RELEASE_2_3_2-branch-freeze, RELEASE_2_3_2-branch, RELEASE_2_3_1-root, RELEASE_2_3_1-branch, RELEASE_2_3_0-root, RELEASE_2_3_0-msg-freeze, RELEASE_2_3_0-branch, RELEASE_2_2_1-snapshot, RELEASE_2_2_0_0-release, RELEASE_2_2_0-root, RELEASE_2_2_0-branch, RELEASE_2_2-root, RELEASE_2_14_1, RELEASE_2_14_0-RC2, RELEASE_2_14_0-RC1, RELEASE_2_14_0, RELEASE_2_14-root, RELEASE_2_14-branch, RELEASE_2_13_0-RC2, RELEASE_2_13_0-RC1, RELEASE_2_13_0-FC, RELEASE_2_13_0, RELEASE_2_13-root, RELEASE_2_13-branch, RELEASE_2_12_1-RC1, RELEASE_2_12_1, RELEASE_2_12_0-RC1, RELEASE_2_12_0-FC, RELEASE_2_12_0, RELEASE_2_12-root, RELEASE_2_12-branch, RELEASE_2_11_2-RC1, RELEASE_2_11_2, RELEASE_2_11_1-RC1, RELEASE_2_11_1, RELEASE_2_11_0-RC1, RELEASE_2_11_0-FC, RELEASE_2_11_0, RELEASE_2_11-root, RELEASE_2_11-branch, RELEASE_2_10_1-RC1, RELEASE_2_10_1, RELEASE_2_10_0-RC2, RELEASE_2_10_0-RC1, RELEASE_2_10_0, RELEASE_2_10-root, RELEASE_2_10-branch, PRE_LICENSE_UPDATE_2003, PREAUG25UPDATE, POST_LICENSE_UPDATE_2003, POSTAUG25UPDATE, PEP286_PRIVILEGE_SEPARATION_ROOT, PEP286_PRIVILEGE_SEPARATION_CODE_FREEZE, PEP286_PRIVILEGE_SEPARATION_BRANCH, PEP286_PRIVILEGE_SEPARATION_1, PEP244_ServerProfile-root, PEP244_ServerProfile-branch, PEP233_EmbeddedInstSupport-root, PEP233_EmbeddedInstSupport-branch, PEP217_PRE_BRANCH, PEP217_POST_BRANCH, PEP217_BRANCH, PEP214ROOT, PEP214BRANCH, PEP214-root, PEP214-branch, PEP213_SIZE_OPTIMIZATIONS, PEP-214B-root, PEGASUS_FC_VERSION_2_2, PEGASUS_2_5_0_PerformanceDev-string-end, PEGASUS_2_5_0_PerformanceDev-rootlt, PEGASUS_2_5_0_PerformanceDev-root, PEGASUS_2_5_0_PerformanceDev-r2, PEGASUS_2_5_0_PerformanceDev-r1, PEGASUS_2_5_0_PerformanceDev-lit-end, PEGASUS_2_5_0_PerformanceDev-buffer-end, PEGASUS_2_5_0_PerformanceDev-branch, PEGASUS_2_5_0_PerformanceDev-AtomicInt-branch, PEG25_IBM_5_16_05, NPEGASUS_2_5_0_PerformanceDev-String-root, NNPEGASUS_2_5_0_PerformanceDev-String-branch, Makefile, MONITOR_CONSOLIDATION_2_5_BRANCH, LOCAL_ASSOCPROV-ROOT, LOCAL_ASSOCPROV-BRANCH, IBM_241_April1405, HPUX_TEST, HEAD, CQL_2_5_BRANCH, CIMRS_WORK_20130824, CHUNKTESTDONE_PEP140, BeforeUpdateToHeadOct82011, BUG_4225_PERFORMANCE_VERSION_1_DONE
Changes since 1.1: +199 -0 lines
Merged dev branch into main trunk.

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Pegasus Project Working Paper</title>
</head>

<body>

<H1 align="center">Pegasus Project Working Paper</H1>

<H1 align="center">Unsupported Classes in the Repository</H1>

<b>AUTHORS:</b>&nbsp;
<p><font size="1">Last Update <!--webbot bot="Timestamp" startspan
S-Type="EDITED" S-Format="%A, %B %d, %Y %I:%M %p" -->Friday, October 19, 2001 08:07 AM<!--webbot
bot="Timestamp" i-CheckSum="57739" endspan -->
</font></p>
<p>Revision Status</p>
<table border="1" width="80%" height="124">
  <tr>
    <td width="20%" height="19">Revision</td>
    <td width="30%" height="19">Date</td>
    <td width="25%" height="19">Author(s)</td>
    <td width="25%" height="19">Reason</td>
  </tr>
  <tr>
    <td width="20%" height="19">1.0</td>
    <td width="30%" height="19">&nbsp;15 October 2001</td>
    <td width="25%" height="19">K. Schopmeyer</td>
    <td width="25%" height="19">Original</td>
  </tr>
  <tr>
    <td width="20%" height="18">2.0</td>
    <td width="30%" height="18">19 October 2001</td>
    <td width="25%" height="18">KS</td>
    <td width="25%" height="18">Comments from Denise. Distribute this version to
      Pegasus for Comment</td>
  </tr>
  <tr>
    <td width="20%" height="19">&nbsp;</td>
    <td width="30%" height="19">&nbsp;</td>
    <td width="25%" height="19">&nbsp;</td>
    <td width="25%" height="19">&nbsp;</td>
  </tr>
  <tr>
    <td width="20%" height="19">&nbsp;</td>
    <td width="30%" height="19">&nbsp;</td>
    <td width="25%" height="19">&nbsp;</td>
    <td width="25%" height="19">&nbsp;</td>
  </tr>
</table>

<h2>Introduction</h2>

<p>The instance operation routing algorithms for the Pegasus platform treats the
instance repository (if it is activated) as the provider of last result so that
any instance operation request (create, enumerate, modify, etc.) for which there
is not a specific provider defined (via the provider qualifier today) is routed
to the instance repository for handling.&nbsp; Thus, if a create instance for
any class which does not have a provider defined is received it is routed to the
instance repository or if an enumerate instance request arrives for a class that
does not have a provider defined, the request is passed to the instance
repository handler and the response provided according to any instance
information for the target class that might be in the instance repository.</p>

<p>At the same time, we typically load all of the classes of all or most of the
DMTF CIM Schemas and then add the classes required for our implementation and/or
environment. This means that typically there are a significant number of classes
in the class repository which are not&nbsp; supported by providers.</p>

<p>Pegasus users have identified this as a potential problem for several
reasons:</p>

<ol>
  <li>Existence of a class in the schema does not imply that the class is&nbsp;
    implemented/instrumented.&nbsp;</li>
  <li>Clients can not differentiate implemented classes from unimplemented
    &nbsp;classes.&nbsp;</li>
  <li>Browsers and other tools will produce a list of all classes giving no clue
    to the user if there is any provider support other than the provider
    qualifier.</li>
  <li>CIM Clients can create instances for classes that are not supported and
    this instance information will be placed in the instance repository with no
    known strategy for ever understanding that it is worthless information.</li>
  <li>A client may create an instance of the class, expecting an underlying
    resource to be affected (e.g., a client may create an instance of a User
    class expecting the user to get added).&nbsp;&nbsp;</li>
  <li>A client may see an instance created by another client and believe it
    &nbsp;reflects the state of an underlying resource</li>
</ol>
<p>It appears then that there is a requirement to be able to separate classes
that are supported in some way by the CIMOM and providers from those that are
not.&nbsp; At the same time, this is not as simple as just using the provider
qualifier (or in the future the provider registration) because there may be
valid reasons for using the instance repository for storage of instance
information about selected classes.</p>

<p>For these reasons, it appears that the repository should be explicitly
registered for the classes it serves rather than the current situation of
letting it act as default.<br>
</p>

<h3>Limiting Access/Modification for Static Information</h3>

<p>
A related issue is that there is fundamentally a difference between a
&quot;provider&quot; manipulating instances that are served by the repository
and clients manipulating those instances. &nbsp;That is, the instances generally
relate to the state of some underlying managed resource. &nbsp;The resource
owner knows that state and can accurately supply the instance information to be
kept in the repository. &nbsp;Clients, on the other hand, want to retrieve this
information rather than supply it. &nbsp;Those clients should not generally be
trusted to manipulate the instances in the repository.<br>
<br>
Microsoft addresses this issue by defining &quot;push providers&quot; (as
opposed to the &quot;pull providers&quot; like what Pegasus currently has).
&nbsp;</p>

<p>HP has&nbsp; proposed that we devise a mechanism for Pegasus that allows static
instances to be created/manipulated by the resource owner while allowing only
read access by clients. We could be more general than this if we create access
control at the class level so that, for example, the resource owner could
dictate the access by other potential.&nbsp; Thus the resource owner could
dictate read-only access by other users.</p>

<p>Somewhere in there there is a logical ground.&nbsp; We probably do need to
limit the ability to change on some basis.&nbsp; However, I suggest that we can
try to do that as part of the access control mechanisms we are planning to
design (which is another use case for class level access control) rather than
building a special mechanism.&nbsp;&nbsp;</p>

<p>Therefore, I propose that we move this discussion to the access control
discussion and in this note consider primarily the algorithms for routing,
especially those dealing with the instance repository.</p>

<h3>Proposal to Establish ownership of Classes</h3>

<p>Note: Much of this discussion bears a strong relationship to ideas that would
come from ownership of entities within the CIMOM, Primarily the classes.&nbsp;
However, until we resolve the access control definitions (authorization rules)
we do not know what we can do with ownership technologies.</p>

<h3>Proposal to Modify Operation of CIMOM Routing</h3>

<p>
We therefore propose that what we want to do is to force the identification of
not only classes with valid providers (that would be identified through the
provider qualifier or provider registration) but also to identify those classes
for which the instance repository is to be the &quot;provider&quot;.&nbsp; In essence
we are establishing ownership of classes. With the
provider qualifier this is a simple change since there is no concept of
ownership and involves:</p>

<ol>
  <li>Change the CIMOM routing so that there is no default provider.&nbsp; Any
    instance operations against instances of classes for which there is no
    provider will receive an error return.&nbsp; Any class for which the
    instance repository is to be used must have the provider qualifier set to
    &quot;Repository&quot;.</li>
  <li>At the same time, this then requires that the provider qualifier be
    supplied for all classes for which we are interested in using the instance
    repository. Since today setting the provider qualifier is a very manual
    activity (adding a qualifier to the class definition)&nbsp; with no real
    defined provider registration tools. We simply set the qualifier for classes
    that will use the repository as part of the general process of setting the
    provider qualifier. Thus a provider that wanted to register itself would add
    the provider qualifier to classes that were to be routed directly to the
    provider and also set the provider qualifier to &quot;repository&quot; for
    classes that it wished to manipulate through the instance repository.</li>
</ol>
<p>This becomes more complex when we move to using provider registration as the
tool for determining the provider associated with a class.&nbsp; The provider
class today lists the classes associated with a particular provider so that
these classes are &quot;registered&quot; for the provider when an instance of
the provider class in installed in the CIMOM.&nbsp; However, to date, we have
assumed that the classes for which we are registering are to be associated with
the provider being registered.&nbsp; However, we may want to register classes
against the &quot;repository&quot; provider in addition to registering classes
against the provider being registered. Thus the process of registering a
provider may associated certain classes with this provider but also associate
certain classes with the instance repository.&nbsp; Further, when the provider
is de-registered, we would assume that these classes in the instance repository
might also be de-registered.</p>

<p>NOTE: At this point I am just preparing to look&nbsp; through Christinas definitions
(an interop proposal) for provider registration to determine if we need to add something.</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>---END OF DOCUMENT--</p>

</body>

</html>

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2