cros_generate_stateful_update_payload: Move to paygen

There is only one function which needs to go to paygen instead to be used
directly by other callers instead of calling the script itself.

BUG=chromium:862679
TEST=cros_generate_stateful_update_payload
TEST=unittests

Change-Id: I8788f75b11523d0fff3ede525199de24e712f66e
Reviewed-on: https://chromium-review.googlesource.com/1403875
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
diff --git a/scripts/cros_generate_stateful_update_payload.py b/scripts/cros_generate_stateful_update_payload.py
index fc034b7..2b921bf 100644
--- a/scripts/cros_generate_stateful_update_payload.py
+++ b/scripts/cros_generate_stateful_update_payload.py
@@ -7,55 +7,9 @@
 
 from __future__ import print_function
 
-import os
-
-from chromite.lib import constants
 from chromite.lib import commandline
-from chromite.lib import cros_build_lib
-from chromite.lib import cros_logging as logging
-from chromite.lib import osutils
 
-
-_STATEFUL_FILE = 'stateful.tgz'
-
-
-# TODO(tbrindus): move to paygen.
-def GenerateStatefulPayload(image_path, output_directory):
-  """Generates a stateful update payload given a full path to an image.
-
-  Args:
-    image_path: Full path to the image.
-    output_directory: Path to the directory to leave the resulting output.
-    logging: logging instance.
-  """
-  logging.info('Generating stateful update file.')
-
-  output_gz = os.path.join(output_directory, _STATEFUL_FILE)
-
-  # Mount the image to pull out the important directories.
-  with osutils.TempDir() as stateful_mnt, \
-      osutils.MountImageContext(image_path, stateful_mnt,
-                                (constants.PART_STATE,)) as _:
-    stateful_dir = os.path.join(stateful_mnt, 'dir-%s' % constants.PART_STATE)
-
-    try:
-      logging.info('Tarring up /usr/local and /var!')
-      cros_build_lib.SudoRunCommand([
-          'tar',
-          '-czf',
-          output_gz,
-          '--directory=%s' % stateful_dir,
-          '--hard-dereference',
-          '--transform=s,^dev_image,dev_image_new,',
-          '--transform=s,^var_overlay,var_new,',
-          'dev_image',
-          'var_overlay',
-      ])
-    except:
-      logging.error('Failed to create stateful update file')
-      raise
-
-  logging.info('Successfully generated %s', output_gz)
+from chromite.lib.paygen import paygen_stateful_payload_lib
 
 
 def ParseArguments(argv):
@@ -75,4 +29,5 @@
 def main(argv):
   opts = ParseArguments(argv)
 
-  GenerateStatefulPayload(opts.image_path, opts.output_dir)
+  paygen_stateful_payload_lib.GenerateStatefulPayload(opts.image_path,
+                                                      opts.output_dir)