Geo servershell

27
Geoserver Shell Administer Geoserver using a CLI Jared Erickson CUGOS July 2013

description

Administer GeoServer from a Command Line Interface`

Transcript of Geo servershell

Page 1: Geo servershell

Geoserver ShellAdminister Geoserver using a CLI

Jared EricksonCUGOS July 2013

Page 2: Geo servershell

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

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

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

Geoserver UI

Page 6: Geo servershell

Geoserver Catalog• Workspace

• Namespace

• DataStore

• FeatureType

• CoverageStore

• Coverage

• Layer

• LayerGroups

• Style

• WMSStore

Page 7: Geo servershell

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

VerbsCommands Verbs

list GET

get GET

create POST

modify PUT

delete DELETE

Page 9: Geo servershell

Geoserver Rest UI

Page 10: Geo servershell

/geoserver/rest/layers

Page 11: Geo servershell

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

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

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

Github

https://github.com/jericks/geoserver-shell

Page 15: Geo servershell

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

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

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

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

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

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

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

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

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

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

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

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