Revert "Revert "Revert "Revert "Attampt1. This change should be a case for normal commit.""""

This reverts commit 41cc0ece3dcf8749a10a1618d9a8cb4b6bd4e8ec.

Reason for revert:
test revert 691433

Original change's description:
> Revert "Revert "Revert "Attampt1. This change should be a case for normal commit."""
> 
> This reverts commit 370166ca344d018349606399406f23cec58b5334.
> 
> Reason for revert:
> test revert 691222
> 
> Original change's description:
> > Revert "Revert "Attampt1. This change should be a case for normal commit.""
> >
> > This reverts commit 097312ce44e80215fc4dfbe8a6b15d7dd0985d5e.
> >
> > Reason for revert:
> > test revert 691221
> >
> > Original change's description:
> > > Revert "Attampt1. This change should be a case for normal commit."
> > >
> > > This reverts commit 7c8d57836a5776215a17497aa007407a368ab582.
> > >
> > > Reason for revert: <INSERT REASONING HERE>
> > >
> > > Original change's description:
> > > > Attampt1. This change should be a case for normal commit.
> > > >
> > > > Change-Id: I23145d004da83f4c66d7fa500033f07ab8c7cf45
> > > > Reviewed-on: https://chromium-review.googlesource.com/691358
> > > > Reviewed-by: Chan Li <chanli@chromium.org>
> > >
> > > TBR=chanli@chromium.org
> > >
> > > Change-Id: I2c99d9dd80d31ec322391943d557a4d195a5f601
> > > No-Presubmit: true
> > > No-Tree-Checks: true
> > > No-Try: true
> > > Reviewed-on: https://chromium-review.googlesource.com/691221
> > > Reviewed-by: Chan Li <chanli@chromium.org>
> >
> > Change-Id: I08016cb2bfa31e248ddef3e1ee224c4a94897a63
> > No-Presubmit: true
> > No-Tree-Checks: true
> > No-Try: true
> > Reviewed-on: https://chromium-review.googlesource.com/691222
> > Reviewed-by: Chan Li <chanli@chromium.org>
> 
> Change-Id: Ic5e361ea25198286d193a57a19f8f95c18732106
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Reviewed-on: https://chromium-review.googlesource.com/691433
> Reviewed-by: Chan Li <chanli@chromium.org>


Change-Id: I0a52580796e4a6776a88e32c54e7a1a651844eb5
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/691223
diff --git a/extract_deps_info_pipeline.py b/extract_deps_info_pipeline.py
new file mode 100644
index 0000000..994dcaa
--- /dev/null
+++ b/extract_deps_info_pipeline.py
@@ -0,0 +1,59 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+from gae_libs.gitiles.cached_gitiles_repository import CachedGitilesRepository
+from gae_libs.http.http_client_appengine import HttpClientAppengine
+from gae_libs.pipeline_wrapper import BasePipeline
+from libs.deps import chrome_dependency_fetcher
+from services import deps
+
+
+class ExtractDEPSInfoPipeline(BasePipeline):
+  """A pipeline to extract information of DEPS and dependency rolls."""
+
+  # Arguments number differs from overridden method - pylint: disable=W0221
+  def run(self, failure_info, change_logs):
+    """
+    Args:
+      failure_info (dict): Output of pipeline DetectFirstFailurePipeline.run().
+      change_logs (dict): Output of pipeline PullChangelogPipeline.run().
+
+    Returns:
+      A dict with the following form:
+      {
+        'deps': {
+          'path/to/dependency/': {
+            'revision': 'git_hash',
+            'repo_url': 'https://url/to/dependency/repo.git',
+          },
+          ...
+        },
+        'deps_rolls': {
+          'git_revision': [
+            {
+              'path': 'src/path/to/dependency/',
+              'repo_url': 'https://url/to/dependency/repo.git',
+              'new_revision': 'git_hash1',
+              'old_revision': 'git_hash2',
+            },
+            ...
+          ],
+          ...
+        }
+      }
+    """
+
+    chromium_revision = failure_info['chromium_revision']
+    os_platform = deps.GetOSPlatformName(failure_info['master_name'],
+                                         failure_info['builder_name'])
+
+    dep_fetcher = chrome_dependency_fetcher.ChromeDependencyFetcher(
+        CachedGitilesRepository.Factory(HttpClientAppengine()))
+
+    return {
+        'deps':
+            deps.GetDependencies(chromium_revision, os_platform, dep_fetcher),
+        'deps_rolls':
+            deps.DetectDependencyRolls(change_logs, os_platform, dep_fetcher)
+    }