From e9e4bc3a8864dd1763b5e85fc225c3f83b14c9c5 Mon Sep 17 00:00:00 2001 From: akshayb2022 Date: Fri, 29 Apr 2022 13:24:37 +0530 Subject: [PATCH 1/4] Script for updating layers. --- performance_tests/update_layers/layers.txt | 1 + .../update_layers/tile_layer_template.xml.txt | 39 +++++++++++++ .../update_layers/update_xml_file.py | 55 +++++++++++++++++++ 3 files changed, 95 insertions(+) create mode 100644 performance_tests/update_layers/layers.txt create mode 100644 performance_tests/update_layers/tile_layer_template.xml.txt create mode 100755 performance_tests/update_layers/update_xml_file.py diff --git a/performance_tests/update_layers/layers.txt b/performance_tests/update_layers/layers.txt new file mode 100644 index 0000000..8011709 --- /dev/null +++ b/performance_tests/update_layers/layers.txt @@ -0,0 +1 @@ +["nurc:Pk50095","spearfish","sf:restricted","nurc:Img_Sample","tasmania","sf:archsites","tiger-ny","topp:states","topp:tasmania_state_boundaries","nurc:Arc_Sample","sf:bugsites","tiger:giant_polygon","topp:tasmania_water_bodies","tiger:poly_landmarks","topp:tasmania_cities","sf:sfdem","tiger:tiger_roads","nurc:mosaic","tiger:poi","topp:tasmania_roads","sf:streams","sf:roads"] diff --git a/performance_tests/update_layers/tile_layer_template.xml.txt b/performance_tests/update_layers/tile_layer_template.xml.txt new file mode 100644 index 0000000..cfdf4f7 --- /dev/null +++ b/performance_tests/update_layers/tile_layer_template.xml.txt @@ -0,0 +1,39 @@ + + + {{layer_id}} + true + true + {{layer_name}} + + image/png + image/jpeg + image/png8 + + + + EPSG:4326 + + + 7.475217105133489 + 35.21695657422812 + 19.380075671969546 + 45.893769848344476 + + + + + + 4 + 4 + + 0 + 0 + + + STYLES + + + + 0 + + \ No newline at end of file diff --git a/performance_tests/update_layers/update_xml_file.py b/performance_tests/update_layers/update_xml_file.py new file mode 100755 index 0000000..6297461 --- /dev/null +++ b/performance_tests/update_layers/update_xml_file.py @@ -0,0 +1,55 @@ +""" +Use this script + +COMMAND: +python3 update_xml_file.py 'http://localhost:8080/geoserver/gwc/rest/layers/' USERNAME PASSWORD ./layers.txt ./tile_layer_template.xml.txt + +""" + + +import sys +import ast +import json +import requests +import xmltodict +from requests.auth import HTTPBasicAuth + + +URL = sys.argv[1] +username = sys.argv[2] +password = sys.argv[3] +layer_file = sys.argv[4] +xml_file = sys.argv[5] + + +f = open(layer_file, "r") +layers = f.read() +layers_list = ast.literal_eval(layers) + +for layer_name in layers_list: + layerName = layer_name + response = requests.get( + URL + layerName + ".xml", auth=HTTPBasicAuth(username, password) + ) + xpars = xmltodict.parse(response.text) + + layerId = xpars["GeoServerLayer"]["id"] + + f = open(xml_file, "r") + data = f.read() + + file = xmltodict.parse(data) + file["GeoServerLayer"]["id"] = layerId + file["GeoServerLayer"]["name"] = layerName + + headers = {"Content-Type": "application/json"} + + response = requests.request( + "PUT", + URL + layerName, + headers=headers, + data=json.dumps(file), + auth=HTTPBasicAuth(username, password), + ) + + print(response.text) From 684a30625b55394f0ff9babda05ed21524814f76 Mon Sep 17 00:00:00 2001 From: akshayb2022 Date: Tue, 3 May 2022 13:48:02 +0530 Subject: [PATCH 2/4] Fix PR comments. --- utils/update_layers/layers.txt | 1 + utils/update_layers/requriments.txt | 2 + .../update_layers/tile_layer_template.xml.txt | 39 +++++++++++ utils/update_layers/update_xml_file.py | 68 +++++++++++++++++++ 4 files changed, 110 insertions(+) create mode 100644 utils/update_layers/layers.txt create mode 100644 utils/update_layers/requriments.txt create mode 100644 utils/update_layers/tile_layer_template.xml.txt create mode 100755 utils/update_layers/update_xml_file.py diff --git a/utils/update_layers/layers.txt b/utils/update_layers/layers.txt new file mode 100644 index 0000000..8011709 --- /dev/null +++ b/utils/update_layers/layers.txt @@ -0,0 +1 @@ +["nurc:Pk50095","spearfish","sf:restricted","nurc:Img_Sample","tasmania","sf:archsites","tiger-ny","topp:states","topp:tasmania_state_boundaries","nurc:Arc_Sample","sf:bugsites","tiger:giant_polygon","topp:tasmania_water_bodies","tiger:poly_landmarks","topp:tasmania_cities","sf:sfdem","tiger:tiger_roads","nurc:mosaic","tiger:poi","topp:tasmania_roads","sf:streams","sf:roads"] diff --git a/utils/update_layers/requriments.txt b/utils/update_layers/requriments.txt new file mode 100644 index 0000000..630fa86 --- /dev/null +++ b/utils/update_layers/requriments.txt @@ -0,0 +1,2 @@ +requests==2.27.1 +xmltodict==0.12.0 diff --git a/utils/update_layers/tile_layer_template.xml.txt b/utils/update_layers/tile_layer_template.xml.txt new file mode 100644 index 0000000..cfdf4f7 --- /dev/null +++ b/utils/update_layers/tile_layer_template.xml.txt @@ -0,0 +1,39 @@ + + + {{layer_id}} + true + true + {{layer_name}} + + image/png + image/jpeg + image/png8 + + + + EPSG:4326 + + + 7.475217105133489 + 35.21695657422812 + 19.380075671969546 + 45.893769848344476 + + + + + + 4 + 4 + + 0 + 0 + + + STYLES + + + + 0 + + \ No newline at end of file diff --git a/utils/update_layers/update_xml_file.py b/utils/update_layers/update_xml_file.py new file mode 100755 index 0000000..e9d6daf --- /dev/null +++ b/utils/update_layers/update_xml_file.py @@ -0,0 +1,68 @@ +""" +Use this script + +COMMAND: +python3 update_xml_file.py 'http://localhost:8080/geoserver/gwc/rest/layers/' USERNAME PASSWORD ./layers.txt ./tile_layer_template.xml.txt + +System Argument needs to pass: +USERNAME +PASSWORD +LAYERS FILE +XML FILE + +""" + + +import sys +import ast +import json +import requests +import xmltodict +from requests.auth import HTTPBasicAuth + + +if len(sys.argv) > 6 or len(sys.argv) < 6: + raise Exception("Expected 6 arguments are not given.") + +URL = sys.argv[1] +username = sys.argv[2] +password = sys.argv[3] +layer_file = sys.argv[4] +xml_file = sys.argv[5] + + +f = open(layer_file, "r") +layers = f.read() +layers_list = ast.literal_eval(layers) + +for layer_name in layers_list: + layerName = layer_name + response = requests.get( + URL + layerName + ".xml", auth=HTTPBasicAuth(username, password) + ) + + if response.status_code == 401: + raise Exception("Incorrect USERNAME or PASSWORD") + + xpars = xmltodict.parse(response.text) + + layerId = xpars["GeoServerLayer"]["id"] + + f = open(xml_file, "r") + data = f.read() + + file = xmltodict.parse(data) + file["GeoServerLayer"]["id"] = layerId + file["GeoServerLayer"]["name"] = layerName + + headers = {"Content-Type": "application/json"} + + response = requests.request( + "PUT", + URL + layerName, + headers=headers, + data=json.dumps(file), + auth=HTTPBasicAuth(username, password), + ) + + print(response.text) From 6298a88c64f67bc490bd0eb8b92e70d4eea5fa19 Mon Sep 17 00:00:00 2001 From: akshayb2022 Date: Tue, 3 May 2022 13:48:57 +0530 Subject: [PATCH 3/4] Fix PR comments. --- performance_tests/update_layers/layers.txt | 1 - .../update_layers/tile_layer_template.xml.txt | 39 ------------- .../update_layers/update_xml_file.py | 55 ------------------- 3 files changed, 95 deletions(-) delete mode 100644 performance_tests/update_layers/layers.txt delete mode 100644 performance_tests/update_layers/tile_layer_template.xml.txt delete mode 100755 performance_tests/update_layers/update_xml_file.py diff --git a/performance_tests/update_layers/layers.txt b/performance_tests/update_layers/layers.txt deleted file mode 100644 index 8011709..0000000 --- a/performance_tests/update_layers/layers.txt +++ /dev/null @@ -1 +0,0 @@ -["nurc:Pk50095","spearfish","sf:restricted","nurc:Img_Sample","tasmania","sf:archsites","tiger-ny","topp:states","topp:tasmania_state_boundaries","nurc:Arc_Sample","sf:bugsites","tiger:giant_polygon","topp:tasmania_water_bodies","tiger:poly_landmarks","topp:tasmania_cities","sf:sfdem","tiger:tiger_roads","nurc:mosaic","tiger:poi","topp:tasmania_roads","sf:streams","sf:roads"] diff --git a/performance_tests/update_layers/tile_layer_template.xml.txt b/performance_tests/update_layers/tile_layer_template.xml.txt deleted file mode 100644 index cfdf4f7..0000000 --- a/performance_tests/update_layers/tile_layer_template.xml.txt +++ /dev/null @@ -1,39 +0,0 @@ - - - {{layer_id}} - true - true - {{layer_name}} - - image/png - image/jpeg - image/png8 - - - - EPSG:4326 - - - 7.475217105133489 - 35.21695657422812 - 19.380075671969546 - 45.893769848344476 - - - - - - 4 - 4 - - 0 - 0 - - - STYLES - - - - 0 - - \ No newline at end of file diff --git a/performance_tests/update_layers/update_xml_file.py b/performance_tests/update_layers/update_xml_file.py deleted file mode 100755 index 6297461..0000000 --- a/performance_tests/update_layers/update_xml_file.py +++ /dev/null @@ -1,55 +0,0 @@ -""" -Use this script - -COMMAND: -python3 update_xml_file.py 'http://localhost:8080/geoserver/gwc/rest/layers/' USERNAME PASSWORD ./layers.txt ./tile_layer_template.xml.txt - -""" - - -import sys -import ast -import json -import requests -import xmltodict -from requests.auth import HTTPBasicAuth - - -URL = sys.argv[1] -username = sys.argv[2] -password = sys.argv[3] -layer_file = sys.argv[4] -xml_file = sys.argv[5] - - -f = open(layer_file, "r") -layers = f.read() -layers_list = ast.literal_eval(layers) - -for layer_name in layers_list: - layerName = layer_name - response = requests.get( - URL + layerName + ".xml", auth=HTTPBasicAuth(username, password) - ) - xpars = xmltodict.parse(response.text) - - layerId = xpars["GeoServerLayer"]["id"] - - f = open(xml_file, "r") - data = f.read() - - file = xmltodict.parse(data) - file["GeoServerLayer"]["id"] = layerId - file["GeoServerLayer"]["name"] = layerName - - headers = {"Content-Type": "application/json"} - - response = requests.request( - "PUT", - URL + layerName, - headers=headers, - data=json.dumps(file), - auth=HTTPBasicAuth(username, password), - ) - - print(response.text) From c92aaee4910105639f4df8830c8a375c68c3873a Mon Sep 17 00:00:00 2001 From: akshayb2022 Date: Wed, 11 May 2022 12:52:58 +0530 Subject: [PATCH 4/4] Fix PR comments, Add checks to validate presence of correct arguments --- README.md | 8 +++++++- utils/update_layers/update_xml_file.py | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index aa03b79..5fc5429 100644 --- a/README.md +++ b/README.md @@ -3,4 +3,10 @@ Scripts A collection of bash script usefull for common tasks like tomcat startup or watchdog. -See the wiki for more info on how to install and use them. \ No newline at end of file +See the wiki for more info on how to install and use them. + +COMMAND for updating layers +--------------------------- +```python3 update_xml_file.py 'http://localhost:8080/geoserver/gwc/rest/layers/' USERNAME PASSWORD ./layers.txt ./tile_layer_template.xml.txt``` + +System Argument needs to pass: (USERNAME, PASSWORD, LAYERS FILE, XML FILE) \ No newline at end of file diff --git a/utils/update_layers/update_xml_file.py b/utils/update_layers/update_xml_file.py index e9d6daf..dd75a0a 100755 --- a/utils/update_layers/update_xml_file.py +++ b/utils/update_layers/update_xml_file.py @@ -30,6 +30,16 @@ layer_file = sys.argv[4] xml_file = sys.argv[5] +if not (username and password and layer_file and xml_file): + raise Exception( + "System Argument needs to pass: (USERNAME, PASSWORD, LAYERS FILE, XML FILE)" + ) +elif ".xml" not in xml_file: + raise Exception("Please pass xml file here.") +elif ".txt" not in layer_file: + raise Exception("Please pass txt file for layers.") +elif "layers" not in URL: + raise Exception("Please pass correct layer URL.") f = open(layer_file, "r") layers = f.read()