Skip to content

Commit 9e9c156

Browse files
committed
repository: remove init argument from open()
This no longer seems needed: if the metadata store does not contain a single version of role, then open() can assume it is initializing. Signed-off-by: Jussi Kukkonen <jkukkonen@google.com>
1 parent c1bb46b commit 9e9c156

3 files changed

Lines changed: 18 additions & 17 deletions

File tree

examples/repository/_simplerepo.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,14 @@ def __init__(self) -> None:
6868
)
6969

7070
# setup a basic repository, generate signing key per top-level role
71-
with self.edit("root", init=True) as root:
71+
with self.edit("root") as root:
7272
for role in ["root", "timestamp", "snapshot", "targets"]:
7373
key = keys.generate_ed25519_key()
7474
self.signer_cache[role].append(SSlibSigner(key))
7575
root.add_key(Key.from_securesystemslib_key(key), role)
7676

7777
for role in ["timestamp", "snapshot", "targets"]:
78-
with self.edit(role, init=True):
78+
with self.edit(role):
7979
pass
8080

8181
@property
@@ -86,10 +86,10 @@ def targets_infos(self) -> Dict[str, MetaFile]:
8686
def snapshot_info(self) -> MetaFile:
8787
return self._snapshot_info
8888

89-
def open(self, role: str, init: bool = False) -> Metadata:
89+
def open(self, role: str) -> Metadata:
9090
"""Return current Metadata for role from 'storage' (or create a new one)"""
9191

92-
if init:
92+
if role not in self.role_cache:
9393
signed_init = _signed_init.get(role, Targets)
9494
md = Metadata(signed_init())
9595

examples/repository/repo

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@ from _simplerepo import SimpleRepository
2121

2222
logger = logging.getLogger(__name__)
2323

24+
2425
class ReqHandler(BaseHTTPRequestHandler):
2526
"""HTTP handler to serve metadata and targets from a SimpleRepository"""
2627

2728
def do_GET(self):
2829
if self.path.startswith("/metadata/") and self.path.endswith(".json"):
29-
self.get_metadata(self.path[len("/metadata/"):-len(".json")])
30+
self.get_metadata(self.path[len("/metadata/") : -len(".json")])
3031
elif self.path.startswith("/targets/"):
31-
self.get_target(self.path[len("/targets/"):])
32+
self.get_target(self.path[len("/targets/") :])
3233
else:
3334
self.send_error(404, "Only serving /metadata/*.json")
3435

@@ -47,9 +48,9 @@ class ReqHandler(BaseHTTPRequestHandler):
4748
return
4849

4950
# send the metadata json
50-
data = repo.role_cache[role][ver-1].to_bytes()
51+
data = repo.role_cache[role][ver - 1].to_bytes()
5152
self.send_response(200)
52-
self.send_header('Content-length', len(data))
53+
self.send_header("Content-length", len(data))
5354
self.end_headers()
5455
self.wfile.write(data)
5556

@@ -66,7 +67,7 @@ class ReqHandler(BaseHTTPRequestHandler):
6667
# send the target content
6768
data = repo.target_cache[target]
6869
self.send_response(200)
69-
self.send_header('Content-length', len(data))
70+
self.send_header("Content-length", len(data))
7071
self.end_headers()
7172
self.wfile.write(data)
7273

@@ -93,7 +94,9 @@ def main(argv: List[str]) -> None:
9394
last_change = 0
9495
counter = 0
9596

96-
logger.info(f"Now serving. Root v1 at http://127.0.0.1:{server.server_port}/metadata/1.root.json")
97+
logger.info(
98+
f"Now serving. Root v1 at http://127.0.0.1:{server.server_port}/metadata/1.root.json"
99+
)
97100

98101
while True:
99102
# Simulate a live repository: Add a new target file every few seconds

tuf/repository/_repository.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ class Repository(ABC):
3535
"""
3636

3737
@abstractmethod
38-
def open(self, role: str, init: bool = False) -> Metadata:
38+
def open(self, role: str) -> Metadata:
3939
"""Load a roles metadata from storage or cache, return it
4040
41-
If 'init', then create metadata from scratch"""
41+
If role has no metadata, create first version from scratch"""
4242
raise NotImplementedError
4343

4444
@abstractmethod
@@ -76,20 +76,18 @@ def snapshot_info(self) -> MetaFile:
7676
raise NotImplementedError
7777

7878
@contextmanager
79-
def edit(
80-
self, role: str, init: bool = False
81-
) -> Generator[Signed, None, None]:
79+
def edit(self, role: str) -> Generator[Signed, None, None]:
8280
"""Context manager for editing a role's metadata
8381
8482
Context manager takes care of loading the roles metadata (or creating
85-
new metadata if 'init'), updating expiry and version. The caller can do
83+
new metadata), updating expiry and version. The caller can do
8684
other changes to the Signed object and when the context manager exits,
8785
a new version of the roles metadata is stored.
8886
8987
Context manager user can raise AbortEdit from inside the with-block to
9088
cancel the edit: in this case none of the changes are stored.
9189
"""
92-
md = self.open(role, init)
90+
md = self.open(role)
9391
with suppress(AbortEdit):
9492
yield md.signed
9593
self.close(role, md)

0 commit comments

Comments
 (0)