Beispiel #1
0
    def test_encode_decode_multipart(self):
        initial_text = 'some dummy data to check encoding and decoding'
        encoded = Util.encode_multipart(initial_text)
        decoded = Util.decode_multipart(encoded)

        self.assertTrue(len(encoded) > 0)
        self.assertTrue(len(decoded) > 0)
        self.assertEqual(initial_text, decoded)
Beispiel #2
0
    def test_encode_decode_multipart_as_json(self):
        initial_text = 'some dummy data to check encoding and decoding'
        dsmode = 'local'
        encoded = Util.encode_multipart(initial_text)
        decoded = Util.decode_multipart_as_json(dsmode, encoded)

        json_data = json.loads(decoded)

        self.assertTrue(len(encoded) > 0)
        self.assertTrue(len(decoded) > 0)
        self.assertEqual(initial_text, json_data['user-data'])
        self.assertEqual(dsmode, json_data['dsmode'])
Beispiel #3
0
    def test_create_multipart_string_from_files(self):
        files = []
        values = []
        for i in range(3):
            _, filename = tempfile.mkstemp()
            files.append(('plain', filename))
            with open(filename, 'wb') as f:
                value = "value-%d" % i
                f.write(value)
                values.append(value)

        result = Util.create_multipart_string_from_files(files)

        for mime, f in files:
            os.remove(f)

        with closing(StringIO(result)) as buf:
            parser = Parser()
            msg = parser.parse(buf)

        for part in msg.walk():
            if msg.is_multipart():
                i = 0
                for msg in part.get_payload():
                    self.assertEqual(values[i], msg.get_payload())
                    i += 1
Beispiel #4
0
    def test_create_multipart_string_with_none(self):
        files = []
        values = []
        for i in range(3):
            value = "value-%d" % i
            values.append(value)
            files.append(('none', value))

        result = Util.create_multipart_string(files)

        self.assertEqual(values[0], result)
Beispiel #5
0
    def test_create_multipart_string_from_files_with_none(self):
        files = []
        values = []
        for i in range(3):
            _, filename = tempfile.mkstemp()
            files.append(('none', filename))
            with open(filename, 'wb') as f:
                value = "value-%d" % i
                f.write(value)
                values.append(value)

        result = Util.create_multipart_string_from_files(files)

        self.assertEqual(values[0], result)
Beispiel #6
0
    def test_create_authorized_keys_from_files(self):
        files = []
        values = []
        for i in range(3):
            _, filename = tempfile.mkstemp()
            files.append(filename)
            with open(filename, 'wb') as f:
                value = "value-%d" % i
                f.write(value)
                values.append(value)

        result = Util.create_authorized_keys_from_files(files)

        for f in files:
            os.remove(f)

        self.assertEqual("\n".join(values)+"\n", result)
Beispiel #7
0
    def test_create_multipart_string(self):
        files = []
        values = []
        for i in range(3):
            value = "value-%d" % i
            values.append(value)
            files.append(('plain', value))

        result = Util.create_multipart_string(files)

        with closing(StringIO(result)) as buf:
            parser = Parser()
            msg = parser.parse(buf)

        for part in msg.walk():
            if msg.is_multipart():
                i = 0
                for msg in part.get_payload():
                    self.assertEqual(values[i], msg.get_payload())
                    i += 1
Beispiel #8
0
    def _manageExtraContext(self):
        extraContext = {}
        contextElems = []

        if self.extraContextFile:
            contextFile = open(self.extraContextFile, "rb")
            contextFileData = contextFile.read()
            contextFile.close()
            contextElems.extend(contextFileData.split("\n"))

        if self.extraContextData:
            contextElems.extend(self.extraContextData.split(Util.cliLineSplitChar))

        if self.cloudInit or (
            hasattr(self, "defaultContextMethod")
            and self.defaultContextMethod
            and self.defaultContextMethod == "cloud-init"
        ):
            if self.cloudInit is None:
                self.cloudInit = ""

            cloudInitArgs = self.cloudInit.split(Util.cliLineSplitChar)
            cloudInitData = CloudInitUtil.context_file(cloudInitArgs, default_public_key_file=self.userPublicKeyFile)
            contextElems.extend(cloudInitData.split("\n"))

        for line in contextElems:
            if len(line) == 0:
                continue

            contextLine = line.split("=")

            if len(contextLine) < 2:
                printError("Error while parsing contextualization file.\n" "Syntax error in line `%s`" % line)

            extraContext[contextLine[0]] = "=".join(contextLine[1:])

        contextData = ['%s = "%s",' % (key, value) for key, value in extraContext.items()]

        self._appendContextData(contextData)
    def doWork(self):
        contents = Util.context_file(self.args)

        with open('cloud-init.txt', 'wb') as f:
            f.write(contents)
            f.write("\n")