Other Languages

These examples show the initial login and network setup.

Python

You will need to be sure the cinp client is installed:

pip3 install cinp

main.py:

import sys
from cinp.client import CInP

CHOST = 'http://127.0.0.1'
PROXY = ''
USERNAME = 'root'
PASSWORD = 'root'

SITE = '/api/v1/Site/Site:site1:'
NETWORKNAME = 'internal'  # vcenter: internal, virtual box: vboxnet0, IPMI/AMT: internal
ADDRESSBLK = '/api/v1/Utilities/AddressBlock:1:'


c = CInP( CHOST, '/api/v1/', PROXY )

print( 'Login...' )
result = c.call( '/api/v1/Auth/User(login)', { 'username': USERNAME, 'password': PASSWORD } )

print( 'Auth Token "{0}"'.format( result ) )
c.setAuth( USERNAME, result )

result = c.call( '/api/v1/Auth/User(whoami)', {} )

print( 'Logged in as "{0}"'.format( result ) )

print( 'Create Network...' )
obj = {
  'site': SITE,
  'name': NETWORKNAME
}
obj_id, result = c.create( '/api/v1/Utilities/Network', obj )
print( result )
network = obj_id
print( 'Newly created network is "{0}"'.format( network ) )

print( 'Attach AddressBlock to Network...' )
obj = {
  'network': network,
  'address_block': ADDRESSBLK
}
_, result = c.create( '/api/v1/Utilities/NetworkAddressBlock', obj )
print( result )

print( 'Reserve Ip Addresses...' )
for offset in ( 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ):
  obj = {
    'offset': offset,
    'address_block': ADDRESSBLK,
    'reason': 'Network Reserved'
  }
  _, result = c.create( '/api/v1/Utilities/ReservedAddress', obj )
  print( result )

print( 'Done!' )

run:

python3 main.py

Golang

You will need go version 1.12 or better, for the module support.

With Generic Maps

main.go:

package main

import (
      "fmt"
      "strconv"
      cinp "github.com/cinp/go"
)

const CHOST = "http://127.0.0.1"
const PROXY = ""
const USERNAME = "root"
const PASSWORD = "root"

const SITE = "/api/v1/Site/Site:site1:"
const NETWORKNAME = "internal"  // vcenter: internal, virtual box: vboxnet0, IPMI/AMT: internal
const ADDRESSBLK = "/api/v1/Utilities/AddressBlock:1:"

func main() {
      c, err := cinp.NewCInP(CHOST, "/api/v1/", PROXY)
      if err != nil {
              fmt.Println(err)
              return
      }

      fmt.Println("Login...")
      args := map[string]interface{}{
              "username": USERNAME,
              "password": PASSWORD,
      }
      result := ""

      if err = c.Call("/api/v1/Auth/User(login)", &args, &result); err != nil {
              fmt.Println(err)
              return
      }

      fmt.Printf("Auth Token '%s'\n", result)
      c.SetAuth(USERNAME, result)

      // Print curent user, should be the same as USERNAME
      args = map[string]interface{}{}
      if err = c.Call("/api/v1/Auth/User(whoami)", &args, &result); err != nil {
              fmt.Println(err)
              return
      }
      fmt.Printf("Logged in as '%s'\n", result)

      fmt.Println("Create Network...")
      obj := &cinp.MappedObject{Data:map[string]interface{}{
              "site": SITE,
              "name": NETWORKNAME,
      }}
      if err = c.Create("/api/v1/Utilities/Network", obj); err != nil {
              fmt.Println(err)
              return
      }
      fmt.Println(obj.Data)
      network := obj.GetID()
      fmt.Printf("Newly created network is '%s'\n", network)

      fmt.Println("Attach AddressBlock to Network...")
      obj = &cinp.MappedObject{Data:map[string]interface{}{
              "network": network,
              "address_block": ADDRESSBLK,
      }}
      if err = c.Create("/api/v1/Utilities/NetworkAddressBlock", obj); err != nil {
              fmt.Println(err)
              return
      }
      fmt.Println(obj.Data)

      fmt.Println("Reserve Ip Addresses...")
      for _, offset := range []int{2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20} {
              obj = &cinp.MappedObject{Data:map[string]interface{}{
                      "offset": strconv.Itoa(offset),
                      "address_block": ADDRESSBLK,
                      "reason": "Network Reserved",
              }}
                      if err = c.Create("/api/v1/Utilities/ReservedAddress", obj); err != nil {
                      fmt.Println(err)
                      return
              }
              fmt.Println(obj.Data)
      }
      fmt.Println("Done!")
}

build:

go get github.com/cinp/go
go build -o main

run:

./main

With Pre-Built Service

main.go:

package main

import (
      "fmt"
      contractor "github.com/t3kton/contractor_client/go"
)

const CHOST = "http://127.0.0.1"
const PROXY = ""
const USERNAME = "root"
const PASSWORD = "root"

const SITE = "/api/v1/Site/Site:site1:"
const NETWORKNAME = "internal"  // vcenter: internal, virtual box: vboxnet0, IPMI/AMT: internal
const ADDRESSBLK = "/api/v1/Utilities/AddressBlock:1:"

func main() {
      fmt.Println("Login...")
      c, err := contractor.NewContractor(CHOST, PROXY, USERNAME, PASSWORD)
      if err != nil {
              fmt.Println(err)
              return
      }

      // Print curent user, should be the same as USERNAME
      result, err := c.AuthUserCallWhoami()
      if err != nil {
              fmt.Println(err)
              return
      }
      fmt.Printf("Logged in as '%s'\n", result)

      fmt.Println("Create Network...")
      network := c.UtilitiesNetworkNew()
      network.Site = SITE
      network.Name = NETWORKNAME
      err = network.Create()
      if err != nil {
              fmt.Println(err)
              return
      }
      fmt.Println(network)
      fmt.Printf("Newly created network is '%s'\n", network.GetID())

      fmt.Println("Attach AddressBlock to Network...")
      nab := c.UtilitiesNetworkAddressBlockNew()
      nab.Network = network.GetID()
      nab.AddressBlock = ADDRESSBLK
      err = nab.Create()
      if err != nil {
              fmt.Println(err)
              return
      }
      fmt.Println(nab)

      fmt.Println("Reserve Ip Addresses...")
      for _, offset := range []int{2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20} {
              ra := c.UtilitiesReservedAddressNew()
              ra.Offset = offset
              ra.AddressBlock = ADDRESSBLK
              ra.Reason = "Network Reserved"
              err = ra.Create()
              if err != nil {
                      fmt.Println(err)
                      return
              }
              fmt.Println(ra)
      }
      fmt.Println("Done!")
}

build:

go get github.com/t3kton/contractor_client/go
go build -o main

run:

./main