diff options
-rw-r--r-- | .readthedocs.yaml | 20 | ||||
-rw-r--r-- | docs/.gitignore | 3 | ||||
-rw-r--r-- | docs/_static/css/ribbon.css | 63 | ||||
-rwxr-xr-x | docs/_static/favicon.ico | bin | 0 -> 2102 bytes | |||
-rw-r--r-- | docs/_static/logo_onap_2017.png | bin | 0 -> 12278 bytes | |||
-rw-r--r-- | docs/conf.py | 15 | ||||
-rw-r--r-- | docs/conf.yaml | 7 | ||||
-rw-r--r-- | docs/requirements-docs.txt | 15 | ||||
-rw-r--r-- | docs/sections/images/prhAlgo.png | bin | 44604 -> 55080 bytes | |||
-rw-r--r-- | docs/sections/services/pm-subscription-handler/configuration.rst | 138 | ||||
-rw-r--r-- | docs/sections/services/pm-subscription-handler/logging.rst | 7 | ||||
-rw-r--r-- | docs/sections/services/pm-subscription-handler/troubleshooting.rst | 2 | ||||
-rw-r--r-- | docs/sections/services/prh/configuration.rst | 93 | ||||
-rw-r--r-- | docs/tox.ini | 22 |
14 files changed, 286 insertions, 99 deletions
diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 00000000..3797dc8b --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,20 @@ +--- +# .readthedocs.yml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details +# Required +version: 2 + +formats: + - htmlzip + +build: + image: latest + +python: + version: 3.7 + install: + - requirements: docs/requirements-docs.txt + +sphinx: + configuration: docs/conf.py diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000..43ca5b67 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,3 @@ +/.tox +/_build/* +/__pycache__/* diff --git a/docs/_static/css/ribbon.css b/docs/_static/css/ribbon.css new file mode 100644 index 00000000..6008cb1a --- /dev/null +++ b/docs/_static/css/ribbon.css @@ -0,0 +1,63 @@ +.ribbon { + z-index: 1000; + background-color: #a00; + overflow: hidden; + white-space: nowrap; + position: fixed; + top: 25px; + right: -50px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-box-shadow: 0 0 10px #888; + -moz-box-shadow: 0 0 10px #888; + box-shadow: 0 0 10px #888; + +} + +.ribbon a { + border: 1px solid #faa; + color: #fff; + display: block; + font: bold 81.25% 'Helvetica Neue', Helvetica, Arial, sans-serif; + margin: 1px 0; + padding: 10px 50px; + text-align: center; + text-decoration: none; + text-shadow: 0 0 5px #444; + transition: 0.5s; +} + +.ribbon a:hover { + background: #c11; + color: #fff; +} + + +/* override table width restrictions */ +@media screen and (min-width: 767px) { + + .wy-table-responsive table td, .wy-table-responsive table th { + /* !important prevents the common CSS stylesheets from overriding + this as on RTD they are loaded after this stylesheet */ + white-space: normal !important; + } + + .wy-table-responsive { + overflow: visible !important; + } +} + +@media screen and (max-width: 767px) { + .wy-table-responsive table td { + white-space: nowrap; + } +} + +/* fix width of the screen */ + +.wy-nav-content { + max-width: none; +} diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico Binary files differnew file mode 100755 index 00000000..cb712ebd --- /dev/null +++ b/docs/_static/favicon.ico diff --git a/docs/_static/logo_onap_2017.png b/docs/_static/logo_onap_2017.png Binary files differnew file mode 100644 index 00000000..5d064f43 --- /dev/null +++ b/docs/_static/logo_onap_2017.png diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 00000000..8f40e8b8 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,15 @@ +from docs_conf.conf import * + +branch = 'latest' +master_doc = 'index' + +linkcheck_ignore = [ + 'http://localhost', +] + +intersphinx_mapping = {} + +html_last_updated_fmt = '%d-%b-%y %H:%M' + +def setup(app): + app.add_stylesheet("css/ribbon_onap.css") diff --git a/docs/conf.yaml b/docs/conf.yaml new file mode 100644 index 00000000..ab592813 --- /dev/null +++ b/docs/conf.yaml @@ -0,0 +1,7 @@ +--- +project_cfg: onap +project: onap + +# Change this to ReleaseBranchName to modify the header +default-version: latest +# diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt new file mode 100644 index 00000000..b3188ddd --- /dev/null +++ b/docs/requirements-docs.txt @@ -0,0 +1,15 @@ +tox +Sphinx +doc8 +docutils +setuptools +six +sphinx_rtd_theme>=0.4.3 +sphinxcontrib-blockdiag +sphinxcontrib-needs>=0.2.3 +sphinxcontrib-nwdiag +sphinxcontrib-seqdiag +sphinxcontrib-swaggerdoc +sphinxcontrib-plantuml +sphinx_bootstrap_theme +lfdocs-conf diff --git a/docs/sections/images/prhAlgo.png b/docs/sections/images/prhAlgo.png Binary files differindex 3d3c8093..eef3db6d 100644 --- a/docs/sections/images/prhAlgo.png +++ b/docs/sections/images/prhAlgo.png diff --git a/docs/sections/services/pm-subscription-handler/configuration.rst b/docs/sections/services/pm-subscription-handler/configuration.rst index 876d9085..e5b7b48c 100644 --- a/docs/sections/services/pm-subscription-handler/configuration.rst +++ b/docs/sections/services/pm-subscription-handler/configuration.rst @@ -14,23 +14,57 @@ Application specific configuration The application config is the basic information that PMSH needs to run. The following parameters are required, they are specified in the CLAMP deployment GUI. -+------------------+--------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ -| Field | Description | Type | Required | Default | -+==================+==========================================================================+=========+==========+===============================================================================+ -| tag_version | Docker image to be used. | string | True | nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.pm-subscription-handler | -+------------------+--------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ -| replicas | Number of instances. | integer | True | 1 | -+------------------+--------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ -| subscriber_topic | The topic that PMSH will subscribe to. | string | True | AAI-EVENT | -+------------------+--------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ -| publisher_topic | The topic that PMSH will publish to, and which policy will subscribe to. | string | True | org.onap.dmaap.mr.PM_SUBSCRIPTIONS | -+------------------+--------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ -| client_role | Client role to request secure access to topic. | string | True | | -+------------------+--------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ -| client_id | Client id for given AAF client. | string | True | dcae@dcae.onap.org | -+------------------+--------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ -| client_password | Password for AAF client provided as client_id. | string | True | | -+------------------+--------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| Field | Description | Type | Required | Default | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| tag_version | Docker image to be used. | string | True | nexus3.onap.org:10001/onap/org.onap.dcaegen2.services.pm-subscription-handler | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| replicas | Number of instances. | integer | True | 1 | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| policy_model_id | Monitoring policy model ID. | string | True | onap.policies.monitoring.dcae-pm-subscription-handler | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| policy_id | Monitoring policy ID. | string | True | onap.policies.monitoring.dcae-pm-subscription-handler | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| operational_policy_name | Name of the operational policy that the service will prompt. | string | True | pmsh-operational-policy | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| control_loop_name | Name of the control loop the service is part of. | string | True | | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| pm_publish_topic_name | The topic that PMSH will publish to, and which policy will subscribe to. | string | True | DCAE_CL_OUTPUT | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| policy_feedback_topic_name | The topic that PMSH will subscribe to, and which policy will publish to. | string | True | PMSH_CL_INPUT | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| aai_notification_topic_name | The topic that PMSH will subscribe to, and which AAI will publish change events to. | string | True | AAI-EVENT | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| publisher_client_role | The client role used to publish to the topic that policy will subscribe to. | string | True | org.onap.dcae.pmPublisher | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| subscriber_client_role | The client role used to subscribe to the topic that AAI will publish change events to. | string | True | org.onap.dcae.pmSubscriber | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| client_id | Client id for given AAF client. | string | True | dcae@dcae.onap.org | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| client_password | Password for AAF client provided as client_id. | string | True | | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| dcae_location | Location of the DCAE cluster. | string | True | san-francisco | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| pmsh_service_protocol | Protocol of the PMSH service. | string | True | https | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| pmsh_service_port | Port of the PMSH service. | string | True | 8443 | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| dmaap_mr_service_protocol | Protocol of Message Router service. | string | True | https | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| dmaap_mr_service_host | Hostname of the Message Router service. | string | True | message-router | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| dmaap_mr_service_port | Port of the Message Router service. | string | True | 3905 | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| cpu_limit | CPU limit for the PMSH service. | string | True | 1000m | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| cpu_request | Requested CPU for the PMSH service. | string | True | 1000m | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| memory_limit | Memory limit for the PMSH service. | string | True | 1024Mi | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| memory_request | Requested Memory for the PMSH service. | string | True | 1024Mi | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ +| pgaas_cluster_name | Cluster name for Postgres As A Service. | string | True | dcae-pg-primary.onap | ++-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------+ Subscription configuraton """"""""""""""""""""""""" @@ -59,37 +93,39 @@ The subscription is configured within the monitoring policy in CLAMP. The subscr "foo.*" ] }, - "measurementGroup": { - "measurementTypes": [ - { - "measurementType": "EutranCell.*" - }, - { - "measurementType": "EutranCellRelation.pmCounter1" - }, - { - "measurementType": "EutranCellRelation.pmCounter2" - } - ], - "managedObjectDNsBasic": [ - { - "DN": "ManagedElement=1,ENodeBFunction=1,EUtranCell=CityCenter1" - }, - { - "DN": "ManagedElement=1,ENodeBFunction=1,EUtranCell=CityCenter1, EUtranCellRelation=CityCenter2" - }, - { - "DN": "ManagedElement=1,ENodeBFunction=1,EUtranCell=CityCenter1, EUtranCellRelation=CityCenter3" - } - ] - } + "measurementGroups": [ + "measurementGroup": { + "measurementTypes": [ + { + "measurementType": "EutranCell.*" + }, + { + "measurementType": "EutranCellRelation.pmCounter1" + }, + { + "measurementType": "EutranCellRelation.pmCounter2" + } + ], + "managedObjectDNsBasic": [ + { + "DN": "ManagedElement=1,ENodeBFunction=1,EUtranCell=CityCenter1" + }, + { + "DN": "ManagedElement=1,ENodeBFunction=1,EUtranCell=CityCenter1, EUtranCellRelation=CityCenter2" + }, + { + "DN": "ManagedElement=1,ENodeBFunction=1,EUtranCell=CityCenter1, EUtranCellRelation=CityCenter3" + } + ] + } + ] } } +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+ | Field | Description | Type | Required | Values | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+ -| subscriptionName | Name of the subscription | | | | +| subscriptionName | Name of the subscription. | | | | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+ | administrativeState | Setting a subscription to UNLOCKED will apply the subscription to the NF instances immediately. If it is set to LOCKED, it will not be applied until it is later unlocked. | | | | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+ @@ -101,7 +137,7 @@ The subscription is configured within the monitoring policy in CLAMP. The subscr +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+ | nfFilter | The network function filter will be used to filter the list of nf's stored in A&AI to produce a subset. | | | | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+ -| measurementGroup | List of measurement types and managed object distinguished names | | | | +| measurementGroups | List containing measurementGroup. | | | | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+ **nfFilter** @@ -126,9 +162,9 @@ specified in the ``nfNames`` field, which can also contain regex as seen below. +------------+-----------------------------------------------------------------------------+------+----------+ | Field | Description | Type | Required | +============+=============================================================================+======+==========+ -| swVersions | List of software versions | list | True | +| swVersions | List of software versions. | list | True | +------------+-----------------------------------------------------------------------------+------+----------+ -| nfNames | List of NF names. These names are regexes, which will be parsed by the PMSH | list | True | +| nfNames | List of NF names. These names are regexes, which will be parsed by the PMSH.| list | True | +------------+-----------------------------------------------------------------------------+------+----------+ **measurementGroup** @@ -187,17 +223,17 @@ This topic is used so that the PMSH can listen for new NFs getting registered. I :: - org.onap.dmaap.mr.PM_SUBSCRIPTION_EVENTS + PMSH_CL_INPUT + +This topic enables the operational policy to provide feedback on the status of a subscription attempt back to the PMSH service. -This topic is used for locking and unlocking events. i.e if a user has previously created a locked -subscription, they can publish an event to this topic to unlock it, or vice versa. Publisher: ^^^^^^^^^^ :: - org.onap.dmaap.mr.PM_SUBSCRIPTIONS + DCAE_CL_OUTPUT -The PMSH publishes subscriptions to this topic. They will be consumed by a policy which will make a request to CDS to -unlock the subscription.
\ No newline at end of file +The PMSH publishes subscriptions to this topic. They will be consumed by an operational policy which will make a request to CDS to +change the state of the subscription.
\ No newline at end of file diff --git a/docs/sections/services/pm-subscription-handler/logging.rst b/docs/sections/services/pm-subscription-handler/logging.rst index 5fa5f3d7..aeae7c46 100644 --- a/docs/sections/services/pm-subscription-handler/logging.rst +++ b/docs/sections/services/pm-subscription-handler/logging.rst @@ -9,12 +9,9 @@ configurable. Logging ======= -There are four log files within the PMSH container, they are located in /var/log/ONAP/pmsh/ +The PMSH application writes logs on the debug level to the following file: .. code-block:: bash - /var/log/ONAP/pmsh/error.log (Level: Error) - /var/log/ONAP/pmsh/debug.log (Level: Debug) - /var/log/ONAP/pmsh/audit.log (Level: Info) - /var/log/ONAP/pmsh/metrics.log (Level: Info) + /var/log/ONAP/dcaegen2/services/pmsh/debug.log diff --git a/docs/sections/services/pm-subscription-handler/troubleshooting.rst b/docs/sections/services/pm-subscription-handler/troubleshooting.rst index daf0cb07..07787c41 100644 --- a/docs/sections/services/pm-subscription-handler/troubleshooting.rst +++ b/docs/sections/services/pm-subscription-handler/troubleshooting.rst @@ -15,7 +15,7 @@ Unable to connect to Config Binding Service ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The PMSH may not be able to reach the Config Binding Service. If this is the case you will be able to -see an error connecting to Config Binding Service in Kibana. +see an error connecting to Config Binding Service, by checking the logs in Kibana. Invalid Configuration ^^^^^^^^^^^^^^^^^^^^^ diff --git a/docs/sections/services/prh/configuration.rst b/docs/sections/services/prh/configuration.rst index 03110a1b..9f449cb8 100644 --- a/docs/sections/services/prh/configuration.rst +++ b/docs/sections/services/prh/configuration.rst @@ -6,54 +6,63 @@ Configuration ============= -PRH fetches configuration directly from Consul service in the following JSON format: +PRH fetches configuration directly from CBS service in the following JSON format: .. code-block:: json { - "aai": { - "aaiClientConfiguration": { - "aaiHost": "aai.onap.svc.cluster.local", - "aaiHostPortNumber": 8443, - "aaiIgnoreSslCertificateErrors": true, - "aaiProtocol": "https", - "aaiUserName": "AAI", - "aaiUserPassword": "AAI", - "aaiBasePath": "/aai/v12", - "aaiPnfPath": "/network/pnfs/pnf", - } - }, - "dmaap": { - "dmaapConsumerConfiguration": { - "consumerGroup": "OpenDCAE-c12", - "consumerId": "c12", - "dmaapContentType": "application/json", - "dmaapHostName": "message-router.onap.svc.cluster.local", - "dmaapPortNumber": 3904, - "dmaapProtocol": "http", - "dmaapTopicName": "/events/unauthenticated.VES_PNFREG_OUTPUT", - "dmaapUserName": "admin", - "dmaapUserPassword": "admin", - "messageLimit": -1, - "timeoutMs": -1 + "config":{ + "dmaap.dmaapConsumerConfiguration.dmaapUserName":"admin", + "dmaap.dmaapConsumerConfiguration.dmaapUserPassword":"admin", + "dmaap.dmaapConsumerConfiguration.consumerId":"c12", + "dmaap.dmaapConsumerConfiguration.consumerGroup":"OpenDCAE-c12", + "dmaap.dmaapConsumerConfiguration.timeoutMs":-1, + + "dmaap.dmaapProducerConfiguration.dmaapUserName":"admin", + "dmaap.dmaapProducerConfiguration.dmaapUserPassword":"admin", + "dmaap.dmaapUpdateProducerConfiguration.dmaapUserName":"admin", + "dmaap.dmaapUpdateProducerConfiguration.dmaapUserPassword":"admin", + "aai.aaiClientConfiguration.pnfUrl": "https://aai.onap.svc.cluster.local:8443/aai/v12/network/pnfs/pnf", + "aai.aaiClientConfiguration.baseUrl": "https://aai.onap.svc.cluster.local:8443/aai/v12", + "aai.aaiClientConfiguration.aaiUserName":"AAI", + "aai.aaiClientConfiguration.aaiUserPassword":"AAI", + "aai.aaiClientConfiguration.aaiIgnoreSslCertificateErrors":true, + "aai.aaiClientConfiguration.aaiServiceInstancePath":"/business/customers/customer/${customer}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${serviceInstanceId}", + "aai.aaiClientConfiguration.aaiHeaders":{ + "X-FromAppId":"prh", + "X-TransactionId":"9999", + "Accept":"application/json", + "Real-Time":"true", + "Authorization":"Basic QUFJOkFBSQ==" + }, + "security.trustStorePath":"/opt/app/prh/local/org.onap.prh.trust.jks", + "security.trustStorePasswordPath":"change_it", + "security.keyStorePath":"/opt/app/prh/local/org.onap.prh.p12", + "security.keyStorePasswordPath":"change_it", + "security.enableAaiCertAuth":false, + "security.enableDmaapCertAuth":false, + "streams_publishes":{ + "pnf-update":{ + "type": "message_router", + "dmaap_info":{ + "topic_url":"http://dmaap-mr:2222/events/unauthenticated.PNF_UPDATE" + } + }, + "pnf-ready":{ + "type": "message_router", + "dmaap_info":{ + "topic_url":"http://dmaap-mr:2222/events/unauthenticated.PNF_READY" + } + } }, - "dmaapProducerConfiguration": { - "dmaapContentType": "application/json", - "dmaapHostName": "message-router.onap.svc.cluster.local", - "dmaapPortNumber": 3904, - "dmaapProtocol": "http", - "dmaapTopicName": "/events/unauthenticated.PNF_READY", - "dmaapUserName": "admin", - "dmaapUserPassword": "admin" + "streams_subscribes":{ + "ves-reg-output":{ + "type": "message_router", + "dmaap_info":{ + "topic_url":"http://dmaap-mr:2222/events/unauthenticated.VES_PNFREG_OUTPUT" + } + } } - }, - "security": { - "trustStorePath": "/opt/app/prh/etc/cert/trust.jks", - "trustStorePasswordPath": "/opt/app/prh/etc/cert/trust.pass", - "keyStorePath": "/opt/app/prh/etc/cert/cert.jks", - "keyStorePasswordPath": "/opt/app/prh/etc/cert/jks.pass", - "enableAaiCertAuth": "false", - "enableDmaapCertAuth": "false" } } diff --git a/docs/tox.ini b/docs/tox.ini new file mode 100644 index 00000000..edac8c35 --- /dev/null +++ b/docs/tox.ini @@ -0,0 +1,22 @@ +[tox] +minversion = 1.6 +envlist = docs, +skipsdist = true + +[testenv:docs] +basepython = python3 +deps = -r{toxinidir}/requirements-docs.txt +commands = + sphinx-build -b html -n -d {envtmpdir}/doctrees ./ {toxinidir}/_build/html + echo "Generated docs available in {toxinidir}/_build/html" +whitelist_externals = + echo + git + sh + +[testenv:docs-linkcheck] +basepython = python3 +#deps = -r{toxinidir}/requirements-docs.txt +commands = echo "Link Checking not enforced" +#commands = sphinx-build -b linkcheck -d {envtmpdir}/doctrees ./ {toxinidir}/_build/linkcheck +whitelist_externals = echo |