Automation Blog

from Stefan Schnell


Tiny REST API Test


Python

"""
@module de.stschnell

@version 0.1.0

@runtime python:3.10 or python:3.11

@outputType Properties
"""


""" REST API test with get about info to retrieve server build properties

@author Stefan Schnell <mail@stefan-schnell.de>
@license MIT
@version 0.1.0

Checked with releases of Aria Automation 8.18.0 and VCF Automation 9.0.0
from Orchestrator as action and from CLI as Python program.
"""

import json
import ssl
import urllib.request

def handler(context: dict, inputs: dict):

    outputs: dict = {}

    try:

        # url: str = "https://rainpole.auto.vcf.sddc.lab"  # HOL 8.18.0
        url: str = "https://auto-a.site-a.vcf.lab"         # HOL 9.0.0
        url += "/vco/api/about"

        request = urllib.request.Request(
            url = url
        )

        request.add_header("Content-Type", "application/json")

        response: http.client.HTTPResponse = urllib.request.urlopen(
            request,
            context = ssl._create_unverified_context()
        )

        result: dict = json.loads(response.read())

        outputs = {
            "status": "done",
            "error": None,
            "result": result
        }

    except Exception as err:

        outputs = {
            "status": "incomplete",
            "error": repr(err),
            "result": None
        }

    return outputs

if __name__ == "__main__":
    context: dict = {}
    inputs: dict = {}
    print(
        handler(context, inputs)
    )

Ansible

---

- name: HTTP REST request test to VMware Cloud Foundation (VCF) Automation
  hosts: all
  gather_facts: false

  vars:

    vco_domain: localhost
    vco_url: "https://{{ vco_domain }}/vco"
    about_url: "{{ vco_url }}/api/about"

  tasks:

    - name: Call about via HTTP REST request
      register: vco_about
      ansible.builtin.uri:
        url: "{{ about_url }}"
        method: GET
        user: "{{ user_name }}"
        password: "{{ user_password }}"
        return_content: true
        headers:
          accept: application/json

    - name: Print about
      ansible.builtin.debug:
        msg: "{{ vco_about }}"

about rest api http request in vcf orchestrator via ansible playbook