TRAFFICDIRECTOR

trafficdirector.discovery.client_status

enum_SocketAddressProtocol := [ "TCP", "UDP" ]

valid {
    input.Body.excludeResourceContents == BOOLEAN
    input.Body.node.clientFeatures[_] == STRING
    input.Body.node.cluster == STRING
    input.Body.node.dynamicParameters.STRING.params.STRING == STRING
    input.Body.node.extensions[_].category == STRING
    input.Body.node.extensions[_].disabled == BOOLEAN
    input.Body.node.extensions[_].name == STRING
    input.Body.node.extensions[_].typeDescriptor == STRING
    input.Body.node.extensions[_].typeUrls[_] == STRING
    input.Body.node.extensions[_].version.metadata.STRING == ANY
    input.Body.node.extensions[_].version.version.majorNumber == INTEGER
    input.Body.node.extensions[_].version.version.minorNumber == INTEGER
    input.Body.node.extensions[_].version.version.patch == INTEGER
    input.Body.node.id == STRING
    input.Body.node.listeningAddresses[_].envoyInternalAddress.endpointId == STRING
    input.Body.node.listeningAddresses[_].envoyInternalAddress.serverListenerName == STRING
    input.Body.node.listeningAddresses[_].pipe.mode == INTEGER
    input.Body.node.listeningAddresses[_].pipe.path == STRING
    input.Body.node.listeningAddresses[_].socketAddress.address == STRING
    input.Body.node.listeningAddresses[_].socketAddress.ipv4Compat == BOOLEAN
    input.Body.node.listeningAddresses[_].socketAddress.namedPort == STRING
    input.Body.node.listeningAddresses[_].socketAddress.portValue == INTEGER
    input.Body.node.listeningAddresses[_].socketAddress.protocol == enum_SocketAddressProtocol[_]
    input.Body.node.listeningAddresses[_].socketAddress.resolverName == STRING
    input.Body.node.locality.region == STRING
    input.Body.node.locality.subZone == STRING
    input.Body.node.locality.zone == STRING
    input.Body.node.metadata.STRING == ANY
    input.Body.node.userAgentBuildVersion.metadata.STRING == ANY
    input.Body.node.userAgentBuildVersion.version.majorNumber == INTEGER
    input.Body.node.userAgentBuildVersion.version.minorNumber == INTEGER
    input.Body.node.userAgentBuildVersion.version.patch == INTEGER
    input.Body.node.userAgentName == STRING
    input.Body.node.userAgentVersion == STRING
    input.Body.nodeMatchers[_].nodeId.contains == STRING
    input.Body.nodeMatchers[_].nodeId.custom.name == STRING
    input.Body.nodeMatchers[_].nodeId.custom.typedConfig.STRING == ANY
    input.Body.nodeMatchers[_].nodeId.exact == STRING
    input.Body.nodeMatchers[_].nodeId.ignoreCase == BOOLEAN
    input.Body.nodeMatchers[_].nodeId.prefix == STRING
    input.Body.nodeMatchers[_].nodeId.safeRegex.googleRe2.maxProgramSize == INTEGER
    input.Body.nodeMatchers[_].nodeId.safeRegex.regex == STRING
    input.Body.nodeMatchers[_].nodeId.suffix == STRING
    input.Body.nodeMatchers[_].nodeMetadatas[_].path[_].key == STRING
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.boolMatch == BOOLEAN
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.doubleMatch.exact == NUMBER
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.doubleMatch.range.end == NUMBER
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.doubleMatch.range.start == NUMBER
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.listMatch.oneOf == NESTED
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.nullMatch.STRING == STRING
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.orMatch.valueMatchers[_] == NESTED
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.presentMatch == BOOLEAN
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.stringMatch.contains == STRING
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.stringMatch.custom.name == STRING
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.stringMatch.custom.typedConfig.STRING == ANY
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.stringMatch.exact == STRING
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.stringMatch.ignoreCase == BOOLEAN
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.stringMatch.prefix == STRING
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.stringMatch.safeRegex.googleRe2.maxProgramSize == INTEGER
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.stringMatch.safeRegex.regex == STRING
    input.Body.nodeMatchers[_].nodeMetadatas[_].value.stringMatch.suffix == STRING
    input.ProviderMetadata.Region == STRING
}