private static void ParseAMIDefinitions(StreamReader reader)
{
try
{
var jdata = JsonMapper.ToObject(reader);
var platformTags = new string[]
{
WindowsImagesTag,
LinuxImagesTag
};
var parsedDefinitionsMap = new Dictionary<string, string>();
foreach (var platformTag in platformTags)
{
var imageDefinitions = jdata[platformTag];
if (imageDefinitions == null)
{
Logger.InfoFormat("Parsing AMI definitions - did not find any images for platform tag '{0}'", platformTag);
continue;
}
for (int d = 0; d < imageDefinitions.Count; d++)
{
var def = imageDefinitions[d];
var key = (string)def[DefinitionKeyTag];
var prefix = (string)def[DefinitionPrefixTag];
if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(prefix))
parsedDefinitionsMap[key] = prefix;
else
Logger.InfoFormat("Parsing AMI definitions - found malformed descriptor entry for definition index {0} in platform group {1}, discarded", d, platformTag);
}
}
foreach (var d in WindowsDescriptors)
{
if (parsedDefinitionsMap.ContainsKey(d.DefinitionKey))
d.NamePrefix = parsedDefinitionsMap[d.DefinitionKey];
else
Logger.InfoFormat("Parsing AMI definitions - did not find entry for Windows image descriptor '{0}' after parsing", d.DefinitionKey);
}
foreach (var d in LinuxDescriptors)
{
if (parsedDefinitionsMap.ContainsKey(d.DefinitionKey))
d.NamePrefix = parsedDefinitionsMap[d.DefinitionKey];
else
Logger.InfoFormat("Parsing AMI definitions - did not find entry for Linux image descriptor '{0}' after parsing", d.DefinitionKey);
}
}
catch (Exception e)
{
Logger.Error(e, "Exception whilst parsing AMI definitions file.");
}
}