From 0002934e3076e614b4cd4e024657cc657ab4b57c Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Thu, 26 Oct 2023 15:35:44 +0100 Subject: [PATCH 1/2] started create ioc instance tutorial --- docs/user/tutorials/create_beamline.rst | 6 +- docs/user/tutorials/create_ioc.rst | 77 ++++++++++++++++++++++- docs/user/tutorials/setup_k8s.rst | 2 +- docs/user/tutorials/setup_workstation.rst | 2 +- 4 files changed, 81 insertions(+), 6 deletions(-) diff --git a/docs/user/tutorials/create_beamline.rst b/docs/user/tutorials/create_beamline.rst index fea649b2..366d30cc 100644 --- a/docs/user/tutorials/create_beamline.rst +++ b/docs/user/tutorials/create_beamline.rst @@ -27,8 +27,8 @@ with basic configuration. The tests on beamline repositories are basic at present. However the intention is that eventually each device on a beamline will be simulated using -`Tickit `_ and that the CI so system -tests of each IOC against simulated hardware. +`Tickit `_ . Then Continuous +Integration will perform system tests for each IOC against simulated hardware. Also note that each of these IOC instances will be launched using a Generic IOC image. Ideally the CI for each Generic IOC should have already run @@ -81,7 +81,7 @@ Steps .. _these instructions: https://github.com/epics-containers/blxxi-template#how-to-copy-this-template-project -#. Clone the template repo locally. +#. Clone the template repo locally (substituting in your own GitHub Account). .. code-block:: bash diff --git a/docs/user/tutorials/create_ioc.rst b/docs/user/tutorials/create_ioc.rst index b4f09892..b56b89fe 100644 --- a/docs/user/tutorials/create_ioc.rst +++ b/docs/user/tutorials/create_ioc.rst @@ -8,7 +8,82 @@ The last section covered deploying and managing the example Instance that came with the template beamline repository. Here we will create a new IOC Instance that implements a simulated detector. -TODO - complete this. +Create a New IOC Instance +------------------------- + +To create a new IOC Instance simply add a new folder to the ``iocs`` folder +in your beamline repo. The name of the folder will be the name of the IOC. +This folder needs to contain these two items: + +:values.yaml: a file that specifies which Generic IOC Image your IOC Instance + will run inside of. + +:config: a folder that contains the IOC configuration files. The configuration + can take a number of forms, and these were listed inside of the example + IOC from the previous Tutorial. + `Click this link to review the options `_ + + We will start by creating the values.yaml file: + +.. code-block:: bash + + cd bl01t + mkdir iocs/bl01t-ea-ioc-02 + code values.yaml + +This should launch vscode and open the values.yaml file. Add the following: + +.. code-block:: yaml + + image: ghcr.io/epics-containers/ioc-adsimdetector-linux-runtime:2023.10.5 + +This tells the IOC Instance to run in the ``ioc-adsimdetector-linux-runtime`` +container. This container was built by the Generic IOC source repo here +https://github.com/epics-containers/ioc-adsimdetector. The container has +support for AreaDetector and ADSimDetector compiled into its IOC binary. + +Generic IOCs have compiled IOC binaries and `dbd` files but no startup script or +EPICS database files. These are baked into the container at container build +time. + +Startup and Database are provided by the IOC Instance at container run time. +This is what makes a unique IOC Instance from a Generic IOC container. + +Therefore we need to create a startup and EPICS Database to make this into +a functional IOC Instance. To do that we will use the ``ibek`` tool. To +recap, we have two python CLI tools for supporting epics-containers: + +:ibek: runs *inside* the Generic IOC containers and provides commands for: + - Fetching and compiling support modules at build time + - Other build time utilities such as creating and compiling IOC source and + extracting runtime assets for the runtime container target. + - Generating startup scripts and EPICS databases at container runtime + from IOC yaml files + +:ec: provides developer support *outside* of the container such as: + - Deploying, managing and debugging IOC Instances + - Building and debugging Generic IOC containers + +``ibek`` is already installed inside of the Generic IOC container we selected +above. So now we will provide some IOC yaml files to ``ibek`` so that it +will generate startup assets for our IOC Instance. + +Create IOC YAML Files +--------------------- + +IOC yaml files are a sequence of ``entities``. Each entity is a dictionary + +TODO continue: show how Support YAML works and show how IOCs publish schema etc. + + + + + + + + + + .. figure:: ../images/c2dv.png diff --git a/docs/user/tutorials/setup_k8s.rst b/docs/user/tutorials/setup_k8s.rst index b6794945..abe61cc3 100644 --- a/docs/user/tutorials/setup_k8s.rst +++ b/docs/user/tutorials/setup_k8s.rst @@ -4,7 +4,7 @@ Setup a Kubernetes Server ========================= -.. Warning :: +.. Warning:: This information is out of date. It will be updated soon. diff --git a/docs/user/tutorials/setup_workstation.rst b/docs/user/tutorials/setup_workstation.rst index 75c17b78..15b9a47a 100644 --- a/docs/user/tutorials/setup_workstation.rst +++ b/docs/user/tutorials/setup_workstation.rst @@ -173,7 +173,7 @@ will deploy containers to the local workstation's docker or podman instance. However, everything in these tutorials would also work with Kubernetes. If you are particularly interested in Kubernetes then you can jump to -`setup_kubernetes` and follow the instructions there. Then '{{(index (index .NetworkSettings.Ports "8787/tcp") 0).HostPort}}'come back to this +`setup_kubernetes` and follow the instructions there. Then come back to this point and continue with the tutorials. If you are planning not to use Kubernetes at all then now might be From 0a503c84822dfb1be02baff4ce6e4fff42e6b6de Mon Sep 17 00:00:00 2001 From: Giles Knap Date: Fri, 27 Oct 2023 10:57:55 +0100 Subject: [PATCH 2/2] completed create an ioc instance --- docs/user/how-to/phoebus.rst | 12 + docs/user/images/c2dv.png | Bin 84116 -> 33178 bytes docs/user/index.rst | 1 + docs/user/tutorials/create_beamline.rst | 4 +- docs/user/tutorials/create_ioc.rst | 345 ++++++++++++++++++++++-- 5 files changed, 332 insertions(+), 30 deletions(-) create mode 100644 docs/user/how-to/phoebus.rst diff --git a/docs/user/how-to/phoebus.rst b/docs/user/how-to/phoebus.rst new file mode 100644 index 00000000..eb2e7a32 --- /dev/null +++ b/docs/user/how-to/phoebus.rst @@ -0,0 +1,12 @@ +Viewing Operator Interfaces with Phoebus +======================================== + +Phoebus is a Java application that can be used to view operator interfaces. + +epics-containers will support auto generation of engineering screens for +Phoebus using `PVI `_. +This is the initial target for epics-containers GUIs, other OPI +formats may be supported in the future. + +OPI file generation is work in progress and this page will be updated when +it is ready (est Nov 2023). \ No newline at end of file diff --git a/docs/user/images/c2dv.png b/docs/user/images/c2dv.png index 6200f27ea642125dc1297fcbb54d0e0c84cc79ab..b26e14a191f2d3216d06c8977059f78b7c211a2e 100644 GIT binary patch literal 33178 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 A^8f$< literal 84116 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 Q>hkfGF0-cPIEQTbJ76(Kj{pDw diff --git a/docs/user/index.rst b/docs/user/index.rst index 612e7dcc..b2a501f7 100644 --- a/docs/user/index.rst +++ b/docs/user/index.rst @@ -36,6 +36,7 @@ side-bar. :caption: How-to Guides :maxdepth: 1 + how-to/phoebus how-to/debug how-to/contributing how-to/own_tools diff --git a/docs/user/tutorials/create_beamline.rst b/docs/user/tutorials/create_beamline.rst index 366d30cc..c3aa2837 100644 --- a/docs/user/tutorials/create_beamline.rst +++ b/docs/user/tutorials/create_beamline.rst @@ -174,8 +174,8 @@ Wrapping Up ----------- You should now have a working beamline repository. It contains a single -IOC Instance which is a non-functional example. In the following -tutorial we will investigate the example and then create a real IOC Instance. +IOC Instance which is a non-functional example. In the following two +tutorials we will investigate the example and then create a real IOC Instance. You can now push the repository up to GitHub and give it a version tag like this: diff --git a/docs/user/tutorials/create_ioc.rst b/docs/user/tutorials/create_ioc.rst index b56b89fe..f521bc8e 100644 --- a/docs/user/tutorials/create_ioc.rst +++ b/docs/user/tutorials/create_ioc.rst @@ -1,5 +1,5 @@ -Create a Working Example IOC Instance -===================================== +Create an IOC Instance +====================== Introduction ------------ @@ -8,6 +8,10 @@ The last section covered deploying and managing the example Instance that came with the template beamline repository. Here we will create a new IOC Instance that implements a simulated detector. +For this tutorial some familiarity with the EPICS AreaDetector framework +is useful. Take a look at this documentation if you have not yet come +across AreaDetector: https://areadetector.github.io/master/index.html. + Create a New IOC Instance ------------------------- @@ -15,15 +19,18 @@ To create a new IOC Instance simply add a new folder to the ``iocs`` folder in your beamline repo. The name of the folder will be the name of the IOC. This folder needs to contain these two items: -:values.yaml: a file that specifies which Generic IOC Image your IOC Instance +:values.yaml: + + a file that specifies which Generic IOC Image your IOC Instance will run inside of. -:config: a folder that contains the IOC configuration files. The configuration - can take a number of forms, and these were listed inside of the example - IOC from the previous Tutorial. - `Click this link to review the options `_ +:config: + + a folder that contains the IOC configuration files. The configuration + can take a number of forms + `listed here `_. - We will start by creating the values.yaml file: +We will start by creating the values.yaml file: .. code-block:: bash @@ -35,56 +42,338 @@ This should launch vscode and open the values.yaml file. Add the following: .. code-block:: yaml - image: ghcr.io/epics-containers/ioc-adsimdetector-linux-runtime:2023.10.5 + image: ghcr.io/epics-containers/ioc-adsimdetector-linux-runtime:2023.10.6b1 This tells the IOC Instance to run in the ``ioc-adsimdetector-linux-runtime`` container. This container was built by the Generic IOC source repo here https://github.com/epics-containers/ioc-adsimdetector. The container has support for AreaDetector and ADSimDetector compiled into its IOC binary. -Generic IOCs have compiled IOC binaries and `dbd` files but no startup script or -EPICS database files. These are baked into the container at container build -time. +Generic IOCs have compiled IOC binaries and ``dbd`` files but no startup script or +EPICS database. The compiled IOC binary, ``dbds`` and support ``lib`` files +are baked into the container at container build time. This means that the +code for making IOCs for a given class of device need only be compiled once +and can be reused for many IOC Instances. -Startup and Database are provided by the IOC Instance at container run time. +A startup script and EPICS Database are provided by the IOC Instance at +container run time. This is what makes a unique IOC Instance from a Generic IOC container. -Therefore we need to create a startup and EPICS Database to make this into -a functional IOC Instance. To do that we will use the ``ibek`` tool. To -recap, we have two python CLI tools for supporting epics-containers: +Therefore we need to create an EPICS startup script and EPICS Database to make +this into a functional IOC Instance. To do that we will use ``ibek``. +To recap, we have two python CLI tools for supporting ``epics-containers``: -:ibek: runs *inside* the Generic IOC containers and provides commands for: - - Fetching and compiling support modules at build time +:ibek: runs *inside* Generic IOC containers and provides commands for: + + - Generating startup scripts and EPICS databases at container runtime + from *IOC yaml* files. + - Fetching and compiling support modules at build time. - Other build time utilities such as creating and compiling IOC source and extracting runtime assets for the runtime container target. - - Generating startup scripts and EPICS databases at container runtime - from IOC yaml files :ec: provides developer support *outside* of the container such as: - - Deploying, managing and debugging IOC Instances - - Building and debugging Generic IOC containers + + - Deploying, managing and debugging IOC Instances. + - Building and debugging Generic IOC containers. ``ibek`` is already installed inside of the Generic IOC container we selected -above. So now we will provide some IOC yaml files to ``ibek`` so that it +above. So now we will provide some *IOC yaml* files to ``ibek`` so that it will generate startup assets for our IOC Instance. -Create IOC YAML Files ---------------------- +Make an *IOC yaml* File +------------------------- + +*IOC yaml* files are a sequence of ``entities``. Each entity is an instance of +a ``definition`` declared in the *Support yaml* that one of the support +modules provides. ``definitions`` can: + +- add lines of code to the startup script +- add entries to the EPICS Database + +Each ``entity`` listed in the *IOC yaml* file will instantiate an instance of +the support module ``definition`` that it refers to. It will pass a number +of parameters to the ``definition`` that will be used to generate the +startup script entries and EPICS Database entries for that entity. The +``definition`` is responsible for declaring the arguments it expects and +how they are used in the script and DB entries it generates. It supplies +types and descriptions for each of these arguments, plus may supply default +values. + +We will be instantiating a simulation detector from the ``ioc-adsimdetector`` +Generic IOC. The following *Support yaml* for the simulation detector is +baked into the container: + +.. code:: yaml + + # yaml-language-server: $schema=https://github.com/epics-containers/ibek/releases/download/1.1.0/ibek.support.schema.json + + module: ADSimDetector + + defs: + - name: simDetector + description: |- + Creates a simulation detector + + args: + - type: str + name: P + description: Device Prefix + - type: str + name: R + description: Device Suffix + - type: id + name: PORT + description: Port name for the detector + - type: str + name: TIMEOUT + description: Timeout + default: "1" + - type: str + name: ADDR + default: "0" + description: Asyn Port address + - type: int + name: WIDTH + default: 1280 + description: Image Width + - type: int + name: HEIGHT + default: 1024 + description: Image Height + - type: int + name: DATATYPE + description: Datatype + default: 1 + - type: int + name: BUFFERS + description: Maximum number of NDArray buffers to be created for plugin callbacks + default: 50 + - type: int + name: MEMORY + description: + Max memory to allocate, should be maxw*maxh*nbuffer for driver and + all attached plugins + default: 0 + + databases: + - file: $(ADSIMDETECTOR)/db/simDetector.template + args: + P: + R: + PORT: + TIMEOUT: + ADDR: + + pre_init: + - type: text + value: | + # simDetectorConfig(portName, maxSizeX, maxSizeY, dataType, maxBuffers, maxMemory) + simDetectorConfig("{{PORT}}", {{WIDTH}}, {{HEIGHT}}, {{DATATYPE}}, {{BUFFERS}}, {{MEMORY}}) + +You can see that this lists a a number of arguments that it expects. It then +declares how these will be used to substitute values into the simDetector +database template. Finally it declares some lines to go into the startup script +(before iocInit). + +Therefore, we can create an *IOC yaml* file that instantiates a simulation +detector as follows: + +.. code:: yaml + + # yaml-language-server: $schema=https://github.com/epics-containers/ioc-adsimdetector/releases/download/2023.10.6b1/ibek.ioc.schema.json + + ioc_name: bl01t-ea-ioc-02 + description: Example simulated camera for BL01T + + entities: + + - type: ADSimDetector.simDetector + PORT: DET.DET + P: BL01T-EA-TST-01 + R: ":DET:" + +This will create us a simulation detector driver with PV prefix +``BL01T-EA-TST-01:DET:`` that publishes its output on the Asyn port ``DET.DET``. + +Note that the Generic IOC includes all of the support modules that are dependencies +of ``ADSimDetector`` and each of those contributes its own set of definitions in its +own *Support yaml* file. Let us also add an ``AreaDetector`` plugin and wire +it to our simulation detector by adding this to our *IOC yaml* file: + +.. code:: yaml + + - type: ADCore.NDPvaPlugin + PORT: DET.PVA + PVNAME: BL01T-EA-TST-01:PVA:OUTPUT + P: BL01T-EA-TST-01 + R: ":PVA:" + NDARRAY_PORT: DET.DET + +This adds a PVA plugin to the IOC that will publish the output of the simulation +detector over a PVAccess channel called ``BL01T-EA-TST-01:PVA:OUTPUT``. The +*Support yaml* that declared that plugin came from the ADCore module. This is +a dependency of ADSimDetector and so is included in the Generic IOC container. + +Try putting the two snippets of *IOC yaml* together and saving it as +``ioc.yaml`` in the ``iocs/bl01t-ea-ioc-02`` folder. + +You have now defined your first IOC instance. + +Trying Out The IOC Instance +--------------------------- + +Launch the IOC Instance +~~~~~~~~~~~~~~~~~~~~~~~ + +To deploy the IOC Instance execute these commands (the first 3 commands are a +reminder of how to set up your shell - from now on this will be assumed): -IOC yaml files are a sequence of ``entities``. Each entity is a dictionary +.. code-block:: bash -TODO continue: show how Support YAML works and show how IOCs publish schema etc. + # These 3 commands set up your environment if you have not already done so + cd bl01t + source $HOME/ec-venv/bin/activate + source bl01t + # deploy the new IOC from local filesystem + ec ioc deploy-local iocs/bl01t-ea-ioc-02 + # verify that your IOC worked by looking at the logs + ec ioc logs bl01t-ea-ioc-02 +Operator Interface +~~~~~~~~~~~~~~~~~~ +At the time of writing, the generation of operator interfaces is nearly complete +but not yet ready for release. For this tutorial we will interact with the IOC +using ``caput`` / ``caget``. +Once operator interfaces are available the documentation on this topic +will be here `../how-to/phoebus` +Viewing IOC output +~~~~~~~~~~~~~~~~~~ +Our detector output is available over PVAccess since we added the PVA plugin. +We can view it using the ``c2dv`` tool. Theses commands will install ``c2dv`` +and launch it to view the IOC output: +.. code-block:: bash + pip install c2dataviewer + c2dv --pv BL01T-EA-TST-01:PVA:OUTPUT & +Now we can start our simulation detector like this: + +.. code-block:: bash + + ec ioc exec bl01t-ea-ioc-02 + caput BL01T-EA-TST-01:DET:Acquire 1 + +You should see a moving image appear in the ``c2dv`` window. For smoothest +results you may want to hit ``Auto`` in the ``Image and Zoom`` section of the +``c2dv`` window and set ``Requested Frame Rate`` to a high value. + +Notice that we did the ``caput`` inside the IOC container. This is because you +are guaranteed to have ``caput`` there. If you have EPICS +installed on your host machine you could omit entering the container. .. figure:: ../images/c2dv.png - the c2dv viewer showing an image from the example IOC \ No newline at end of file + the c2dv viewer showing an image from the example IOC + +ibek Explanation +---------------- + +Above we looked at some ibek *Support yaml* and created an *IOC yaml* file. +The details of where *Support yaml* files come from and how to create your +own are covered in later tutorials on creating Generic IOCs. + +However, without looking into the set of *Support yaml* files that are +inside a given Generic IOC we can still make a meaningful *IOC yaml* file. +That is because every Generic IOC publishes an *IOC schema* that describes +the set of entities that an instance of that IOC may instantiate. + +The Generic IOC we used was released at this location: +https://github.com/epics-containers/ioc-adsimdetector/releases/tag/2023.10.6b1. +This page includes the assets that are published as part of the release and +one of those is ``ibek.ioc.schema.json``. This is the *IOC schema* for the +``ioc-adsimdetector`` Generic IOC. This is what we referred to at the top of +our *IOC yaml* file like this: + +.. code:: yaml + + # yaml-language-server: $schema=https://github.com/epics-containers/ioc-adsimdetector/releases/download/2023.10.6b1/ibek.ioc.schema.json + +When editing with a YAML aware editor like VSCode this will enable auto +completion and validation of the *IOC yaml* file. To enable this in VSCode +you will need to install the YAML extension from here: +https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml + +Now is a good time to try installing the extension and experimenting with +editing the *IOC yaml* file. + +Using ``ibek`` yaml files to describe IOC instances has the following advantages: + +- there is pre-runtime checking that the IOC Instance is valid +- instance authors are guided by schema +- details of what a support module needs to be instantiated are under the + control of the support module author (at Generic IOC specification time). +- functions with long argument lists are made easier to use because the + instance author supplies named arguments only. + +However, if you already have a framework for generating startup assets or you +prefer hand coding them, this is also supported. + + +Raw Startup Script and Database +------------------------------- + +This section demonstrates how to use your own startup assets. This involves +placing your own ``st.cmd`` and ``ioc.substitutions`` files in the ``config`` +folder. Or alternatively you could override behaviour completely by placing +``start.sh`` in the ``config`` folder, this can contain any script you like. + +To see what ibek generated you can go and look inside the IOC container: + +.. code:: bash + + ec ioc exec bl01t-ea-ioc-02 + ls /opt/epics/ioc/iocBoot/iocbl01t-ea-ioc-02 + cat /tmp/ioc.subst + cat /tmp/st.cmd + +.. note:: + + The startup script and database are generated at container run time, + by ``ibek``. They are generated in the /tmp folder of the container. + This is because this is the only folder that is guaranteed to be + writeable due to container security considerations. + +If you would like to see an IOC Instance that uses a raw startup script and +database then you can copy these two files out of the container and into +your IOC Instance config folder like this (replace podman with +docker if that is what you are using): + +.. code-block:: bash + + podman cp bl01t-ea-ioc-02:/tmp/st.cmd iocs/bl01t-ea-ioc-02/config + podman cp bl01t-ea-ioc-02:/tmp/ioc.subst iocs/bl01t-ea-ioc-02/config/ioc.substitutions + # no longer need an ibek ioc yaml file + rm iocs/bl01t-ea-ioc-02/config/ioc.yaml + # re-deploy from local filesystem + ec ioc deploy-local iocs/bl01t-ea-ioc-02 + +Your IOC Instance will now be using the raw startup script and database. But +should behave exactly the same as before. You are free to experiment with +changes in the startup script and substitution file and re-deploy the IOC. + +.. note:: + + We used some raw podman / docker commands in the above script. If you + want to know what commands ``ec`` is running under the hood then you can + use the ``-v`` option to see them. + + For example try this command: + + - ec -v ioc deploy-local iocs/bl01t-ea-ioc-02 \ No newline at end of file