blob: d0188ece3a3b0ad16f4376b0e4af6645a0ad88c0 [file] [log] [blame]
.. 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: <scope> <variable name> <data type> <value>
This corresponds exactly to the line in :file:`records.config`.
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: <collection> <statistic name> <data type> <example-value>
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.