forked from apache/trafficserver
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a JSON schema for strategies.yaml (apache#7932)
- Loading branch information
Showing
1 changed file
with
256 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,256 @@ | ||
{ | ||
"$schema": "http://json-schema.org/draft-06/schema#", | ||
"$id": "https://github.com/apache/trafficserver/tree/master/configs/strategies.schema.json", | ||
"$ref": "#/definitions/Strategies", | ||
"definitions": { | ||
"Strategies": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"hosts": { | ||
"type": "array", | ||
"description": "An array of hosts assinged to a group", | ||
"items": { | ||
"$ref": "#/definitions/Host" | ||
} | ||
}, | ||
"groups": { | ||
"type": "array", | ||
"description": "A group otherwise known as a ring, is a collection of hosts", | ||
"items": { | ||
"type": "array", | ||
"items": { | ||
"$ref": "#/definitions/Group" | ||
} | ||
} | ||
}, | ||
"strategies": { | ||
"type": "array", | ||
"description": "A next hop selection strategy definition", | ||
"items": { | ||
"$ref": "#/definitions/Strategy" | ||
} | ||
} | ||
}, | ||
"required": [ | ||
"groups", | ||
"hosts", | ||
"strategies" | ||
], | ||
"title": "Trafficserver Strategies" | ||
}, | ||
"Group": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"description": "A host member within a group or ring", | ||
"properties": { | ||
"host": { | ||
"type": "string", | ||
"description": "The hosts fully qualified hostname or IP address" | ||
}, | ||
"protocol": { | ||
"type": "array", | ||
"description": "The set of protocols supported on this host", | ||
"items": { | ||
"$ref": "#/definitions/Protocol" | ||
} | ||
}, | ||
"weight": { | ||
"type": "number", | ||
"description": "The optional weighting to apply for this host within a ring" | ||
} | ||
}, | ||
"required": [ | ||
"host", | ||
"protocol" | ||
], | ||
"title": "Group" | ||
}, | ||
"Protocol": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"scheme": { | ||
"$ref": "#/definitions/Scheme" | ||
}, | ||
"port": { | ||
"type": "integer", | ||
"description": "the protocol port number", | ||
"minimum": 80, | ||
"maximum": 65534 | ||
}, | ||
"health_check_url": { | ||
"type": "string", | ||
"description": "the optional url that may be used for a health checking system", | ||
"format": "uri", | ||
"qt-uri-protocols": [ | ||
"http", | ||
"https", | ||
"tcp" | ||
] | ||
} | ||
}, | ||
"required": [ | ||
"port", | ||
"scheme" | ||
], | ||
"title": "Protocol" | ||
}, | ||
"Host": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"host": { | ||
"type": "string", | ||
"description": "The fully qualified host name or IP address of the host" | ||
}, | ||
"protocol": { | ||
"type": "array", | ||
"items": { | ||
"$ref": "#/definitions/Protocol" | ||
} | ||
} | ||
}, | ||
"required": [ | ||
"host", | ||
"protocol" | ||
], | ||
"title": "Host" | ||
}, | ||
"Strategy": { | ||
"type": "object", | ||
"additionalProperties": false, | ||
"properties": { | ||
"strategy": { | ||
"type": "string", | ||
"description": "the name assigned to this strategy" | ||
}, | ||
"policy": { | ||
"type": "string", | ||
"description": "the host selection algorithm for the strategy", | ||
"enum": [ | ||
"rr_ip", | ||
"rr_strict", | ||
"first_live", | ||
"latched", | ||
"consistent_hash" | ||
] | ||
}, | ||
"hash_key": { | ||
"type": "string", | ||
"description": "when using consistent_hash, this specifies the chosen key used for the hash", | ||
"enum": [ | ||
"hostname", | ||
"path", | ||
"path+query", | ||
"path+fragment", | ||
"cache_key", | ||
"url" | ||
] | ||
}, | ||
"go_direct": { | ||
"type": "boolean", | ||
"description": "wether, true/false, users of the strategy may bypass parents and go directly to the origin" | ||
}, | ||
"parent_is_proxy": { | ||
"type": "boolean", | ||
"description": "all the hosts assigned to the strategy are all caching proxy servers" | ||
}, | ||
"cache_peer_result": { | ||
"type": "boolean", | ||
"description": "cache or do not cache proxy peer responses when using a peering ring mode and consistent hashing" | ||
}, | ||
"groups": { | ||
"type": "array", | ||
"description": "the groups of hosts assigned to the strategy", | ||
"items": { | ||
"type": "array", | ||
"items": { | ||
"$ref": "#/definitions/Group" | ||
} | ||
} | ||
}, | ||
"scheme": { | ||
"$ref": "#/definitions/Scheme" | ||
}, | ||
"failover": { | ||
"$ref": "#/definitions/Failover" | ||
} | ||
}, | ||
"required": [ | ||
"groups", | ||
"policy", | ||
"scheme", | ||
"strategy" | ||
], | ||
"title": "Strategy" | ||
}, | ||
"Failover": { | ||
"type": "object", | ||
"description": "failover configuration for the strategy", | ||
"additionalProperties": false, | ||
"properties": { | ||
"max_simple_retries": { | ||
"type": "integer", | ||
"description": "the maximum number of retries for a transaction when using simple retry", | ||
"minimum": 0, | ||
"maximum": 5 | ||
}, | ||
"max_unavailable_retries": { | ||
"type": "integer", | ||
"description": "the maximum number of retries for a transaction when using unavailable server retry", | ||
"minimum": 0, | ||
"maximum": 5 | ||
}, | ||
"ring_mode": { | ||
"type": "string", | ||
"description": "the ring host selection mode", | ||
"enum": [ | ||
"exhaust_ring", | ||
"alternate_ring", | ||
"peering_ring" | ||
] | ||
}, | ||
"response_codes": { | ||
"type": "array", | ||
"description": "list of simple retry http response codes", | ||
"items": { | ||
"type": "integer", | ||
"minimum": 400, | ||
"maximum": 599 | ||
} | ||
}, | ||
"markdown_codes": { | ||
"type": "array", | ||
"description": "list of unavailable server retry http response codes", | ||
"items": { | ||
"type": "integer", | ||
"minimum": 400, | ||
"maximum": 599 | ||
} | ||
}, | ||
"health_check": { | ||
"type": "array", | ||
"description": "the health checking mode used for the strategy", | ||
"items": { | ||
"type": "string", | ||
"enum": [ | ||
"active", | ||
"passive" | ||
] | ||
} | ||
} | ||
}, | ||
"title": "Failover" | ||
}, | ||
"Scheme": { | ||
"type": "string", | ||
"description": "the supported protocols used within the strategy", | ||
"enum": [ | ||
"http", | ||
"https" | ||
], | ||
"title": "Scheme" | ||
} | ||
} | ||
} |