Skip to content
Closed
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
31 changes: 29 additions & 2 deletions hack/graph-util.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import os
import re
import shutil
import sys
import tarfile

import yaml
Expand Down Expand Up @@ -216,6 +217,23 @@ def normalize_node(node):
return node


def print_json(directory):
nodes = load_nodes(directory=os.path.join(directory, '.nodes'), registry='quay.io', repository='openshift-release-dev/ocp-release')
nodes = load_channels(directory=os.path.join(directory, 'channels'), nodes=nodes)
nodes = block_edges(directory=os.path.join(directory, 'blocked-edges'), nodes=nodes)

for arch_nodes in nodes.values():
for node in arch_nodes.values():
for key in ['channels', 'previous', 'next']:
if key in node:
node[key] = sorted(node[key])
for key in ['internal-previous']:
if key in node:
del node[key]
json.dump({'version': 1, 'nodes': nodes}, sys.stdout, sort_keys=True, indent=2)
sys.stdout.write('\n')


def push(directory, token, push_versions):
nodes = load_nodes(directory=os.path.join(directory, '.nodes'), registry='quay.io', repository='openshift-release-dev/ocp-release')
nodes = load_channels(directory=os.path.join(directory, 'channels'), nodes=nodes)
Expand Down Expand Up @@ -446,6 +464,7 @@ def get_release_metadata(node):

raise ValueError('no release-metadata in {} layers ( {} )'.format(node['payload'], json.dumps(manifest)))


def get_token(args):
if args.token:
return args.token
Expand All @@ -454,6 +473,7 @@ def get_token(args):
return f.read().strip()
return None


if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Utilities for managing graph data.')
subparsers = parser.add_subparsers()
Expand All @@ -476,8 +496,15 @@ def get_token(args):
)
push_to_quay_parser.set_defaults(action='push-to-quay')

print_parser = subparsers.add_parser(
'print',
help='Write graph metadata to stdout.',
)
print_parser.set_defaults(action='print-json')

args = parser.parse_args()

token = get_token(args=args)
if args.action == 'push-to-quay':
push(directory='.', token=token, push_versions=args.versions)
push(directory='.', token=get_token(args=args), push_versions=args.versions)
if args.action == 'print-json':
print_json(directory='.')