Return-Path: X-Original-To: apmail-incubator-allura-dev-archive@minotaur.apache.org Delivered-To: apmail-incubator-allura-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2640510B5E for ; Thu, 11 Jul 2013 18:43:58 +0000 (UTC) Received: (qmail 21524 invoked by uid 500); 11 Jul 2013 18:43:58 -0000 Delivered-To: apmail-incubator-allura-dev-archive@incubator.apache.org Received: (qmail 21474 invoked by uid 500); 11 Jul 2013 18:43:57 -0000 Mailing-List: contact allura-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: allura-dev@incubator.apache.org Delivered-To: mailing list allura-dev@incubator.apache.org Received: (qmail 21466 invoked by uid 99); 11 Jul 2013 18:43:57 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 11 Jul 2013 18:43:57 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of cjohns@slashdotmedia.com designates 209.85.160.52 as permitted sender) Received: from [209.85.160.52] (HELO mail-pb0-f52.google.com) (209.85.160.52) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 11 Jul 2013 18:43:51 +0000 Received: by mail-pb0-f52.google.com with SMTP id xa12so8087429pbc.39 for ; Thu, 11 Jul 2013 11:43:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=slashdotmedia.com; s=google; h=mime-version:date:message-id:subject:from:to:content-type; bh=xPc0lELJBGrAO5JOIc0/+qgtq4i0m5x49vUR/g4K+2I=; b=Vgtl7/Eevooa+IJF5nsBWKPqCAc8StnGe7CafKRPAjBmaHnCpyJIzRSXSMHUncl/Si KldJ4DclmX2qu9Fm+d9Gl64TRyg0TVE+NfB1dT9EaLfhFfCtdHs7sM7Ng6J50a6SK9WK 9lNfiu6vxyaNVAP6nUr8Pq6M6DjT6Si9urQvg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type :x-gm-message-state; bh=xPc0lELJBGrAO5JOIc0/+qgtq4i0m5x49vUR/g4K+2I=; b=Q9qpTEQIlStOOlKWr81QGyHEsjdWZZVi2FmDygwmVZXCQ6CsHbX1K9lhldi/NbW40W h0yu7lYv884RNyXpsKtg8SF2YUQov7degxz3ln9qDuhPrudvK1BRs4aCOgyuLEDA993D KASflKyC0c2Y0WR4uZfiUzKRSeuEvfyDh8MPad0KkW/ISeL8jmkgqGbOPf4onKiRTjvR q1McEjJjMAsIzfD92XcpY3mV58I4BqWKXcxdByVXVZyLIBbpxoj7B5A+Vp8oK80z6XUG BEnRwoCrV5eK0LTZ2eEqNhi/W/lAYNlZx/q7NqaJhEj/11s87acLFVNucDdyFV46IObr zO0Q== MIME-Version: 1.0 X-Received: by 10.68.253.138 with SMTP id aa10mr2918104pbd.24.1373568210053; Thu, 11 Jul 2013 11:43:30 -0700 (PDT) Received: by 10.68.46.33 with HTTP; Thu, 11 Jul 2013 11:43:29 -0700 (PDT) Date: Thu, 11 Jul 2013 14:43:29 -0400 Message-ID: Subject: Importer framework From: Cory Johns To: allura-dev@incubator.apache.org Content-Type: multipart/alternative; boundary=047d7b2e0ff13c3e7c04e140c52e X-Gm-Message-State: ALoCoQkudF2H/YS40nDR7ijRvPodwoovxxMcb06hJzsyyhZjrFx9Z0zKerLXrtNAlY51wIhNy8yW X-Virus-Checked: Checked by ClamAV on apache.org --047d7b2e0ff13c3e7c04e140c52e Content-Type: text/plain; charset=ISO-8859-1 We're beginning to focus on improving and expanding our support for importing and exporting project data to and from Allura, and as part of that we need to develop an extensible framework for adding new import mechanisms to Allura and exposing them in the UI. New importers will need to be able to advertise both what tool they are able to import data for as well as what external source they will import their data from. The discovery mechanism will need to be able to list the importers available by tool type, so that a given tool can provide a UI to import from any supported source, or by source, so that we can provide an integrated mechanism to import an entire project and all supported data from a source. Entry points are an obvious choice for discovering importers, whether they are provided by the tool itself or a third-party library or Application to extend the tool's ability to import. My thought is to have tools or libraries add entry points to the "allura.importers" group, with each entry point class providing import capability for a single tool from a single source. Each importer would then have attributes indicating the tool it applies to, the source it imports from, and the controller for its UI. Here is an example importer stub with the attributes I'm thinking of: class GoogleTrackerImporter(class): target_app = forgetracker.tracker_main.ForgeTrackerApp source = 'Google' controller = forgeimporters.google.TrackerImportController To support full-project imports, a library could expose an entry point in the "allura.project_importers" group, which would point to a controller that coordinates importing an entire project from an external source. I believe that will allow us to tie together importers in an extensible way, yet give each importer flexibility in how it implements its import logic. What do you think? - Cory --047d7b2e0ff13c3e7c04e140c52e--