Skip to content

Latest commit

 

History

History
3829 lines (2995 loc) · 103 KB

sls.md

File metadata and controls

3829 lines (2995 loc) · 103 KB

System Layout Service v2

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

System Layout Service (SLS) holds information on the complete, designed system. SLS gets this information from an input file on the system. Besides information like what hardware should be present in a system, SLS also stores information about what network connections exist and what power connections exist. SLS details the physical locations of network hardware, compute nodes and cabinets. Further, it stores information about the network, such as which port on which switch should be connected to each compute node. The API allows updating this information as well.

Note that SLS is not responsible for verifying that the system is set up correctly. It only lets the Shasta system know what the system should be configured with. SLS does not store the details of the actual hardware like hardware identifiers. Instead it stores a generalized abstraction of the system that other services may use. SLS thus does not need to change as hardware within the system is replaced. Interaction with SLS is required if the system setup changes – for example, if system cabling is altered or during installation, expansion, or reduction. SLS does not interact with the hardware.

Each object in SLS has the following basic properties:

  • Parent – Each object in SLS has a parent object except the system root (s0).
  • Children – Objects may have children.
  • xname – Every object has an xname – a unique identifier for that object.
  • Type – a hardware type like "comptype_ncard", "comptype_cabinet".
  • Class – kind of hardware like "River" or "Mountain"
  • TypeString – a human readable type like "Cabinet"

Some objects may have additional properties depending on their type. For example, additional properties for cabinets include "Network", "IP6Prefix", "IP4Base", "MACprefix" etc.

Resources

/hardware

Create hardware entries in SLS. This resource can be used when you add new components or expand your system. Interaction with this resource is not required if a component is removed or replaced.

/hardware/{xname}

Retrieve, update, or delete information about specific xnames.

/search/hardware

Uses HTTP query parameters to find hardware entries with matching properties. Returns a JSON list of xnames. If multiple query parameters are passed, any returned hardware must match all parameters.

For example, a query string of "?parent=x0" would return a list of all children of cabinet x0. A query string of "?type=comptype_node" would return a list of all compute nodes.

Valid query parameters are: xname, parent, class, type, power_connector, node_nics, networks, peers.

/search/networks

Uses HTTP query parameters to find network entries with matching properties.

/networks

Create new network objects or retrieve networks available in the system.

/networks/{network}

Retrieve, update, or delete information about specific networks.

/dumpstate

Dumps the current database state of the service. This may be useful when you are backing up the system or planning a reinstall of the system.

/loadstate

Upload and overwrite the current database with the contents of the posted data. The posted data should be a state dump from /dumpstate. This may be useful to restore the SLS database after you have reinstalled the system.

Workflows

Backup and Restore the SLS Database for Reinstallation

GET /dumpstate

Perform a dump of the current state of the SLS data. This should be done before reinstalling the system. The database dump is a JSON blob in an SLS-specific format.

POST /loadstate

Reimport the dump from /dumpstate and restore the SLS database after reinstall.

Expand System

POST /hardware

Add the new hardware objects.

GET /hardware/{xname}

Review hardware properties of the xname from the JSON array.

Remove Hardware

DELETE /hardware

Remove hardware from SLS

Modify Hardware Properties

PATCH /hardware

Modify hardware properties in SLS. Only additional properties can be modified. Basic properties like xname, parent, children, type, class, typestring cannot be modified.

Base URLs:

License: Cray Proprietary

Authentication

  • HTTP Authentication, scheme: bearer

hardware

Endpoints which request information about hardware

get__hardware

Code samples

GET https://api-gw-service-nmn.local/apis/sls/v1/hardware HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/sls/v1/hardware \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/sls/v1/hardware', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/sls/v1/hardware", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /hardware

Retrieve a list of hardware in the system.

Retrieve a JSON list of the networks available in the system. Return value is an array of hardware objects representing all the hardware in the system.

Example responses

200 Response

[
  {
    "Parent": "x0c0s0",
    "Xname": "x0c0s0b0",
    "Children": [
      "x0c0s0b0n0"
    ],
    "Type": "comptype_ncard",
    "TypeString": "string",
    "Class": "Mountain",
    "LastUpdated": 0,
    "LastUpdatedTime": "string",
    "ExtraProperties": {
      "Object": [
        "x0c0s0b0"
      ]
    }
  }
]

Responses

Status Meaning Description Schema
200 OK Request successful Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [hardware] false none none
» Parent string false read-only The xname of the parent of this piece of hardware
» Xname xname true none The xname of this piece of hardware
» Children [string] false read-only none
» Type string false read-only The type of this piece of hardware. This is an optional hint during upload; it will be ignored if it does not match the xname
» TypeString string false read-only none
» Class hwclass true none The hardware class.
» LastUpdated last_updated false read-only The unix timestamp of the last time this entry was created or updated
» LastUpdatedTime last_updated_time false read-only The human-readable time this object was last created or updated.
» ExtraProperties any false none none

oneOf

Name Type Required Restrictions Description
»» anonymous hardware_comptype_hsn_connector false none none
»»» Object [xname] true none An array of xnames that this connector is connected to. All xnames should have type==comptype_hsn_connector_port

xor

Name Type Required Restrictions Description
»» anonymous hardware_pwr_connector false none none
»»» PoweredBy xname true none The xname of this piece of hardware

xor

Name Type Required Restrictions Description
»» anonymous hardware_mgmt_switch_connector false none none
»»» NodeNics [xname] true none An array of xnames that the hardware_mgmt_switch_connector is connected to. Excludes the parent.
»»» VendorName string false none The vendor-assigned name for this port, as it appears in the switch management software. Typically this is something like "GigabitEthernet 1/31" (Berkeley-style names), but may be any string.

xor

Name Type Required Restrictions Description
»» anonymous hardware_bmc false none none
»»» IP6addr string true none The ipv6 address that should be assigned to this BMC, or "DHCPv6". If omitted, "DHCPv6" is assumed.
»»» IP4addr string true none The ipv4 address that should be assigned to this BMC, or "DHCPv4". If omitted, "DHCPv4" is assumed.
»»» Username string false none The username that should be used to access the device (or be assigned to the device)
»»» Password string false none The password that should be used to access the device (or be assigned to the device)

xor

Name Type Required Restrictions Description
»» anonymous hardware_nic false none none
»»» Networks [xname] true none An array of network names that this NIC is connected to
»»» Peers [xname] true none An array of xnames this NIC is connected directly to. These ideally connector xnames, not switches

xor

Name Type Required Restrictions Description
»» anonymous hardware_nic false none none

xor

Name Type Required Restrictions Description
»» anonymous hardware_powered_device false none none
»»» PowerConnector [xname] true none An array of xnames, where each xname has type==*_pwr_connector. Empty for Mountain switch cards

xor

Name Type Required Restrictions Description
»» anonymous hardware_powered_device false none none

xor

Name Type Required Restrictions Description
»» anonymous hardware_powered_device false none none

xor

Name Type Required Restrictions Description
»» anonymous hardware_comptype_cab_pdu false none none
»»» IP6addr string true none The ipv6 address that should be assigned to this BMC, or "DHCPv6". If omitted, "DHCPv6" is assumed.
»»» IP4addr string true none The ipv4 address that should be assigned to this BMC, or "DHCPv4". If omitted, "DHCPv4" is assumed.
»»» Username string true none The username that should be used to access the device (or be assigned to the device)
»»» Password string(password) true none The password that should be used to access the device

xor

Name Type Required Restrictions Description
»» anonymous hardware_comptype_node false none none
»»» NodeType string true none The role type assigned to this node.
»»» nid integer false none none

xor

Name Type Required Restrictions Description
»» anonymous hardware_comptype_virtual_node false none none
»»» NodeType string true none The role type assigned to this node.
»»» nid integer false none none

xor

Name Type Required Restrictions Description
»» anonymous hardware_ip_and_creds_optional false none none
»»» IP6addr string false none The ipv6 address that should be assigned to this BMC, or "DHCPv6". If omitted, "DHCPv6" is assumed.
»»» IP4addr string false none The ipv4 address that should be assigned to this BMC, or "DHCPv4". If omitted, "DHCPv4" is assumed.
»»» Username string false none The username that should be used to access the device (or be assigned to the device)
»»» Password string false none The password that should be used to access the device (or be assigned to the device)

Enumerated Values

Property Value
Class River
Class Mountain
Class Hill
NodeType Compute
NodeType System
NodeType Application
NodeType Storage
NodeType Management
NodeType Management
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

post__hardware

Code samples

POST https://api-gw-service-nmn.local/apis/sls/v1/hardware HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/sls/v1/hardware \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api-gw-service-nmn.local/apis/sls/v1/hardware', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/sls/v1/hardware", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /hardware

Create a new hardware object

Create a new hardware object.

Body parameter

{
  "Xname": "x0c0s0b0",
  "Class": "Mountain",
  "ExtraProperties": {
    "Object": [
      "x0c0s0b0"
    ]
  }
}

Parameters

Name In Type Required Description
body body hardware_post false none

Example responses

201 Response

{
  "Parent": "x0c0s0",
  "Xname": "x0c0s0b0",
  "Children": [
    "x0c0s0b0n0"
  ],
  "Type": "comptype_ncard",
  "TypeString": "string",
  "Class": "Mountain",
  "LastUpdated": 0,
  "LastUpdatedTime": "string",
  "ExtraProperties": {
    "Object": [
      "x0c0s0b0"
    ]
  }
}

Responses

Status Meaning Description Schema
201 Created Request successful. The item was created hardware
400 Bad Request Bad request. See body for details None
409 Conflict Conflict. The requested resource already exists None
500 Internal Server Error Unexpected error. See body for details None
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

get__hardware_{xname}

Code samples

GET https://api-gw-service-nmn.local/apis/sls/v1/hardware/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/sls/v1/hardware/{xname} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/sls/v1/hardware/{xname}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/sls/v1/hardware/{xname}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /hardware/{xname}

Retrieve information about the requested xname

Retrieve information about the requested xname. All properties are returned as a JSON array.

Parameters

Name In Type Required Description
xname path xname true The xname to look up or alter.

Example responses

200 Response

{
  "Parent": "x0c0s0",
  "Xname": "x0c0s0b0",
  "Children": [
    "x0c0s0b0n0"
  ],
  "Type": "comptype_ncard",
  "TypeString": "string",
  "Class": "Mountain",
  "LastUpdated": 0,
  "LastUpdatedTime": "string",
  "ExtraProperties": {
    "Object": [
      "x0c0s0b0"
    ]
  }
}

Responses

Status Meaning Description Schema
200 OK Request successful hardware
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

put__hardware_{xname}

Code samples

PUT https://api-gw-service-nmn.local/apis/sls/v1/hardware/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/sls/v1/hardware/{xname} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('https://api-gw-service-nmn.local/apis/sls/v1/hardware/{xname}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/sls/v1/hardware/{xname}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /hardware/{xname}

Update a hardware object

Update a hardware object. Parent objects will be created, if possible.

Body parameter

{
  "Class": "Mountain",
  "ExtraProperties": {
    "Object": [
      "x0c0s0b0"
    ]
  }
}

Parameters

Name In Type Required Description
xname path xname true The xname to look up or alter.
body body hardware_put false none

Example responses

200 Response

{
  "Parent": "x0c0s0",
  "Xname": "x0c0s0b0",
  "Children": [
    "x0c0s0b0n0"
  ],
  "Type": "comptype_ncard",
  "TypeString": "string",
  "Class": "Mountain",
  "LastUpdated": 0,
  "LastUpdatedTime": "string",
  "ExtraProperties": {
    "Object": [
      "x0c0s0b0"
    ]
  }
}

Responses

Status Meaning Description Schema
200 OK Request successful. The item was updated hardware
201 Created Request successful. The item was created hardware
400 Bad Request Bad request. See body for details None
500 Internal Server Error Unexpected error. See body for details None
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

delete__hardware_{xname}

Code samples

DELETE https://api-gw-service-nmn.local/apis/sls/v1/hardware/{xname} HTTP/1.1
Host: api-gw-service-nmn.local
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/sls/v1/hardware/{xname} \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('https://api-gw-service-nmn.local/apis/sls/v1/hardware/{xname}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/sls/v1/hardware/{xname}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /hardware/{xname}

Delete the xname

Delete the requested xname from SLS. Note that if you delete a parent object, then the children are also deleted from SLS. If the child object happens to be a parent, then the deletion can cascade down levels. If you delete a child object, it does not affect the parent.

Parameters

Name In Type Required Description
xname path xname true The xname to look up or alter.

Responses

Status Meaning Description Schema
200 OK OK. xname removed None
404 Not Found Xname not found None
409 Conflict Conflict. The xname probably still had children. None
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

search

Endpoints having to do with searching for hardware

get__search_hardware

Code samples

GET https://api-gw-service-nmn.local/apis/sls/v1/search/hardware HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/sls/v1/search/hardware \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/sls/v1/search/hardware', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/sls/v1/search/hardware", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /search/hardware

Search for nodes matching a set of criteria

Search for nodes matching a set of criteria. Any of the properties of any entry in the database may be used as search keys.

Parameters

Name In Type Required Description
xname query xname false Matches the specified xname
parent query xname false Matches all objects that are direct children of the given xname
class query hwclass false Matches all objects of the given class
type query hwtype false Matches all objects of the given type
power_connector query xname false Matches all objects with the given xname in their power_connector property
object query xname false Matches all objects with the given xname in their object property.
node_nics query xname false Matches all objects with the given xname in their node_nics property
networks query string false Matches all objects with the given xname in their networks property
peers query xname false Matches all objects with the given xname in their peers property

Enumerated Values

Parameter Value
class River
class Mountain
class Hill

Example responses

200 Response

[
  {
    "Parent": "x0c0s0",
    "Xname": "x0c0s0b0",
    "Children": [
      "x0c0s0b0n0"
    ],
    "Type": "comptype_ncard",
    "TypeString": "string",
    "Class": "Mountain",
    "LastUpdated": 0,
    "LastUpdatedTime": "string",
    "ExtraProperties": {
      "Object": [
        "x0c0s0b0"
      ]
    }
  }
]

Responses

Status Meaning Description Schema
200 OK Search completed successfully. The return is an array of xnames that match the search criteria. Inline
400 Bad Request Bad request. See body for details. None
404 Not Found Search did not find any matching hardware. None
500 Internal Server Error An unexpected error occurred. See body for details. None

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [hardware] false none none
» Parent string false read-only The xname of the parent of this piece of hardware
» Xname xname true none The xname of this piece of hardware
» Children [string] false read-only none
» Type string false read-only The type of this piece of hardware. This is an optional hint during upload; it will be ignored if it does not match the xname
» TypeString string false read-only none
» Class hwclass true none The hardware class.
» LastUpdated last_updated false read-only The unix timestamp of the last time this entry was created or updated
» LastUpdatedTime last_updated_time false read-only The human-readable time this object was last created or updated.
» ExtraProperties any false none none

oneOf

Name Type Required Restrictions Description
»» anonymous hardware_comptype_hsn_connector false none none
»»» Object [xname] true none An array of xnames that this connector is connected to. All xnames should have type==comptype_hsn_connector_port

xor

Name Type Required Restrictions Description
»» anonymous hardware_pwr_connector false none none
»»» PoweredBy xname true none The xname of this piece of hardware

xor

Name Type Required Restrictions Description
»» anonymous hardware_mgmt_switch_connector false none none
»»» NodeNics [xname] true none An array of xnames that the hardware_mgmt_switch_connector is connected to. Excludes the parent.
»»» VendorName string false none The vendor-assigned name for this port, as it appears in the switch management software. Typically this is something like "GigabitEthernet 1/31" (Berkeley-style names), but may be any string.

xor

Name Type Required Restrictions Description
»» anonymous hardware_bmc false none none
»»» IP6addr string true none The ipv6 address that should be assigned to this BMC, or "DHCPv6". If omitted, "DHCPv6" is assumed.
»»» IP4addr string true none The ipv4 address that should be assigned to this BMC, or "DHCPv4". If omitted, "DHCPv4" is assumed.
»»» Username string false none The username that should be used to access the device (or be assigned to the device)
»»» Password string false none The password that should be used to access the device (or be assigned to the device)

xor

Name Type Required Restrictions Description
»» anonymous hardware_nic false none none
»»» Networks [xname] true none An array of network names that this NIC is connected to
»»» Peers [xname] true none An array of xnames this NIC is connected directly to. These ideally connector xnames, not switches

xor

Name Type Required Restrictions Description
»» anonymous hardware_nic false none none

xor

Name Type Required Restrictions Description
»» anonymous hardware_powered_device false none none
»»» PowerConnector [xname] true none An array of xnames, where each xname has type==*_pwr_connector. Empty for Mountain switch cards

xor

Name Type Required Restrictions Description
»» anonymous hardware_powered_device false none none

xor

Name Type Required Restrictions Description
»» anonymous hardware_powered_device false none none

xor

Name Type Required Restrictions Description
»» anonymous hardware_comptype_cab_pdu false none none
»»» IP6addr string true none The ipv6 address that should be assigned to this BMC, or "DHCPv6". If omitted, "DHCPv6" is assumed.
»»» IP4addr string true none The ipv4 address that should be assigned to this BMC, or "DHCPv4". If omitted, "DHCPv4" is assumed.
»»» Username string true none The username that should be used to access the device (or be assigned to the device)
»»» Password string(password) true none The password that should be used to access the device

xor

Name Type Required Restrictions Description
»» anonymous hardware_comptype_node false none none
»»» NodeType string true none The role type assigned to this node.
»»» nid integer false none none

xor

Name Type Required Restrictions Description
»» anonymous hardware_comptype_virtual_node false none none
»»» NodeType string true none The role type assigned to this node.
»»» nid integer false none none

xor

Name Type Required Restrictions Description
»» anonymous hardware_ip_and_creds_optional false none none
»»» IP6addr string false none The ipv6 address that should be assigned to this BMC, or "DHCPv6". If omitted, "DHCPv6" is assumed.
»»» IP4addr string false none The ipv4 address that should be assigned to this BMC, or "DHCPv4". If omitted, "DHCPv4" is assumed.
»»» Username string false none The username that should be used to access the device (or be assigned to the device)
»»» Password string false none The password that should be used to access the device (or be assigned to the device)

Enumerated Values

Property Value
Class River
Class Mountain
Class Hill
NodeType Compute
NodeType System
NodeType Application
NodeType Storage
NodeType Management
NodeType Management
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

get__search_networks

Code samples

GET https://api-gw-service-nmn.local/apis/sls/v1/search/networks HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/sls/v1/search/networks \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/sls/v1/search/networks', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/sls/v1/search/networks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /search/networks

Perform a search for networks matching a set of criteria.

Perform a search for networks matching a set of criteria. Any of the properties of any entry in the database may be used as search keys.

Parameters

Name In Type Required Description
name query string false Matches the specified network name
full_name query string false Matches the specified network full name
type query network_type false Matches the specified network type
ip_address query network_ip_range false Matches all networks that could contain the specified IP address in their IP ranges

Example responses

200 Response

[
  {
    "Name": "HSN",
    "FullName": "High Speed Network",
    "IPRanges": [
      "string"
    ],
    "Type": "slingshot10",
    "LastUpdated": 0,
    "LastUpdatedTime": "string",
    "ExtraProperties": {
      "CIDR": "10.253.0.0/16",
      "VlanRange": [
        0
      ],
      "MTU": 9000,
      "Subnets": [
        {
          "Name": "cabinet_1008_hsn\"",
          "FullName": "Cabinet 1008 HSN",
          "CIDR": "10.253.0.0/16",
          "VlanID": 60,
          "Gateway": "192.168.0.1",
          "DHCPStart": "192.168.0.1",
          "DHCPEnd": "192.168.0.1",
          "IPReservations": [
            {
              "IPAddress": "192.168.0.1",
              "Name": "S3",
              "Aliases": [
                "rgw-vip.local"
              ],
              "Comment": "string"
            }
          ],
          "Comment": "string"
        }
      ],
      "Comment": "string"
    }
  }
]

Responses

Status Meaning Description Schema
200 OK Search completed successfully. Return is an array of networks matching the search criteria. Inline
404 Not Found Search did not find any matching networks. None

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [network] false none none
» Name string true none none
» FullName string false none none
» IPRanges [network_ip_range] true none none
» Type network_type true none none
» LastUpdated last_updated false read-only The unix timestamp of the last time this entry was created or updated
» LastUpdatedTime last_updated_time false read-only The human-readable time this object was last created or updated.
» ExtraProperties network_extra_properties false none none
»» CIDR string false none none
»» VlanRange [integer] false none none
»» MTU integer false none none
»» Subnets [network_ipv4_subnet] false none none
»»» Name string true none none
»»» FullName string false none none
»»» CIDR string true none none
»»» VlanID integer true none none
»»» Gateway string(ipv4) false none none
»»» DHCPStart string(ipv4) false none none
»»» DHCPEnd string(ipv4) false none none
»»» IPReservations [network_ip_reservation] false none none
»»»» IPAddress string(ipv4) true none none
»»»» Name string true none none
»»»» Aliases [string] false none none
»»»» Comment string false none none
»»» Comment string false none none
»» Comment string false none none
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

dumpstate

Endpoints that handle debug or state management

get__dumpstate

Code samples

GET https://api-gw-service-nmn.local/apis/sls/v1/dumpstate HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/sls/v1/dumpstate \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/sls/v1/dumpstate', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/sls/v1/dumpstate", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /dumpstate

Retrieve a dump of current service state

Get a dump of current service state. The format of this is implementation-specific.

Example responses

200 Response

{
  "Hardware": {
    "property1": {
      "Parent": "x0c0s0",
      "Xname": "x0c0s0b0",
      "Children": [
        "x0c0s0b0n0"
      ],
      "Type": "comptype_ncard",
      "TypeString": "string",
      "Class": "Mountain",
      "LastUpdated": 0,
      "LastUpdatedTime": "string",
      "ExtraProperties": {
        "Object": [
          "x0c0s0b0"
        ]
      }
    },
    "property2": {
      "Parent": "x0c0s0",
      "Xname": "x0c0s0b0",
      "Children": [
        "x0c0s0b0n0"
      ],
      "Type": "comptype_ncard",
      "TypeString": "string",
      "Class": "Mountain",
      "LastUpdated": 0,
      "LastUpdatedTime": "string",
      "ExtraProperties": {
        "Object": [
          "x0c0s0b0"
        ]
      }
    }
  },
  "Networks": {
    "property1": {
      "Name": "HSN",
      "FullName": "High Speed Network",
      "IPRanges": [
        "string"
      ],
      "Type": "slingshot10",
      "LastUpdated": 0,
      "LastUpdatedTime": "string",
      "ExtraProperties": {
        "CIDR": "10.253.0.0/16",
        "VlanRange": [
          0
        ],
        "MTU": 9000,
        "Subnets": [
          {
            "Name": "cabinet_1008_hsn\"",
            "FullName": "Cabinet 1008 HSN",
            "CIDR": "10.253.0.0/16",
            "VlanID": 60,
            "Gateway": "192.168.0.1",
            "DHCPStart": "192.168.0.1",
            "DHCPEnd": "192.168.0.1",
            "IPReservations": [
              {
                "IPAddress": "192.168.0.1",
                "Name": "S3",
                "Aliases": [
                  "rgw-vip.local"
                ],
                "Comment": "string"
              }
            ],
            "Comment": "string"
          }
        ],
        "Comment": "string"
      }
    },
    "property2": {
      "Name": "HSN",
      "FullName": "High Speed Network",
      "IPRanges": [
        "string"
      ],
      "Type": "slingshot10",
      "LastUpdated": 0,
      "LastUpdatedTime": "string",
      "ExtraProperties": {
        "CIDR": "10.253.0.0/16",
        "VlanRange": [
          0
        ],
        "MTU": 9000,
        "Subnets": [
          {
            "Name": "cabinet_1008_hsn\"",
            "FullName": "Cabinet 1008 HSN",
            "CIDR": "10.253.0.0/16",
            "VlanID": 60,
            "Gateway": "192.168.0.1",
            "DHCPStart": "192.168.0.1",
            "DHCPEnd": "192.168.0.1",
            "IPReservations": [
              {
                "IPAddress": "192.168.0.1",
                "Name": "S3",
                "Aliases": [
                  "rgw-vip.local"
                ],
                "Comment": "string"
              }
            ],
            "Comment": "string"
          }
        ],
        "Comment": "string"
      }
    }
  }
}

Responses

Status Meaning Description Schema
200 OK State dumped successfully slsState
500 Internal Server Error An error occurred in state dumping. See body for details None
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

post__loadstate

Code samples

POST https://api-gw-service-nmn.local/apis/sls/v1/loadstate HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: multipart/form-data
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/sls/v1/loadstate \
  -H 'Content-Type: multipart/form-data' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'multipart/form-data',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api-gw-service-nmn.local/apis/sls/v1/loadstate', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"multipart/form-data"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/sls/v1/loadstate", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /loadstate

Load services state and overwrite current service state

"Load services state and overwrite current service state. The format of the upload is implementation specific."

Body parameter

sls_dump:
  Hardware:
    property1:
      Xname: x0c0s0b0
      Class: Mountain
      ExtraProperties:
        Object:
          - x0c0s0b0
    property2:
      Xname: x0c0s0b0
      Class: Mountain
      ExtraProperties:
        Object:
          - x0c0s0b0
  Networks:
    property1:
      Name: HSN
      FullName: High Speed Network
      IPRanges:
        - string
      Type: slingshot10
      ExtraProperties:
        CIDR: 10.253.0.0/16
        VlanRange:
          - 0
        MTU: 9000
        Subnets:
          - Name: cabinet_1008_hsn"
            FullName: Cabinet 1008 HSN
            CIDR: 10.253.0.0/16
            VlanID: 60
            Gateway: 192.168.0.1
            DHCPStart: 192.168.0.1
            DHCPEnd: 192.168.0.1
            IPReservations:
              - IPAddress: 192.168.0.1
                Name: S3
                Aliases:
                  - rgw-vip.local
                Comment: string
            Comment: string
        Comment: string
    property2:
      Name: HSN
      FullName: High Speed Network
      IPRanges:
        - string
      Type: slingshot10
      ExtraProperties:
        CIDR: 10.253.0.0/16
        VlanRange:
          - 0
        MTU: 9000
        Subnets:
          - Name: cabinet_1008_hsn"
            FullName: Cabinet 1008 HSN
            CIDR: 10.253.0.0/16
            VlanID: 60
            Gateway: 192.168.0.1
            DHCPStart: 192.168.0.1
            DHCPEnd: 192.168.0.1
            IPReservations:
              - IPAddress: 192.168.0.1
                Name: S3
                Aliases:
                  - rgw-vip.local
                Comment: string
            Comment: string
        Comment: string

Parameters

Name In Type Required Description
body body object false A JSON dictionary, where each item has a key equal to the xname of the object it contains. Each value is a JSON representation of an object SLS should maintain.
» sls_dump body slsState false none
»» Hardware body object false none
»»» additionalProperties body hardware false none
»»»» Parent body string false The xname of the parent of this piece of hardware
»»»» Xname body xname true The xname of this piece of hardware
»»»» Children body [string] false none
»»»» Type body string false The type of this piece of hardware. This is an optional hint during upload; it will be ignored if it does not match the xname
»»»» TypeString body string false none
»»»» Class body hwclass true The hardware class.
»»»» LastUpdated body last_updated false The unix timestamp of the last time this entry was created or updated
»»»» LastUpdatedTime body last_updated_time false The human-readable time this object was last created or updated.
»»»» ExtraProperties body any false none
»»»»» anonymous body hardware_comptype_hsn_connector false none
»»»»»» Object body [xname] true An array of xnames that this connector is connected to. All xnames should have type==comptype_hsn_connector_port
»»»»» anonymous body hardware_pwr_connector false none
»»»»»» PoweredBy body xname true The xname of this piece of hardware
»»»»» anonymous body hardware_mgmt_switch_connector false none
»»»»»» NodeNics body [xname] true An array of xnames that the hardware_mgmt_switch_connector is connected to. Excludes the parent.
»»»»»» VendorName body string false The vendor-assigned name for this port, as it appears in the switch management software. Typically this is something like "GigabitEthernet 1/31" (Berkeley-style names), but may be any string.
»»»»» anonymous body hardware_bmc false none
»»»»»» IP6addr body string true The ipv6 address that should be assigned to this BMC, or "DHCPv6". If omitted, "DHCPv6" is assumed.
»»»»»» IP4addr body string true The ipv4 address that should be assigned to this BMC, or "DHCPv4". If omitted, "DHCPv4" is assumed.
»»»»»» Username body string false The username that should be used to access the device (or be assigned to the device)
»»»»»» Password body string false The password that should be used to access the device (or be assigned to the device)
»»»»» anonymous body hardware_nic false none
»»»»»» Networks body [xname] true An array of network names that this NIC is connected to
»»»»»» Peers body [xname] true An array of xnames this NIC is connected directly to. These ideally connector xnames, not switches
»»»»» anonymous body hardware_nic false none
»»»»» anonymous body hardware_powered_device false none
»»»»»» PowerConnector body [xname] true An array of xnames, where each xname has type==*_pwr_connector. Empty for Mountain switch cards
»»»»» anonymous body hardware_powered_device false none
»»»»» anonymous body hardware_powered_device false none
»»»»» anonymous body hardware_comptype_cab_pdu false none
»»»»»» IP6addr body string true The ipv6 address that should be assigned to this BMC, or "DHCPv6". If omitted, "DHCPv6" is assumed.
»»»»»» IP4addr body string true The ipv4 address that should be assigned to this BMC, or "DHCPv4". If omitted, "DHCPv4" is assumed.
»»»»»» Username body string true The username that should be used to access the device (or be assigned to the device)
»»»»»» Password body string(password) true The password that should be used to access the device
»»»»» anonymous body hardware_comptype_node false none
»»»»»» NodeType body string true The role type assigned to this node.
»»»»»» nid body integer false none
»»»»» anonymous body hardware_comptype_virtual_node false none
»»»»»» NodeType body string true The role type assigned to this node.
»»»»»» nid body integer false none
»»»»» anonymous body hardware_ip_and_creds_optional false none
»»»»»» IP6addr body string false The ipv6 address that should be assigned to this BMC, or "DHCPv6". If omitted, "DHCPv6" is assumed.
»»»»»» IP4addr body string false The ipv4 address that should be assigned to this BMC, or "DHCPv4". If omitted, "DHCPv4" is assumed.
»»»»»» Username body string false The username that should be used to access the device (or be assigned to the device)
»»»»»» Password body string false The password that should be used to access the device (or be assigned to the device)
»» Networks body object false none
»»» additionalProperties body network false none
»»»» Name body string true none
»»»» FullName body string false none
»»»» IPRanges body [network_ip_range] true none
»»»» Type body network_type true none
»»»» LastUpdated body last_updated false The unix timestamp of the last time this entry was created or updated
»»»» LastUpdatedTime body last_updated_time false The human-readable time this object was last created or updated.
»»»» ExtraProperties body network_extra_properties false none
»»»»» CIDR body string false none
»»»»» VlanRange body [integer] false none
»»»»» MTU body integer false none
»»»»» Subnets body [network_ipv4_subnet] false none
»»»»»» Name body string true none
»»»»»» FullName body string false none
»»»»»» CIDR body string true none
»»»»»» VlanID body integer true none
»»»»»» Gateway body string(ipv4) false none
»»»»»» DHCPStart body string(ipv4) false none
»»»»»» DHCPEnd body string(ipv4) false none
»»»»»» IPReservations body [network_ip_reservation] false none
»»»»»»» IPAddress body string(ipv4) true none
»»»»»»» Name body string true none
»»»»»»» Aliases body [string] false none
»»»»»»» Comment body string false none
»»»»»» Comment body string false none
»»»»» Comment body string false none

Enumerated Values

Parameter Value
»»»» Class River
»»»» Class Mountain
»»»» Class Hill
»»»»»» NodeType Compute
»»»»»» NodeType System
»»»»»» NodeType Application
»»»»»» NodeType Storage
»»»»»» NodeType Management
»»»»»» NodeType Management

Responses

Status Meaning Description Schema
201 Created State loaded successfully None
400 Bad Request Loading state failed. See body for error None
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

misc

Other endpoints

get__health

Code samples

GET https://api-gw-service-nmn.local/apis/sls/v1/health HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/sls/v1/health \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/sls/v1/health', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/sls/v1/health", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /health

Query the health of the service

The health resource returns health information about the SLS service and its dependencies. This actively checks the connection between SLS and the following:

  • Vault
  • Database

This is primarily intended as a diagnostic tool to investigate the functioning of the SLS service.

Example responses

200 Response

{
  "Vault": "Not checked",
  "DBConnection": "Ready"
}

Responses

Status Meaning Description Schema
200 OK OK Network API call success Inline
405 Method Not Allowed Operation Not Permitted. For /health, only GET operations are allowed. Problem7807

Response Schema

Status Code 200

Name Type Required Restrictions Description
» Vault string true none Status of the Vault.
» DBConnection string true none Status of the connection with the database.
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

get__liveness

Code samples

GET https://api-gw-service-nmn.local/apis/sls/v1/liveness HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/sls/v1/liveness \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/sls/v1/liveness', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/sls/v1/liveness", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /liveness

Kubernetes liveness endpoint to monitor service health

The liveness resource works in conjunction with the Kubernetes liveness probe to determine when the service is no longer responding to requests. Too many failures of the liveness probe will result in the service being shut down and restarted.

This is primarily an endpoint for the automated Kubernetes system.

Example responses

405 Response

{
  "type": "about:blank",
  "detail": "Detail about this specific problem occurrence. See RFC7807",
  "instance": "",
  "status": 400,
  "title": "Description of HTTP Status code, e.g. 400"
}

Responses

Status Meaning Description Schema
204 No Content No Content Network API call success None
405 Method Not Allowed Operation Not Permitted. For /liveness, only GET operations are allowed. Problem7807
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

get__readiness

Code samples

GET https://api-gw-service-nmn.local/apis/sls/v1/readiness HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/sls/v1/readiness \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/sls/v1/readiness', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/sls/v1/readiness", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /readiness

Kubernetes readiness endpoint to monitor service health

The readiness resource works in conjunction with the Kubernetes readiness probe to determine when the service is no longer healthy and able to respond correctly to requests. Too many failures of the readiness probe will result in the traffic being routed away from this service and eventually the service will be shut down and restarted if in an unready state for too long.

This is primarily an endpoint for the automated Kubernetes system.

Example responses

405 Response

{
  "type": "about:blank",
  "detail": "Detail about this specific problem occurrence. See RFC7807",
  "instance": "",
  "status": 400,
  "title": "Description of HTTP Status code, e.g. 400"
}

Responses

Status Meaning Description Schema
204 No Content No Content Network API call success None
405 Method Not Allowed Operation Not Permitted. For /readiness, only GET operations are allowed. Problem7807
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

get__version

Code samples

GET https://api-gw-service-nmn.local/apis/sls/v1/version HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/sls/v1/version \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/sls/v1/version', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/sls/v1/version", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /version

Retrieve versioning information on the information in SLS

Retrieve the current version of the SLS mapping. Information returned is a JSON array with two keys:

  • Counter: A monotonically increasing counter. This counter is incremented every time a change is made to the map stored in SLS. This shall be 0 if no data is uploaded to SLS
  • LastUpdated: An ISO 8601 datetime representing the time of the last change to SLS. This shall be set to the Unix Epoch if no data has ever been stored in SLS.

Example responses

200 Response

{
  "counter": 0,
  "last_updated": "2019-08-24T14:15:22Z"
}

Responses

Status Meaning Description Schema
200 OK Information retrieved successfully versionResponse
500 Internal Server Error An error occurred, see text of response for more information None
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

network

get__networks

Code samples

GET https://api-gw-service-nmn.local/apis/sls/v1/networks HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/sls/v1/networks \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/sls/v1/networks', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/sls/v1/networks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /networks

Retrieve a list of networks in the system

Retrieve a JSON list of the networks available in the system. Return value is an array of strings with each string representing the name field of the network object.

Example responses

200 Response

[
  {
    "Name": "HSN",
    "FullName": "High Speed Network",
    "IPRanges": [
      "string"
    ],
    "Type": "slingshot10",
    "LastUpdated": 0,
    "LastUpdatedTime": "string",
    "ExtraProperties": {
      "CIDR": "10.253.0.0/16",
      "VlanRange": [
        0
      ],
      "MTU": 9000,
      "Subnets": [
        {
          "Name": "cabinet_1008_hsn\"",
          "FullName": "Cabinet 1008 HSN",
          "CIDR": "10.253.0.0/16",
          "VlanID": 60,
          "Gateway": "192.168.0.1",
          "DHCPStart": "192.168.0.1",
          "DHCPEnd": "192.168.0.1",
          "IPReservations": [
            {
              "IPAddress": "192.168.0.1",
              "Name": "S3",
              "Aliases": [
                "rgw-vip.local"
              ],
              "Comment": "string"
            }
          ],
          "Comment": "string"
        }
      ],
      "Comment": "string"
    }
  }
]

Responses

Status Meaning Description Schema
200 OK Request successful Inline

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [network] false none none
» Name string true none none
» FullName string false none none
» IPRanges [network_ip_range] true none none
» Type network_type true none none
» LastUpdated last_updated false read-only The unix timestamp of the last time this entry was created or updated
» LastUpdatedTime last_updated_time false read-only The human-readable time this object was last created or updated.
» ExtraProperties network_extra_properties false none none
»» CIDR string false none none
»» VlanRange [integer] false none none
»» MTU integer false none none
»» Subnets [network_ipv4_subnet] false none none
»»» Name string true none none
»»» FullName string false none none
»»» CIDR string true none none
»»» VlanID integer true none none
»»» Gateway string(ipv4) false none none
»»» DHCPStart string(ipv4) false none none
»»» DHCPEnd string(ipv4) false none none
»»» IPReservations [network_ip_reservation] false none none
»»»» IPAddress string(ipv4) true none none
»»»» Name string true none none
»»»» Aliases [string] false none none
»»»» Comment string false none none
»»» Comment string false none none
»» Comment string false none none
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

post__networks

Code samples

POST https://api-gw-service-nmn.local/apis/sls/v1/networks HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
# You can also use wget
curl -X POST https://api-gw-service-nmn.local/apis/sls/v1/networks \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.post('https://api-gw-service-nmn.local/apis/sls/v1/networks', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("POST", "https://api-gw-service-nmn.local/apis/sls/v1/networks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

POST /networks

Create a new network

Create a new network. Must include all fields at the time of upload.

Body parameter

{
  "Name": "HSN",
  "FullName": "High Speed Network",
  "IPRanges": [
    "string"
  ],
  "Type": "slingshot10",
  "ExtraProperties": {
    "CIDR": "10.253.0.0/16",
    "VlanRange": [
      0
    ],
    "MTU": 9000,
    "Subnets": [
      {
        "Name": "cabinet_1008_hsn\"",
        "FullName": "Cabinet 1008 HSN",
        "CIDR": "10.253.0.0/16",
        "VlanID": 60,
        "Gateway": "192.168.0.1",
        "DHCPStart": "192.168.0.1",
        "DHCPEnd": "192.168.0.1",
        "IPReservations": [
          {
            "IPAddress": "192.168.0.1",
            "Name": "S3",
            "Aliases": [
              "rgw-vip.local"
            ],
            "Comment": "string"
          }
        ],
        "Comment": "string"
      }
    ],
    "Comment": "string"
  }
}

Parameters

Name In Type Required Description
body body network false none

Responses

Status Meaning Description Schema
201 Created Network created None
400 Bad Request Bad request. See body for details None
409 Conflict Network with that name already exists None
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

get__networks_{network}

Code samples

GET https://api-gw-service-nmn.local/apis/sls/v1/networks/{network} HTTP/1.1
Host: api-gw-service-nmn.local
Accept: application/json
# You can also use wget
curl -X GET https://api-gw-service-nmn.local/apis/sls/v1/networks/{network} \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.get('https://api-gw-service-nmn.local/apis/sls/v1/networks/{network}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("GET", "https://api-gw-service-nmn.local/apis/sls/v1/networks/{network}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

GET /networks/{network}

Retrieve a network item

Retrieve the specific network.

Parameters

Name In Type Required Description
network path string true The network to look up or alter.

Example responses

200 Response

{
  "Name": "HSN",
  "FullName": "High Speed Network",
  "IPRanges": [
    "string"
  ],
  "Type": "slingshot10",
  "LastUpdated": 0,
  "LastUpdatedTime": "string",
  "ExtraProperties": {
    "CIDR": "10.253.0.0/16",
    "VlanRange": [
      0
    ],
    "MTU": 9000,
    "Subnets": [
      {
        "Name": "cabinet_1008_hsn\"",
        "FullName": "Cabinet 1008 HSN",
        "CIDR": "10.253.0.0/16",
        "VlanID": 60,
        "Gateway": "192.168.0.1",
        "DHCPStart": "192.168.0.1",
        "DHCPEnd": "192.168.0.1",
        "IPReservations": [
          {
            "IPAddress": "192.168.0.1",
            "Name": "S3",
            "Aliases": [
              "rgw-vip.local"
            ],
            "Comment": "string"
          }
        ],
        "Comment": "string"
      }
    ],
    "Comment": "string"
  }
}

Responses

Status Meaning Description Schema
200 OK Request successful network
404 Not Found No network item found with requested name None
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

put__networks_{network}

Code samples

PUT https://api-gw-service-nmn.local/apis/sls/v1/networks/{network} HTTP/1.1
Host: api-gw-service-nmn.local
Content-Type: application/json
Accept: application/json
# You can also use wget
curl -X PUT https://api-gw-service-nmn.local/apis/sls/v1/networks/{network} \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'Bearer {access-token}'
}

r = requests.put('https://api-gw-service-nmn.local/apis/sls/v1/networks/{network}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("PUT", "https://api-gw-service-nmn.local/apis/sls/v1/networks/{network}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

PUT /networks/{network}

Update a network object

Update a network object. Parent objects will be created, if possible.

Body parameter

{
  "Name": "HSN",
  "FullName": "High Speed Network",
  "IPRanges": [
    "string"
  ],
  "Type": "slingshot10",
  "ExtraProperties": {
    "CIDR": "10.253.0.0/16",
    "VlanRange": [
      0
    ],
    "MTU": 9000,
    "Subnets": [
      {
        "Name": "cabinet_1008_hsn\"",
        "FullName": "Cabinet 1008 HSN",
        "CIDR": "10.253.0.0/16",
        "VlanID": 60,
        "Gateway": "192.168.0.1",
        "DHCPStart": "192.168.0.1",
        "DHCPEnd": "192.168.0.1",
        "IPReservations": [
          {
            "IPAddress": "192.168.0.1",
            "Name": "S3",
            "Aliases": [
              "rgw-vip.local"
            ],
            "Comment": "string"
          }
        ],
        "Comment": "string"
      }
    ],
    "Comment": "string"
  }
}

Parameters

Name In Type Required Description
network path string true The network to look up or alter.
body body network false none

Example responses

200 Response

{
  "Name": "HSN",
  "FullName": "High Speed Network",
  "IPRanges": [
    "string"
  ],
  "Type": "slingshot10",
  "LastUpdated": 0,
  "LastUpdatedTime": "string",
  "ExtraProperties": {
    "CIDR": "10.253.0.0/16",
    "VlanRange": [
      0
    ],
    "MTU": 9000,
    "Subnets": [
      {
        "Name": "cabinet_1008_hsn\"",
        "FullName": "Cabinet 1008 HSN",
        "CIDR": "10.253.0.0/16",
        "VlanID": 60,
        "Gateway": "192.168.0.1",
        "DHCPStart": "192.168.0.1",
        "DHCPEnd": "192.168.0.1",
        "IPReservations": [
          {
            "IPAddress": "192.168.0.1",
            "Name": "S3",
            "Aliases": [
              "rgw-vip.local"
            ],
            "Comment": "string"
          }
        ],
        "Comment": "string"
      }
    ],
    "Comment": "string"
  }
}

Responses

Status Meaning Description Schema
200 OK Request successful network
400 Bad Request Bad request. See body for details None
409 Conflict Conflict. The requested resource already exists None
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

delete__networks_{network}

Code samples

DELETE https://api-gw-service-nmn.local/apis/sls/v1/networks/{network} HTTP/1.1
Host: api-gw-service-nmn.local
# You can also use wget
curl -X DELETE https://api-gw-service-nmn.local/apis/sls/v1/networks/{network} \
  -H 'Authorization: Bearer {access-token}'
import requests
headers = {
  'Authorization': 'Bearer {access-token}'
}

r = requests.delete('https://api-gw-service-nmn.local/apis/sls/v1/networks/{network}', headers = headers)

print(r.json())
package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Authorization": []string{"Bearer {access-token}"},
    }

    data := bytes.NewBuffer([]byte{jsonReq})
    req, err := http.NewRequest("DELETE", "https://api-gw-service-nmn.local/apis/sls/v1/networks/{network}", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}

DELETE /networks/{network}

Delete the named network

Delete the specific network from SLS.

Parameters

Name In Type Required Description
network path string true The network to look up or alter.

Responses

Status Meaning Description Schema
200 OK OK. Network removed None
404 Not Found Network not found None
To perform this operation, you must be authenticated by means of one of the following methods: bearerAuth

Schemas

versionResponse

{
  "counter": 0,
  "last_updated": "2019-08-24T14:15:22Z"
}

Properties

Name Type Required Restrictions Description
counter integer false none A monotonically increasing counter that increases every time a change is made to SLS
last_updated string(date-time) false none An ISO-8601 datetime representing when a change was last made to SLS

network

{
  "Name": "HSN",
  "FullName": "High Speed Network",
  "IPRanges": [
    "string"
  ],
  "Type": "slingshot10",
  "LastUpdated": 0,
  "LastUpdatedTime": "string",
  "ExtraProperties": {
    "CIDR": "10.253.0.0/16",
    "VlanRange": [
      0
    ],
    "MTU": 9000,
    "Subnets": [
      {
        "Name": "cabinet_1008_hsn\"",
        "FullName": "Cabinet 1008 HSN",
        "CIDR": "10.253.0.0/16",
        "VlanID": 60,
        "Gateway": "192.168.0.1",
        "DHCPStart": "192.168.0.1",
        "DHCPEnd": "192.168.0.1",
        "IPReservations": [
          {
            "IPAddress": "192.168.0.1",
            "Name": "S3",
            "Aliases": [
              "rgw-vip.local"
            ],
            "Comment": "string"
          }
        ],
        "Comment": "string"
      }
    ],
    "Comment": "string"
  }
}

Properties

Name Type Required Restrictions Description
Name string true none none
FullName string false none none
IPRanges [network_ip_range] true none none
Type network_type true none none
LastUpdated last_updated false none The unix timestamp of the last time this entry was created or updated
LastUpdatedTime last_updated_time false none The human-readable time this object was last created or updated.
ExtraProperties network_extra_properties false none none

network_ip_range

"string"

Properties

Name Type Required Restrictions Description
anonymous string false none none

network_type

"slingshot10"

Properties

Name Type Required Restrictions Description
anonymous string false none none

network_extra_properties

{
  "CIDR": "10.253.0.0/16",
  "VlanRange": [
    0
  ],
  "MTU": 9000,
  "Subnets": [
    {
      "Name": "cabinet_1008_hsn\"",
      "FullName": "Cabinet 1008 HSN",
      "CIDR": "10.253.0.0/16",
      "VlanID": 60,
      "Gateway": "192.168.0.1",
      "DHCPStart": "192.168.0.1",
      "DHCPEnd": "192.168.0.1",
      "IPReservations": [
        {
          "IPAddress": "192.168.0.1",
          "Name": "S3",
          "Aliases": [
            "rgw-vip.local"
          ],
          "Comment": "string"
        }
      ],
      "Comment": "string"
    }
  ],
  "Comment": "string"
}

Properties

Name Type Required Restrictions Description
CIDR string false none none
VlanRange [integer] false none none
MTU integer false none none
Subnets [network_ipv4_subnet] false none none
Comment string false none none

network_ipv4_subnet

{
  "Name": "cabinet_1008_hsn\"",
  "FullName": "Cabinet 1008 HSN",
  "CIDR": "10.253.0.0/16",
  "VlanID": 60,
  "Gateway": "192.168.0.1",
  "DHCPStart": "192.168.0.1",
  "DHCPEnd": "192.168.0.1",
  "IPReservations": [
    {
      "IPAddress": "192.168.0.1",
      "Name": "S3",
      "Aliases": [
        "rgw-vip.local"
      ],
      "Comment": "string"
    }
  ],
  "Comment": "string"
}

Properties

Name Type Required Restrictions Description
Name string true none none
FullName string false none none
CIDR string true none none
VlanID integer true none none
Gateway string(ipv4) false none none
DHCPStart string(ipv4) false none none
DHCPEnd string(ipv4) false none none
IPReservations [network_ip_reservation] false none none
Comment string false none none

network_ip_reservation

{
  "IPAddress": "192.168.0.1",
  "Name": "S3",
  "Aliases": [
    "rgw-vip.local"
  ],
  "Comment": "string"
}

Properties

Name Type Required Restrictions Description
IPAddress string(ipv4) true none none
Name string true none none
Aliases [string] false none none
Comment string false none none

xname

"x0c0s0b0"

The xname of this piece of hardware

Properties

Name Type Required Restrictions Description
anonymous string false none The xname of this piece of hardware

hwtype

"comptype_ncard"

The type of this piece of hardware. This is an optional hint during upload; it will be ignored if it does not match the xname

Properties

Name Type Required Restrictions Description
anonymous string false none The type of this piece of hardware. This is an optional hint during upload; it will be ignored if it does not match the xname

hwclass

"Mountain"

The hardware class.

Properties

Name Type Required Restrictions Description
anonymous string false none The hardware class.

Enumerated Values

Property Value
anonymous River
anonymous Mountain
anonymous Hill

last_updated

0

The unix timestamp of the last time this entry was created or updated

Properties

Name Type Required Restrictions Description
anonymous integer false read-only The unix timestamp of the last time this entry was created or updated

last_updated_time

"string"

The human-readable time this object was last created or updated.

Properties

Name Type Required Restrictions Description
anonymous string false read-only The human-readable time this object was last created or updated.

hardware_put

{
  "Class": "Mountain",
  "ExtraProperties": {
    "Object": [
      "x0c0s0b0"
    ]
  }
}

Properties

Name Type Required Restrictions Description
Class hwclass true none The hardware class.
ExtraProperties hardware_extra_properties false none none

hardware_post

{
  "Xname": "x0c0s0b0",
  "Class": "Mountain",
  "ExtraProperties": {
    "Object": [
      "x0c0s0b0"
    ]
  }
}

Properties

Name Type Required Restrictions Description
Xname xname true none The xname of this piece of hardware
Class hwclass true none The hardware class.
ExtraProperties hardware_extra_properties false none none

hardware

{
  "Parent": "x0c0s0",
  "Xname": "x0c0s0b0",
  "Children": [
    "x0c0s0b0n0"
  ],
  "Type": "comptype_ncard",
  "TypeString": "string",
  "Class": "Mountain",
  "LastUpdated": 0,
  "LastUpdatedTime": "string",
  "ExtraProperties": {
    "Object": [
      "x0c0s0b0"
    ]
  }
}

Properties

Name Type Required Restrictions Description
Parent string false read-only The xname of the parent of this piece of hardware
Xname xname true none The xname of this piece of hardware
Children [string] false read-only none
Type string false read-only The type of this piece of hardware. This is an optional hint during upload; it will be ignored if it does not match the xname
TypeString string false read-only none
Class hwclass true none The hardware class.
LastUpdated last_updated false none The unix timestamp of the last time this entry was created or updated
LastUpdatedTime last_updated_time false none The human-readable time this object was last created or updated.
ExtraProperties hardware_extra_properties false none none

hardware_bmc

{
  "IP6addr": "DHCPv6",
  "IP4addr": "10.1.1.1",
  "Username": "user_name",
  "Password": "vault://tok"
}

Properties

Name Type Required Restrictions Description
IP6addr string true none The ipv6 address that should be assigned to this BMC, or "DHCPv6". If omitted, "DHCPv6" is assumed.
IP4addr string true none The ipv4 address that should be assigned to this BMC, or "DHCPv4". If omitted, "DHCPv4" is assumed.
Username string false none The username that should be used to access the device (or be assigned to the device)
Password string false none The password that should be used to access the device (or be assigned to the device)

hardware_ip_and_creds_optional

{
  "IP6addr": "DHCPv6",
  "IP4addr": "10.1.1.1",
  "Username": "user_name",
  "Password": "vault://tok"
}

Properties

Name Type Required Restrictions Description
IP6addr string false none The ipv6 address that should be assigned to this BMC, or "DHCPv6". If omitted, "DHCPv6" is assumed.
IP4addr string false none The ipv4 address that should be assigned to this BMC, or "DHCPv4". If omitted, "DHCPv4" is assumed.
Username string false none The username that should be used to access the device (or be assigned to the device)
Password string false none The password that should be used to access the device (or be assigned to the device)

hardware_powered_device

{
  "PowerConnector": [
    "x0c0s0b0"
  ]
}

Properties

Name Type Required Restrictions Description
PowerConnector [xname] true none An array of xnames, where each xname has type==*_pwr_connector. Empty for Mountain switch cards

hardware_comptype_hsn_connector

{
  "Object": [
    "x0c0s0b0"
  ]
}

Properties

Name Type Required Restrictions Description
Object [xname] true none An array of xnames that this connector is connected to. All xnames should have type==comptype_hsn_connector_port

hardware_pwr_connector

{
  "PoweredBy": "x0c0s0b0"
}

Properties

Name Type Required Restrictions Description
PoweredBy xname true none The hardware this cable is connected to. May be any type of object. Parent is excluded

hardware_mgmt_switch_connector

{
  "NodeNics": [
    "x0c0s0b0"
  ],
  "VendorName": "string"
}

Properties

Name Type Required Restrictions Description
NodeNics [xname] true none An array of xnames that the hardware_mgmt_switch_connector is connected to. Excludes the parent.
VendorName string false none The vendor-assigned name for this port, as it appears in the switch management software. Typically this is something like "GigabitEthernet 1/31" (Berkeley-style names), but may be any string.

hardware_comptype_rtr_bmc

{
  "IP6addr": "DHCPv6",
  "IP4addr": "10.1.1.1",
  "Username": "user_name",
  "Password": "vault://tok"
}

Properties

None

hardware_comptype_bmc_nic

{
  "Networks": [
    "x0c0s0b0"
  ],
  "Peers": [
    "x0c0s0b0"
  ]
}

Properties

None

hardware_nic

{
  "Networks": [
    "x0c0s0b0"
  ],
  "Peers": [
    "x0c0s0b0"
  ]
}

Properties

Name Type Required Restrictions Description
Networks [xname] true none An array of network names that this NIC is connected to
Peers [xname] true none An array of xnames this NIC is connected directly to. These ideally connector xnames, not switches

hardware_comptype_rtmod

{
  "PowerConnector": [
    "x0c0s0b0"
  ]
}

Properties

None

hardware_comptype_mgmt_switch

{
  "PowerConnector": [
    "x0c0s0b0"
  ]
}

Properties

None

hardware_comptype_compmod

{
  "PowerConnector": [
    "x0c0s0b0"
  ]
}

Properties

None

hardware_comptype_cab_pdu

{
  "IP6addr": "DHCPv6",
  "IP4addr": "10.1.1.1",
  "Username": "user_name",
  "Password": "vault://tok"
}

Properties

Name Type Required Restrictions Description
IP6addr string true none The ipv6 address that should be assigned to this BMC, or "DHCPv6". If omitted, "DHCPv6" is assumed.
IP4addr string true none The ipv4 address that should be assigned to this BMC, or "DHCPv4". If omitted, "DHCPv4" is assumed.
Username string true none The username that should be used to access the device (or be assigned to the device)
Password string(password) true none The password that should be used to access the device

hardware_comptype_node

{
  "NodeType": "Compute",
  "nid": "2"
}

Properties

Name Type Required Restrictions Description
NodeType string true none The role type assigned to this node.
nid integer false none none

Enumerated Values

Property Value
NodeType Compute
NodeType System
NodeType Application
NodeType Storage
NodeType Management

hardware_comptype_virtual_node

{
  "NodeType": "Management",
  "nid": "2"
}

Properties

Name Type Required Restrictions Description
NodeType string true none The role type assigned to this node.
nid integer false none none

Enumerated Values

Property Value
NodeType Management

hardware_comptype_nodecard

{
  "IP6addr": "DHCPv6",
  "IP4addr": "10.1.1.1",
  "Username": "user_name",
  "Password": "vault://tok"
}

Properties

None

hardware_extra_properties

{
  "Object": [
    "x0c0s0b0"
  ]
}

Properties

oneOf

Name Type Required Restrictions Description
anonymous hardware_comptype_hsn_connector false none none

xor

Name Type Required Restrictions Description
anonymous hardware_pwr_connector false none none

xor

Name Type Required Restrictions Description
anonymous hardware_mgmt_switch_connector false none none

xor

Name Type Required Restrictions Description
anonymous hardware_comptype_rtr_bmc false none none

xor

Name Type Required Restrictions Description
anonymous hardware_comptype_bmc_nic false none none

xor

Name Type Required Restrictions Description
anonymous hardware_nic false none none

xor

Name Type Required Restrictions Description
anonymous hardware_comptype_rtmod false none none

xor

Name Type Required Restrictions Description
anonymous hardware_comptype_mgmt_switch false none none

xor

Name Type Required Restrictions Description
anonymous hardware_comptype_compmod false none none

xor

Name Type Required Restrictions Description
anonymous hardware_comptype_cab_pdu false none none

xor

Name Type Required Restrictions Description
anonymous hardware_comptype_node false none none

xor

Name Type Required Restrictions Description
anonymous hardware_comptype_virtual_node false none none

xor

Name Type Required Restrictions Description
anonymous hardware_comptype_nodecard false none none

slsState

{
  "Hardware": {
    "property1": {
      "Parent": "x0c0s0",
      "Xname": "x0c0s0b0",
      "Children": [
        "x0c0s0b0n0"
      ],
      "Type": "comptype_ncard",
      "TypeString": "string",
      "Class": "Mountain",
      "LastUpdated": 0,
      "LastUpdatedTime": "string",
      "ExtraProperties": {
        "Object": [
          "x0c0s0b0"
        ]
      }
    },
    "property2": {
      "Parent": "x0c0s0",
      "Xname": "x0c0s0b0",
      "Children": [
        "x0c0s0b0n0"
      ],
      "Type": "comptype_ncard",
      "TypeString": "string",
      "Class": "Mountain",
      "LastUpdated": 0,
      "LastUpdatedTime": "string",
      "ExtraProperties": {
        "Object": [
          "x0c0s0b0"
        ]
      }
    }
  },
  "Networks": {
    "property1": {
      "Name": "HSN",
      "FullName": "High Speed Network",
      "IPRanges": [
        "string"
      ],
      "Type": "slingshot10",
      "LastUpdated": 0,
      "LastUpdatedTime": "string",
      "ExtraProperties": {
        "CIDR": "10.253.0.0/16",
        "VlanRange": [
          0
        ],
        "MTU": 9000,
        "Subnets": [
          {
            "Name": "cabinet_1008_hsn\"",
            "FullName": "Cabinet 1008 HSN",
            "CIDR": "10.253.0.0/16",
            "VlanID": 60,
            "Gateway": "192.168.0.1",
            "DHCPStart": "192.168.0.1",
            "DHCPEnd": "192.168.0.1",
            "IPReservations": [
              {
                "IPAddress": "192.168.0.1",
                "Name": "S3",
                "Aliases": [
                  "rgw-vip.local"
                ],
                "Comment": "string"
              }
            ],
            "Comment": "string"
          }
        ],
        "Comment": "string"
      }
    },
    "property2": {
      "Name": "HSN",
      "FullName": "High Speed Network",
      "IPRanges": [
        "string"
      ],
      "Type": "slingshot10",
      "LastUpdated": 0,
      "LastUpdatedTime": "string",
      "ExtraProperties": {
        "CIDR": "10.253.0.0/16",
        "VlanRange": [
          0
        ],
        "MTU": 9000,
        "Subnets": [
          {
            "Name": "cabinet_1008_hsn\"",
            "FullName": "Cabinet 1008 HSN",
            "CIDR": "10.253.0.0/16",
            "VlanID": 60,
            "Gateway": "192.168.0.1",
            "DHCPStart": "192.168.0.1",
            "DHCPEnd": "192.168.0.1",
            "IPReservations": [
              {
                "IPAddress": "192.168.0.1",
                "Name": "S3",
                "Aliases": [
                  "rgw-vip.local"
                ],
                "Comment": "string"
              }
            ],
            "Comment": "string"
          }
        ],
        "Comment": "string"
      }
    }
  }
}

Properties

Name Type Required Restrictions Description
Hardware object false none none
» additionalProperties hardware false none none
Networks object false none none
» additionalProperties network false none none

Problem7807

{
  "type": "about:blank",
  "detail": "Detail about this specific problem occurrence. See RFC7807",
  "instance": "",
  "status": 400,
  "title": "Description of HTTP Status code, e.g. 400"
}

RFC 7807 compliant error payload. All fields are optional except the 'type' field.

Properties

Name Type Required Restrictions Description
type string true none none
detail string false none none
instance string false none none
status number(int32) false none none
title string false none none