tools/stx/toCOPY/lat-tool
Zhixiong Chi 18b8fc0701 stx tool: Create initial Dockerfile of LAT(Linux Assembly Tool) container
Create the initial Dockerfile of STX LAT tool container.
Now LAT source code has been open sourced, but it didn't include
the binary. Once the binary is open sourced, we will replace the
${LAT_BINARY_RESOURCE_PATH} in the stx-lat-tool.dockerfile file.

Story: 2008846
Task: 43292

Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
Change-Id: Ibfcc05855b56bedb91392d5958c105ca005f2146
2021-09-25 21:37:10 -04:00
..
lat stx tool: Create initial Dockerfile of LAT(Linux Assembly Tool) container 2021-09-25 21:37:10 -04:00
README stx tool: Create initial Dockerfile of LAT(Linux Assembly Tool) container 2021-09-25 21:37:10 -04:00

# Copyright (c) 2021 Wind River Systems, Inc.
#
# 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.

latd
---

This is a daemon expected to run inside the LAT container as the entry point.
It accepts requests from clients and issue correspoing commands to generate the image.

Functionalities:
* Accept request to give client an example yaml file to start with
  latc getyaml
* Accept build request to build image, with a yaml file supplied.
  latc build --file stx.yaml
* Accept request to stop the previous build
  latc stop
* Accept request to clean things up, including all build results
  latc clean
* Accept status query request, return meaningful contents
  latc status
  e.g.
  lat_status: idle/busy
  latest_build_status: running/succeed/fail/not-started
* Accept logs requrest, return log information about the latest build
  latc logs

latc(builder container client)
---

A dummy implementation to only show how to make use of volume.py to communicate with latd.
e.g.
latc status/stop/clean/logs/build

volume communication implementation
---

* channel/c-2-s.msg

  Client to server message. Convey info about what to do.

  action: build/status/stop/logs/clean/getyaml
  yaml_file: /mnt/workspace/stx.yaml

* channel/c-2-s.done

  A file to watch, when it appears, latd read c-2-s.msg and act accordingly.

* channel/s-2-c.msg

  Server to client message. Same format as c-2-s.msg

* channel/s-2-c.done

  A file to watch, when it appears, latc reads s-2-c.msg and act accordingly.

* channel/invalid_message

  A file which, if exists, indicates the an invalid client request.

* channel/status.lat

  File containing LAT container status.

* log/log.appsdk

  Hold information about the appsdk debug output.

* client_message_history

  Hold message history from client.

* hack/lat-genimage-cmd

  A hack file, which replace the 'appsdk genimage ...' command with the contents inside it.
  e.g.
  echo "sleep 10" > hack/lat-genimage-cmd

  This is ONLY for debugging purpose. This mechanism should be removed in formal release.

* latd workflow

  Watch c-2-s.done, when it appears, read c-2-s.msg, delete c-2-s.done file.
  Fork a subprocess to do the actual work if needed, record its PID; otherwise, perform some action. Send result to client.
  Note that the result only means whether the client request is handled by latd or not.


Assumption
---

* At any time, at most one build is run inside LAT container.