.. Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. .. include:: ../../common.defs .. _developer-doc-ts-markup: |TS| Specific Markup ******************** This section covers markup used specific to the |TS| documentation and custom domains provided by local extensions. Types ===== Data types are documented using the standard ``:c:type:`` markup provided by Sphinx. Types provided by the C API should be documented in ``doc/developer-guide/api/types/`` Constants ========= Functions ========= Custom Domains ============== The |TS| documentation provides a Sphinx extension, located at ``doc/ext/traffic-server.py`` which defines custom domains for various purposes. Those domains and their usage are documented here. Configuration Variables ----------------------- Configuration variables are documented with the ``:ts:cv:`` domain, which takes three required arguments (the scope, which is the literal string :literal:`CONFIG`, the variable name, and the data type) and a fourth optional argument (the default value). :: :ts:cv: This corresponds exactly to the line in :file:`records.yaml`. Definition ~~~~~~~~~~ Scope The scope of the variable. For configuration variables, this will always be the literal string :literal:`CONFIG`. Variable Name The full and exact configuration variable name. Data Type Indicates the data type of the variable and must be one of the following literal strings: :literal:`INT` Any integer value. Values may optionally be expressed with a binary order of magnitude suffix; e.g. :literal:`K` for *value* * 1024, :literal:`M` for *value* * 1024^2, :literal:`G` for *value* * 1024^3, or :literal:`T` for *value* * 1024^4. :literal:`FLOAT` Any floating point value. :literal:`STRING` Any alphanumeric string. Value The default value of the configuration variable. It is preferable to not use any order of magnitude suffix, as |TS| will rewrite its configuration files under various circumstances, and when doing so it does not maintain those suffixes. Options ~~~~~~~ The domain for configuration variables takes several options. reloadable If marked the effect of the variable can be changed by reloading the |TS| configuration. overridable A flag option that should be set if the variable is overridable per transaction. units This takes a string option which is a description of the units for the variable. The most common case is to distinguish time values with units such as "seconds", "minutes", "milliseconds", etc. deprecated A simple flag option which, when attached to a configuration variable, is used to indicate that the variable has been deprecated and should no longer be used or relied upon, as it may be removed at any time by future releases. References ~~~~~~~~~~ References to configuration variables from elsewhere in the documentation should be made using the standard domain reference markup:: :ts:cv:`full.variable.name` Statistics ---------- |TS| statistics are documented using the domain ``:ts:stat:``. The domain takes three required arguments (collection, name, data type) and an option fourth (an example value). :: :ts:stat: Definition ~~~~~~~~~~ Collection The key name of the collection in the returned JSON data from the :ref:`admin-plugins-stats-over-http` plugin. For most statistics, this is the literal string :literal:`global`. *Required* Statistic Name The exact and full name of the statistic. *Required* Data Type One of the following literal string values: :literal:`integer`, :literal:`float`, :literal:`boolean`, or :literal:`string`. *Required* Example Value A valid example of the value which may be exported by the statistic. In cases where the description of the statistic makes note of particular features of the values, such as the case of string statistics which may be formatted in specific ways, providing the optional example is strongly recommended. *Optional* The statistics domain also supports several options which can provide even more metadata about the statistic. These are currently: Options ~~~~~~~ type Defines the type of metric exposed by the statistic. Valid values are: :literal:`counter` Numeric values which only increment based on the accumulation or occurrence of underlying events. Examples include the total number of incoming connections, or the total number of bytes transferred. :literal:`gauge` Used for moment-in-time metrics, such as the current number of |TS| processes running, or the current number of connections open to origin servers. :literal:`flag` Indicates that values for this statistic will be an integer with each value indicating a particular state. Most statistics of this type are booleans, where :literal:`1` indicates a truth or an *on* state, and :literal:`0` the opposite. :literal:`derivative` Statistics of this type presents values that are calculated, or derived, from other statistics. They do not expose a number or state gathered directly. Typical statistics of this type are representations of a statistic over a given period (e.g. average origin connections per second), ratio or percentage of a statistic as part of a set (e.g. the percentage of total dns lookups which have failed), or any other statistic whose computation depends on the value(s) of one or more other statistics. unit Indicates the units of measurement that should be assumed for the given statistic's value. introduced May be used to indicate the version of |TS| in which the statistic was first available. The value of this option should be a valid, human-readable version number string, e.g. :literal:`5.3.0`. deprecated Used to indicate that the statistic is no longer supported and may be removed in later versions. This option may be used as a simple flag without any given value, or may have a value associated in which case it should be a valid, human-readable version number string for the |TS| release which was first to deprecate the statistic. ungathered A simple flag option, without any associated values, indicating that while the statistic is included in the output of plugins like :ref:`admin-plugins-stats-over-http` there is no underlying data gathered for the statistic. If a statistic is thus marked, it should be assumed to be invalid or simply unimplemented. References ~~~~~~~~~~ To reference a statistic from elsewhere in the documentation, the standard domain reference markup should be used:: :ts:stat:`full.statistic.name` References should not include the collection name, data type, or any other components aside from the statistic name. Referencing source code ----------------------- To reference source code from the documentation, use the following markup:: :ts:git:`path/to/source/file` This creates a link to Github. Sphinx does its best to pin the reference to the current release version of |ATS|. Avoid using hard links to Github as Github may be replaced with another host in the future. .. note:: Although adding the ability to point to a specific line number would not be difficult, code shifts around too much and this feature would only cause confusion to a downstream reader. This feature was deliberately omitted.