>
> I thought I could invoke a task from the on() block and have it execute a
> task/function, but I had mixed results when I did that.  I also wasn't sure
> of that was really how that was intended to be used.


For whatever it's worth you can write your code in classes, and then just
pass the SSHKit context into them:


   -
   https://github.com/capistrano/capistrano/blob/master/lib/capistrano/git.rb
   -
   
https://github.com/capistrano/capistrano/blob/master/lib/capistrano/tasks/git.rake#L3
   (note passing `self`)


This would allow you to do some testing, however....

The on() block is the unit of synchronisation, one on() block will wait for
> all servers to complete before it returns.

 -- SSHKit README.md
> <https://github.com/capistrano/sshkit/blob/master/README.md#synchronisation>


If you can send me some pseudo code of what you wanted to work, I'd be more
than glad to try and go a bit deeper, it's also worth pointing out that
there's a pretty decent split between the task structure
(`namespace`/`task` from Rake, which makes up the Capistrano DSL) and the
underlying *do something on a server* code (SSHKit) ... the latter should
be threadsafe as the parallel() helpers in SSHKit make liberal use of
threads...

What I'm trying to say is:

   - You can:
      - Write your own classes (and, test them!)
      - Avoid our synchronisation primitives and use threads if ours don't
      work

I hope that helps, but I must admit that a handful of lines of pseudo code
from your end would raise my confidence factor in making suggestions 10x.

Cheers, Lee


Lee Hambley
http://lee.hambley.name/
+49 (0) 170 298 5667

On 18 March 2016 at 04:48, Eric Rutherford <erutherf...@gmail.com> wrote:

> Hello Lee
> No problem at all on the length of time for the response (I actually
> considered it to be pretty quick) and I appreciate your time on the
> matter.
>
> I think the problem may be that the tasks I'm trying to group together are
> ones that are executed on the host and others that are executed by the
> capistrano run.  For example I've built a capistrano plugin for
> de-registering and registering our nodes with our AWS ELBs.  I'd like to
> call that deregistration task on the same node that I'm restarting the
> service for, then call the registration task after the restart before
> de-registration/restart task on the next node.
>
> I thought I could invoke a task from the on() block and have it execute a
> task/function, but I had mixed results when I did that.  I also wasn't sure
> of that was really how that was intended to be used.
>
> Any hints or a kick in the right direction would be greatly appreciated.
>
> Eric
>
> On Thursday, March 17, 2016 at 1:46:00 AM UTC-5, Lee Hambley wrote:
>>
>> HI Eric,
>>
>> Certainly if you're looking for restricting, or choosing your preferred
>> kind of parallelism/concurrency for your own tasks you are in the right
>> place with the `on(in: ....)` functions (
>> https://github.com/capistrano/sshkit/blob/master/README.md#parallel)
>>
>> For Capistrano and it's plugins you are at the mercy of the maintainers
>> (yours truly) or the plugin authors to have exposed the concurrency
>> settings.
>>
>> If there's any more I can help with (long question, short answer!) I'm
>> more than happy, just drop me a note, you shouldn't have to wait 20h in the
>> moderation queue whilst I ignore your email next time ;-)
>>
>> Lee Hambley
>> http://lee.hambley.name/
>> +49 (0) 170 298 5667
>>
>> On 16 March 2016 at 19:24, Eric Rutherford <eruth...@gmail.com> wrote:
>>
>>> Versions:
>>>
>>>    - Ruby 2.0.0
>>>    - Capistrano 3.4.0
>>>
>>> I'm trying to work out a solution to limit the number of servers that a
>>> group of tasks (remove from load balancer, push code, restart service, add
>>> back to load balancer for example) can run on at a time.  I've been digging
>>> through past conversations and documentation, but I've failed to find a
>>> solution with capistrano 3.x so far.  I've found some examples from v2.x,
>>> but most of the work in that example relied on features that are no longer
>>> in existence.  I've been working through creating a custom deploy task that
>>> specifies "in: :sequence" and calls outside tasks, but I'm not sure if I'm
>>> on the right track and figured that I might ask for some pointers (or a
>>> push in the right direction) before I head too far in the wrong direction.
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Capistrano" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to capistrano+...@googlegroups.com.
>>> To view this discussion on the web, visit
>>> https://groups.google.com/d/msgid/capistrano/cf49591c-0be0-44d6-b1b3-c44bf2027a91%40googlegroups.com
>>> <https://groups.google.com/d/msgid/capistrano/cf49591c-0be0-44d6-b1b3-c44bf2027a91%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Capistrano" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to capistrano+unsubscr...@googlegroups.com.
> To view this discussion on the web, visit
> https://groups.google.com/d/msgid/capistrano/d71a508b-e9f5-44f8-a5e0-510b28f6a517%40googlegroups.com
> <https://groups.google.com/d/msgid/capistrano/d71a508b-e9f5-44f8-a5e0-510b28f6a517%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Capistrano" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to capistrano+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/capistrano/CAN_%2BVLWApS8bCdtUtbxzz8bhNmby%2BAjHdaKANVDSheTLu10RAw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to