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>
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)
+    }