summaryrefslogtreecommitdiff
path: root/cloudinit/parts/shell_script.py
diff options
context:
space:
mode:
Diffstat (limited to 'cloudinit/parts/shell_script.py')
-rw-r--r--cloudinit/parts/shell_script.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/cloudinit/parts/shell_script.py b/cloudinit/parts/shell_script.py
new file mode 100644
index 00000000..a248f198
--- /dev/null
+++ b/cloudinit/parts/shell_script.py
@@ -0,0 +1,27 @@
+import os
+
+from cloudinit import util
+from cloudinit.settings import (PER_ALWAYS, PER_INSTANCE)
+from cloudinit import log as logging
+from cloudinit import parts
+
+LOG = logging.getLogger(__name__)
+
+
+class ShellScriptPartHandler(parts.PartHandler):
+
+ def __init__(self, script_dir):
+ parts.PartHandler.__init__(self, PER_ALWAYS)
+ self.script_dir = script_dir
+
+ def list_types(self):
+ return ['text/x-shellscript']
+
+ def _handle_part(self, _data, ctype, filename, payload, _frequency):
+ if ctype in [CONTENT_START, CONTENT_END]:
+ # maybe delete existing things here
+ return
+
+ filename = util.clean_filename(filename)
+ payload = util.dos2unix(payload)
+ util.write_file(os.path.join(self.script_dir, filename), payload, 0700)