Add PartitionUpdateGenerator

For a/b partial update, the payload doesn't contain all partitions
for the device to boot up. Therefore, we add a new class to generate
additional operations on top of the partial update. The class is used
in payload consumer when the install plan is created.

In specific, the new class parses for the a/b partitions not included in
the payload. Then, for static partitions, it generates SOURCE_COPY
operations to copy the bytes from the source slot to target slot. For
dynamic partitions, it only calculates the partition hash for the filesystem
verification later.

Bug: 157778739
Test: do a partial OTA
Change-Id: Ia5c64cff4655aad05311b0e7c8c8327bc2f4fd91
8 files changed
tree: fecda7a0207e8901999152719e1244fe9adeeb02
  1. binder_bindings/
  2. client_library/
  3. common/
  4. dbus_bindings/
  5. fuzz/
  6. init/
  7. payload_consumer/
  8. payload_generator/
  9. sample_images/
  10. scripts/
  11. update_engine/
  12. update_manager/
  13. update_payload_key/
  14. .clang-format
  15. .gitignore
  16. Android.bp
  17. binder_service_android.cc
  18. binder_service_android.h
  19. binder_service_brillo.cc
  20. binder_service_brillo.h
  21. boot_control_android.cc
  22. boot_control_android.h
  23. boot_control_chromeos.cc
  24. boot_control_chromeos.h
  25. boot_control_chromeos_unittest.cc
  26. certificate_checker.cc
  27. certificate_checker.h
  28. certificate_checker_unittest.cc
  29. chrome_browser_proxy_resolver.cc
  30. chrome_browser_proxy_resolver.h
  31. cleanup_previous_update_action.cc
  32. cleanup_previous_update_action.h
  33. COMMIT-QUEUE.ini
  34. common_service.cc
  35. common_service.h
  36. common_service_unittest.cc
  37. connection_manager.cc
  38. connection_manager.h
  39. connection_manager_android.cc
  40. connection_manager_android.h
  41. connection_manager_interface.h
  42. connection_manager_unittest.cc
  43. connection_utils.cc
  44. connection_utils.h
  45. CPPLINT.cfg
  46. daemon.cc
  47. daemon.h
  48. daemon_state_android.cc
  49. daemon_state_android.h
  50. daemon_state_interface.h
  51. dbus_connection.cc
  52. dbus_connection.h
  53. dbus_service.cc
  54. dbus_service.h
  55. dbus_test_utils.h
  56. dlcservice_chromeos.cc
  57. dlcservice_chromeos.h
  58. dynamic_partition_control_android.cc
  59. dynamic_partition_control_android.h
  60. dynamic_partition_control_android_unittest.cc
  61. dynamic_partition_test_utils.h
  62. dynamic_partition_utils.cc
  63. dynamic_partition_utils.h
  64. fake_file_writer.h
  65. fake_p2p_manager.h
  66. fake_p2p_manager_configuration.h
  67. fake_shill_proxy.cc
  68. fake_shill_proxy.h
  69. fake_system_state.cc
  70. fake_system_state.h
  71. generate_pc_file.sh
  72. hardware_android.cc
  73. hardware_android.h
  74. hardware_chromeos.cc
  75. hardware_chromeos.h
  76. hardware_chromeos_unittest.cc
  77. image_properties.h
  78. image_properties_android.cc
  79. image_properties_android_unittest.cc
  80. image_properties_chromeos.cc
  81. image_properties_chromeos_unittest.cc
  82. libcurl_http_fetcher.cc
  83. libcurl_http_fetcher.h
  84. libupdate_engine-client-test.pc.in
  85. libupdate_engine-client.pc.in
  86. local_coverage_rate
  87. logging.cc
  88. logging.h
  89. logging_android.cc
  90. main.cc
  91. METADATA
  92. metrics_constants.h
  93. metrics_reporter_android.cc
  94. metrics_reporter_android.h
  95. metrics_reporter_interface.h
  96. metrics_reporter_omaha.cc
  97. metrics_reporter_omaha.h
  98. metrics_reporter_omaha_unittest.cc
  99. metrics_reporter_stub.cc
  100. metrics_reporter_stub.h
  101. metrics_utils.cc
  102. metrics_utils.h
  103. metrics_utils_unittest.cc
  104. mock_boot_control_hal.h
  105. mock_certificate_checker.h
  106. mock_connection_manager.h
  107. mock_dynamic_partition_control.h
  108. mock_file_writer.h
  109. mock_metrics_reporter.h
  110. mock_omaha_request_params.h
  111. mock_p2p_manager.h
  112. mock_payload_state.h
  113. mock_power_manager.h
  114. mock_service_observer.h
  115. mock_update_attempter.h
  116. MODULE_LICENSE_APACHE2
  117. network_selector.h
  118. network_selector_android.cc
  119. network_selector_android.h
  120. network_selector_interface.h
  121. network_selector_stub.cc
  122. network_selector_stub.h
  123. NOTICE
  124. omaha_request_action.cc
  125. omaha_request_action.h
  126. omaha_request_action_fuzzer.cc
  127. omaha_request_action_unittest.cc
  128. omaha_request_params.cc
  129. omaha_request_params.h
  130. omaha_request_params_unittest.cc
  131. omaha_response.h
  132. omaha_response_handler_action.cc
  133. omaha_response_handler_action.h
  134. omaha_response_handler_action_unittest.cc
  135. omaha_utils.cc
  136. omaha_utils.h
  137. omaha_utils_unittest.cc
  138. otacerts.zip
  139. OWNERS
  140. p2p_manager.cc
  141. p2p_manager.h
  142. p2p_manager_unittest.cc
  143. parcelable_update_engine_status.cc
  144. parcelable_update_engine_status.h
  145. parcelable_update_engine_status_unittest.cc
  146. payload_state.cc
  147. payload_state.h
  148. payload_state_interface.h
  149. payload_state_unittest.cc
  150. power_manager_android.cc
  151. power_manager_android.h
  152. power_manager_chromeos.cc
  153. power_manager_chromeos.h
  154. power_manager_interface.h
  155. PRESUBMIT.cfg
  156. PREUPLOAD.cfg
  157. pylintrc
  158. real_system_state.cc
  159. real_system_state.h
  160. run_unittests
  161. sample_omaha_v3_response.xml
  162. service_delegate_android_interface.h
  163. service_observer_interface.h
  164. shill_proxy.cc
  165. shill_proxy.h
  166. shill_proxy_interface.h
  167. sideload_main.cc
  168. system_state.h
  169. tar_bunzip2.gypi
  170. test_config.xml
  171. test_http_server.cc
  172. test_subprocess.cc
  173. testrunner.cc
  174. unittest_key.pem
  175. unittest_key2.pem
  176. unittest_key_EC.pem
  177. unittest_key_RSA4096.pem
  178. update_attempter.cc
  179. update_attempter.h
  180. update_attempter_android.cc
  181. update_attempter_android.h
  182. update_attempter_android_unittest.cc
  183. update_attempter_unittest.cc
  184. update_boot_flags_action.cc
  185. update_boot_flags_action.h
  186. update_boot_flags_action_unittest.cc
  187. update_engine-client.gyp
  188. update_engine.conf
  189. update_engine.gyp
  190. update_engine.rc
  191. update_engine_client.cc
  192. update_engine_client_android.cc
  193. update_metadata.proto
  194. update_status_utils.cc
  195. update_status_utils.h
  196. UpdateEngine.conf