Re: [provision] PSO/Account/ProvisionedState

From
Gary Cole <>
Date
2004-04-16T09:37:35+00:00
ID
013301c42398$c777e0e0$fb58aacf@cole
Thread
Re: [provision] PSO/Account/ProvisionedState
Title: Message

Jeff, did you get this?  I keep getting 
postmaster notifications that my email deliveries to your address 
failed.

 

I still very much want to understand your 
approach.

 

Gary

  
----- Original Message ----- 

  
From: 
  Gary 
  Cole 

  
To: Jeff Bohren 

  
Cc:  
  

  
Sent: Tuesday, April 06, 2004 9:47 
  AM

  
Subject: RE: [provision] 
  PSO/Account/ProvisionedState

  

  
Okay 
  so far....

  
 

  
Wouldn't we call the attribute something more 
  specific than "state" (since we've already agreed that there are several kinds 
  of state)?  This feels like the "disabled" attribute in PrOM.  (Or 
  are you perhaps suggesting that there is only a single "state" attribute, and 
  that the set of interfaces that an object class supports determines the valid 
  set of values for "state"?)

  
 

  
Suppose that Win2K supports immediate disablement and 
  Solaris does not.  Further suppose that RACF supports *scheduled* 
  enablement and disablement, but that Win2K does not.  In PrOM, I proposed 
  three attributes to represent these: "disabled", "enableDate" and 
  "disableDate".

  
 

  
How 
  would RACF advertise its support for immediate disablement/enablement AND 
  scheduled disablement/enablement?

  
 

  
Gary

  
    

    
-----Original Message-----
From: Jeff Bohren 
    [mailto:] 
Sent: Tuesday, April 06, 2004 
    6:49 AM
To: 
Subject: RE: 
    [provision] PSO/Account/ProvisionedState

    
 

    
Take for example two kinds of accounts; Win2K and Solaris accounts. 
    Assuming that both are a kind of account, but Win2K accounts can be 
    suspended and restored, where as Solaris accounts can not (some provisioning 
    system support suspending Solaris accounts via passwords, but for the 
    purpose of this discussion I will assume that is not the case for this 
    PSP).

    
 

    
A 
    standard schema might define an object class for account which has the 
    typical uid/password attributes and it might also define an object class for 
    anything (account or otherwise) that can be suspended and restored. For 
    instance the following could be object classes in a standard 
    schema:

    
 

    
Account

    
    uid

    
    password

    
 

    
Suspendable

    
    state

    
 

    
Then a PSP may publish a schema that defines Win2K and Solaris 
    accounts:

    
 

    
Win2KAccount : Account, Suspendable

    
 

    
SolarisAccount : Account

    
 

    
 

    
Thus the RA could know a prior what PSOs support suspend and restore 
    semantics. It would be those PSOs that inherit the Suspendable 
    class.

    
 

    
BTW, this is all supportable in the SPML 1.0 
    standard.

    
 

    
 

    
Jeff Bohren

    
Product Architect

    
OpenNetwork Technologies, 
    Inc

    
 

    
-----Original 
    Message-----
From: Gary Cole [mailto:] 
    
Sent: Monday, April 05, 2004 5:44 PM
To: Jeff 
    Bohren
Cc: 
Subject: Re: 
    [provision] PSO/Account/ProvisionedState

    
      
Jeff,

      
 

      
I think the ball's in your court on this 
      one.  I'm ready to agree, but I need help imagining what a standard 
      schema for state might look like, and how provisioned object classes would 
      declare the features they support.  (Of course, I realize you've been 
      busy writing the Use Cases.)

      
 

      
Gary

      
        
----- Original Message ----- 

        
From: 
        Gary 
        Cole 

        
To: Jeff 
        Bohren 

        
Cc:  
        

        
Sent: Tuesday, March 30, 2004 10:36 
        AM

        
Subject: RE: [provision] 
        PSO/Account/ProvisionedState

        

        
I'm convinced.   I see the 
        complexities of "program by exception", I see the elegance 
        of making this schema-dependent, and I see that this kind of 
        elegance has practical value in a network protocol.  
        

        
 

        
So what would a "standard" state schema look 
        like?  I just need a little help imagining this.  
        

        
 

        
Would the standard state 
        schema contain elements or attributes to represent the multiple 
        facets of provisioned object state?  How would the schema for each 
        object class specify which facets of provisioned object state it 
        supports?  Would the schema for each object class be 
        target-specific?  

        
 

        
Gary

        
          

          
-----Original Message-----
From: Jeff 
          Bohren [mailto:] 
Sent: Tuesday, 
          March 30, 2004 9:09 AM
To: 
          
Subject: RE: [provision] 
          PSO/Account/ProvisionedState

          
 

          
This is essentially the same as the "program by exception" 
          approach that is sometimes used in software development. In most cases 
          the arguments for and against it are more stylistic and philosophical 
          that practical. However since this is a network protocol, not a 
          software API, there a several practical issues that must be 
          addressed:

          
 

          
1) A PSP could legitimately consider setting unsupported status 
          attributes to be an error. In the case of batch requests, this could 
          result in the RA needing to resubmit all or part of the original batch 
          request (if "continue on error" is not specified).

          
 

          
2) From the standpoint of minimizing network traffic, the RA 
          must have a way to determine if a specific PSO supports a specific 
          state attribute. This is a must because if the RA is going to present 
          a set of state options for an authorized user of the RA system, it 
          must be able to present the supported state options for each PSO, not 
          all of them. Fortunately this is easily supported via standard 
          schema.

          
 

          
3) This approach will make status logic more complex. How does 
          the RA differentiate between a successful attempt to change an 
          unsupported attribute versus a failed attempt to change a supported 
          attribute?

          
 

          
This all requires extra complexity that is frankly unnecessary. 
          So far no one has brought up any state issues that could not be easily 
          supported in SPML 1.0 with the additional of standard schemas. If we 
          created a standard schema that only addresses account state, the SPML 
          1.0 could start addressing this issue immediately without even needing 
          SPML 2.0 to be in place. 

          
 

          
By using SPML 1.0 with a standard "state" schema, the state 
          management would be explicit, efficient, standards based, and 
          available immediately. What more do you want in a network 
          protocol?

          
 

          
Jeff Bohren

          
Product Architect

          
OpenNetwork Technologies, 
          Inc

          
 

          
-----Original 
          Message-----
From: Gary Cole [mailto:] 
          
Sent: Tuesday, March 30, 2004 7:02 AM
To: Jeff 
          Bohren; Gearard Woods
Cc: 
          
Subject: Re: [provision] 
          PSO/Account/ProvisionedState

          
            
Could we discuss the identification 
            attributes for a minute, because I think that sets the stage for the 
            discussion of state attributes?

            
 

            
In the email that teed this all up, I 
            wrote:

            
>

            
> To identify the account, Account has "target", 
            "name",

            
> and "guid" attributes.  The account is usually 
            associated

            
> with some target, has a name that is changeable, 
            and

            
> may have an internal identifier 

            
> that is not supposed to change.   
            

            
>

            
 

            
When I say "Account", I think of this 
            as roughly equivalent to "ProvisionedObject".  (I realize that 
            not all features of Account apply to every provisioned object, 
            but this doesn't bother me too much because not all features of 
            Account apply to every account.  Target 
            accounts all different, but there are also common 
            features.)

            
 

            
Not every target supports "guid", but 
            it's common enough (especially among the modern targets) that it's 
            reasonable to model this as a common feature.  We can simply 
            leave "guid" null or empty where it is unknown or 
            unsupported.

            
 

            
I don't want to leave this 
            "open" (i.e., an entirely arbitrary 
            attribute) because guid is pretty common and very 
            useful in managing the account.  Where guid is supported, it is 
            the preferred identifier.  It is *very* handy to keep a guid as 
            a native identifier, since this helps in detecting native renames 
            (and distinguishing a 'move' from a 'delete' and an 'add').  
            Where the target supports some kind of guid, I want to map that 
            value to an attribute that my management code 
            recognizes.

            
 

            
I'm guessing that everybody basically 
            buys this premise, because the discussion has centered on the 
            state-related attributes.  Here's the part where I step off the 
            ledge...

            
 

            
I think of the state-related attributes 
            we've been discussing in the same way: common and useful where 
            supported, harmless and empty if unsupported.  For example, it doesn't bother me at all if a 
            particular class of provisioned object doesn't support "disabled", 
            as long as the value that comes back is harmless (e.g., empty or 
            "NOT_SUPPORTED").  

            
 

            
It's common enough (not just for 
            accounts, but also for policies and other objects) to add 
            objects disabled and then enable them at a later date.  
            This is such a common aspect of management that I'd prefer to model 
            this explictly as a well-known aspect of state.

            
 

            
I'm interested to know what 
            everyone thinks.  I'm not sure everyone will agree with this 
            line of reasoning, but if this explains where I'm coming from, then 
            maybe you all can use it to explain things to me.

            
 

            
Gary

            
              
----- Original Message ----- 

              
From: 
              Gary Cole 

              
To: Jeff Bohren 

              
Cc:  
              

              
Sent: Friday, March 26, 2004 
              9:32 AM

              
Subject: Re: [provision] 
              PSO/Account/ProvisionedState

              

              
This sounds 
              interesting.  Defining multiple interfaces (as Gerry 
              suggests) sounds like a reasonable way to tease apart the facets 
              that interest some (but not necessarily all) of us.  Tying 
              these to a common schema (as Jeff B suggests) seems like a 
              reasonable way to keep the whole thing from flying 
              apart.

              
 

              
I need a little more help 
              imagining how we'd structure this.  I wanted to define a 
              bunch of common state-related attributes, but Jeff B and others 
              point out that not all of these apply to all types of 
              accounts.  Perhaps none of these state-related attributes 
              (beyond "exists") apply to some kinds of provisioned 
              object.

              
 

              
I had imagined calling a method 
              like:

              
    State 
              getProvisionedState(PSO-ID);

              
 

              
For an Account, I'd get back all the 
              attributes that apply:

              
    <State 
              psoId='ID' exists='true' disabled='false' disableDate='NONE' 
              enableDate='NONE' expired='false' expireDate='DATE' 
              />

              
 

              
For a provisioned object that 
              supports only "exists", I'd get back only "exists":

              
    <State 
              psoId='ID' exists='true'/>

              
 

              
But it sounds to me from the 
              discussion above, that I might have to define a different schema 
              for each combination of attributes.  Am I right about that, 
              or could 'Stateful' contain our "starter kit" of common 
              state-related attributes?

              
 

              
Would each kind of provisioned 
              object have to define in its schema which state-related attributes 
              it supports? 

              
Or would I just call a different 
              method (e.g., #listSupportedStateAttributes)?  

              
Or could I figure this out just 
              from the set of attributes returned by 
              #getProvisionedState(PSO-ID)?

              
 

              
Sorry if I'm misunderstanding 
              your suggestion.  If so, 
              perhaps we should talk offline (rather than email 
              everyone).

              
 

              
Gary

              
                
----- Original Message ----- 

                
From: 
                Jeff Bohren 

                
To: Gearard Woods ; Jeff Larson 

                
Cc: Gary Cole ;  
                

                
Sent: Thursday, March 25, 
                2004 7:51 PM

                
Subject: RE: [provision] 
                PSO/Account/ProvisionedState

                

                
I would not be opposed to having mulitple provisioning 
                interfaces, provided it was tied to a standard schema that 
                normatively defined what interfaces where appropriate for what 
                object classes. The clients still need to know what interfaces 
                would apply to what PSOs.

                
 

                
For example the SPML core operations could apply to all 
                object classes but the SPML state operations may only apply to 
                an object class that inherits from a "Stateful" object class in 
                a standard schema (note that SPML 1.0 supports multiple 
                inheritance so this is easy). This way the schema for the 
                resource does not even need to extend an abitrary "Account" 
                schema, it merely needs to extend  the "Stateful" schema. 
                

                
 

                
Jeff Bohren

                
OpenNetwork

                
                  
-----Original Message----- 
From: 
                  Gearard Woods [mailto:] 
Sent: Thu 
                  3/25/2004 6:01 PM 
To: Jeff Larson 
Cc: 
                  Gary Cole; Jeff Bohren;  
                  
Subject: RE: [provision] 
                  PSO/Account/ProvisionedState

                  
I agree that granularity of the calls is important and it 
                  really shouldn't take 42 calls to determine the state of an 
                  object - a single call should suffice. I think we can model 
                  state effectively and still minimize the traffic needed to 
                  manage it. 

Jeff (Jeff B) has also raised the slippery 
                  slope argument, and my take on it is that we should provide an 
                  interoperable way to do the things we feel are a core part of 
                  the provisioning process. There is a line here between what is 
                  horizontal to provisioning and what is resource-specific. 
                  State management is obviously important and passwords have 
                  come up before, although Jeff B would argue that state is not 
                  even relevant to most resources and is only applicable to 
                  accounts. 

The provisioning process is obviously not 
                  the same thing to all people. We have disagreement even down 
                  to the fundamentals of the provisioning model. Perhaps a way 
                  to tackle these different viewpoints is to divide and conquer. 
                  Imagine that we split up the problem into a number of 
                  interfaces:

SPML core - Basic provision (add), 
                  deprovision (delete), modify, list/search
SPML state - An 
                  interface and schema representing state management (lifecycle 
                  included or separate?)
SPML events - An interface and 
                  schema for event notifications
SPML password - Password 
                  management perhaps
SPML relationships - 
                  TBD

Implementors must publish core to be SPML 
                  compliant. They may then in turn overlay any of the other 
                  interfaces to offer enhanced provisioning capabilities. These 
                  would be simple interfaces with minimal schema but would be 
                  complementary and all take advantage of the core schema. 
                  Vendors who deal with directory-style interfaces need go no 
                  further than the core interface while others may wish to offer 
                  the full suite. Obviously these categories are just off the 
                  top of my head but does this sound like an approach that has 
                  promise?
Gerry

' 
                  src="gif00032.gif" width=16>"Jeff 
                  Larson" <>

                  
                    
                    

                      

                      

                        
                          
                            
                              "Jeff Larson" 
                                <> 
                                
03/25/2004 02:20 
                            PM

                      

To: Gearard 
                        Woods/Irvine/IBM@IBMUS, "Jeff Bohren" 
                        <>
cc: "Gary Cole" 
                        <>, 
                        <>
Subject: RE: [provision] 
                        PSO/Account/ProvisionedState

I haven't been following this that 
                  closely, but I like aspects of both approaches. I 
                  like
the notion that 
                  you can carry out near-universal operations like disable, 
                  enable, and expire, 
in a schema independent way. But I also like the 
                  notion that I can at least obtain the current 
                  state
from the model 
                  so I don't have to make 42 web services calls to get 
                  everything I want to display.

I guess as 
                  long as the schema is arbitrary we can have it both ways. If I 
                  choose
to use fine 
                  grained standard operations I can. If the PSP exposes the same 
                  functionality
through 
                  the model, I can use that too, though I will be outside of the 
                  SPML spec.

But we're on a slippery slope here. Almost every 
                  account will have an associated
password, email address, and full name. Do we 
                  then provide individual operations
to get and set those so we can access them in an 
                  standard way without having to be
bothered with PSP specific schema? How far does 
                  this go?

Jeff

-----Original Message-----
From: Gearard 
                  Woods [mailto:] 
                  
Sent: Thursday, March 25, 2004 3:35 PM
To: Jeff 
                  Bohren
Cc: Gary Cole; 
                  
Subject: RE: 
                  [provision] PSO/Account/ProvisionedState

                  
I think there's a fundamental difference here 
                  even though the intent may be the same. Basically, we're all 
                  trying to model state and provide some kind of standardized 
                  view of it to the outside world so that we can offer 
                  interoperability. By placing state in the resource schema you 
                  have immediately abandoned the possibility that arbitrary 
                  resource schema may be supported, which I believe to be 
                  important. You are also now requiring a mapping from the 
                  "standard" schema to the real resource schema. On the other 
                  hand, by placing the emphasis on the service provider and 
                  providing an operational interface to effect state changes, 
                  the provider can now apply its knowledge of the resource to 
                  make the state change however it wishes to do so and places no 
                  restrictions on the resource schema. 
Gerry