Geo servershell
-
Upload
jared-erickson -
Category
Technology
-
view
564 -
download
3
description
Transcript of Geo servershell
![Page 1: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/1.jpg)
Geoserver ShellAdminister Geoserver using a CLI
Jared EricksonCUGOS July 2013
![Page 2: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/2.jpg)
Outline• What is Geoserver Shell?
• Why does Geoserver need a CLI?
• What are we administering with CLI?
• How does it work?
• What does it look like in action?
![Page 3: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/3.jpg)
What is it?• Administer Geoserver from a command
line interface (CLI)
• Uses Geoserver Rest interface
• Based on Spring Shell
• Uses GeoServer Manager and GeoTools
• Written in Java
• Open Source MIT License
• Hosted on Github
![Page 4: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/4.jpg)
Why a CLI?
• Web UI is a major feature
• Non developers can load data and styles
• CLI is quick, efficient and scriptable
• Once a script is written it can be replayed on other Geoservers (set up dev, then test, then production)
![Page 5: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/5.jpg)
Geoserver UI
![Page 6: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/6.jpg)
Geoserver Catalog• Workspace
• Namespace
• DataStore
• FeatureType
• CoverageStore
• Coverage
• Layer
• LayerGroups
• Style
• WMSStore
![Page 7: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/7.jpg)
Geoserver Rest
• Administer GeoServer without GUI
• Multiple representations: HTML, JSON, XML
• HTTP Verbs: GET, POST, PUT, DELETE
• HATEOS - linking
• http://docs.geoserver.org/stable/en/user/rest/index.html
• Integrate with 3rd party applications
![Page 8: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/8.jpg)
VerbsCommands Verbs
list GET
get GET
create POST
modify PUT
delete DELETE
![Page 9: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/9.jpg)
Geoserver Rest UI
![Page 10: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/10.jpg)
/geoserver/rest/layers
![Page 11: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/11.jpg)
Client #1 = curl• Upload a Shapefile
• Create a Workspace
curl -v -u admin:geoserver -XPUT -H "Content-type: application/zip" --data-binary @roads.zip http://localhost:8080/geoserver/rest/workspaces/acme/datastores/roads/file.shp
curl -v -u admin:geoserver -XPOST -H "Content-type: text/xml" -d "<workspace><name>acme</name></workspace>" http://localhost:8080/geoserver/rest/workspaces
![Page 12: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/12.jpg)
Client #2 = Python
• gsconfig.py
• https://github.com/dwins/gsconfig.py/wiki
• Used by GeoNode
>>> from geoserver.catalog import Catalog>>> cat = Catalog("http://localhost:8080/geoserver/rest", "admin", "geoserver")>>> cat.get_layers()[Layer[Arc_Sample], Layer[Pk50095], Layer[Img_Sample], ...
>>> that_layer = cat.get_layer("roads")>>> that_layer.enabled = False>>> cat.save(that_layer)
![Page 13: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/13.jpg)
Client #3 = Java
• Geoserver Manager Library
• https://github.com/geosolutions-it/geoserver-manager
GeoServerRESTReader reader = new GeoServerRESTReader(url, user, password);RESTStyleList styleList = reader.getStyles();List<String> names = styleList.getNames();
GeoServerRESTPublisher publisher = new GeoServerRESTPublisher(url, user, password);publisher.createWorkspace(name);
![Page 14: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/14.jpg)
Github
https://github.com/jericks/geoserver-shell
![Page 15: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/15.jpg)
Install
• Download 0.1 release
• https://github.com/jericks/geoserver-shell/releases
• Put bin directory on path
• run gs-shell
• Requires Java
![Page 16: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/16.jpg)
Spring Shell• Open source project from Spring Source
• Shell extracted from Spring Roo
• Spring Roo is a Java RAD tool for creating web apps
![Page 17: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/17.jpg)
Spring Shell
• Interactive shell environment
• Tab completion for commands, arguments, and files
• History support (up and down arrows)
• Knows your commands and when you can use them
![Page 18: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/18.jpg)
Geoserver Shell
• Commands for each major Geoserver Catalog item
• Methods in command construct a URL, create a request body (xml, file) and make an Http Request to Geoserver. The Geoserver response is parsed and displayed to the user
![Page 19: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/19.jpg)
Commandsgeoserver
workspace
version
manifest
namespace
style
template
font
datastore
shapefile
postgis
featuretype
coverage stores
coverage
worldimage
layers
ows
settings
gwc
wmsstore
![Page 20: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/20.jpg)
Workspace Commands• workspace list
• workspace create --name test
• workspace get --name test
• workspace delete --name test
• workspace default get
• workspace default set --name test
![Page 21: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/21.jpg)
Workspacegs-shell> geoserver set --url http://localhost:8080/geoserver
gs-shell> workspace create --name naturalearthtrue
gs-shell> workspace listtoppnurc
gs-shell> workspace get --name naturalearthnaturalearth
![Page 22: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/22.jpg)
Shapefilegs-shell> geoserver set --url http://localhost:8080/geoserver
gs-shell> workspace create --name naturalearthtrue
gs-shell> shapefile zip --shapefile 110m_admin_0_countries.shptrue
gs-shell> shapefile publish --file 110m_admin_0_countries.zip --workspace naturalearthtrue
![Page 23: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/23.jpg)
PostGISgs-shell> geoserver set --url http://localhost:8080/geoservergs-shell> workspace create --name post
gs-shell> postgis datastore create --workspace post --datastore postgis --host localhost --port 5432 --database postgres --schema public --user postgres --password postgrestrue
gs-shell> featuretype list --workspace post --datastore postgis --list availablestatescountriescities
gs-shell> postgis featuretype publish --workspace post --datastore postgis --table 110m-admin-0-countriestrue
![Page 24: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/24.jpg)
GeoTiffgs-shell> geoserver set --url http://localhost:8080/geoserver
gs-shell> coverage store upload --workspace naturalearth --file GRAY_50M_SR_OB.zip --coveragestore world --type worldimage --configure firsttrue
gs-shell> coverage list --workspace naturalearth --coveragestore worldGRAY_50M_SR_OBBLUE_MARBLE
gs-shell> coverage modify --workspace naturalearth --coveragestore world --coverage GRAY_50M_SR_OB --srs EPSG:4326 --enabled truetrue
![Page 25: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/25.jpg)
Stylesgs-shell> style create --file 110m_admin_0_countries.sld --name 110m_admin_0_countriestrue
gs-shell> layer style add --name 110m_admin_0_countries --style 110m_admin_0_countriestrue
gs-shell> layer get --name 110m_admin_0_countries110m_admin_0_countries Title: null Type: VECTOR Abstract: null Default Style: 110m_admin_0_countries Namespace: Type String: VECTOR
gs-shell> layer modify --name 110m_admin_0_countries --defaultStyle 110m_admin_0_countriestrue
![Page 26: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/26.jpg)
Scripts
$ gs-shell --cmdfile mycommands.gs
gs-shell> script --file naturalearth_countries.gs
• Scripts contain the same commands entered interactively
• History support saves session to geoserver-shell.log
![Page 27: Geo servershell](https://reader034.fdocuments.in/reader034/viewer/2022052315/554f4be9b4c905524c8b4a0c/html5/thumbnails/27.jpg)
Thank you!Jared Erickson
https://github.com/jericks