Sherpa API Information

The Sherpa client is based upon 2 cosign protected web services.  These services take inputs as standard CGI parameters and return JSON formatted output.

Generally the planning service is used to figure out the design of the vlan, then the provisioning service is used to request a vlan be created, edited, or removed now or sometime in the future.

To facilitate programatic access we provide a client side perl library which allows you to interact with our cosign protected webservices directly.

In addition, we provide a few demo perl scripts.


 

GRNOC::Sherpa::Planning

 

Description


  Sherpa Planning Service
 

Location


  https://sherpa.grnoc.iu.edu/service/planning.cgi
 

Methods

  get_available_vlan_id
  get_entities
  get_interfaces
  get_shortest_path
  get_trunks
  get_vlan_path
  get_vlan_root_bridge
  get_vlan_schedule
  get_vlans
  get_workgroups
  is_vlan_id_available
 
 

get_available_vlan_id

Output Type


  text/plain

Input Parameters:
 

  Name: net
  Pattern: ^(\d+)$
  Required: Yes

  Description: The administrative network identifier


  Name: vlan_id
  Pattern: ^(\d+)$
  Required: No
  Description: optional vlan id/tag, if this is provided we check this specific tag or return the closest next avail.

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier
 

Description: 

  Returns a vlan id that is available for use
 

get_entities

Output Type

  text/plain


Input Parameters:

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:
  Returns the list of entities that can be assign to a vlan by users in the specified workgroup
 

get_interfaces

Output Type

  text/plain

Input Parameters:

  Name: node_name
  Pattern: ^((\w+\.?)+)$
  Required: Yes
  Description: the node with interfaces you want to know about

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:


  Returns the list interfaces on a node upon which a workgroup is allowed to set vlan endpoints
 

get_shortest_path

Output Type

  text/plain

Input Parameters:

  Name: node_z
  Pattern: ^((\w+\.?)+)$
  Required: Yes
  Description: the other endpoint node eg \"chic.layer2.nlr.net\"
 

  Name: node_a
  Pattern: ^((\w+\.?)+)$
  Required: Yes
  Description: one of the endpoint nodes eg \"denv.layer2.nlr.net\"

  Name: reserved_bandwidth
  Pattern: ^(\d+)$
  Required: Yes
  Description: amount of available bandwidth to check for on each trunk

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier
 

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:

  Returns the shortest available path between node a and z. Checks for sufficient bandwidth.
 

get_trunks

Output Type

  text/plain

Input Parameters:

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:

  Returns the list of trunks available for use by the wg
 

get_vlan_path

Output Type

  text/plain

Input Parameters:

  Name: ckt_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: the vlan's ckt id

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:

  Returns the set of trunks the vlan currently traverses
 

get_vlan_root_bridge

Output Type

  text/plain

Input Parameters:

  Name: ckt_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: the vlan's ckt id

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:

  Returns the specified root bridge (not the current acting)
 

get_vlan_schedule

Output Type

  text/plain

Input Parameters:

  Name: ckt_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: database ckt_id

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier 

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:

  Returns the pending scheduled events for the specified vlan
 

get_vlans

Output Type

  text/plain

Input Parameters:

  Name: search
  Pattern: ^(\w+)$
  Required: No
  Description: Optional search routine to search for vlans by name, description, or vlan id content

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:

  provides the set of vlans a user in the specified workgroup is allowed to manipulate
 

get_workgroups

Output Type

  text/plain

Input Parameters:

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

Description:

  Returns the list of workgroups the remote user is allowed to use
 

is_vlan_id_available

Output Type

  text/plain

Input Parameters:

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: vlan_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: vlan tag/id to check

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:

  tests if the vlan tag is available for use

 


 

GRNOC::Sherpa::Provisioning

 

Description

 
  Sherpa VLAN Provisioning

Location

 
  https://sherpa.grnoc.iu.edu/service/provisioning.cgi

Methods

  add_reservation
  edit_vlan
  get_reservations
  get_status
  is_edit_intrusive
  provision_vlan
  remove_reservation
  remove_scheduled_edit
  remove_vlan
  schedule_add
  schedule_edit
  schedule_remove
 
 

add_reservation

Output Type

  text/plain

Input Parameters:

  Name: description
  Pattern: ^((\w+|\||\s+|:|\#+|\-|\=)+)$
  Required: Yes
  Description: description of why these tags are reserved (for your use)

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: vlan_id2
  Pattern: ^(\d+)$
  Required: No
  Description: second tag, used when reserving a range of tag

  Name: vlan_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: first vlan tag

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:

  reserves one or more vlan tags
 

edit_vlan

Output Type

  text/plain

Input Parameters:

  Name: root_bridge
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the node you want to be the root of the vlan spanning tree

  Name: node_z
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the Z end node name

  Name: int_a
  Pattern: ^((\w|-)+(\d+\/?:?)+)$
  Required: Yes
  Description: the A end interface name

  Name: node_a
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the A end node name

  Name: path
  Pattern: ^(((\w+-\w+-\w+-\w+-\d+)\s*)+)$
  Required: Yes
  Description: comma separated list trunk ckts upon which this vlan should ride

  Name: reserved_bandwidth
  Pattern: ^(\d+)$
  Required: Yes
  Description: amount of bandwidth to reserve in bits per second

  Name: description
  Pattern: ^((\w+|\||\s+|:|\#+|\-|\=)+)$
  Required: Yes
  Description: vlan description

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: vlan_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: vlan id aka tag

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

  Name: int_z
  Pattern: ^((\w|-)+(\d+\/?:?)+)$
  Required: Yes
  Description: the Z end interface name

  Name: entity_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: associated entity

  Name: request_id

  Pattern: ^(\d+)$

  Required: Yes
  Description: integer id for tracking request

Description:

  modify an existing vlan
 

get_reservations

Output Type

  text/plain

Input Parameters:

  Name: search
  Pattern: ^(\w+)$
  Required: No
  Description: optional search pattern

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:

  Returns the list reserved_vlans
 

get_status

Output Type

  text/plain

Input Parameters:

  Name: request_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: id used at time of provisioning

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: vlan_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: vlan tag for this vlan

  Name: wg
  Pattern: ^(\d+)$

  Required: Yes
  Description: The workgroup identifier

Description:

  checks the provisioning status of a vlan
 

is_edit_intrusive

Output Type

text/plain

Input Parameters:

  Name: root_bridge
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the node you want to be the root of the vlan spanning tree

  Name: node_z
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the Z end node name

  Name: int_a
  Pattern: ^((\w|-)+(\d+\/?:?)+)$
  Required: Yes
  Description: the A end interface name

  Name: node_a
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the A end node name

  Name: path
  Pattern: ^(((\w+-\w+-\w+-\w+-\d+)\s*)+)$
  Required: Yes
  Description: comma separated list trunk ckts upon which this vlan should ride

  Name: reserved_bandwidth
  Pattern: ^(\d+)$
  Required: Yes
  Description: amount of bandwidth to reserve in bits per second
 

  Name: description
  Pattern: ^((\w+|\||\s+|:|\#+|\-|\=)+)$
  Required: Yes
  Description: vlan description

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: vlan_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: vlan id aka tag

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

  Name: int_z
  Pattern: ^((\w|-)+(\d+\/?:?)+)$
  Required: Yes
  Description: the Z end interface name

  Name: entity_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: associated entity

Description:

  test proposed changed to see if they will interrupt packet forwarding
 

provision_vlan

Output Type

  text/plain

Input Parameters:

  Name: root_bridge
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the node you want to be the root of the vlan spanning tree
 

  Name: node_z
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the Z end node name

  Name: int_a
  Pattern: ^(\w+(\d+\/?:?)+)$
  Required: Yes
  Description: the A end interface name 

  Name: node_a
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the A end node name
 

  Name: path
  Pattern: ^(((\w+-\w+-\w+-\w+-\d+)\s*)+)$
  Required: Yes
  Description: comma separated list trunk ckts upon which this vlan should ride

  Name: reserved_bandwidth
  Pattern: ^(\d+)$
  Required: Yes
  Description: amount of bandwidth to reserve in bits per second
 

  Name: description
  Pattern: ^((\w+|\||\s+|:|\#+|\-|\=)+)$
  Required: Yes
  Description: vlan description

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: vlan_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: vlan id aka tag

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

  Name: int_z
  Pattern: ^(\w+(\d+\/?:?)+)$
  Required: Yes
  Description: the Z end interface name

  Name: entity_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: associated entity

  Name: decom_date
  Pattern: ^(\d+)$
  Required: No
  Description: Optional time this vlan should be removed, in unix epoch

  Name: request_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: integer id used to reference this request
 

Description:

  creates a vlan on the network
 

remove_reservation

Output Type

  text/plain

Input Parameters:

  Name: net
  Pattern: ^(\d+)$
  Required: Yes

  Description: The administrative network identifier
 

  Name: vlan_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: vlan tag

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:

  removes the specified reservation
 

remove_scheduled_edit

Output Type

  text/plain

Input Parameters:

  Name: sched_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: schedule record id

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:

  removes the specified edit from the scheduler queue
 

remove_vlan

Output Type

  text/plain

Input Parameters:

  Name: request_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: request tracking id

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: vlan_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: vlan_id aka tag you want to remove

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:

  removes the specified vlan from the network

schedule_add

Output Type

  text/plain

Input Parameters:

  Name: activation_date
  Pattern: ^(\d+)$
  Required: Yes
  Description: time this modification should become active, in unix epoch

  Name: root_bridge
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the node you want to be the root of the vlan spanning tree

  Name: node_z
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the Z end node name

  Name: int_a
  Pattern: ^((\w|-)+(\d+\/?:?)+)$
  Required: Yes
  Description: the A end interface name

  Name: node_a
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the A end node name

  Name: path
  Pattern: ^(((\w+-\w+-\w+-\w+-\d+)\s*)+)$
  Required: Yes
  Description: comma separated list trunk ckts upon which this vlan should ride

  Name: reserved_bandwidth
  Pattern: ^(\d+)$
  Required: Yes
  Description: amount of bandwidth to reserve in bits per second

  Name: description
  Pattern: ^((\w+|\||\s+|:|\#+|\-|\=)+)$
  Required: Yes
  Description: vlan description

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: vlan_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: vlan id aka tag

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier
 

  Name: int_z
  Pattern: ^((\w|-)+(\d+\/?:?)+)$
  Required: Yes
  Description: the Z end interface name
 

  Name: entity_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: associated entity

  Name: decom_date
  Pattern: ^(\d+)$
  Required: No
  Description: Optional time this vlan should be removed, in unix epoch

Description:
 

  add a new vlan some time in the future
 

schedule_edit

Output Type

  text/plain

Input Parameters:
 

  Name: activation_date
  Pattern: ^(\d+)$
  Required: Yes
  Description: time this modification should become active, in unix epoch

  Name: root_bridge
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes

  Description: the node you want to be the root of the vlan spanning tree

  Name: node_z
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the Z end node name

  Name: int_a
  Pattern: ^((\w|-)+(\d+\/?:?)+)$
  Required: Yes
  Description: the A end interface name

  Name: node_a
  Pattern: ^((\w+\.)*(\w*))$
  Required: Yes
  Description: the A end node name

  Name: path
  Pattern: ^(((\w+-\w+-\w+-\w+-\d+)\s*)+)$
  Required: Yes
  Description: comma separated list trunk ckts upon which this vlan should ride

  Name: reserved_bandwidth
  Pattern: ^(\d+)$
  Required: Yes
  Description: amount of bandwidth to reserve in bits per second

  Name: description
  Pattern: ^((\w+|\||\s+|:|\#+|\-|\=)+)$
  Required: Yes
  Description: vlan description

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: vlan_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: vlan id aka tag

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

  Name: int_z
  Pattern: ^((\w|-)+(\d+\/?:?)+)$
  Required: Yes
  Description: the Z end interface name

  Name: entity_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: associated entity

Description:

  modify an existing vlan some time in the future
 

schedule_remove

Output Type

  text/plain

Input Parameters:

  Name: decom_date
  Pattern: ^(\d+)$
  Required: Yes
  Description: time this vlan should be removed, in unix epoch

  Name: net
  Pattern: ^(\d+)$
  Required: Yes
  Description: The administrative network identifier

  Name: vlan_id
  Pattern: ^(\d+)$
  Required: Yes
  Description: vlan_id aka tag you want to remove

  Name: wg
  Pattern: ^(\d+)$
  Required: Yes
  Description: The workgroup identifier

Description:

  removes the vlan from the network at a later time