hbai 05b20b7b54 LAT: Modified the build directory to support different build types
After this modifications, the yaml files and build output
are placed into the independent folders:
for 'std':
/localdisk/lat/std
for 'rt':
/localdisk/lat/rt

Story: 2008846
Task: 45092

Test Plan:
Pass: build-image --std
      The created std image is under '/localdisk/lat/std/deploy/'
      The log is under '/localdisk/lat/std/log/'
Pass: build-image --rt
      The created rt image is under '/localdisk/lat/rt/deploy/'
      The log is under '/localdisk/lat/rt/log/'

Signed-off-by: hbai <haiqing.bai@windriver.com>
Change-Id: I0405f1d7d9bd55bfc6dfc1049060db98aa30799c
2022-04-28 14:32:44 +08: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.