Ah yeah it should, you are welcome to fix that. On Wed, Jun 1, 2016 at 3:11 PM, Luca Burgazzoli <lburgazz...@gmail.com> wrote: > I did had a look but as it does not use > KubernetesDnsServiceCallExpression I'm having hard times to figure out > how it works, shouldn't KubernetesDnsServiceCallExpression be used > instead of KubernetesServiceCallExpression ? > > --- > Luca Burgazzoli > > > On Wed, Jun 1, 2016 at 2:54 PM, Claus Ibsen <claus.ib...@gmail.com> wrote: >> On Wed, Jun 1, 2016 at 2:53 PM, Luca Burgazzoli <lburgazz...@gmail.com> >> wrote: >>> --- >>> Luca Burgazzoli >>> >>> >>> On Wed, Jun 1, 2016 at 2:44 PM, Luca Burgazzoli <lburgazz...@gmail.com> >>> wrote: >>>> --- >>>> Luca Burgazzoli >>>> >>>> >>>> On Wed, Jun 1, 2016 at 9:13 AM, Luca Burgazzoli <lburgazz...@gmail.com> >>>> wrote: >>>>> Will fix them today >>>>> --- >>>>> Luca Burgazzoli >>>>> >>>>> >>>>> On Wed, Jun 1, 2016 at 8:56 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: >>>>>> Hi >>>>>> >>>>>> Looks good there is only a few spots I have some comments. >>>>>> >>>>>> - There is some code that has not null check for load balancer / >>>>>> server list strategy. The kubernetes component can do without that >>>>>> when you use ENV or DNS as lookup. >>>> >>>> Can you point me out to such places ? >>>> >>> >>> Sorry found it, in fact now Env returns an immutable list which >>> contains a single server. >>> BTW, was DNS support complete in Kubernetes ServiceCall ? looking at >>> the code looks like ip/port are never set >>> >> >> The DNS uses a domain name that includes the service name but without >> ip and port number. And then it has some convention for a prefix / >> suffix etc. >> >> But yeah it may need a bit more look and testing running on a k8s platform. >> >> >> >>>>>> >>>>>> - There was a place where you do some logging and it says Consul when >>>>>> its in fact generic >>>>>> >>>>>> - You have label("ServiceCall") but that label name seems wrong. eg >>>>>> notice that label is like a "tag" not a leading label in a UI form >>>>>> etc. Yeah we should maybe have named it "tag" or "group" instead. >>>>>> >>>>>> - In the Java DSL we often have it return Type so you do not change >>>>>> the type and makes the fluent easier to use. Only if you need to do >>>>>> some more advanced configuration then we have other methods that >>>>>> return the ServiceCallDefinition type so you can call specialized >>>>>> method on that in the Java DSL. >>>>>> >>>>>> >>>>>> >>>>>> serviceCall().name("foo").loadBalancer("random").end() >>>>>> // here you have the ServiceCallDefinition in the DSL to call >>>>>> specialized methods. But have to call end() to end it >>>>>> >>>>>> And then with short hand that just return type >>>>>> >>>>>> serviceCall("foo") >>>>>> // here the Type is not changed and you just want to call the >>>>>> service foo, and NOT do any other configuration. Then you do not need >>>>>> the end() >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Tue, May 31, 2016 at 4:54 PM, Luca Burgazzoli <lburgazz...@gmail.com> >>>>>> wrote: >>>>>>> I've committed some more code to my branch [2], it is not yet complete >>>>>>> (i.e. I still have to make ribbon code to use the new common classes >>>>>>> and some APIs are not clean enough) but a feedback would be really >>>>>>> welcome. >>>>>>> >>>>>>> --- >>>>>>> Luca Burgazzoli >>>>>>> >>>>>>> >>>>>>> On Mon, May 30, 2016 at 10:55 AM, Claus Ibsen <claus.ib...@gmail.com> >>>>>>> wrote: >>>>>>>> On Mon, May 30, 2016 at 10:49 AM, Luca Burgazzoli >>>>>>>> <lburgazz...@gmail.com> wrote: >>>>>>>>> So like serviceCall("myServiceCall").configurationRef("myConf") ? >>>>>>>> >>>>>>>> Yeah there is already a DSL for that named >>>>>>>> serviceCallConfiguration("myConf") >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> --- >>>>>>>>> Luca Burgazzoli >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mon, May 30, 2016 at 10:26 AM, Claus Ibsen <claus.ib...@gmail.com> >>>>>>>>> wrote: >>>>>>>>>> On Mon, May 30, 2016 at 10:16 AM, Luca Burgazzoli >>>>>>>>>> <lburgazz...@gmail.com> wrote: >>>>>>>>>>> do you mean something like serviceCallRef("myServiceCall") ? >>>>>>>>>>> --- >>>>>>>>>> >>>>>>>>>> No you need to provide >>>>>>>>>> >>>>>>>>>> - a) name of service to call >>>>>>>>>> - b) reference to configuration of service >>>>>>>>>> >>>>>>>>>> a = mandatory >>>>>>>>>> b = optional. As if there is only 1 configuration then use that. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> Luca Burgazzoli >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Sun, May 29, 2016 at 9:42 AM, Claus Ibsen >>>>>>>>>>> <claus.ib...@gmail.com> wrote: >>>>>>>>>>>> On Thu, May 26, 2016 at 7:30 PM, Luca Burgazzoli >>>>>>>>>>>> <lburgazz...@gmail.com> wrote: >>>>>>>>>>>>> --- >>>>>>>>>>>>> Luca Burgazzoli >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Thu, May 26, 2016 at 7:06 PM, Claus Ibsen >>>>>>>>>>>>> <claus.ib...@gmail.com> wrote: >>>>>>>>>>>>>> Hi Luca >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yeah its good to get more eyes on this new set of code. When I >>>>>>>>>>>>>> created >>>>>>>>>>>>>> kubernetes and ribbon there was sure some overlap of code that >>>>>>>>>>>>>> could >>>>>>>>>>>>>> be shared, but I didn't push for much default/abstract code in >>>>>>>>>>>>>> camel-core because there its new code and I also wanted to see >>>>>>>>>>>>>> what >>>>>>>>>>>>>> consul, etcd, zookeeper and other distributed systems may >>>>>>>>>>>>>> need/require. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I like the idea of the impl.remote package to have some base >>>>>>>>>>>>>> implementation there. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Your current branch [2] has a good set of reusable code although >>>>>>>>>>>>>> its >>>>>>>>>>>>>> tied to consul currently, so that would need to be made abstract >>>>>>>>>>>>>> so it >>>>>>>>>>>>>> can be reuse by kuernetes and maybe also ribbon as well (where it >>>>>>>>>>>>>> makes sense). >>>>>>>>>>>>> >>>>>>>>>>>>> I've removed some consul specific stuffs that I left by mistake, >>>>>>>>>>>>> should be >>>>>>>>>>>>> a little tidy now. >>>>>>>>>>>>> >>>>>>>>>>>>> An aspect to take into account is how to make it easy to configure >>>>>>>>>>>>> ServiceCallServerListStrategy in case we use >>>>>>>>>>>>> DefaultServiceCallProcessor >>>>>>>>>>>>> maybe something like: >>>>>>>>>>>>> >>>>>>>>>>>>> serviceCall() >>>>>>>>>>>>> .name("my-service") >>>>>>>>>>>>> .roundRobinLoadBalancer() >>>>>>>>>>>>> .consulServerListStrategy() >>>>>>>>>>>>> .type(Strategy.ON_DEMAND) >>>>>>>>>>>>> .url("http://consul-host:8500") >>>>>>>>>>>>> .dc("west") >>>>>>>>>>>>> .end() >>>>>>>>>>>>> >>>>>>>>>>>>> Too ugly ? >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Yeah possible - its always tricky to find the right balance. >>>>>>>>>>>> >>>>>>>>>>>> I wonder if you may want to do this in the configuration, and then >>>>>>>>>>>> in >>>>>>>>>>>> the routes with serviceCall you then just need to refer to the >>>>>>>>>>>> service >>>>>>>>>>>> name / url to be used - then all the round robin, service list, >>>>>>>>>>>> and so >>>>>>>>>>>> on are configured outside the route in the configuration. >>>>>>>>>>>> >>>>>>>>>>>> We could also leave those in the route DSLs as well so you can >>>>>>>>>>>> override the configuration, so you can use >>>>>>>>>>>> >>>>>>>>>>>> serviceCall().name("foo").consulConfiguraiton().dc("west").end() >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> But then on the other hand if you just want to call a single >>>>>>>>>>>> service >>>>>>>>>>>> you may want to do it all in the route without the configuration. >>>>>>>>>>>> But >>>>>>>>>>>> if we look at rest-dsl then it separates the configuration from the >>>>>>>>>>>> REST endpoint. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> An aspect we haven't added yet could be to find out if we can >>>>>>>>>>>>>> expose >>>>>>>>>>>>>> some JMX attributes and operations for thise service call EIP as >>>>>>>>>>>>>> well? >>>>>>>>>>>>>> And then maybe some Camel commands so you can manage/list it from >>>>>>>>>>>>>> karaf and other CLIs. But this part is more "nice to have" and a >>>>>>>>>>>>>> bit >>>>>>>>>>>>>> "eye candy" but still somewhat cool. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Thu, May 26, 2016 at 4:13 PM, Luca Burgazzoli >>>>>>>>>>>>>> <lburgazz...@gmail.com> wrote: >>>>>>>>>>>>>>> Hello, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I'm playing a little bit with the new ServiceCall EIP by adding >>>>>>>>>>>>>>> support for >>>>>>>>>>>>>>> consul service discovery and I've committed some code in my own >>>>>>>>>>>>>>> branch [1]. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I borrowed most of the code from camel-kubernetes and as it >>>>>>>>>>>>>>> ended up being >>>>>>>>>>>>>>> almost a clone, I've tried to make some base/default classes as >>>>>>>>>>>>>>> what really >>>>>>>>>>>>>>> make the difference is the implementation of >>>>>>>>>>>>>>> ServiceCallServerListStrategy >>>>>>>>>>>>>>> and ServiceCallLoadBalancer so to add a simple discovery engine >>>>>>>>>>>>>>> you only >>>>>>>>>>>>>>> need to implement your own ServiceCallServerListStrategy and >>>>>>>>>>>>>>> eventually your >>>>>>>>>>>>>>> own ServiceCallLoadBalancer (i.e. for ribbon). >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Does it make sense ? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> [1] https://github.com/lburgazzoli/apache-camel/tree/CAMEL-9989 >>>>>>>>>>>>>>> [2] >>>>>>>>>>>>>>> https://github.com/apache/camel/compare/master...lburgazzoli:CAMEL-9989?expand=1 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> --- >>>>>>>>>>>>>>> Luca Burgazzoli >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> Claus Ibsen >>>>>>>>>>>>>> ----------------- >>>>>>>>>>>>>> http://davsclaus.com @davsclaus >>>>>>>>>>>>>> Camel in Action 2: https://www.manning.com/ibsen2 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Claus Ibsen >>>>>>>>>>>> ----------------- >>>>>>>>>>>> http://davsclaus.com @davsclaus >>>>>>>>>>>> Camel in Action 2: https://www.manning.com/ibsen2 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Claus Ibsen >>>>>>>>>> ----------------- >>>>>>>>>> http://davsclaus.com @davsclaus >>>>>>>>>> Camel in Action 2: https://www.manning.com/ibsen2 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Claus Ibsen >>>>>>>> ----------------- >>>>>>>> http://davsclaus.com @davsclaus >>>>>>>> Camel in Action 2: https://www.manning.com/ibsen2 >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Claus Ibsen >>>>>> ----------------- >>>>>> http://davsclaus.com @davsclaus >>>>>> Camel in Action 2: https://www.manning.com/ibsen2 >> >> >> >> -- >> Claus Ibsen >> ----------------- >> http://davsclaus.com @davsclaus >> Camel in Action 2: https://www.manning.com/ibsen2
-- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2