Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 3C584200B12 for ; Sun, 12 Jun 2016 20:46:54 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 39CDF160A2C; Sun, 12 Jun 2016 18:46:54 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 5C0A7160A04 for ; Sun, 12 Jun 2016 20:46:53 +0200 (CEST) Received: (qmail 98324 invoked by uid 500); 12 Jun 2016 18:46:52 -0000 Mailing-List: contact dev-help@aurora.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@aurora.apache.org Delivered-To: mailing list dev@aurora.apache.org Received: (qmail 98312 invoked by uid 99); 12 Jun 2016 18:46:51 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 12 Jun 2016 18:46:51 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 33259C1B14 for ; Sun, 12 Jun 2016 18:46:51 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.802 X-Spam-Level: X-Spam-Status: No, score=-0.802 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=chartbeat.com Received: from mx2-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id jl7zxG9tIomF for ; Sun, 12 Jun 2016 18:46:48 +0000 (UTC) Received: from mail-qg0-f53.google.com (mail-qg0-f53.google.com [209.85.192.53]) by mx2-lw-us.apache.org (ASF Mail Server at mx2-lw-us.apache.org) with ESMTPS id 94D695F485 for ; Sun, 12 Jun 2016 18:46:48 +0000 (UTC) Received: by mail-qg0-f53.google.com with SMTP id p34so58793718qgp.1 for ; Sun, 12 Jun 2016 11:46:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chartbeat.com; s=google; h=from:content-transfer-encoding:mime-version:subject:message-id:date :references:in-reply-to:to; bh=5DQlwIVEYa+uaMSy0TZyXcPqn3VDOQ7Sl7ZrB1MEVoc=; b=N2nm6uyIc7tlgTSytpcZZF+cUJHPuP/HMfnM4XfUqqWCAdALX7+TfBHX+iRAP/lVqn eeUlBSB5O6s2r0T6r3Hgtr41MRf1FWsg57VG6LorzuTs+d9WJaODRXoFybbr/g3RRzU/ clpKyaLgVUr+PKtotDeq2zHZZzH7Q8wKXgDe0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:message-id:date:references:in-reply-to:to; bh=5DQlwIVEYa+uaMSy0TZyXcPqn3VDOQ7Sl7ZrB1MEVoc=; b=b9ax9w6T6vrsUusLt4FFytQLdgfTNJ2QMrrZYWLNXVr4TfPIfC+jYh42676Jsgo0J/ 1h1yHcT3dE4jU4kT8d/FkwyyinGu7UrmK3m9pcT+4KwYDjxxfuRt+KFupGFbdXUpeOr5 CnjPOlAQsByP0Z9jY09V8fOVOCJ9fCqvbsaLHKAFGGyjIN9EEkmY4/4tvBJOv3UG0aA8 XeaBcnhak7YEGs7cj4q9F9enR0vL0XCzw6aVMVtJlKcxfZbCmB6cHasX4/bDSU2rJ74s 9ekGCsqUx8bgqybPAldnSppic3KXL9YLf3zkBmLB/YSeh1BOylZ6oh43vxcD6Er1gat9 P3rg== X-Gm-Message-State: ALyK8tKW3wpejJQjSr4NByhHdkd1l68QIqWEztqgf5ESo6ir0tWRnXjgFdmjk1R5bDcVYaWq X-Received: by 10.140.25.150 with SMTP id 22mr11105727qgt.34.1465757207610; Sun, 12 Jun 2016 11:46:47 -0700 (PDT) Received: from [10.251.123.120] (mobile-107-107-61-206.mycingular.net. [107.107.61.206]) by smtp.gmail.com with ESMTPSA id f41sm5988426qtf.41.2016.06.12.11.46.30 for (version=TLSv1/SSLv3 cipher=OTHER); Sun, 12 Jun 2016 11:46:47 -0700 (PDT) From: rick@chartbeat.com Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (1.0) Subject: Re: Golang Aurora lib, multiple executor support, integrate mesos task related fields Message-Id: Date: Sun, 12 Jun 2016 14:46:27 -0400 References: <1724384244.604007.1465519462526.JavaMail.yahoo@mail.yahoo.com> In-Reply-To: To: dev@aurora.apache.org X-Mailer: iPhone Mail (13F69) archived-at: Sun, 12 Jun 2016 18:46:54 -0000 I generally shy away from technical goals that are based on a choice of lang= uage. What is it about a go client that can't be done by extending the exist= ing client? > On Jun 12, 2016, at 2:00 PM, Renan DelValle wrot= e: >=20 > Hi David, >=20 > On Fri, Jun 10, 2016 at 12:33 AM, David McLaughlin = > wrote: >=20 >> On Thu, Jun 9, 2016 at 5:44 PM, meghdoot bhattacharya < >> meghdoot_b@yahoo.com.invalid> wrote: >>=20 >>> Comments inline >>>=20 >>> From: David McLaughlin >>> To: dev@aurora.apache.org >>> Sent: Thursday, June 9, 2016 5:13 PM >>> Subject: Re: Golang Aurora lib, multiple executor support, integrate >>> mesos task related fields >>>=20 >>> On Thu, Jun 9, 2016 at 2:21 PM, Renan DelValle = >>> wrote: >>>=20 >>>> Hello all, >>>>=20 >>>> I'd like to (re-)introduce myself. My name's Renan DelValle and I've >> had >>>> the pleasure of being part of the Aurora community for the last year or= >>> so. >>>>=20 >>>> Last year I worked to allow Aurora to utilize custom executors. With >> the >>>> help from Bill Farner, Kevin Sweeney, and Joshua Cohen, that feature >>> became >>>> a reality and made into Aurora late last year. (Also got to show an >> early >>>> beta at MesosCon!) >>>>=20 >>>> For this year's summer, I have some new goals which I invite anyone to >>>> provide input on. >>>>=20 >>>> 1. Create a Golang library that works as an alternative to Aurora's >>> Python >>>> client and Pystachio. The initial goal of this library is to support >> the >>>> most critical job related Thrift API's. (Admin operations can continue >> to >>>> be done from the Aurora CLI). Since we support custom executors, we >> need >>> a >>>> way that's not so tied to thermos (as Pystachio is) to send jobs >>>> configurations to Aurora (and by extension the custom executor). >>>=20 >>>=20 >>> You can easily add support for a different configuration format without >>> having to rewrite the CLI in Go. You'd do that by adding your own custom= >>> noun/verbs to the client or replacing existing commands. For example, at= >>> Twitter we have our own version of 'aurora update start' that plugs into= >> an >>> internal Deploy Orchestration Service and we have a whole other command >> for >>> federated deploys. I can show you how we do that. >>>=20 >>> The first thing I thought of though was - this seems like a perfect >>> starting point to get serious about a HTTP+JSON API for Aurora. Having >> that >>> would make it trivial to do a CLI in any language you want, and the >> Python >>> CLI would really only be there to do Pystachio evaluation. >>>>> CLI integrations is not useful for a lot of different reasons. We need= >>> API's from other orchestration points from different components and henc= e >>> we would package it in a go library. Uber, I believe has taken the same >>> route (info from this mesoscon) >>> We are not writing a replacement cli tool. As noted admin operations >> would >>> heavily leverage current aurora cli. >>> I think REST work has been postponed and attempted few times in past. We= >>> cannot wait for that. >>=20 >>=20 >> This is the dev list for contributions to the project, so I assumed we we= re >> discussing adding a Go CLI to Apache Aurora. Our API is Thrift and Thrift= >> has Go bindings so you're all set for whatever custom tooling you're >> building. Please use the users list for feedback on that. >=20 >=20 > While I'm very thankful for your input on the matter, my original text ver= y > clearly said: > "1. Create a Golang library that works as an *alternative* to > Aurora's Python client and Pystachio." >=20 > I believe every single item I have listed has the potential to become a > useful contribution to this project. > Therefore, I feel that it is prudent continue the discussion here (unless > others feel similarly). >=20 > -Renan >=20 >>=20 >>>=20 >>>=20 >>>>=20 >>>> 2. Create support for using multiple executors within a single Aurora >>>> scheduler instance. As of right now, only a single executor can exist >> for >>>> each Aurora scheduler instance. The idea is to allow the Aurora >> scheduler >>>> to support multiple executors such that they can be used alongside one >>>> another, providing flexibility for running jobs. >>>=20 >>> Just for my own understanding - what problems are you solving with your >>> custom executor? Sorry if you've explained this to the lists before. >>>=20 >>> I ask because I'd really like to see Aurora stop treating the executor >>> config as an opaque blob and being more opinionated. The >> Thermos/Scheduler >>> abstraction really hinders what type of user experience (UI) we can >> build, >>> and other frameworks do a much better job by being more opinionated and >>> pulling executor data into the scheduler UI. >>>>> We probably don't need to debate on this point. Executor is a first >>> class mesos citizen and time is right for aurora to have good support fo= r >>> it.In our case, we have kubernetes like pods modeled through >> docker-compose >>> and the executor manages that. Scheduler UI main features should not get= >>> bogged down or be held back for a particular executor. That feels >>> incredibly restrictive. If a special UI mode for thermos executor is >>> created, that should be fine. We do have to differentiate the scheduler >> and >>> thermos and aurora team has done a great job of not hard coupling the >> two. >>=20 >>=20 >>>>=20 >>>> 3. I'd like to add support for some first class Mesos task related >>> fields. >>>> These would be optional and/or have defaults so that the regular Aurora= >>> CLI >>>> does not break. One of the examples I'm interested in integrating is >> the >>>> Mesos Fetcher so that resources can be downloaded into the sandbox that= >>> the >>>> custom executor may need. (The executor path will never be exposed as >>> this >>>> will be defined serverside and be static). >>>=20 >>>=20 >>> Wouldn't the mesos-fetcher call just be another process to be passed to >>> your executor? I have to admit I don't know enough about how the Mesos >>> fetcher works. >>>>> Apache Mesos - Fetcher >>=20 >>=20 >>=20 >>> We may add other first class fields. >>>=20 >>>=20 >>>>=20 >>>> If anyone has any feedback on these, I'd be very glad to hear it. >>>>=20 >>>> That's it for me for now, thanks! >>>>=20 >>>> -Renan >>>=20 >>>=20 >>>=20 >>>=20 >>> | >>> | >>> | >>> | | | >>>=20 >>> | >>>=20 >>> | >>> | >>> | | >>> Apache Mesos - Fetcher >>> | | >>>=20 >>> | >>>=20 >>> | >>=20