128T Conductor service template

The conductor ingest json files

Script Language:   https://shopify.github.io/liquid/

https://docs.128technology.com/docs/config_templates/#creating-a-template


Conductorcopy service to a template
1-Create a blank template ( New way )


1- create a blank template ( Old way )
2- add name and descriptive
3- copy the service to the new template


Advance mode

template → jinja format with {{ }}

modify the parameter to variable


convert to jinja template
example:

"name": "{service_name",             >>>>>      "name": "{{instance.variables['name']}}",



and in the variable:
--------------------
{
  "instances": [
    {
      "name": "Instance_1",
      "variables": {       <<<<<<<<< list of all variables
        "name": "service11_from_template",  <<<<<<<<<<<<<< Name variable 
        "address": [
          "199.1.4.10"
        ]
      }
    },
Generate the service from jinja_template + json variable

click on the magic wand (wink)

Not advanced mode


multiple value ( list ip address, ports )

scripting in the 
multiple
{% for address in addresses %}
  {
    "ipAddress": "{{address}}"
  }{%- if forloop.last == false -%},{%- endif %}
{% endfor %}


          {% for address in instance.variables.addresses %}
            {
            "{{address}},"
            }{%- if forloop.last == false -%},{%- endif %}
          {% endfor %}

create a template from file 



Click New:


>> provide a name and descriptive

Variable from a Source filecsv
convert csv files to json

csv to json and json to csv


csv to json
Source file:
-----------
name_service, dst_ip_address,dst_protocol,dst_port
service1, 10.0.19.1,tcp,22

name_service, accessPolicy, accessPolicy,dst_ip_address,dst_protocol,dst_port,dst_port
service1, tenant1, tenant2, 10.0.19.1,tcp,80,81


JSON file:
---------
[
  {
    "name_service": "service1",
    "dst_ip_address": "10.0.19.1",
    "dst_protocol": "tcp",
    "dst_port": 22
  }
]
json Template
{
  "authority": {
    "service": [
      {
        "name": "<service_name>",
        "accessPolicy": [
>>>>> loop if more than one
          {
            "source": "<tenant_name1>"
          },
          {
            "source": "<tenant_name2>"
          }
<<<<<<<
        ],
        "description": "send private subnet to the HQ",
        "security": "internal",
        "address": [
          "10.1.6.0/24",
          "10.1.16.0/24"
        ],
        "transport": [
          {
            "protocol": "icmp"
          },
          {
            "protocol": "tcp",
            "portRange": [
              {
                "startPort": "22"
              },
              {
                "startPort": "443"
              },
              {
                "startPort": "80"
              }
            ]
          }
        ]
      }
json for variable
{
  "instances":[
    {
      "service_name": "service1",
      "dst_ip_address": "10.0.19.1",
      "dst_protocol": "tcp",
      "dst_port": 22
      "accessPolicy":[
         "source": "<tenant_name1>",
         "source": "<tenant_name2>"
       ]
    }
  ]
}
Rest API