geo servershell

Post on 10-May-2015

564 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Administer GeoServer from a Command Line Interface`

TRANSCRIPT

Geoserver ShellAdminister Geoserver using a CLI

Jared EricksonCUGOS July 2013

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?

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

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)

Geoserver UI

Geoserver Catalog• Workspace

• Namespace

• DataStore

• FeatureType

• CoverageStore

• Coverage

• Layer

• LayerGroups

• Style

• WMSStore

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

VerbsCommands Verbs

list GET

get GET

create POST

modify PUT

delete DELETE

Geoserver Rest UI

/geoserver/rest/layers

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

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)

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);

Github

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

Install

• Download 0.1 release

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

• Put bin directory on path

• run gs-shell

• Requires Java

Spring Shell• Open source project from Spring Source

• Shell extracted from Spring Roo

• Spring Roo is a Java RAD tool for creating web apps

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

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

Commandsgeoserver

workspace

version

manifest

namespace

style

template

font

datastore

shapefile

postgis

featuretype

coverage stores

coverage

worldimage

layers

ows

settings

gwc

wmsstore

Workspace Commands• workspace list

• workspace create --name test

• workspace get --name test

• workspace delete --name test

• workspace default get

• workspace default set --name test

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

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

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

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

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

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

top related