Skip to content

Commit

Permalink
completed ioc_changes1
Browse files Browse the repository at this point in the history
  • Loading branch information
gilesknap committed Feb 17, 2024
1 parent 7c58892 commit 4b9e185
Showing 1 changed file with 19 additions and 26 deletions.
45 changes: 19 additions & 26 deletions docs/tutorials/ioc_changes1.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,12 @@ and deployed the IOC instance in a previous tutorial without one. It is up to
you how you choose to make these types of changes. Types 2,3 do require a
devcontainer because they involve compiling Generic IOC / support module code.

We are going to add a hand crafted EPICS DB file to the IOC instance. This will
be a simple record that we will be able to query to verify that the change
is working.
These instructions are for running inside the devcontainer. If you closed your developer container from the last tutorial, then open it again now. To do open your `bl01t` folder in vscode and then press `Ctrl-Shift-P` and type `Remote-Containers: Reopen in Container`.

We are going to add a hand crafted EPICS DB file to the IOC instance. This will be a simple record that we will be able to query to verify that the change is working. We will use the version of the IOC instance that used `ioc.yaml`. If you changed to using raw startup assets in the previous tutorial then revert to using `ioc.yaml` for this tutorial or see [](raw-startup-assets).

:::{note}
Before doing this tutorial make sure you have not left the IOC
bl01t-ea-test-02 running from a previous tutorial. Execute this command
outside of the devcontainer to stop it:
Before doing this tutorial make sure you have not left the IOC bl01t-ea-test-02 running from a previous tutorial. Execute this command *outside* of the devcontainer to stop it:

```bash
ec stop bl01t-ea-test-02
Expand Down Expand Up @@ -70,17 +68,10 @@ caget bl01t-ea-test-02:TEST
If you see the value 1 then your change is working.

:::{Note}
You are likely to see
*"Identical process variable names on multiple servers"* warnings. This is
because caget can see the PV on the host network and the container network,
but as these are the same IOC this is not a problem.

You can change this and make your devcontainer network isolated by removing
the line `"--net=host",` from `.devcontainer/devcontainer.json`, but
it is convenient to leave it if you want to run OPI tools locally on the
host. You may want to isolate your development network if multiple
developers are working on the same subnet. In this case some other solution
is required for running OPI tools on the host (TODO add link to solution).
If you are using podman, you are likely to see *"Identical process variable names on multiple servers"* warnings. This is because caget can see the PV on the host network and the container network, but as these are the same IOC this is not a problem.

You can change this and make your devcontainer network isolated by removing the line `"--net=host",` from `.devcontainer/devcontainer.json`, but it is convenient to leave it if you want to run OPI tools locally on the
host. You may want to isolate your development network if multiple developers are working on the same subnet. In this case some other solution is required for running OPI tools on the host (TODO add link to solution - likely to be container networks).
:::

Because of the symlink between `/epics/ioc/config` and
Expand All @@ -101,18 +92,20 @@ git push origin 2023.11.2
ec deploy bl01t-ea-test-02 2023.11.2
```

The above steps were performed on a host terminal because we are using `ec`.
However all of the steps except for the `ec` command could have been done
*inside* the devcontainer starting with `cd /workspaces/bl01t`.
You can now see that the versioned IOC instance is running and loading the extra.db by looking at its log with:

```bash
ec logs bl01t-ea-test-02
```


The above steps were performed on a host terminal because we are using `ec`. However all of the steps except for the `ec` command could have been done *inside* the devcontainer starting with `cd /workspaces/bl01t` which is where your project is mounted *inside* the devcontainer.

We choose not to have `ec` installed inside of the devcontainer because
that would involve containers in containers which adds too much complexity.
We choose not to have `ec` installed inside of the devcontainer because that would involve containers in containers which adds too much complexity.

If you like working entirely from the vscode window you can open a terminal
in vscode *outside* of the devcontainer. To do so, press `Ctrl-Shift-P` and
choose the commnd `Terminal: Create New Integrated Terminal (Local)`.
This will open a terminal to the host. You can then run `ec` from there.
If you like working entirely from the vscode window you can open a terminal in vscode *outside* of the devcontainer. To do so, press `Ctrl-Shift-P` and choose the commnd `Terminal: Create New Integrated Terminal (Local)`. This will open a terminal to the host. You can then run `ec` from there.

(raw-startup-assets)=
## Raw Startup Assets

If you plan not to use `ibek` runtime asset creation you could use the raw
Expand Down

0 comments on commit 4b9e185

Please sign in to comment.