From cffb906d64593c2339b147724f3b8681e9665bd8 Mon Sep 17 00:00:00 2001 From: yackob03 Date: Thu, 10 Oct 2013 00:40:07 -0400 Subject: [PATCH] Add some images with multiple tags. --- initdb.py | 18 ++++++++++++------ test.db | Bin 56320 -> 56320 bytes 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/initdb.py b/initdb.py index 84f30f6a2..cf795a0a0 100644 --- a/initdb.py +++ b/initdb.py @@ -24,7 +24,7 @@ def __gen_checksum(): def create_subtree(repo, structure, parent): - num_nodes, subtrees, last_node_tag = structure + num_nodes, subtrees, last_node_tags = structure # create the nodes for i in range(num_nodes): @@ -40,9 +40,13 @@ def create_subtree(repo, structure, parent): parent = new_image - if last_node_tag: - model.create_or_update_tag(repo.namespace, repo.name, last_node_tag, - new_image.docker_image_id) + if last_node_tags: + if not isinstance(last_node_tags, list): + last_node_tags = [last_node_tags] + + for tag_name in last_node_tags: + model.create_or_update_tag(repo.namespace, repo.name, tag_name, + new_image.docker_image_id) for subtree in subtrees: create_subtree(repo, subtree, new_image) @@ -77,11 +81,13 @@ if __name__ == '__main__': new_user_2.verified = True new_user_2.save() - __generate_repository(new_user_1, 'simple', False, [], (4, [], 'latest')) + __generate_repository(new_user_1, 'simple', False, [], (4, [], + ['latest', 'prod'])) __generate_repository(new_user_1, 'complex', False, [], (2, [(3, [], 'v2.0'), - (1, [(1, [(1, [], 'latest')], 'staging'), + (1, [(1, [(1, [], ['latest', 'prod'])], + 'staging'), (1, [], None)], None)], None)) __generate_repository(new_user_2, 'publicrepo', True, [], diff --git a/test.db b/test.db index 58d66eb390753be9270252bd319f0962050bceb6..6a37359429329994e59cf7ed588acf89ca4071b6 100644 GIT binary patch literal 56320 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 literal 56320 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 WtX9RZ@71$fXS%Cb&uXpz&i@BM$68td