Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions charon/cmd/cmd_upload.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ def upload(
debug=False,
quiet=False,
dryrun=False,
sign_result_loc="/tmp/sign"
sign_result_file=None,
):
"""Upload all files from a released product REPO to Ronda
Service. The REPO points to a product released tarball which
Expand Down Expand Up @@ -233,7 +233,7 @@ def upload(
dry_run=dryrun,
manifest_bucket_name=manifest_bucket_name,
config=config,
sign_result_loc=sign_result_loc
sign_result_file=sign_result_file
)
if not succeeded:
sys.exit(1)
Expand Down
6 changes: 3 additions & 3 deletions charon/pkgs/maven.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ def handle_maven_uploading(
dry_run=False,
manifest_bucket_name=None,
config=None,
sign_result_loc="/tmp/sign"
sign_result_file=None
) -> Tuple[str, bool]:
""" Handle the maven product release tarball uploading process.
* repo is the location of the tarball in filesystem
Expand Down Expand Up @@ -416,10 +416,10 @@ def handle_maven_uploading(
if not conf:
sys.exit(1)

if conf.is_radas_enabled():
if conf.is_radas_enabled() and sign_result_file and os.path.isfile(sign_result_file):
logger.info("Start generating radas signature files for s3 bucket %s\n", bucket_name)
(_failed_metas, _generated_signs) = radas_signature.generate_radas_sign(
top_level=top_level, sign_result_loc=sign_result_loc
top_level=top_level, sign_result_file=sign_result_file
)
if not _generated_signs:
logger.error(
Expand Down
22 changes: 4 additions & 18 deletions charon/pkgs/radas_sign.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,31 +276,17 @@ def _handle_failed_delivery(self, reason: str):
self.close()


def generate_radas_sign(top_level: str, sign_result_loc: str) -> Tuple[List[str], List[str]]:
def generate_radas_sign(top_level: str, sign_result_file: str) -> Tuple[List[str], List[str]]:
"""
Generate .asc files based on RADAS sign result json file
"""
if not os.path.isdir(sign_result_loc):
logger.error("Sign result loc dir does not exist: %s", sign_result_loc)
return [], []

files = [
os.path.join(sign_result_loc, f)
for f in os.listdir(sign_result_loc)
if os.path.isfile(os.path.join(sign_result_loc, f))
]

if not files:
return [], []

if len(files) > 1:
logger.error("Multiple files found in %s. Expected only one file.", sign_result_loc)
if not sign_result_file or not os.path.isfile(sign_result_file):
logger.error("Sign result file does not exist: %s", sign_result_file)
return [], []

# should only have the single sign result json file from the radas registry
json_file_path = files[0]
try:
with open(json_file_path, "r") as f:
with open(sign_result_file, "r") as f:
data = json.load(f)
except Exception as e:
logger.error("Failed to read or parse the JSON file: %s", e)
Expand Down
21 changes: 4 additions & 17 deletions tests/test_radas_sign_generation.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def tearDown(self) -> None:

def test_multi_sign_files_generation(self):
self.__prepare_artifacts()
failed, generated = generate_radas_sign(self.__repo_dir, self.__sign_result_loc)
failed, generated = generate_radas_sign(self.__repo_dir, self.__sign_result_file)
self.assertEqual(failed, [])
expected_asc1 = os.path.join(self.__repo_dir, "foo/bar/1.0/foo-bar-1.0.jar.asc")
expected_asc2 = os.path.join(self.__repo_dir, "foo/bar/2.0/foo-bar-2.0.jar.asc")
Expand All @@ -55,7 +55,7 @@ def test_multi_sign_files_generation(self):
self.assertIn("signature2@hash", content2)

def test_sign_files_generation_with_missing_artifacts(self):
failed, generated = generate_radas_sign(self.__repo_dir, self.__sign_result_loc)
failed, generated = generate_radas_sign(self.__repo_dir, self.__sign_result_file)
self.assertEqual(failed, [])
expected_asc1 = os.path.join(self.__repo_dir, "foo/bar/1.0/foo-bar-1.0.jar.asc")
expected_asc2 = os.path.join(self.__repo_dir, "foo/bar/2.0/foo-bar-2.0.jar.asc")
Expand All @@ -82,7 +82,7 @@ def side_effect(path, *args, **kwargs):
raise IOError("mock write error")
return real_open(path, *args, **kwargs)
mock_open.side_effect = side_effect
failed, generated = generate_radas_sign(self.__repo_dir, self.__sign_result_loc)
failed, generated = generate_radas_sign(self.__repo_dir, self.__sign_result_file)

self.assertEqual(len(failed), 1)
self.assertNotIn(expected_asc1, generated)
Expand All @@ -93,20 +93,7 @@ def test_sign_files_generation_with_missing_result(self):
# simulate missing pull result by removing the sign result file loc
shutil.rmtree(self.__sign_result_loc)

failed, generated = generate_radas_sign(self.__repo_dir, self.__sign_result_loc)
self.assertEqual(failed, [])
expected_asc1 = os.path.join(self.__repo_dir, "foo/bar/1.0/foo-bar-1.0.jar.asc")
expected_asc2 = os.path.join(self.__repo_dir, "foo/bar/2.0/foo-bar-2.0.jar.asc")
self.assertEqual(generated, [])
self.assertFalse(os.path.exists(expected_asc1))
self.assertFalse(os.path.exists(expected_asc2))

def test_sign_files_generation_with_not_single_results(self):
self.__prepare_artifacts()
another_result_file = os.path.join(self.__sign_result_loc, "result2.json")
overwrite_file(another_result_file, "test_json")

failed, generated = generate_radas_sign(self.__repo_dir, self.__sign_result_loc)
failed, generated = generate_radas_sign(self.__repo_dir, self.__sign_result_file)
self.assertEqual(failed, [])
expected_asc1 = os.path.join(self.__repo_dir, "foo/bar/1.0/foo-bar-1.0.jar.asc")
expected_asc2 = os.path.join(self.__repo_dir, "foo/bar/2.0/foo-bar-2.0.jar.asc")
Expand Down