Properly propagate CV recipe_mod props to custom child builds

At some point the recipe engine repo set a "deprecation" warning on
uses of the cq recipe module, directing recipes to instead use the cv
recipe module.

However, the cv recipe module's props_for_child_build() method only sets
props for the cq recipe module. This means that props_for_child_build()
effectively broke (and became a no-op) for anyone that migrated to the
cv recipe module since it wasn't setting any props that it would
recognize.

So this fixes that.

Recipe-Nontrivial-Roll: chromiumos
Bug: 333811087
Change-Id: I39b7c63bf84322dde90b45e1b39328dad56d8934
Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/recipes-py/+/5537835
Reviewed-by: Yiwei Zhang <yiwzhang@google.com>
Commit-Queue: Ben Pastene <bpastene@chromium.org>
diff --git a/README.recipes.md b/README.recipes.md
index 4d7c241..b7ca9b9 100644
--- a/README.recipes.md
+++ b/README.recipes.md
@@ -1564,16 +1564,16 @@
 
 Returns whether CQ is active for this build.
 
-&mdash; **def [allow\_reuse\_for](/recipe_modules/cv/api.py#246)(self, \*modes):**
+&mdash; **def [allow\_reuse\_for](/recipe_modules/cv/api.py#249)(self, \*modes):**
 
 Instructs CQ that this build can be reused in a future Run if
 and only if its mode is in the provided modes.
 
 Overwrites all previously set values.
 
-&emsp; **@property**<br>&mdash; **def [allowed\_reuse\_modes](/recipe_modules/cv/api.py#242)(self):**
+&emsp; **@property**<br>&mdash; **def [allowed\_reuse\_modes](/recipe_modules/cv/api.py#245)(self):**
 
-&emsp; **@property**<br>&mdash; **def [attempt\_key](/recipe_modules/cv/api.py#131)(self):**
+&emsp; **@property**<br>&mdash; **def [attempt\_key](/recipe_modules/cv/api.py#134)(self):**
 
 Returns a string that is unique for a CV attempt.
 
@@ -1583,7 +1583,7 @@
 Raises:
   CQInactive if CQ is not active for this build.
 
-&emsp; **@property**<br>&mdash; **def [cl\_group\_key](/recipe_modules/cv/api.py#143)(self):**
+&emsp; **@property**<br>&mdash; **def [cl\_group\_key](/recipe_modules/cv/api.py#146)(self):**
 
 Returns a string that is unique for a current set of Gerrit change
 patchsets (or, equivalently, buildsets).
@@ -1594,7 +1594,7 @@
 Raises:
   CQInactive if CQ is not active for this build.
 
-&emsp; **@property**<br>&mdash; **def [cl\_owners](/recipe_modules/cv/api.py#169)(self):**
+&emsp; **@property**<br>&mdash; **def [cl\_owners](/recipe_modules/cv/api.py#172)(self):**
 
 Returns string(s) of the owner's email addresses used for the patchset.
 
@@ -1604,9 +1604,9 @@
 Raises:
   CQInactive if CQ is not active for this build.
 
-&emsp; **@property**<br>&mdash; **def [do\_not\_retry\_build](/recipe_modules/cv/api.py#224)(self):**
+&emsp; **@property**<br>&mdash; **def [do\_not\_retry\_build](/recipe_modules/cv/api.py#227)(self):**
 
-&emsp; **@property**<br>&mdash; **def [equivalent\_cl\_group\_key](/recipe_modules/cv/api.py#156)(self):**
+&emsp; **@property**<br>&mdash; **def [equivalent\_cl\_group\_key](/recipe_modules/cv/api.py#159)(self):**
 
 Returns a string that is unique for a given set of Gerrit changes
 disregarding trivial patchset differences.
@@ -1637,7 +1637,7 @@
 Raises:
   CQInactive if CQ is not active for this build.
 
-&emsp; **@property**<br>&mdash; **def [owner\_is\_googler](/recipe_modules/cv/api.py#264)(self):**
+&emsp; **@property**<br>&mdash; **def [owner\_is\_googler](/recipe_modules/cv/api.py#267)(self):**
 
 Returns whether the Run/Attempt owner is a Googler.
 
@@ -1668,7 +1668,7 @@
 The contents of returned dict should be treated as opaque blob,
 it may be changed without notice.
 
-&mdash; **def [record\_triggered\_build\_ids](/recipe_modules/cv/api.py#208)(self, \*build_ids):**
+&mdash; **def [record\_triggered\_build\_ids](/recipe_modules/cv/api.py#211)(self, \*build_ids):**
 
 Adds the given Buildbucket build IDs to the list of triggered build IDs.
 
@@ -1677,7 +1677,7 @@
 Args:
   * build_ids (list of int or string): Buildbucket build IDs.
 
-&mdash; **def [record\_triggered\_builds](/recipe_modules/cv/api.py#192)(self, \*builds):**
+&mdash; **def [record\_triggered\_builds](/recipe_modules/cv/api.py#195)(self, \*builds):**
 
 Adds IDs of given Buildbucket builds to the list of triggered build IDs.
 
@@ -1699,7 +1699,7 @@
 Raises:
   CQInactive if CQ is not active for this build.
 
-&mdash; **def [set\_do\_not\_retry\_build](/recipe_modules/cv/api.py#228)(self):**
+&mdash; **def [set\_do\_not\_retry\_build](/recipe_modules/cv/api.py#231)(self):**
 
 Instruct CQ to not retry this build.
 
@@ -1715,7 +1715,7 @@
 Raises:
   CQInactive if CQ is not active for this build.
 
-&emsp; **@property**<br>&mdash; **def [triggered\_build\_ids](/recipe_modules/cv/api.py#187)(self):**
+&emsp; **@property**<br>&mdash; **def [triggered\_build\_ids](/recipe_modules/cv/api.py#190)(self):**
 
 Returns recorded Buildbucket build IDs as a list of integers.
 ### *recipe_modules* / [defer](/recipe_modules/defer)
diff --git a/recipe_modules/cv/api.py b/recipe_modules/cv/api.py
index befe6ba..ece700f 100644
--- a/recipe_modules/cv/api.py
+++ b/recipe_modules/cv/api.py
@@ -124,8 +124,11 @@
     msg.CopyFrom(self._input)
     msg.top_level = False
     return {
+        '$recipe_engine/cv':
+            json_pb.MessageToDict(msg, preserving_proto_field_name=True),
+        # TODO(crbug.com/333811087) Remove the cq recipe module props.
         '$recipe_engine/cq':
-            json_pb.MessageToDict(msg, preserving_proto_field_name=True)
+            json_pb.MessageToDict(msg, preserving_proto_field_name=True),
     }
 
   @property