util: add scripts that help maintain mongoDB
Change-Id: Ie421176782070462bb2a57351a04ba6ae004a9d4
This commit is contained in:
48
util/helper_scripts_for_mongodb/README.md
Normal file
48
util/helper_scripts_for_mongodb/README.md
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# Overview
|
||||||
|
|
||||||
|
This utility contains various scripts that are helpful when maintaining the gem5 resources MongoDB database.
|
||||||
|
The scripts in this directory use external libraries. Please install the required libraries mentioned in the
|
||||||
|
`requirements.txt` by running the following command:
|
||||||
|
```
|
||||||
|
pip3 install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
## add-json-to-mongo.py
|
||||||
|
|
||||||
|
This script adds a list of resources from a JSON file to a specified collection in a MongoDB database. The JSON file should be in the format of a list of dictionaries, where each dictionary represents a resource.
|
||||||
|
|
||||||
|
To run this script you use the following command:
|
||||||
|
|
||||||
|
```
|
||||||
|
python3 ./add-json-to-mongo.py --uri <uri> --db_name <db_name> --collection_name <collection_name> --json_file <json_file>
|
||||||
|
```
|
||||||
|
|
||||||
|
## backup-db.py
|
||||||
|
|
||||||
|
This script grabs all documents from a specified collection in a MongoDB database and saves them to a JSON file.
|
||||||
|
|
||||||
|
To run this script you use the following command:
|
||||||
|
```
|
||||||
|
python3 ./backup-db.py --uri <uri> --db_name <db_name> --collection_name <collection_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
## create-new-collection.py
|
||||||
|
This script grabs all documents from a specified collection in a MongoDB database and creates a new collection with the same documents.
|
||||||
|
|
||||||
|
To run this script you use the following command:
|
||||||
|
```
|
||||||
|
python3 ./create-new-collection.py --uri <uri> --db_name <db_name> --collection_name <collection_name> --new_collection_name <new_collection_name>
|
||||||
|
```
|
||||||
|
|
||||||
|
## update-gem5-versions.py
|
||||||
|
This script grabs all resources categorically from a specified collection in a MongoDB
|
||||||
|
database and adds a new gem5 version to the gem5_versions field of each
|
||||||
|
resource.
|
||||||
|
|
||||||
|
To run this script you use the following command:
|
||||||
|
```
|
||||||
|
python3 ./update-gem5-versions.py --uri <uri> --db <db_name> --collection <collection_name> --version <version> --category <category> --outfile <outfile>
|
||||||
|
```
|
||||||
|
|
||||||
|
## helper.py
|
||||||
|
This script contains helper functions for the scripts in this directory.
|
||||||
79
util/helper_scripts_for_mongodb/add-json-to-mongo.py
Normal file
79
util/helper_scripts_for_mongodb/add-json-to-mongo.py
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# Copyright (c) 2023 The Regents of the University of California
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are
|
||||||
|
# met: redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer;
|
||||||
|
# redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution;
|
||||||
|
# neither the name of the copyright holders nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived from
|
||||||
|
# this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
"""
|
||||||
|
This script adds a list of resources from a JSON file to a specified
|
||||||
|
collection in a MongoDB database. The JSON file should be in the format
|
||||||
|
of a list of dictionaries, where each dictionary represents a resource.
|
||||||
|
|
||||||
|
To run this script you use the following command:
|
||||||
|
python3 ./add-json-to-mongo.py --uri <uri> --db_name <db_name> /
|
||||||
|
--collection_name <collection_name> --json_file <json_file>
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
|
||||||
|
from helper import get_database
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Add a list of resources from a "
|
||||||
|
"JSON file to a specified collection in a "
|
||||||
|
"MongoDB database"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--uri", help="URI of the database", type=str, required=True
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--db_name", help="Name of the database", type=str, default="gem5-vision"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--collection_name",
|
||||||
|
help="Name of the collection",
|
||||||
|
type=str,
|
||||||
|
default="resources",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--json_file", help="Name of the json file", type=str, required=True
|
||||||
|
)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
uri = args.uri
|
||||||
|
db_name = args.db_name
|
||||||
|
collection_name = args.collection_name
|
||||||
|
json_file = args.json_file
|
||||||
|
|
||||||
|
# get resources from json file
|
||||||
|
with open(json_file) as f:
|
||||||
|
resources = json.load(f)
|
||||||
|
|
||||||
|
collection = get_database(uri, db_name, collection_name)
|
||||||
|
|
||||||
|
# insert resources into collection
|
||||||
|
collection.insert_many(resources)
|
||||||
73
util/helper_scripts_for_mongodb/backup-db.py
Normal file
73
util/helper_scripts_for_mongodb/backup-db.py
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# Copyright (c) 2023 The Regents of the University of California
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are
|
||||||
|
# met: redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer;
|
||||||
|
# redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution;
|
||||||
|
# neither the name of the copyright holders nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived from
|
||||||
|
# this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
"""
|
||||||
|
This script grabs all documents from a specified collection in a MongoDB
|
||||||
|
database and saves them to a JSON file.
|
||||||
|
|
||||||
|
To run this script you use the following command:
|
||||||
|
python3 ./backup-db.py --uri <uri> --db_name <db_name> --collection_name <collection_name>
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
from datetime import date
|
||||||
|
|
||||||
|
from helper import (
|
||||||
|
get_database,
|
||||||
|
save_to_json,
|
||||||
|
)
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Get all documents from a "
|
||||||
|
"specified collection in a MongoDB database "
|
||||||
|
"and save them to a JSON file"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--uri", help="URI of the database", type=str, required=True
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--db_name", help="Name of the database", type=str, default="gem5-vision"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--collection_name",
|
||||||
|
help="Name of the collection",
|
||||||
|
type=str,
|
||||||
|
default="resources",
|
||||||
|
)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
uri = args.uri
|
||||||
|
db_name = args.db_name
|
||||||
|
collection_name = args.collection_name
|
||||||
|
|
||||||
|
collection = get_database(uri, db_name, collection_name)
|
||||||
|
|
||||||
|
# get all documents from resources collection
|
||||||
|
resources = collection.find({})
|
||||||
|
|
||||||
|
# copy all documents from resources collection to resources_backup json file
|
||||||
|
save_to_json(resources, f"resources_backup_{date.today()}.json")
|
||||||
87
util/helper_scripts_for_mongodb/create-new-collection.py
Normal file
87
util/helper_scripts_for_mongodb/create-new-collection.py
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# Copyright (c) 2023 The Regents of the University of California
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are
|
||||||
|
# met: redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer;
|
||||||
|
# redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution;
|
||||||
|
# neither the name of the copyright holders nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived from
|
||||||
|
# this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
"""
|
||||||
|
This script grabs all documents from a specified collection in a MongoDB
|
||||||
|
database and creates a new collection with the same documents.
|
||||||
|
|
||||||
|
To run this script you use the following command:
|
||||||
|
python3 ./create-new-collection.py --uri <uri> --db_name <db_name> --collection_name <collection_name> /
|
||||||
|
--new_collection_name <new_collection_name>
|
||||||
|
"""
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
|
||||||
|
from bson import json_util
|
||||||
|
from helper import get_database
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Get all documents from a "
|
||||||
|
"specified collection in a MongoDB database "
|
||||||
|
"and create a new collection with the same "
|
||||||
|
"documents."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--uri", help="URI of the database", type=str, required=True
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--new_collection_name",
|
||||||
|
help="Name of the new collection",
|
||||||
|
type=str,
|
||||||
|
required=True,
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--db_name", help="Name of the database", type=str, default="gem5-vision"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--collection_name",
|
||||||
|
help="Name of the collection",
|
||||||
|
type=str,
|
||||||
|
default="resources",
|
||||||
|
)
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
uri = args.uri
|
||||||
|
db_name = args.db_name
|
||||||
|
collection_name = args.collection_name
|
||||||
|
new_collection_name = args.new_collection_name
|
||||||
|
|
||||||
|
|
||||||
|
collection = get_database(uri, db_name, collection_name)
|
||||||
|
|
||||||
|
new_collection = get_database(uri, db_name, new_collection_name)
|
||||||
|
|
||||||
|
# get all documents from collection
|
||||||
|
# Suppress _id field from being returned
|
||||||
|
# as new collection will have its own _id field
|
||||||
|
resources = collection.find({}, {"_id": 0})
|
||||||
|
|
||||||
|
# convert to json
|
||||||
|
resources = json.loads(json_util.dumps(resources))
|
||||||
|
|
||||||
|
new_collection.insert_many(resources)
|
||||||
49
util/helper_scripts_for_mongodb/helper.py
Normal file
49
util/helper_scripts_for_mongodb/helper.py
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# Copyright (c) 2023 The Regents of the University of California
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are
|
||||||
|
# met: redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer;
|
||||||
|
# redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution;
|
||||||
|
# neither the name of the copyright holders nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived from
|
||||||
|
# this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
"""
|
||||||
|
This script contains helper functions for the scripts in this directory.
|
||||||
|
This script requires external packages, please install them by running:
|
||||||
|
pip3 install -r requirements.txt
|
||||||
|
"""
|
||||||
|
|
||||||
|
import json
|
||||||
|
|
||||||
|
from bson import json_util
|
||||||
|
from pymongo import MongoClient
|
||||||
|
|
||||||
|
|
||||||
|
def get_database(uri, db_name, collection_name):
|
||||||
|
client = MongoClient(uri)
|
||||||
|
db = client[db_name]
|
||||||
|
collection = db[collection_name]
|
||||||
|
return collection
|
||||||
|
|
||||||
|
|
||||||
|
def save_to_json(resources, json_file_name):
|
||||||
|
with open(json_file_name, "w") as outfile:
|
||||||
|
json.dump(json.loads(json_util.dumps(resources)), outfile, indent=4)
|
||||||
3
util/helper_scripts_for_mongodb/requirements.txt
Normal file
3
util/helper_scripts_for_mongodb/requirements.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
```
|
||||||
|
bson == 0.5.10
|
||||||
|
pymongo == 4.3.3
|
||||||
101
util/helper_scripts_for_mongodb/update-gem5-versions.py
Normal file
101
util/helper_scripts_for_mongodb/update-gem5-versions.py
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# Copyright (c) 2023 The Regents of the University of California
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are
|
||||||
|
# met: redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer;
|
||||||
|
# redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution;
|
||||||
|
# neither the name of the copyright holders nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived from
|
||||||
|
# this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
"""
|
||||||
|
This script grabs all resources categorically from a specified collection in a MongoDB
|
||||||
|
database and adds a new gem5 version to the gem5_versions field of each
|
||||||
|
resource.
|
||||||
|
|
||||||
|
To run this script you use the following command:
|
||||||
|
python3 ./update-gem5-versions.py --uri <uri> --db <db_name> /
|
||||||
|
--collection <collection_name> --version <version> /
|
||||||
|
--category <category> --outfile <outfile>
|
||||||
|
"""
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
|
||||||
|
from bson import json_util
|
||||||
|
from helper import (
|
||||||
|
get_database,
|
||||||
|
save_to_json,
|
||||||
|
)
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Get all resources from a "
|
||||||
|
"specified collection in a MongoDB database "
|
||||||
|
"and add a new gem5 version to the "
|
||||||
|
"gem5_versions field of each resource."
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--uri", help="URI of the database", type=str, required=True
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--version",
|
||||||
|
help="Version to add to gem5_versions",
|
||||||
|
type=str,
|
||||||
|
required=True,
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--db", help="Name of the database", type=str, default="gem5-vision"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--collection",
|
||||||
|
help="Name of the collection",
|
||||||
|
type=str,
|
||||||
|
default="resources",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--category", help="Category to not update", action="append"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--outfile",
|
||||||
|
help="Name of the output json file",
|
||||||
|
type=str,
|
||||||
|
default="resources_update_gem5_versions.json",
|
||||||
|
)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# if no category is excluded, set category to empty list
|
||||||
|
if args.category is None:
|
||||||
|
args.category = []
|
||||||
|
|
||||||
|
collection = get_database(args.uri, args.db, args.collection)
|
||||||
|
|
||||||
|
# get all documents from resources collection
|
||||||
|
resources = collection.find({}, {"_id": 0})
|
||||||
|
resources = json.loads(json_util.dumps(resources))
|
||||||
|
|
||||||
|
for resource in resources:
|
||||||
|
if resource["category"] in args.category:
|
||||||
|
continue
|
||||||
|
if args.version in resource["gem5_versions"]:
|
||||||
|
continue
|
||||||
|
resource["gem5_versions"].append(args.version)
|
||||||
|
|
||||||
|
save_to_json(resources, args.outfile)
|
||||||
Reference in New Issue
Block a user