summaryrefslogtreecommitdiff
path: root/cloudinit/parts/shell_script.py
blob: a248f198f6b59fbcf04b0b1e61ba288999ef8428 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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)