You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »


For the integration of existing developments into docker/kubernates we use part of the  Diamond flow for a beamline under kubernates.

In particular we have realised our customisation where we put all the normalisable support we have for our INFN's beamlines.

The project is INFN EPICS IOC by cloning it:

cloning the project
git clone https://baltig.infn.it/epics-containers/infn-epics-ioc.git --recurse-submodules


The aim of this project:

  1. create a docker image with the device support needed for INFN beamlines that can be run in container.
  2. standardize and greatly  simplify the way to instantiate iocs via simple yaml file
  3. have a common database (shared among INFN and Diamond)
  4. standardize the build system

The layout of this project is:

Project layout
.
├── Dockerfile   				<-- docker file production
├── LICENSE
├── README.md
├── build
├── ibek-support				<-- submodule with ibek device support
│   ├── ADAravis
│   ├── ADCore
│   ├── ADGenICam
│   ├── ADSimDetector
│   ├── IOCInfo
│   ├── LICENSE
│   ├── README.md
│   ├── StreamDevice
│   ├── _global
│   ├── asyn
│   ├── autosave
│   ├── build_support.sh
│   ├── busy
│   ├── calc
│   ├── easy-driver-epics
│   ├── iocStats
│   ├── lakeshore340
│   ├── make_global_schemas.sh
│   ├── modbus
│   ├── motor
│   ├── motorMotorSim
│   ├── motorNewport
│   ├── opcua
│   ├── pmac
│   ├── pvi-generate.sh
│   ├── quadEM
│   ├── schemas
│   ├── screen-epics-ioc
│   ├── sequencer
│   ├── sscan
│   ├── tests
│   ├── todo
│   └── zebra
├── ioc
│   ├── Makefile
│   ├── configure
│   ├── install.sh
│   ├── iocApp
│   ├── liveness.sh
│   ├── start.sh
│   └── stop.sh
├── menlo
│   ├── install.sh
│   └── menlo.ibek.support.yaml
├── requirements.txt
├── requirements_ec.txt
├── tests
│   ├── example-config
│   ├── example-ibek-config
│   └── run-tests.sh
└── user_examples
    └── README.md



When we have to put an IOC in production we may have the following possibility:

  1. support already present in <ibek-support>
  2. support present as git project
  3. support not present at all → put in the condition 2

Use an existing support

If a support is present, it's very simple to use it just create a yaml that instantiates  your device(s).

An example could be the following:

Newport motor IOC
ioc_name: rfmotors
description: RF motors 

entities:

  - type: motorNewport.SMC100CreateController
    controllerName: NEWPORT001
    P: "SPARC:RF:"
    IP: 192.168.190.56
    TCPPORT: 4001
    numAxes: 1

  
  - type: motorNewport.motorAxis
    controller: NEWPORT001
    M: "m0"
    DESC: "Axis"
    ADDR: 0
    DLLM: -25
    DHLM: 25
    home: 1
    start: 10
    VELO: 1



The project contains .devcontainer to test developments, however I often create a local image:

Docker image creation and run as ioc
docker build --build-arg TARGET_ARCHITECTURE="linux" --build-arg TARGETARCH="amd64" -t baltig.infn.it:4567/epics-containers/infn-epics-ioc:local
cd <project with yaml config >
docker run -p 5064:5064/udp -p 5064:5064/tcp -p 5065:5065/udp -p 5065:5065/tcp -it -v .:/epics/ioc/config baltig.infn.it:4567/epics-containers/infn-epics-ioc:local 


  • No labels