[saga-rg] Re: Fwd (s.newhouse at omii.ac.uk): Re: SAGA Strawman API

Andre Merzky andre at merzky.net
Mon May 30 04:47:51 CDT 2005


... and I also want to comment on some of them :-)
text inserted below.

Andre.


Quoting [Andre Merzky] (May 30 2005):
> 
> ----- Forwarded message from Steven Newhouse <s.newhouse at omii.ac.uk> -----
> 
>>> In order to advance the SAGA strawman API, we need urgently
>>> some feedback from outside the authors group.  
>> 
>> I have been carrying around for over month and have only just (late I'm 
>> afraid!) got round to looking at it. A few general comments...
>> 
>> 1. OO vs. functional
>> I can understand specifying in one language - no problem. But you need 
>> to show read across to different languages and systems.

The spec for now is supposed to be language independent - we
will define language bindings as soon as that spec
stabilizes.


>> 2. Task
>> Didn't understand this at all! Are you proposing to support 5 different 
>> systems or expecting one to be selected from these 5?

Oh - I wonder if we sent you an old version?  Its definitely
only one system - this one:

package SAGA version 0.1 {
  package TaskSubsystem {
    enum State {
      Pending   =  0,
      Running   =  1,
      Finished  =  2,
      Cancelled =  3
    };
    interface Task {
      run      ();
      wait     (in double timeout,
                out boolean finished);
      cancel   ();
      getState (out State    state);
    }
    class TaskContainer {
      addTask    (in Task           task);
      removeTask (in Task           task);
      wait       (in double         timeout,
                  out array<Task,1> finished);
      listTasks  (out array<Task,1> tasks);
    }
  }
}

Example:

  Directory dir;
  Job       job;
  
  DirectoryTaskFactory dtf = dir.createTaskFactory ();
  JobTaskFactory       jtf = job.createTaskFactory ();
  
  Task t1 = dtf.ls         (result);
  Task t2 = dtf.copy       (source,target);
  Task t3 = dtf.move       (source,target);
  Task t4 = jtf.checkpoint ();
  Task t5 = jtf.signal     (USR);

  t1.run ();
  t2.run ();
  ...

  TaskContainer tc;
  tc.addTask (t1);
  tc.addTask (t2);
  ...

  Array finished;
  tc.wait (timeout, finished);
  
  Array tasks;
  tc.listTasks  (tasks);
  tc.removeTask (t5);
  

>> 3. Security
>> Inconsistent use of security - it appears in the stream section but 
>> nowhere else. I think this is very wrong. Not specifying a security 
>> system makes sense, but I think all of thes emethods should have a 
>> security token being passed into them or it should be an argument in the 
>> relevant object constructor.

We have to flesh out a session handle like thing, which is
also to encapsulate security.  You are right - huge missing
piece...


>> 4. URL - P10
>> I assume the URL can support a number of protocols - 
>> http/https/file/gridftp. I see no way to register plugins in the 
>> interface (may be this is an 'internal' interface as opposed to a user 
>> funtion. Maybe there needs to be aet of interfaces to help the 
>> developers, e.g. register protocol plugins.

That is an implementation issue, really.  We could imagine
SAGA implementations which can only handle gsi and gridftp,
and other implementations which have a plugin mechanism and
can handle all types of protocols.

The latter is better we think, but the API spec does not
specify the implementation and architecture.


>> 6. Focus
>> The large number of APIs makes the document appear un-focuses. You 
>> mention a focus on tier 1 interfaces (which is good) but is this the 
>> whole document or a subset of the current draft? If its the whole 
>> document I think you need to drop more! Have this document as a 
>> framework but take forward a smaller document for standardisation. Samll 
>> is better!

Smaller is better for standardization, but also makes the
API less usefull, und less consistent over the various
parts.  We have been pondering quite a while over this.  

What would be your suggestion for a better document
structure?


>> 7. Partial Implementations
>> How are you going to handle partial functionality implementations? 
>> Should _all_ operations support a NotImplementedException ? Should there 
>> be a stndard static method in each section to discover what is 
>> implemented? e.g. supported protocols & supported methods.

Good one, we should document this: we think all
implenmentations hsould provide all methods (so no compile
problems), but can return an NotImplemented Exception.  That
is neccesary in particular if you have an plugin enabled
implementation...


>> 8. SAGA File Transfer.
>> You have an 'LSF' schema for >>, >, < & <<. But in the file/directory 
>> area you use a series of attribute flags. I think you should carry these 
>> attribute flags forward into the job definition area - either way I 
>> think you should have one model not two!

Right, we should check this.

>> General Thoughts
>> The document needs to be broken up IMHO - either into sections or 
>> individual documents.
>> I. General Model. Language mapping. Standard attribute model. Security. 
>> Tasks
>> II. Tier 1 Interfaces.
>> III Tier 2 and above Interfaces.

Ah, here is the proposed structure :-)

Language mappings go into specific documents anyway.  
To separate attributes, security and tasks seems a good
approach - they are common to all classes.

I am not sure if I understand your distinction between 
Tier 1 and Tier 2 - could you give an example please?


>> This would make it clearer what you are doing now & the constructs & 
>> concepts that you are using to build the model.
>> 
>> Hope that helps! Happy to clarify any of the above...
>> 
>> Regards,
>> 
>> Steven
-- 
+-----------------------------------------------------------------+
| Andre Merzky                      | phon: +31 - 20 - 598 - 7759 |
| Vrije Universiteit Amsterdam (VU) | fax : +31 - 20 - 598 - 7653 |
| Dept. of Computer Science         | mail: merzky at cs.vu.nl       |
| De Boelelaan 1083a                | www:  http://www.merzky.net |
| 1081 HV Amsterdam, Netherlands    |                             |
+-----------------------------------------------------------------+
o





More information about the saga-rg mailing list