On Fri, 2014-06-06 at 06:58 -0400, James wrote:
> On Mon, Jun 2, 2014 at 4:46 AM, Ludwig Krispenz <lkris...@redhat.com> wrote:
> > Ticket 4302 is a request for an enhancement: Move replication topology to
> > the shared tree
> 
> 
> One comment to add:
> 
> It would be particularly useful if the interface used to set the
> topology is something sane that a single host can use to set its
> peers. Eg:
> 
> host1$ ipa-topology-set-peers host2
> host2$ ipa-topology-set-peers host3
> host3$ ipa-topology-set-peers host4
> host4$ ipa-topology-set-peers host1 # redundant, but okay...
> 
> This way config management could define topologies in terms of algorithms. Eg:
> 
> Ring topology:
> Order hostnames alphabetically.
> Peer with host name index of self + 1
> (Example shown above)
> 
> Star topology:
> Peer with every other host in list
> 
> Pick two topology:
> Peer with each subsequent hosts in ordered list...
> 
> And so on...
> If running the command changes the topology again, then that's great
> because changing the algorithm would re-arrange the graph :)
> 
> Hope this made sense.

Oh it does!

But I am dreaming even bigger, my aim is to end up (in the long run)
with something like:

ipa topology change --stellar host1 host2 host3 host4 host5

causes topology for those 5 servers only (ignores any other connection)
to become:

        host2
          |
host3 - host1 - host5
          |
        host4

So any agreement between host1 and 2,3,4,5 get wiped and replaced with
the stellar topology. (agreements between 1,2,3,4,5 and 6,7,8,9 are not
affected in any way and stay).

And later on you'd be able to say
ipa topology change --circular host1 host2 host3 host4

and you get:

host1 - host2
  |       |
host4 - host3

Note that if you previously did the stellar thing and you only have
these 5 servers the actual complete topology ends up being like this:

host5
  |
host1 - host2
  |       |
host4 - host3

As the agreement between host1 and host5 is not touched by the second
command.

But this is in the far future IMO, we'll probably start by only
implementing:

ipa topology set-peering host1 host2
and
ipa topology break-peering host3 host4

Ie creating and breaking segments in the topology tree only between
pairs and storing/deleting the segment object in the shared tree.

The reason is that the topology plugin will allow or disallow changes
based on whether you are breaking the graph, and it is much simpler to
do that if you change one object at a time. To do the nifty stuff above
we'd need some staging area where we describe all the changes and then
have a "commit" type change that would cause the topology plugin to do
all the calculations and move stuff around inside at once (or refuse the
commit if the change as a whole breaks the graph).

HTH,
Simo.

-- 
Simo Sorce * Red Hat, Inc * New York

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to