A cluster lifecycle orchestrator for Airship.
Go to file
Bryan Strassner 5a9abc73dd Modify note access methods
While iterating on the next steps of using notes, it became clear that
several changes to the output and access methods for notes needed
enhancements. This change introduces a new way to access a note's URL
information via a new API/CLI, while removing the resolution of URLs
from the existing note output. This supports the concept of "builddata"
coming back with sizes of 800kb or more - which really can never work
out inline in other data, especially in cases where there is
multiplicity of the information across many items.

New API: GET /notedetails/{id}
CLI: shipyard get notedetails/{id} and/or shipyard get notedetails {id}
Returns the resolution of the URL for a note, outputting the raw info as
the response (not structured in a JSON response).
The CLI will attempt to minimally format the response if it has inline
\n characters by replacing them will real newlines in the output (if the
output-format is set to either cli or format.  Raw format will be
returned as-is.

The existing notes responses are changed to not include the resolution
of the URL information inline, but rather provide the text:

  Details at notedetails/{id}

The CLI will interpret this and present:

  - Info available with 'describe notedetails/09876543210987654321098765'

This is an attempt to inform the user to access the note details that
way - luckily the API and CLI align on the term notedetails, as the word
details works well enough in the singular form presented by the CLI and
the plural form used by the API.
The ID returned is the unique id of the note (ULID format).

Notes that have no URL will return a 404 response from the API (and
an appropriately formatted value from the CLI).

This approach solves an issue beyond the large inline values from URLs;
providing a means to NOT resolve the URLs except in a one-at-a-time way.
Long lists of notes will no longer have the risk of long waits nor
needing of parallelization of retrieval of URLs for notes.

This change introduces an API-side sorting of notes by timestamp,
providing a chronological presentation of the information that may or
may not match the ULID or insertion ordering of the notes.

Additional feedback from peers about the output of noted indicated that
the CLI formatting of notes in general was in need of visual tuning. As
such, this change introduces changes to the formatting of the output
of notes from the CLI:

-  Notes for describing an item will be presented with a more specific
   header, e.g.: Action Notes: or Step Notes: instead of simply Notes.

-  Tables with notes will change the header from "Notes" to "Footnotes"
   give the user a better marker that the notes follow the current
   table.

-  Table footnotes will be presented in a table format similar to
   the following, with headings matching the kind of note being
   produced.

   Step Footnotes    Note
   (1)               > blah blah blah
                     > yakkity yakkity
   (2)               > stuff stuff stuff stuff stuff stuff stuff
                     stuff stuff stuff
                       - Info available with 'describe notedetails/...
                     > things things things

Change-Id: I1680505d5c555b2293419179ade995b0e8484e6d
2018-10-16 07:45:02 -05:00
charts/shipyard Modify note access methods 2018-10-16 07:45:02 -05:00
doc Modify note access methods 2018-10-16 07:45:02 -05:00
etc/shipyard Refactor shipyard to UCP target layout 2018-04-24 16:47:13 -05:00
images Merge "Fix: git commit id labels on images" 2018-09-28 14:15:35 +00:00
src/bin Modify note access methods 2018-10-16 07:45:02 -05:00
tools Merge "Fix: git commit id labels on images" 2018-09-28 14:15:35 +00:00
.dockerignore Minor: docs location fix 2018-09-14 23:38:29 +02:00
.editorconfig Fix: various documentation and URL fixes 2018-09-24 12:53:27 +02:00
.gitignore Minor: docs location fix 2018-09-14 23:38:29 +02:00
.gitreview Update .gitreview for openstack infra 2018-05-17 19:26:55 +01:00
.zuul.yaml Set up publishing of docs 2018-09-14 21:32:41 +02:00
LICENSE Add Apache 2.0 LICENSE file 2018-05-14 13:46:28 +00:00
Makefile Minor fix: duplicate items in .title label of container images 2018-10-09 15:36:03 +02:00
README.rst Fix: various documentation and URL fixes 2018-09-24 12:53:27 +02:00
requirements.readthedocs.txt Refactor shipyard to UCP target layout 2018-04-24 16:47:13 -05:00
tox.ini Set up publishing of docs 2018-09-14 21:32:41 +02:00

README.rst

Shipyard

Shipyard adopts the Falcon web framework and uses Apache Airflow as the backend engine to programmatically author, schedule and monitor workflows.

Find more documentation for Shipyard on Read the Docs.

The current workflow is as follows:

  1. Initial region/site data will be passed to Shipyard from either a human operator or Jenkins
  2. The data (in YAML format) will be sent to Deckhand for validation and storage
  3. Shipyard will make use of the post-processed data from DeckHand to interact with Drydock.
  4. Drydock will interact with Promenade to provision and deploy bare metal nodes using Ubuntu MAAS and a resilient Kubernetes cluster will be created at the end of the process
  5. Once the Kubernetes clusters are up and validated to be working properly, Shipyard will interact with Armada to deploy OpenStack using OpenStack Helm
  6. Once the OpenStack cluster is deployed, Shipyard will trigger a workflow to perform basic sanity health checks on the cluster

Note: This project, along with the tools used within are community-based and open sourced.

Mission

The goal for Shipyard is to provide a customizable framework for operators and developers alike. This framework will enable end-users to orchestrate and deploy a fully functional container-based Cloud.

Getting Started

This project is under development at the moment. We encourage anyone who is interested in Shipyard to review our documentation.

Bugs

If you find a bug, please feel free to create a Storyboard issue.