Tony Asleson
2014-04-09 19:22:55 UTC
Gris has crafted a [proposal for
review](https://sourceforge.net/p/libstoragemgmt/wiki/Python_API_Usage/#118-volume-replication-lsmvolumereplication)
We had a good discussion on IRC today with some possible modifications
to it. These are some notes that pertaining to this discussion. I
started out creating a wiki page, but email seems like a better way to
keep track of the discussion.
* Relationships between volumes and their change in relationship
shouldn't cause one or more volumes to be deleted. This is a principle
of least astonishment. Users should have to make a call to
volume_delete to destroy a volume. We should also note that the source
and destination volume may be mapped to initiators while relationships
are changed.
* Ideally users shouldn't be able to call a method that clearly won't
work for all arrays for a specific relationship type, because it just
doesn't make sense for any (eg. two existing volumes and create a delta
relationship, although this might be possible with some arrays and
de-dupe). How can we achieve this and be language agnostic (C & Python)?
* When a user wants a volume deleted, should they have to transverse a
dependency chain splitting&removing dependencies which may or may not
exist or should we do this internally in the library for them? Some
arrays will have nothing to do, some will have a ton of things to do.
* Should we even list relationships between full separate copies of
volumes if an array supports that when some will not? Perhaps a better
statement would be lets only list relationships that cause the client to
do something to act upon for some operations?
* Creating & maintaining mirrors is an obvious need in the API and needs
to be exposed. Do the differences in delta copies and full copies need
this too?
I was going to throw a proposal for modifications to Gris's design, but
I thought I would step back and have this discussion first.
Thoughts/comments?
Regards,
Tony
review](https://sourceforge.net/p/libstoragemgmt/wiki/Python_API_Usage/#118-volume-replication-lsmvolumereplication)
We had a good discussion on IRC today with some possible modifications
to it. These are some notes that pertaining to this discussion. I
started out creating a wiki page, but email seems like a better way to
keep track of the discussion.
* Relationships between volumes and their change in relationship
shouldn't cause one or more volumes to be deleted. This is a principle
of least astonishment. Users should have to make a call to
volume_delete to destroy a volume. We should also note that the source
and destination volume may be mapped to initiators while relationships
are changed.
* Ideally users shouldn't be able to call a method that clearly won't
work for all arrays for a specific relationship type, because it just
doesn't make sense for any (eg. two existing volumes and create a delta
relationship, although this might be possible with some arrays and
de-dupe). How can we achieve this and be language agnostic (C & Python)?
* When a user wants a volume deleted, should they have to transverse a
dependency chain splitting&removing dependencies which may or may not
exist or should we do this internally in the library for them? Some
arrays will have nothing to do, some will have a ton of things to do.
* Should we even list relationships between full separate copies of
volumes if an array supports that when some will not? Perhaps a better
statement would be lets only list relationships that cause the client to
do something to act upon for some operations?
* Creating & maintaining mirrors is an obvious need in the API and needs
to be exposed. Do the differences in delta copies and full copies need
this too?
I was going to throw a proposal for modifications to Gris's design, but
I thought I would step back and have this discussion first.
Thoughts/comments?
Regards,
Tony