Add root level docs control files 07/1407/2
authorE. Scott Daniels <daniels@research.att.com>
Thu, 7 Nov 2019 20:35:17 +0000 (15:35 -0500)
committerE. Scott Daniels <daniels@research.att.com>
Thu, 7 Nov 2019 21:10:01 +0000 (16:10 -0500)
Several control files must exist at the repo root, not in
docs, in order to vet and push the documentation out to some
remote site.  This changes adds those files, and fixes the
formatting issues that RST vetting is complaining about.

Signed-off-by: E. Scott Daniels <daniels@research.att.com>
Change-Id: Ibeda532f0524d5f5d4d138ece4e9265429fa322b

28 files changed:
.readthedocs.yaml [new file with mode: 0644]
README
doc/src/generic_ps.im
doc/src/man/rmr_bytes2payload.3.xfm
doc/src/man/rmr_get_meid.3.xfm
doc/src/man/rmr_get_srcip.3.xfm
doc/src/man/rmr_get_xact.3.xfm
doc/src/man/rmr_init.3.xfm
doc/src/man/rmr_init_trace.3.xfm
doc/src/man/rmr_mt_call.3.xfm
doc/src/man/rmr_mt_rcv.3.xfm
doc/src/man/rmr_send_msg.3.xfm
doc/src/man/rmr_set_stimeout.3.xfm
doc/src/man/rmr_str2meid.3.xfm
doc/src/man/rmr_str2xact.3.xfm
doc/src/markdown.im
doc/src/roff.im
doc/src/rst.im
doc/src/rtd/Makefile
doc/src/rtd/README
doc/src/rtd/developer-guide.xfm
doc/src/txt.im
docs/_static/logo.png [new file with mode: 0644]
docs/developer-guide.rst
docs/index.rst
docs/release-notes.rst [deleted file]
docs/user-guide.rst
tox.ini [new file with mode: 0644]

diff --git a/.readthedocs.yaml b/.readthedocs.yaml
new file mode 100644 (file)
index 0000000..44c62b3
--- /dev/null
@@ -0,0 +1,42 @@
+# vim: ts=4 expandtab sw=4:
+#==================================================================================
+#      Copyright (c) 2019 Nokia
+#      Copyright (c) 2018-2019 AT&T Intellectual Property.
+#
+#   Licensed 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.
+#==================================================================================
+
+# NOTE: this exists only to support the RTD scraper(s). Future: change requirements
+#              so this can be moved inside of docs/ rather than polluting the top level.
+
+---
+# .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/README b/README
index f3772d4..0f283f6 100644 (file)
--- a/README
+++ b/README
@@ -58,3 +58,17 @@ src          This directory is the top level source directory containing both the
 test   All unit and application level tests for the core library are kept
                within this directory.  Tests for bindings are managed within the
                binding's directory under the source directory.
+
+Top level pollution
+There are several "configuration" files which sit at the top level of the
+repo that are required for some sort of CI/CD/Documentation automation. Most,
+if not all of the CI/CD goo is in the ci directory where it's out of the way
+and thus not confusing. However, there is some pollution that can generally
+be ignored:
+
+       tox.ini -- this seems to drive the scraper which pulls from docs and 
+                       writes to some external documentation repo/host.
+
+       
+       .readthedocs.yaml -- this seems to be some configuration for the docs
+                       scraping process(es).
index f300c05..9020b91 100644 (file)
@@ -20,6 +20,8 @@
 .** macros compatable with the roff/troff and rts imbed files
 .** this is included when generating postscript from the man source.
 
+       .dv esc : .** rst needs an escape for some things
+
        .hn off
        .dv text_size 10p
        .dv ex_size 8p
index 74bc4fc..9deeef4 100644 (file)
@@ -46,9 +46,9 @@ void rmr_bytes2payload( rmr_mbuf_t* mbuf, unsigned char* src, int len )
 &h2(DESCRIPTION)
 This is a convenience function as some wrapper languages might not have the ability to
 directly copy into the payload buffer.
-The bytes from &ital( src ) for the length given are copied to the payload.
+The bytes from &ital(src) for the length given are copied to the payload.
 It is the caller's responsibility to ensure that the payload is large enough.
-Upon successfully copy, the &cw( len ) field in the message buffer is updated to 
+Upon successfully copy, the &cw(len) field in the message buffer is updated to 
 reflect the number of bytes copied.
 .sp
 There is little error checking, and no error reporting.
index 3980542..d31bb3c 100644 (file)
@@ -46,18 +46,18 @@ char* rmr_get_meid( rmr_mbuf_t* mbuf, unsigned char* dest )
 &h2(DESCRIPTION)
 The &cw(rmr_get_meid) function will copy the managed equipment ID (meid) field from the message
 into the &ital(dest) buffer provided by the user.  
-The buffer referenced by &ital( dest ) is assumed to be at least &cw(RMR_MAX_MEID) bytes in length.
-If &ital( dest ) is NULL, then a buffer is allocated (the calling application is expected
+The buffer referenced by &ital(dest) is assumed to be at least &cw(RMR_MAX_MEID) bytes in length.
+If &ital(dest) is NULL, then a buffer is allocated (the calling application is expected
 to free when the buffer is no longer needed).
 
 &h2(RETURN VALUE)
 On success, a pointer to the extracted string is returned. 
-If &ital( dest ) was supplied, then this is just a pointer to the caller's buffer.
-If &ital( dest ) was NULL, this is a pointer to the allocated buffer.
+If &ital(dest) was supplied, then this is just a pointer to the caller's buffer.
+If &ital(dest) was NULL, this is a pointer to the allocated buffer.
 If an error occurs, a nil pointer is returned and errno is set as described below.
 
 &h2(ERRORS)
-If an error occurs, the value of the global variable &cw( errno ) will be set to one of 
+If an error occurs, the value of the global variable &cw(errno) will be set to one of 
 the following with the indicated meaning.
 
 &beg_dlist(.75i : ^&bold_font )
@@ -65,7 +65,7 @@ the following with the indicated meaning.
 &di(EINVAL) The message, or an internal portion of the message, was corrupted or the pointer was invalid.
 
 &half_space
-&di(ENOMEM) A nil pointer was passed for &ital( dest, ) however it was not possible to allocate a 
+&di(ENOMEM) A nil pointer was passed for &ital(dest,) however it was not possible to allocate a 
        buffer using malloc().
 &end_dlist
 
index 489d1e5..9e3103b 100644 (file)
@@ -62,7 +62,7 @@ On success, a pointer to the destination buffer is given as a convenience to the
 On failure, a nil pointer is returned and the value of errno is set.
 
 &h2(ERRORS)
-If an error occurs, the value of the global variable &cw( errno ) will be set to one of
+If an error occurs, the value of the global variable &cw(errno) will be set to one of
 the following with the indicated meaning.
 
 &beg_dlist(.75i : ^&bold_font )
index 8674702..6506614 100644 (file)
@@ -46,18 +46,18 @@ char* rmr_get_xact( rmr_mbuf_t* mbuf, unsigned char* dest )
 &h2(DESCRIPTION)
 The &cw(rmr_get_xact) function will copy the transaction field from the message
 into the &ital(dest) buffer provided by the user.  
-The buffer referenced by &ital( dest ) is assumed to be at least &cw(RMR_MAX_XID) bytes in length.
-If &ital( dest ) is NULL, then a buffer is allocated (the calling application is expected
+The buffer referenced by &ital(dest) is assumed to be at least &cw(RMR_MAX_XID) bytes in length.
+If &ital(dest) is NULL, then a buffer is allocated (the calling application is expected
 to free when the buffer is no longer needed).
 
 &h2(RETURN VALUE)
 On success, a pointer to the extracted string is returned. 
-If &ital( dest ) was supplied, then this is just a pointer to the caller's buffer.
-If &ital( dest ) was NULL, this is a pointer to the allocated buffer.
+If &ital(dest) was supplied, then this is just a pointer to the caller's buffer.
+If &ital(dest) was NULL, this is a pointer to the allocated buffer.
 If an error occurs, a nil pointer is returned and errno is set as described below.
 
 &h2(ERRORS)
-If an error occurs, the value of the global variable &cw( errno ) will be set to one of 
+If an error occurs, the value of the global variable &cw(errno) will be set to one of 
 the following with the indicated meaning.
 
 &beg_dlist(.75i : ^&bold_font )
@@ -65,7 +65,7 @@ the following with the indicated meaning.
 &di(EINVAL) The message, or an internal portion of the message, was corrupted or the pointer was invalid.
 
 &half_space
-&di(ENOMEM) A nil pointer was passed for &ital( dest, ) however it was not possible to allocate a 
+&di(ENOMEM) A nil pointer was passed for &ital(dest,) however it was not possible to allocate a 
        buffer using malloc().
 &end_dlist
 
index 488e6d2..5413beb 100644 (file)
@@ -57,7 +57,7 @@ a specific message.
 
 &space
 &ital(Flags) allows for selection of some RMr options at the time of initialisation. 
-These are set by ORing &cw(RMRFL_) constants from the RMr header file. Currently the 
+These are set by ORing &cw(RMRFL) constants from the RMr header file. Currently the 
 following flags are supported:
 
 &half_space
@@ -83,7 +83,7 @@ Further, timeouts were message count based and not time unit based.
 Multi-threaded call support adds the ability for a user application with multiple threads
 to invoke a blocking call function with the guarentee that the correct response message 
 is delivered to the thread.  
-The additional support is implemented with the &ital( rmr_mt_call() ) and &ital( rmr_mt_rcv() )
+The additional support is implemented with the &ital(rmr_mt_call()) and &ital(rmr_mt_rcv())
 function calls. 
 &space
 
index f31baf0..9168c68 100644 (file)
@@ -66,7 +66,7 @@ a message later, the &cw(rmr_tralloc_msg()) function can be used.
 
 &h2(RETURN VALUE)
 A value of 1 is returned on success, and 0 on failure.  A failure indicates that the 
-RMr context (void *) passed to this function was not valid.
+RMr context (a void pointer passed to this function was not valid.
 
 &h2(SEE ALSO )
 .ju off
index 76d209f..6ba797d 100644 (file)
@@ -50,12 +50,12 @@ control to the user application.
 The user application supplies a completed message buffer, as it would for
 a &cw(rmr_send_msg) call, but unlike with a send, the buffer returned will have
 the response from the application that received the message.
-The thread invoking the &ital( rmr_mt_call())  will block until a message arrives
+The thread invoking the &ital(rmr_mt_call())  will block until a message arrives
 or until &ital(timeout) milliseconds has passed; which ever comes first.  
 Using a timeout value of zero (0) will cause the thread to block without a timeout.
 
 &space
-The &ital( id ) supplied as the third parameter is an integer in the range of 2 through
+The &ital(id) supplied as the third parameter is an integer in the range of 2 through
 255 inclusive. 
 This is a caller defined "thread number" and is used to match the response message
 with the correct user application thread.
@@ -64,7 +64,7 @@ If the ID value is not in the proper range, the attempt to make the call will fa
 &space
 Messages which are received while waiting for the response are queued on a &ital(normal)
 receive queue and will be delivered to the user application with the next invocation 
-of &ital( rmr_mt_rcv() ) or &ital( rmr_rvv_msg().) 
+of &ital(rmr_mt_rcv()) or &ital(rmr_rvv_msg().) 
 by RMR, and are returned to the user application when &cw(rmr_rcv_msg) is 
 invoked.
 These messages are returned in th order received, one per call to &cw(rmr_rcv_msg.)
@@ -84,7 +84,7 @@ RMr will compare &bold(all) of the bytes in the field, so the caller must ensure
 that they are set correctly to avoid missing the response message. 
 (The application which returns the response message is also expected to ensure that
 the return buffer has the matching transaction ID. This can be done transparently if
-the application uses the &ital( rmr_rts_msg() ) function and does not adjust the 
+the application uses the &ital(rmr_rts_msg()) function and does not adjust the 
 transaction ID.
 
 .** pull in common retry text
index d5c31b2..9584c49 100644 (file)
@@ -114,7 +114,7 @@ indicate either &cw(RMR_OK) or
 
 &half_space
 &di(RMR_ERR_NOTSUPP) The multi-threaded option was not enabled when RMr was 
-initialised.  See the man page for &ital(rmr_init() ) for details.
+initialised.  See the man page for &ital(rmr_init()) for details.
 
 &half_space
 &di(RMR_ERR_RCVFAILED) A hard error occurred preventing the receive from completing.
index d9cc620..36812c0 100644 (file)
@@ -67,7 +67,7 @@ The state in this buffer will reflect the overall send operation state and shoul
 &space
 When the message cannot be successfully sent this function will return the unsent (original) 
 message buffer with the state set to indicate the reason for failure.  
-The value of &ital( errno ) may also be set to reflect a more detailed failure reason if it
+The value of &ital(errno) may also be set to reflect a more detailed failure reason if it
 is known.
 
 &space
index ca091ac..4f5dd35 100644 (file)
@@ -44,35 +44,35 @@ rmr_mbuf_t* rmr_set_stimeout( void* vctx, int rloops );
 
 &h2(DESCRIPTION)
 The &cw(rmr_set_stimeout) function sets the configuration for how RMr will retry
-message send operations which complete with either a &ital( timeout )  or &ital( again )
+message send operations which complete with either a &ital(timeout)  or &ital(again)
 completion value.  (Send operations include all of the possible message send
-functions: &ital( rmr_send_msg(), rmr_call(), rmr_rts_msg() ) and &ital( rmr_wh_send_msg(). )
-The &ital( rloops ) parameter sets the maximum number of retry loops
+functions: &ital(rmr_send_msg(), rmr_call(), rmr_rts_msg()) and &ital(rmr_wh_send_msg().)
+The &ital(rloops) parameter sets the maximum number of retry loops
 that will be attempted before giving up and returning the unsuccessful state to the user
 application.
-Each retry loop is approximately 1000 attempts, and RMr does &bold( not ) invoke any sleep
+Each retry loop is approximately 1000 attempts, and RMr does &bold(not) invoke any sleep
 function between retries in the loop; a small, 1 mu-sec, sleep is executed between loop
-sets if the &ital( rloops ) value is greater than 1.
+sets if the &ital(rloops) value is greater than 1.
 
 .sp
 &h3(Disabling Retries)
-By default, the send operations will execute with an &ital( rloop ) setting of 1; each send
+By default, the send operations will execute with an &ital(rloop) setting of 1; each send
 operation will attempt to resend the message approximately 1000 times before giving up.
 If the user application does not want to have send operations retry when the underlying
-transport mechanism indicates &ital( timeout ) or &ital( again, ) the application should
-invoke this function and pass a value of 0 (zero) for &ital( rloops. )
-With this setting, all RMr send operations will attempt a send operation only &bold( once, )
+transport mechanism indicates &ital(timeout) or &ital(again,) the application should
+invoke this function and pass a value of 0 (zero) for &ital(rloops.)
+With this setting, all RMr send operations will attempt a send operation only &bold(once,)
 returning immediately to the caller with the state of that single attempt.
 
 
 &h2(RETURN VALUE)
-This function returns a -1 to indicate that the &ital( rloops ) value could not be set, and
-the value &ital( RMR_OK ) to indicate success.
+This function returns a -1 to indicate that the &ital(rloops) value could not be set, and
+the value &ital(RMR_OK) to indicate success.
 
 
 &h2(ERRORS)
-Currently errno is &bold( not ) set by this function; the only cause of a failure is an
-invalid context ( .sm &ital( vctx ) .sm ) pointer.
+Currently errno is &bold(not) set by this function; the only cause of a failure is an
+invalid context ( .sm &ital(vctx) .sm ) pointer.
 
 &h2(EXAMPLE)
 The following is a simple example of how the &cw(rmr_set_stimeout) function is called.
index 5d336b6..28f85c6 100644 (file)
@@ -48,7 +48,7 @@ The &cw(rmr_str2meid) function will copy the string pointed to by src to the
 managed equipment ID (meid) field in the given message.  
 The field is a fixed length, gated by the constant &cw(RMR_MAX_MEID) and if string length is larger
 than this value, then &bold(nothing) will be copied. (Note, this differs slightly from the
-behaviour of the &cw( lrmr_bytes2meid() ) function.)
+behaviour of the &cw(lrmr_bytes2meid()) function.)
 
 &h2(RETURN VALUE)
 On success, the value RMR_OK is returned. 
index 6f6046f..e27c5f6 100644 (file)
@@ -48,7 +48,7 @@ The &cw(rmr_str2xact) function will copy the string pointed to by src to the
 transaction ID (xaction) field in the given message.  
 The field is a fixed length, gated by the constant &cw(RMR_MAX_XID) and if string length is larger
 than this value, then &bold(nothing) will be copied. (Note, this differs slightly from the
-behaviour of the &cw( lrmr_bytes2xact() ) function.)
+behaviour of the &cw(lrmr_bytes2xact()) function.)
 
 &beg_dlist(.75i : ^&bold_font )
 &h2(RETURN VALUE)
index d922fc9..17ae572 100644 (file)
@@ -37,6 +37,7 @@
 .hn off
 
 
+.dv esc : .** rst needs an escape for some things
 
 .**  these macros are common for prfm/tfm, markdown will override some
 .dv indent .ll -.5i .in +.25i
index eef25de..4c00d23 100644 (file)
@@ -50,6 +50,8 @@
 .dv center_start .br ^^.ce 999
 .dv center_end .br ^.ce 0
 
+.dv esc : .** rst needs an escape for some things
+
 .dv line_len ^^.ll $1
 .dv space .br ^^.sp 1 .br
 .dv half_space .br ^^.sp 1 .br
index ebbbefe..e2444b1 100644 (file)
@@ -62,6 +62,7 @@
 
        .in 0i                                          .** bloody rst is indention sensitive like markdown; sheesh
 
+       .dv esc \ : .** bloody need to escape _ and * at the end of a word
        .dv line_len .ll $1
        .dv space .sp 1 
        .dv half_space .sp 1
index 7e49946..4c64278 100644 (file)
@@ -37,7 +37,6 @@
 docs = config-deploy developer-guide user-guide rel-notes overview
 
 all:: $(docs:%=%.rst) $(docs:%=%.txt) $(docs:%=%.md) 
-       echo ">>> rm rel-notes.xfm"
 
 rel-notes.xfm:
        ksh fmt_changes.ksh >rel-notes.xfm
index b6f4acd..c7dd309 100644 (file)
@@ -15,3 +15,11 @@ single make.  While it is possible to convert X to Y, a true document
 composition language is far better at geneating readable Postscript
 output with embedded figures as well as text and tables. 
 
+CAUTION:
+The RST syntax is as bad as python when it comes to dealing with
+spaces.  For example &bold( foo ) will insert spaces after the initial
+bold trigger, and before the trailing bold trigger which will throw
+the tox validation into a tizzy.  Further,  something like 'void *' 
+and 'rmr_ '  does as well.  If needed, use the defined escape macro
+to add an escape in such situations; it should only generate for RST
+and not impact other output formats.
index 3cf3bb8..ebde32a 100644 (file)
@@ -78,7 +78,7 @@ module (e.g. rmr_nng.c) will directly include other RMR modules, rather than
 depending on referencing the internal functions during linking.
 While this is an infrequently used approach, it does mean that there are very 
 few functions visible for the user application to reference, all of them having 
-the prefix &cw(rmr_,) while allowing internal functions to have shorter names
+the prefix &cw(rmr&{esc}_,) while allowing internal functions to have shorter names
 while still being meaningful.
 
 &h2(Coding Style)
index 6599928..bed0d9c 100644 (file)
@@ -57,6 +57,8 @@
 .dv lic2 +
 .dv lic3 -
 
+.dv esc : .** rst needs an escape for some things
+
 .dv line_len .ll $1
 .dv space .sp 1
 .dv mult_space .sp $1
diff --git a/docs/_static/logo.png b/docs/_static/logo.png
new file mode 100644 (file)
index 0000000..e54843d
Binary files /dev/null and b/docs/_static/logo.png differ
index 151a6f4..de2bea7 100644 (file)
@@ -24,7 +24,7 @@ core library should have an excellent working knowledge of C.
 There currently is one set of cross languages bindings 
 supporting Python, and a developer wishing to contribute to 
 the bindings source should be familiar with Python (version 
-3.7+) and with the Ptyhhon *ctypes* library. 
+3.7+) and with the Python *ctypes* library. 
  
 Code Structure 
 -------------------------------------------------------------------------------------------- 
@@ -32,7 +32,7 @@ Code Structure
 RMR is designed to provide an insulation layer between user 
 applications and the actual transport mechanism. Initially 
 RMR was built on top of Nanosmg, and shortly after was ported 
-to NNG (Nanomsg Next Generation). Becuase RMR presents the 
+to NNG (Nanomsg Next Generation). Because RMR presents the 
 same API to the user application regardless of the underlying 
 transport library, the resulting output when compiling RMR is 
 a transport specific library. As an example, librmr_nng.a is 
@@ -51,8 +51,8 @@ common
 nano 
    
   Source which is tightly coupled with the underlying 
-  Nanomsg library. (Nanomsg has been dreprecated, but the 
-  RMR source remains as an example.) 
+  Nanomsg library. (Nanomsg has been deprecated, but the RMR 
+  source remains as an example.) 
  
 nng 
    
@@ -65,16 +65,16 @@ Internal Function Exposure
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  
 The decision to limit as much as practical the exposure of 
-truely interal RMR functions was made, and as a result most 
+truely internal RMR functions was made, and as a result most 
 of the RMR functions carry a static label. In order to 
-modularlise the code as much as possible, this means that the 
-primary module (e.g. rmr_nng.c) will driectly include other 
-RMR modules, rather than depending on referencing the interal 
-functions during linking. While this is an infrequenly used 
-approach, it does mean that there are very few functions 
-visible for the user application to reference, all of them 
-having the prefix rmr_, while allowing internal functions to 
-have shorter names while still being meaningful. 
+modularise the code as much as possible, this means that the 
+primary module (e.g. rmr_nng.c) will directly include other 
+RMR modules, rather than depending on referencing the 
+internal functions during linking. While this is an 
+infrequently used approach, it does mean that there are very 
+few functions visible for the user application to reference, 
+all of them having the prefix rmr\_, while allowing internal 
+functions to have shorter names while still being meaningful. 
  
 Coding Style 
 -------------------------------------------------------------------------------------------- 
@@ -83,7 +83,7 @@ There is a list of coding style guidelines in the top level
 directory, and as such they are not expanded upon here. The 
 general practice is to follow the style when editing an 
 existing module, respect the author's choice where style 
-alternatves are not frowned upon. When creating new modules, 
+alternatives are not frowned upon. When creating new modules, 
 select a style that fits the guidelines and is easy for you 
 to work with. There are a few things that are insisted on by 
 the maintainers of RMR, but for the most part style is up to 
index c9289fb..361e011 100644 (file)
@@ -3,6 +3,8 @@
 
 
 .. who in bloody hell knows what format this should be; guessing!
+.. it does seem though that every .rst file in the directory must be listed here
+.. or tox will complain and fail.
 
 
 RIC Message Router -- RMR
@@ -15,6 +17,7 @@ RIC Message Router -- RMR
 
    overview.rst
    config-deploy.rst
+   user-guide.rst
    developer-guide.rst
    rel-notes.rst
 
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
deleted file mode 100644 (file)
index 67c3e88..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. SPDX-License-Identifier: CC-BY-4.0
-
-RIC Dashboard Release Notes
-===========================
-
-Version 1.3.0, 4 Nov 2019
--------------------------
-* Revise e2-mgr-client to use API spec in new submodule ric-plt/e2mgr;
-  removed cached copy
-* Silence many Sonar complaints
-* Revise license statements in documentation files
-* Revise stats screen to drop mock load, pendulum, reporting items
-
-Version 1.2.4, 24 Oct 2019
---------------------------
-* This version is used for the AT&T/Nokia co-create PIZ trials Nov 2019.
-* Revise a1-med-client to use API spec in new submodule ric-plt/a1;
-  removed cached copy
-* Revise app manager client to use API spec in new submodule ric-plt/appmgr;
-  removed cached copy
-* Add Platform page showing Kubernetes pods in aux and platform obtained from CAAS-Ingress
-* Update Angular libraries to recent stable versions
-* Revise user controller to answer data sent by portal, drop the mock implementation
-* Set global style for page titles
-* Align page titles to top left,decrease font size
-* Update EPSDK-FW to version 2.6
-* Make constructor robust to missing caasingress.insecure property
-* Repair bug that omitted slashes in CAAS-Ingress URL builder
-* Improve the dark mode
-* Show container ready count with total count
-
-Version 1.2.3, 4 Oct 2019
--------------------------
-* Serve unauthenticated user a login-at-portal page without using redirect
-* Upgrade to Spring-Boot 2.1.9.RELEASE
-
-Version 1.2.2, 27 Sep 2019
---------------------------
-* Support Portal security using EPSDK-FW cookie and user management
-
-Version 1.2.1, 20 Sep 2019
---------------------------
-* Repair E2 URLs in front end like endc-setup/endcSetup
-* Extend ANR mock feature to persist edits for demos
-* Block whitespace in E2 IP input field validation
-* Relax validation in E2 RAN name field validation
-* Make RAN connection table robust to missing fields
-* Install curl when building Docker image
-
-Version 1.2.0, 11 Sep 2019
---------------------------
-* Split URL properties into prefix/suffix parts
-* Add jacoco plugin to back-end for code coverage
-* Compile with Java version 11, use base openjdk:11-jre-slim
-* Clean code of issues reported by Sonar
-* Drop mock RAN names feature that supported R1 testing
-* Extend mock endpoints to simulate delay seen in tests
-* Move mock configuration classes into test area
-* Update App manager client to spec version 0.1.7
-* Add controller for page refresh of Angular routes
-* Extend E2 mock configuration for demo purposes
-* Add pattern for matching AC/admin application name
-* Add custom (plain but not white-label) error page
-* Synch A1 method paths in front-end and back-end
-* Add xapp dynamic configuration feature
-* Disable x-frame-options response header
-* Repair app manager undeploy-app back/front methods
-* Display AC xAPP metrics data via Kibana source (metrics.url.ac) on dashboard
-* Pass AC policy parameter without parsing as JSON
-* Use snake_case (not camelCase) names in AC policy front end
-* Update A1 mediator client to spec version 0.10.3
-* Extend AC control screen to read policy from A1
-* Create loading-dialog component and service
-* Showing the loading-dialog while making API call
-* Add notification and error handling for xapp configuration
-* Update E2 manager client to spec version 2.0.5 of 2019-09-11
-* Display MC xAPP metrics data via Kibana source (metrics.url.mc) on dashboard
-
-Version 1.0.5, 5 July 2019
---------------------------
-* Upgrade to Angular version 8
-* Upgrade to Spring-Boot 2.1.6.RELEASE
-* Align AC xApp policy page title
-* Update E2 manager client to spec version 20190703
-* Add configuration-driven mock of E2 getNodebIdList
-* Revise front-end components to use prefix 'rd'
-* Improve error handling in BE and FE code
-* Revise the notification service to display multiple notifications
-* Add JUnit test cases for controller methods
-
-Version 1.0.4, 27 June 2019
----------------------------
-* Add AC xApp neighbor control screen
-* Add ANR xApp neighbor cell relation table
-* Drop the pendulum xApp control screen
-* Add column sorting on xApp catalog, xApp control, ANR
-* Add disconnect-all button to RAN connection screen
-* Extend E2 service with disconnect-all method
-* Update ANR xApp client to spec version 0.0.8
-* Update E2 manager client to spec version 20190620
-* Adjust CSS and HTML for main container positioning
-* Revise config property keys to use URL (not basepath)
-* Left menu overlap main content fix
-* Extend back-end controllers to return error details
-* Add feature resilient to malformed instance data
-* Extend Xapp Controller with config endpoints
-* Add build number to dashboard version string
-* Move mock admin screen user data to backend
-* Update App manager client to spec version 0.1.5
-* Move RAN connection feature to control screen
-* Rework admin table
-* Update the notification service
-* Move RAN connection feature to control screen
-* Repair deploy-app feature and use icon instead of text button
-
-Version 1.0.3, 28 May 2019
---------------------------
-* Add AC xApp controller to backend
-* Add AC xApp interface to frontend
-* Add RAN type radio selector to connection setup
-* Update ANR xApp client to spec version 0.0.7
-* Update E2 manager client to spec version 20190515
-* Update xApp manager client to spec version 0.1.4
-* Add get-version methods to all controllers
-* Add simple page footer with copyright and version
-* Add AC and ANR xApp services
-* Rename signal service to E2 Manager service
-* Use XappMgrService to replace ControlService and CatalogService
-* Apply mat-table to control and catalog
-* RAN Connection screen upgrade to mat-table
-
-Version 1.0.2, 13 May 2019
---------------------------
-* Update A1 mediator client to version 0.4.0
-* Add E2 response message with timestamp and status code
-* Fetch xAPP instance status information from xAPP Manager and display in dashboard
-* Allow the user to initiate an E2 (X2) connection between RIC and gNB/eNB
-* User input validations on connections between RIC and eNB/gNB in the dashboard
-* Add ANR xApp backend with mock implementation
-* Add undeploy xApp function
-* Add shared confirm dialog
-* Add shared notification
-
-Version 1.0.1, 6 May 2019
--------------------------
-* Add draft A1 Mediator API definition
-* Use E2 Manager API definition dated 2 May 2019, with tag modifications
-* Adjust group IDs and packages for name O-RAN-SC; drop ORAN-OSC
-* Add ANR API spec and client code generator
-* Update xApp Manager API spec to version 0.1.2
-
-Version 1.0.0, 30 Apr 2019
---------------------------
-* Initial version
index b13234a..6fc6e20 100644 (file)
@@ -14,9 +14,9 @@ use to send and receive messages where the message routing,
 endpoint selection, is based on the message type rather than 
 on traditional DNS names or IP addresses. Because the user 
 documentation for RMR is a collection of UNIX manpages 
-(included in the development package, and avalable via the 
+(included in the development package, and available via the 
 man command when installed), there is no separate "User's 
-Guide." To prvide something for the document scrapers to 
+Guide." To provide something for the document scrapers to 
 find, this is a collection of the RMR manual pages formatted 
 directly from their source which might be a bit ragged when 
 combined into a single markup document. Read the manual pages 
@@ -275,11 +275,11 @@ DESCRIPTION
  
 This is a convenience function as some wrapper languages 
 might not have the ability to directly copy into the payload 
-buffer. The bytes from * src * for the length given are 
-copied to the payload. It is the caller's responsibility to 
-ensure that the payload is large enough. Upon successfully 
-copy, the len field in the message buffer is updated to 
-reflect the number of bytes copied. 
+buffer. The bytes from *src* for the length given are copied 
+to the payload. It is the caller's responsibility to ensure 
+that the payload is large enough. Upon successfully copy, the 
+len field in the message buffer is updated to reflect the 
+number of bytes copied. 
  
 There is little error checking, and no error reporting. 
  
@@ -691,18 +691,18 @@ DESCRIPTION
  
 The rmr_get_meid function will copy the managed equipment ID 
 (meid) field from the message into the *dest* buffer provided 
-by the user. The buffer referenced by * dest * is assumed to 
-be at least RMR_MAX_MEID bytes in length. If * dest * is 
-NULL, then a buffer is allocated (the calling application is 
+by the user. The buffer referenced by *dest* is assumed to be 
+at least RMR_MAX_MEID bytes in length. If *dest* is NULL, 
+then a buffer is allocated (the calling application is 
 expected to free when the buffer is no longer needed). 
  
 RETURN VALUE 
 -------------------------------------------------------------------------------------------- 
  
 On success, a pointer to the extracted string is returned. If 
-* dest * was supplied, then this is just a pointer to the 
-caller's buffer. If * dest * was NULL, this is a pointer to 
-the allocated buffer. If an error occurs, a nil pointer is 
+*dest* was supplied, then this is just a pointer to the 
+caller's buffer. If *dest* was NULL, this is a pointer to the 
+allocated buffer. If an error occurs, a nil pointer is 
 returned and errno is set as described below. 
  
 ERRORS 
@@ -722,7 +722,7 @@ EINVAL
  
 ENOMEM 
    
-  A nil pointer was passed for * dest, * however it was not 
+  A nil pointer was passed for *dest,* however it was not 
   possible to allocate a buffer using malloc(). 
  
  
@@ -1107,18 +1107,18 @@ DESCRIPTION
  
 The rmr_get_xact function will copy the transaction field 
 from the message into the *dest* buffer provided by the user. 
-The buffer referenced by * dest * is assumed to be at least 
-RMR_MAX_XID bytes in length. If * dest * is NULL, then a 
-buffer is allocated (the calling application is expected to 
-free when the buffer is no longer needed). 
+The buffer referenced by *dest* is assumed to be at least 
+RMR_MAX_XID bytes in length. If *dest* is NULL, then a buffer 
+is allocated (the calling application is expected to free 
+when the buffer is no longer needed). 
  
 RETURN VALUE 
 -------------------------------------------------------------------------------------------- 
  
 On success, a pointer to the extracted string is returned. If 
-* dest * was supplied, then this is just a pointer to the 
-caller's buffer. If * dest * was NULL, this is a pointer to 
-the allocated buffer. If an error occurs, a nil pointer is 
+*dest* was supplied, then this is just a pointer to the 
+caller's buffer. If *dest* was NULL, this is a pointer to the 
+allocated buffer. If an error occurs, a nil pointer is 
 returned and errno is set as described below. 
  
 ERRORS 
@@ -1138,7 +1138,7 @@ EINVAL
  
 ENOMEM 
    
-  A nil pointer was passed for * dest, * however it was not 
+  A nil pointer was passed for *dest,* however it was not 
   possible to allocate a buffer using malloc(). 
  
  
@@ -1186,7 +1186,7 @@ allocated, possibly, prior to the application knowing the
 actual size of a specific message. 
  
 *Flags* allows for selection of some RMr options at the time 
-of initialisation. These are set by ORing RMRFL_ constants 
+of initialisation. These are set by ORing RMRFL constants 
 from the RMr header file. Currently the following flags are 
 supported: 
  
@@ -1220,8 +1220,8 @@ based and not time unit based. Multi-threaded call support
 adds the ability for a user application with multiple threads 
 to invoke a blocking call function with the guarentee that 
 the correct response message is delivered to the thread. The 
-additional support is implemented with the * rmr_mt_call() 
-and * rmr_mt_rcv() * function calls. 
+additional support is implemented with the *rmr_mt_call()
+and *rmr_mt_rcv()* function calls. 
  
 Multi-threaded call support requires the user application to 
 specifically enable it when RMr is initialised. This is 
@@ -1351,8 +1351,8 @@ RETURN VALUE
 -------------------------------------------------------------------------------------------- 
  
 A value of 1 is returned on success, and 0 on failure. A 
-failure indicates that the RMr context (void *) passed to 
-this function was not valid. 
+failure indicates that the RMr context (a void pointer passed 
+to this function was not valid. 
  
 SEE ALSO 
 -------------------------------------------------------------------------------------------- 
@@ -1390,23 +1390,23 @@ message before returning control to the user application. The
 user application supplies a completed message buffer, as it 
 would for a rmr_send_msg call, but unlike with a send, the 
 buffer returned will have the response from the application 
-that received the message. The thread invoking the 
-rmr_mt_call()* will block until a message arrives or until 
+that received the message. The thread invoking the 
+*rmr_mt_call()* will block until a message arrives or until 
 *timeout* milliseconds has passed; which ever comes first. 
 Using a timeout value of zero (0) will cause the thread to 
 block without a timeout. 
  
-The * id * supplied as the third parameter is an integer in 
-the range of 2 through 255 inclusive. This is a caller 
-defined "thread number" and is used to match the respons
-message with the correct user application thread. If the ID 
-value is not in the proper range, the attempt to make the 
-call will fail. 
+The *id* supplied as the third parameter is an integer in the 
+range of 2 through 255 inclusive. This is a caller defined 
+"thread number" and is used to match the response messag
+with the correct user application thread. If the ID value is 
+not in the proper range, the attempt to make the call will 
+fail. 
  
 Messages which are received while waiting for the response 
 are queued on a *normal* receive queue and will be delivered 
-to the user application with the next invocation of 
-rmr_mt_rcv() * or * rmr_rvv_msg().* by RMR, and are returned 
+to the user application with the next invocation of 
+*rmr_mt_rcv()* or *rmr_rvv_msg().* by RMR, and are returned 
 to the user application when rmr_rcv_msg is invoked. These 
 messages are returned in th order received, one per call to 
 rmr_rcv_msg. 
@@ -1428,7 +1428,7 @@ that they are set correctly to avoid missing the response
 message. (The application which returns the response message 
 is also expected to ensure that the return buffer has the 
 matching transaction ID. This can be done transparently if 
-the application uses the * rmr_rts_msg() * function and does 
+the application uses the *rmr_rts_msg()* function and does 
 not adjust the transaction ID. 
  
 Retries 
@@ -1722,7 +1722,7 @@ RMR_ERR_EMPTY
 RMR_ERR_NOTSUPP 
    
   The multi-threaded option was not enabled when RMr was 
-  initialised. See the man page for *rmr_init() * for 
+  initialised. See the man page for *rmr_init()* for 
   details. 
    
  
@@ -2467,8 +2467,8 @@ state and should be RMR_OK.
  
 When the message cannot be successfully sent this function 
 will return the unsent (original) message buffer with the 
-state set to indicate the reason for failure. The value of 
-errno * may also be set to reflect a more detailed failure 
+state set to indicate the reason for failure. The value of 
+*errno* may also be set to reflect a more detailed failure 
 reason if it is known. 
  
 In the event of extreme failure, a NULL pointer is returned. 
@@ -2651,44 +2651,44 @@ DESCRIPTION
  
 The rmr_set_stimeout function sets the configuration for how 
 RMr will retry message send operations which complete with 
-either a * timeout * or * again * completion value. (Send 
+either a *timeout* or *again* completion value. (Send 
 operations include all of the possible message send 
-functions: * rmr_send_msg(), rmr_call(), rmr_rts_msg() * and 
-* rmr_wh_send_msg(). * The * rloops * parameter sets the 
-maximum number of retry loops that will be attempted before 
-giving up and returning the unsuccessful state to the user 
-application. Each retry loop is approximately 1000 attempts, 
-and RMr does ** not ** invoke any sleep function between 
-retries in the loop; a small, 1 mu-sec, sleep is executed 
-between loop sets if the * rloops * value is greater than 1. 
+functions: *rmr_send_msg(), rmr_call(), rmr_rts_msg()* and 
+*rmr_wh_send_msg().* The *rloops* parameter sets the maximum 
+number of retry loops that will be attempted before giving up 
+and returning the unsuccessful state to the user application. 
+Each retry loop is approximately 1000 attempts, and RMr does 
+**not** invoke any sleep function between retries in the 
+loop; a small, 1 mu-sec, sleep is executed between loop sets 
+if the *rloops* value is greater than 1. 
  
  
 Disabling Retries 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  
-By default, the send operations will execute with an * rloop 
-* setting of 1; each send operation will attempt to resend 
-the message approximately 1000 times before giving up. If the 
+By default, the send operations will execute with an *rloop* 
+setting of 1; each send operation will attempt to resend the 
+message approximately 1000 times before giving up. If the 
 user application does not want to have send operations retry 
-when the underlying transport mechanism indicates * timeout 
-or * again, * the application should invoke this function and 
-pass a value of 0 (zero) for * rloops. * With this setting, 
-all RMr send operations will attempt a send operation only ** 
-once, ** returning immediately to the caller with the state 
+when the underlying transport mechanism indicates *timeout
+or *again,* the application should invoke this function and 
+pass a value of 0 (zero) for *rloops.* With this setting, all 
+RMr send operations will attempt a send operation only 
+**once,** returning immediately to the caller with the state 
 of that single attempt. 
  
 RETURN VALUE 
 -------------------------------------------------------------------------------------------- 
  
-This function returns a -1 to indicate that the * rloops 
-value could not be set, and the value * RMR_OK * to indicate 
+This function returns a -1 to indicate that the *rloops
+value could not be set, and the value *RMR_OK* to indicate 
 success. 
  
 ERRORS 
 -------------------------------------------------------------------------------------------- 
  
-Currently errno is ** not ** set by this function; the only 
-cause of a failure is an invalid context (* vctx *) pointer. 
+Currently errno is **not** set by this function; the only 
+cause of a failure is an invalid context (*vctx*) pointer. 
  
 EXAMPLE 
 -------------------------------------------------------------------------------------------- 
diff --git a/tox.ini b/tox.ini
new file mode 100644 (file)
index 0000000..e8cc560
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,54 @@
+# vim: ts=4 expandtab sw=4:
+#==================================================================================
+#    Copyright (c) 2019 Nokia
+#    Copyright (c) 2018-2019 AT&T Intellectual Property.
+#
+#   Licensed 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.
+#==================================================================================
+
+# This is needed only to support the RTD scraper(s)
+#
+# CAUTION: requires python/tox and maybe others to be installed in the dev environment
+# to test with:
+#        tox -e docs
+#
+[tox]
+minversion = 2.0
+envlist =
+    docs,
+    docs-linkcheck,
+skipsdist = true
+
+[testenv:docs]
+basepython = python3
+deps =
+    sphinx
+    sphinx-rtd-theme
+    sphinxcontrib-httpdomain
+    recommonmark
+    lfdocs-conf
+  
+commands =
+    sphinx-build -W -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html
+    echo "Generated docs available in {toxinidir}/docs/_build/html"
+whitelist_externals = echo
+
+[testenv:docs-linkcheck]
+basepython = python3
+deps = sphinx
+       sphinx-rtd-theme
+       sphinxcontrib-httpdomain
+       recommonmark
+       lfdocs-conf
+commands = sphinx-build -W -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck
+