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)
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'])
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
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)
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)
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)
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
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")