From a4b6b96f30bdd994ab535b222cf4b4bf09f20668 Mon Sep 17 00:00:00 2001 From: Ryan Harper Date: Mon, 17 Aug 2020 11:06:20 -0500 Subject: cli: add devel make-mime subcommand (#518) * cli: add devel make-mime subcommand Cloud-init documents an in-source-tree tool, make-mime.py used to help users create multi-part mime user-data. This tool is not shipped in the cloud-init install and unavailable at runtime. This patch takes tools/make-mime.py and makes the functionality available via the devel subcommand. The primary interface of --attach file:content-type is still present. The cli now adds: -l, --list-types Print out a list of supported content-types -f, --force Ignore errors for unsupported content-types The tool will now raise a RunTime error if the supplied content-type is not supported (or more likely a typo: x-shell-script vs. x-shellscript) * make-mime: write to stderr and exit 1 instead of raising RuntimeError * Update example to match docs * Update docs for make-mime subcommand * Remove tools/make-mime.py; replaced by cloud-init devel make-mime Co-authored-by: Rick Harding --- doc/rtd/topics/format.rst | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) (limited to 'doc') diff --git a/doc/rtd/topics/format.rst b/doc/rtd/topics/format.rst index 1d0a7097..d03e4caf 100644 --- a/doc/rtd/topics/format.rst +++ b/doc/rtd/topics/format.rst @@ -23,33 +23,35 @@ Using a mime-multi part file, the user can specify more than one type of data. For example, both a user data script and a cloud-config type could be specified. -Supported content-types: +Supported content-types are listed from the cloud-init subcommand make-mime:: -- text/cloud-boothook -- text/cloud-config -- text/cloud-config-archive -- text/jinja2 -- text/part-handler -- text/upstart-job -- text/x-include-once-url -- text/x-include-url -- text/x-shellscript + % cloud-init devel make-mime --list-types + cloud-boothook + cloud-config + cloud-config-archive + cloud-config-jsonp + jinja2 + part-handler + upstart-job + x-include-once-url + x-include-url + x-shellscript -Helper script to generate mime messages ---------------------------------------- -The cloud-init codebase includes a helper script to generate MIME multi-part -files: `make-mime.py`_. +Helper subcommand to generate mime messages +------------------------------------------- -``make-mime.py`` takes pairs of (filename, "text/" mime subtype) separated by -a colon (e.g. ``config.yaml:cloud-config``) and emits a MIME multipart -message to stdout. An example invocation, assuming you have your cloud config -in ``config.yaml`` and a shell script in ``script.sh`` and want to store the -multipart message in ``user-data``:: +The cloud-init subcommand can generate MIME multi-part files: `make-mime`_. - ./tools/make-mime.py -a config.yaml:cloud-config -a script.sh:x-shellscript > user-data +``make-mime`` subcommand takes pairs of (filename, "text/" mime subtype) +separated by a colon (e.g. ``config.yaml:cloud-config``) and emits a MIME +multipart message to stdout. An example invocation, assuming you have your +cloud config in ``config.yaml`` and a shell script in ``script.sh`` and want +to store the multipart message in ``user-data``:: -.. _make-mime.py: https://github.com/canonical/cloud-init/blob/master/tools/make-mime.py + % cloud-init devel make-mime -a config.yaml:cloud-config -a script.sh:x-shellscript > user-data + +.. _make-mime: https://github.com/canonical/cloud-init/blob/master/cloudinit/cmd/devel/make_mime.py User-Data Script -- cgit v1.2.3