diff options
author | 2019-04-29 09:20:35 -0700 | |
---|---|---|
committer | 2019-04-29 09:20:35 -0700 | |
commit | 37ca64e77f7431f742cd028eaee78dca34a9722f (patch) | |
tree | 643fd65bdac4761db6cd4fa15818746d3e760b8f /make_ids.py | |
parent | 3422870a179cdeed4df9631faa08357d28da5c7a (diff) |
[VNFRQTS] adding python script to create IDs
Change-Id: I138218617615705df77e4a962d071d7d3f901d86
Issue-ID: VNFRQTS-628
Signed-off-by: stark, steven <steven.stark@att.com>
Diffstat (limited to 'make_ids.py')
-rw-r--r-- | make_ids.py | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/make_ids.py b/make_ids.py new file mode 100644 index 0000000..e101293 --- /dev/null +++ b/make_ids.py @@ -0,0 +1,86 @@ +# -*- coding: utf8 -*- +# org.onap.vnfrqts/requirements +# ============LICENSE_START==================================================== +# Copyright © 2018 AT&T Intellectual Property. All rights reserved. +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# ============LICENSE_END============================================ +import argparse +import itertools +import json +import random +import requests +import urllib + +REQUIREMENTS_FILE = "https://nexus.onap.org/content/sites/raw/org.onap.vnfrqts.requirements/master/needs.json" + +def get_current_requirements(): + """Read the current ONAP requirements from ONAP doc site""" + try: + r = requests.get(REQUIREMENTS_FILE) + if r.headers.get('content-type') == 'application/json': + data = r.content + return json.loads(data) + else: + warnings.warning("Unexpected content-type ({}) encountered downloading requirements.json, using last saved copy".format(r.headers.get('content-type'))) + except requests.exceptions.RequestException as e: + warnings.warn("Error downloading latest JSON, using last saved copy.") + warnings.warn(UserWarning(e)) + +def load_all_ids(): + """Loads the """ + data = get_current_requirements() + result = set() + for version in data["versions"]: + result.update(data["versions"][version]["needs"].keys()) + return result + +def generate_ids(): + """Generates a stream of unique requirement IDs""" + all_ids = load_all_ids() + while True: + new_id = "R-{:0>5d}".format(random.randint(0, 999999)) + if new_id in all_ids: + continue # skip this one and generate another one + all_ids.add(new_id) + yield new_id + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description=""" + Generate random, unique requirement IDs for use when adding new requirements + to the RST documentation. + """ + ) + parser.add_argument("num_ids", action="store", nargs="?", type=int, default=1, + help="Number of IDs to generate") + args = parser.parse_args() + for req_id in itertools.islice(generate_ids(), args.num_ids): + print(req_id) + |