Skip to content

THE BIG DIFF

Andre Merzky edited this page Mar 12, 2015 · 2 revisions

... between Mark's and Andre's pilot API(s) and the one implemented by Ole in SAGA-Pilot, which is actually not as big of a difference as imagined ;-)

I am comparing:

    * sinon/frontend/_api
    * sinon/frontend/_v1
    with:
    * sinon/frontend 

I will try to go through this class by class. Sometimes, I will also refer to differences between files which doesn't necessarily mean differences in the resulting API.

GENERAL NOTES


  • I have implemented the Attribute interface for all classes, as originally envisioned.
file `constants.py`

This was sorta like a kitchen sink for everything, well, constants. I have removed the file and split up the content into the respective files:

    * types -> types.py
    * states -> states.py
    * attribute keys -> respective class files

class sinon.Pilot


This was an abstract base class. I have removed it because:

    * It doesn't change the API or its semantics.
    * Inheritance (esp. polymorphism) adds complexity and requires contributors / students to understand additional concepts

class sinon.Description


This was an abstract base class. I have removed it because:

    * It doesn't change the API or its semantics.
    * Inheritance (esp. polymorphism) adds complexity and requires contributors / students to understand additional concepts

class sinon.ComputePilot


    • added**:
    * __str__() method -- returns string representation of object.
      • removed**:
    * NONE
    • changed**:
    * Renamed attribute 'PID' to 'UID'. Rather than have different 'x'id for  different objects, it's easier for the user to get the id always via the same attribute. 
    • changed semantics**:
    * NONE
    • notes**:
    * The 'STATE_DETAIL' attribute returns the pilot log now.

class ComputePilotDescription


    • added**:
    * Attribute: submitted -- nice to have + more symmetric 
    * Attribute: started -- nice to have + more symmetric 
    * Attribute: finished -- nice to have + more symmetric 
    • removed**:
    * Attribute: FILE_TRANSFER (comment out) -- not support as of now
    * Attribute: SPMD_VARIATION (removed) -- we don't want to expose this to the user! 
    * Attribute: CANDIDATE_HOSTS (comment out) -- not support as of now
    * Attribute: CPU_ARCHITECTURE (comment out) -- not support as of now
    * Attribute: OPERATING_SYSTEM (comment out) -- not support as of now
    * Attribute: MEMORY (comment out) -- not support as of now
    • changed**:
    * Attribute: SLOTS renamed to CORES. SLOTS simply doesn't make any sense to most uses. CORES does. 
    • changed semantics**:
    * NONE
    • notes**:
    * NONE

class ComputeUnitDescription


    • added**:
    * NONE
    • removed**:
    * Attribute: SPMD_VARIATION (comment out) -- not support as of now
    * Attribute: CPU_ARCHITECTURE (comment out) -- not support as of now
    * Attribute: OPERATING_SYSTEM (comment out) -- not support as of now
    * Attribute: MEMORY (comment out) -- not support as of now
    * Attributes related to 'dependencies' (comment out) -- not support as of now
    * Attributes related to 'i/o' (comment out) -- not support as of now (will start working on this soon)
    * Attribute: CLEANUP (comment out) -- not support as of now
    * Attribute: STARTED (comment out) -- not support as of now
    * Attribute: RUN_TIME (comment out) -- not support as of now
    • changed**:
    * NONE
    • changed semantics**:
    * NONE
    • notes**:
   * Will start working on the 'i/o' related attributes soon

class PilotManager


    • added**:
    * Attribute Interface -- for the sake of symmetry 
    * Constructor: resource_config parameter. Implicit, 'magic' resource file management will lead to failure, misunderstandings, etc. Please let's make it explicit for now - this will make things less ambiguous and will help our users to understand things better! 
    * A get() class method for reconnect instead of having the ambiguous 'pilot_manager_id' parameter in the constructor. This makes things more explicit and easier to understand.
    • removed**:
    * NONE
    • changed**:
    * Renamed attribute 'PMID' to 'UID'. Rather than have different 'x'id for  different objects, it's easier for the user to get the id always via the same attribute. 
    * submit_pilot -> sumbit_pilots (BULK)
    * get_pilot -> get_pilots (BULK)
    * wait_pilot -> wait_pilots (BULK)
    * cancel_pilot -> cancel_pilots (BULK) 
    • changed semantics**:
    * Error handling for bulk operations has changed. No exceptions are thrown anymore in case of partial failure. I know that we said that we won't do that for SP-1, but this simply doesn't make too much sense. The new 'submit & check' idiom (see example: bulk_pilot_submission) works quite well. Obviously, it needs documentation. 
    • notes**:
    * NONE

class UnitManager


    • added**:
    * Attribute: SCHEDULER_DETAIL -- nice to have, good for e.g., scheduler logs. 
    * A get() class method for reconnect instead of having the ambiguous 'pilot_manager_id' parameter in the constructor. This makes things more explicit and easier to understand.
    • removed**:
    * Attribute 'PILOTS': redundant -- we already have 'list_pilots()'
    * Attribute 'UNITS': redundant -- we already have 'list_units()'
    • changed**:
    * add_pilot -> add_pilots (BULK)
    * remove_pilot -> remove_pilots (BULK)
    * submit_unit -> submit_units (BULK)
    * get_unit -> get_units (BULK)
    * wait_unit -> wait_units (BULK)
    • changed semantics**:
    * Error handling for bulk operations has changed. No exceptions are thrown anymore in case of partial failure. I know that we said that we won't do that for SP-1, but this simply doesn't make too much sense. The new 'submit & check' idiom (see example: bulk_pilot_submission) works quite well. Obviously, it needs documentation. 
    • notes**:
    * Some of the calls still lack proper implementation, i.e., submit_units() doesn't return the ComputeUnit objects yet. This is work in progress.

class ComputeUnit


    • added**:
    * NONE
    • removed**:
    * NONE
    • changed**:
    * Attribute SUBMIT_TIME -> submitted (sound better)
    • changed semantics**:
    * NONE
    • notes**:
    * NONE

class Context


    • NOT IMPLEMENTED YET**
    • notes**:
    * will implement this along with sionon.Session revamp. 

class Session


    • notes**:
    * will get updated to look more like (inherit from) a SAGA session.

class DataUnit


    • NOT IMPLEMENTED -- NOT IN SCOPE FOR SP-1**
class DataPilot
    • NOT IMPLEMENTED -- NOT IN SCOPE FOR SP-1**
Clone this wiki locally