Skip to content

sanity check error - schema parsing allowService #388

@nergalex

Description

@nergalex

Environment

  • Declarative Onboarding Version: 1.46.0-7
  • BIG-IP Version: 17.5.1.0.0.7

Summary

The key Common.interface_name.allowService doesn't support anymore an Array of string

Steps To Reproduce

Steps to reproduce the behavior:

  1. Submit the following declaration:
{
  "schemaVersion": "1.9.0",
  "class": "Device",
  "async": true,
  "label": "do-standalone-2nic-awaf-BIGIQ",
  "Common": {
    "class": "Tenant",
    "hostname": "{{ extra_vm_name }}-{{ extra_platform_name }}.{{ extra_location }}.cloudapp.azure.com",
    "dbvars": {
      "class": "DbVariables",
      "ui.advisory.enabled": true,
      "ui.advisory.color": "green",
      "ui.advisory.text": "{{ extra_vm_name }}-{{ extra_platform_name }}"
    },
    "local_licence": {
      "class": "License",
        "licenseType": "licensePool",
        "bigIqHost": "{{ extra_bigiq_ip_mgt }}",
        "bigIqUsername": "{{ extra_bigiq_admin_user }}",
        "bigIqPassword": "{{ extra_bigiq_admin_password }}",
        "licensePool": "cross-management-bigip",
        "bigIpUsername": "{{ extra_admin_user }}",
        "bigIpPassword": "{{ extra_admin_password }}"
    },
    "provisioning_modules": {
      "class": "Provision",
      "gtm": "nominal",
      "ltm": "nominal",
      "avr": "nominal"
    },
    "gslb_cloudbuilder": {
      "class": "GSLBGlobals",
      "general": {
       "synchronizationEnabled": true,
       "synchronizationGroupName": "cloudbuilder"
      }
    },
    "gslb_dc_{{ extra_location }}": {
      "class": "GSLBDataCenter",
      "enabled": true,
      "location": "{{ extra_location }}"
    },
    "gslb_server": {
      "class": "GSLBServer",
      "enabled": true,
      "dataCenter": "gslb_dc_{{ extra_location }}",
      "devices": [
        {
          "address": "{{ extra_ip_int_self_static }}",
          "addressTranslation": "{{ extra_ip_int_self_static }}",
          "remark": "gslb_server_device-{{ extra_vm_name }}-{{ extra_platform_name }}"
        }
      ],
      "exposeRouteDomainsEnabled": true,
      "serverType": "bigip",
      "virtualServerDiscoveryMode": "enabled"
    },
    "ntp_france": {
      "class": "NTP",
      "servers": [
        "0.pool.ntp.org"
      ],
      "timezone": "Europe/Paris"
    },
    "external": {
      "class": "VLAN",
      "mtu": 1500,
      "tag": 4094,
      "interfaces": [
        {
          "name": "1.1",
          "tagged": false
        }
      ]
    },
    "internal": {
      "class": "VLAN",
      "mtu": 1500,
      "tag": 4093,
      "interfaces": [
        {
          "name": "1.2",
          "tagged": false
        }
      ]
    },
    "self_static_external": {
      "class": "SelfIp",
      "address": "{{ extra_ip_ext_self_static }}/{{ extra_subnet_mask }}",
      "trafficGroup": "traffic-group-local-only",
      "vlan": "external",
      "allowService": "default"
    },
    "self_static_internal": {
      "class": "SelfIp",
      "address": "{{ extra_ip_int_self_static }}/{{ extra_subnet_mask }}",
      "trafficGroup": "traffic-group-local-only",
      "vlan": "internal",
      "allowService": [
        "icmp",
        "tcp:4353",
        "udp:4353",
        "tcp:22",
        "tcp:53",
        "udp:53",
        "udp:1026"
      ]
    },
    "self_floating_internal": {
        "class": "SelfIp",
        "address": "{{ extra_ip_int_self_floating }}/{{ extra_subnet_mask }}",
        "trafficGroup": "traffic-group-1",
        "vlan": "internal",
        "allowService": "default"
    },
    "route_internet": {
      "class": "Route",
      "gw": "{{ extra_gw_external }}",
      "network": "default",
      "mtu": 0
    },
    "route_10": {
      "class": "Route",
      "gw": "{{ extra_gw_internal }}",
      "network": "10.0.0.0/8",
      "mtu": 0
    },
    "route_172_16": {
      "class": "Route",
      "gw": "{{ extra_gw_internal }}",
      "network": "172.16.0.0/12",
      "mtu": 0
    },
    "route_192_168": {
      "class": "Route",
      "gw": "{{ extra_gw_internal }}",
      "network": "192.168.0.0/16",
      "mtu": 0
    }
  }
}
  1. Observe the following error response:
{
            "status": "ERROR",
            "message": "bad declaration",
            "errors": [
                {
                    "message": "should be string",
                    "keyword": "type",
                    "params": {
                        "type": "string"
                    },
                    "dataPath": ".declaration.Common['self_static_internal'].allowService",
                    "schemaPath": "#/allOf/7/then/properties/allowService/oneOf/0/type"
                },
                {
                    "message": "should be equal to one of the allowed values",
                    "keyword": "enum",
                    "params": {
                        "allowedValues": [
                            "all",
                            "none",
                            "default"
                        ]
                    },
                    "dataPath": ".declaration.Common['self_static_internal'].allowService",
                    "schemaPath": "#/allOf/7/then/properties/allowService/oneOf/0/enum"
                },
                {
                    "message": "should match pattern \"(\\w+:\\d+|default)\"",
                    "keyword": "pattern",
                    "params": {
                        "pattern": "(\\w+:\\d+|default)"
                    },
                    "dataPath": ".declaration.Common['self_static_internal'].allowService[0]",
                    "schemaPath": "#/allOf/7/then/properties/allowService/oneOf/1/items/pattern"
                },
                {
                    "message": "should match exactly one schema in oneOf",
                    "keyword": "oneOf",
                    "params": {
                        "passingSchemas": null
                    },
                    "dataPath": ".declaration.Common['self_static_internal'].allowService",
                    "schemaPath": "#/allOf/7/then/properties/allowService/oneOf"
                },
                {
                    "message": "should match \"then\" schema",
                    "keyword": "if",
                    "params": {
                        "failingKeyword": "then"
                    },
                    "dataPath": "",
                    "schemaPath": "#/allOf/1/if"
                }
            ],
            "class": "Result",
            "code": 400
        }

Expected Behavior

It works in DO version 1.29.0-8

Actual Behavior

Error returned

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinguntriagedIssue needs to be reviewed for validity

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions