Skip to content

Commit 9829721

Browse files
1 parent f952e3f commit 9829721

File tree

8 files changed

+47
-22
lines changed

8 files changed

+47
-22
lines changed

library_generation/generate_composed_library.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,10 @@ def generate_composed_library(
7070
build_file_folder = Path(f"{output_folder}/{gapic.proto_path}").resolve()
7171
print(f"build_file_folder: {build_file_folder}")
7272
gapic_inputs = parse_build_file(build_file_folder, gapic.proto_path)
73-
# generate prerequisite files (.repo-metadata.json, .OwlBot-hermetic.yaml,
73+
# generate postprocessing prerequisite files (.repo-metadata.json, .OwlBot-hermetic.yaml,
7474
# owlbot.py) here because transport is parsed from BUILD.bazel,
7575
# which lives in a versioned proto_path.
76-
util.generate_prerequisite_files(
76+
util.generate_postprocessing_prerequisite_files(
7777
config=config,
7878
library=library,
7979
proto_path=util.remove_version_from(gapic.proto_path),

library_generation/model/generation_config.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ def from_yaml(path_to_yaml: str) -> GenerationConfig:
141141
extra_versioned_modules=__optional(
142142
library, "extra_versioned_modules", None
143143
),
144+
recommended_package=__optional(library, "recommended_package", None),
145+
min_java_version=__optional(library, "min_java_version", None),
144146
)
145147
parsed_libraries.append(new_library)
146148

library_generation/model/library_config.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ def __init__(
4848
cloud_api: Optional[bool] = True,
4949
requires_billing: Optional[bool] = True,
5050
extra_versioned_modules: Optional[str] = None,
51+
recommended_package: Optional[str] = None,
52+
min_java_version: Optional[int] = None,
5153
):
5254
self.api_shortname = api_shortname
5355
self.api_description = api_description
@@ -72,6 +74,8 @@ def __init__(
7274
self.cloud_api = cloud_api
7375
self.requires_billing = requires_billing
7476
self.extra_versioned_modules = extra_versioned_modules
77+
self.recommended_package = recommended_package
78+
self.min_java_version = min_java_version
7579

7680
def get_library_name(self) -> str:
7781
"""
@@ -105,6 +109,8 @@ def __eq__(self, other):
105109
and self.cloud_api == other.cloud_api
106110
and self.requires_billing == other.requires_billing
107111
and self.extra_versioned_modules == other.extra_versioned_modules
112+
and self.recommended_package == other.recommended_package
113+
and self.min_java_version == other.min_java_version
108114
)
109115

110116
def __hash__(self):
@@ -134,6 +140,8 @@ def __hash__(self):
134140
self.cloud_api,
135141
self.requires_billing,
136142
self.extra_versioned_modules,
143+
self.recommended_package,
144+
self.min_java_version,
137145
]
138146
+ [config.proto_path for config in self.gapic_configs]
139147
).encode("utf-8")

library_generation/test/resources/goldens/.repo-metadata-monorepo-golden.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,7 @@
1414
"library_type": "GAPIC_AUTO",
1515
"requires_billing": true,
1616
"rest_documentation": "https://cloud.google.com/bare-metal/docs/reference/rest",
17-
"rpc_documentation": "https://cloud.google.com/bare-metal/docs/reference/rpc"
17+
"rpc_documentation": "https://cloud.google.com/bare-metal/docs/reference/rpc",
18+
"recommended_package": "com.google.example",
19+
"min_java_version": 8
1820
}

library_generation/test/resources/goldens/.repo-metadata-non-monorepo-golden.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,7 @@
1515
"requires_billing": true,
1616
"rest_documentation": "https://cloud.google.com/bare-metal/docs/reference/rest",
1717
"rpc_documentation": "https://cloud.google.com/bare-metal/docs/reference/rpc",
18-
"extra_versioned_modules": "test-module"
18+
"extra_versioned_modules": "test-module",
19+
"recommended_package": "com.google.example",
20+
"min_java_version": 8
1921
}

library_generation/test/resources/goldens/.repo-metadata-proto-only-golden.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,7 @@
1313
"library_type": "OTHER",
1414
"requires_billing": true,
1515
"rest_documentation": "https://cloud.google.com/bare-metal/docs/reference/rest",
16-
"rpc_documentation": "https://cloud.google.com/bare-metal/docs/reference/rpc"
16+
"rpc_documentation": "https://cloud.google.com/bare-metal/docs/reference/rpc",
17+
"recommended_package": "com.google.example",
18+
"min_java_version": 8
1719
}

library_generation/test/utilities_unit_tests.py

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
library_name="bare-metal-solution",
4141
rest_documentation="https://cloud.google.com/bare-metal/docs/reference/rest",
4242
rpc_documentation="https://cloud.google.com/bare-metal/docs/reference/rpc",
43+
recommended_package="com.google.example",
44+
min_java_version=8,
4345
)
4446
library_2 = LibraryConfig(
4547
api_shortname="secretmanager",
@@ -167,8 +169,8 @@ def test_eprint_valid_input_succeeds(self):
167169
# print() appends a `\n` each time it's called
168170
self.assertEqual(test_input + "\n", result)
169171

170-
def test_generate_prerequisite_files_non_monorepo_success(self):
171-
library_path = self.__setup_prerequisite_files(
172+
def test_generate_postprocessing_prerequisite_files_non_monorepo_success(self):
173+
library_path = self.__setup_postprocessing_prerequisite_files(
172174
combination=1, library_type="GAPIC_COMBO"
173175
)
174176

@@ -185,10 +187,12 @@ def test_generate_prerequisite_files_non_monorepo_success(self):
185187
file_comparator.compare_files(
186188
f"{library_path}/owlbot.py", f"{library_path}/owlbot-golden.py"
187189
)
188-
self.__remove_prerequisite_files(path=library_path, is_monorepo=False)
190+
self.__remove_postprocessing_prerequisite_files(
191+
path=library_path, is_monorepo=False
192+
)
189193

190-
def test_generate_prerequisite_files_monorepo_success(self):
191-
library_path = self.__setup_prerequisite_files(combination=2)
194+
def test_generate_postprocessing_prerequisite_files_monorepo_success(self):
195+
library_path = self.__setup_postprocessing_prerequisite_files(combination=2)
192196

193197
file_comparator.compare_files(
194198
f"{library_path}/.repo-metadata.json",
@@ -201,10 +205,10 @@ def test_generate_prerequisite_files_monorepo_success(self):
201205
file_comparator.compare_files(
202206
f"{library_path}/owlbot.py", f"{library_path}/owlbot-golden.py"
203207
)
204-
self.__remove_prerequisite_files(path=library_path)
208+
self.__remove_postprocessing_prerequisite_files(path=library_path)
205209

206-
def test_generate_prerequisite_files_proto_only_repo_success(self):
207-
library_path = self.__setup_prerequisite_files(
210+
def test_generate_postprocessing_prerequisite_files_proto_only_repo_success(self):
211+
library_path = self.__setup_postprocessing_prerequisite_files(
208212
combination=3, library_type="OTHER"
209213
)
210214

@@ -219,7 +223,7 @@ def test_generate_prerequisite_files_proto_only_repo_success(self):
219223
file_comparator.compare_files(
220224
f"{library_path}/owlbot.py", f"{library_path}/owlbot-golden.py"
221225
)
222-
self.__remove_prerequisite_files(path=library_path)
226+
self.__remove_postprocessing_prerequisite_files(path=library_path)
223227

224228
def test_prepare_repo_monorepo_success(self):
225229
gen_config = self.__get_a_gen_config(2)
@@ -256,7 +260,7 @@ def test_prepare_repo_split_repo_success(self):
256260
self.assertEqual(["misc"], library_path)
257261
shutil.rmtree(repo_config.output_folder)
258262

259-
def __setup_prerequisite_files(
263+
def __setup_postprocessing_prerequisite_files(
260264
self,
261265
combination: int,
262266
library_type: str = "GAPIC_AUTO",
@@ -273,7 +277,7 @@ def __setup_prerequisite_files(
273277
config = self.__get_a_gen_config(combination, library_type=library_type)
274278
proto_path = "google/cloud/baremetalsolution/v2"
275279
transport = "grpc"
276-
util.generate_prerequisite_files(
280+
util.generate_postprocessing_prerequisite_files(
277281
config=config,
278282
library=library,
279283
proto_path=proto_path,
@@ -319,7 +323,9 @@ def __get_a_gen_config(
319323
)
320324

321325
@staticmethod
322-
def __remove_prerequisite_files(path: str, is_monorepo: bool = True) -> None:
326+
def __remove_postprocessing_prerequisite_files(
327+
path: str, is_monorepo: bool = True
328+
) -> None:
323329
os.remove(f"{path}/.repo-metadata.json")
324330
os.remove(f"{path}/owlbot.py")
325331
if is_monorepo:

library_generation/utils/utilities.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ def pull_api_definition(
183183
)
184184

185185

186-
def generate_prerequisite_files(
186+
def generate_postprocessing_prerequisite_files(
187187
config: GenerationConfig,
188188
library: LibraryConfig,
189189
proto_path: str,
@@ -192,14 +192,13 @@ def generate_prerequisite_files(
192192
language: str = "java",
193193
) -> None:
194194
"""
195-
Generate prerequisite files for a library.
196-
197-
Note that the version, if any, in the proto_path will be removed.
195+
Generates the postprocessing prerequisite files for a library.
198196
199197
:param config: a GenerationConfig object representing a parsed configuration
200198
yaml
201199
:param library: the library configuration
202-
:param proto_path: the proto path
200+
:param proto_path: the path from the root of googleapis to the location of the service
201+
protos. If the path contains a version, it will be removed
203202
:param transport: transport supported by the library
204203
:param library_path: the path to which the generated file goes
205204
:param language: programming language of the library
@@ -275,6 +274,10 @@ def generate_prerequisite_files(
275274
repo_metadata["rpc_documentation"] = library.rpc_documentation
276275
if library.extra_versioned_modules:
277276
repo_metadata["extra_versioned_modules"] = library.extra_versioned_modules
277+
if library.recommended_package:
278+
repo_metadata["recommended_package"] = library.recommended_package
279+
if library.min_java_version:
280+
repo_metadata["min_java_version"] = library.min_java_version
278281

279282
# generate .repo-meta.json
280283
json_file = ".repo-metadata.json"

0 commit comments

Comments
 (0)