-
Notifications
You must be signed in to change notification settings - Fork 23
THE BIG DIFF
... 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.
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**
- NOT IMPLEMENTED -- NOT IN SCOPE FOR SP-1**