public int UpgradeApplication(
            string applicationTypeName,
            string currentAppInstanceVersion,
            string targetApplicationTypeVersion,
            string applicationId,
            IDictionary <string, string> applicationParameters,
            string output)
        {
            string argumentsList = this.GetDefaultArgument();

            argumentsList = ImageBuilderExeTestWrapper.AddArgument(argumentsList, StringConstants.Operation, StringConstants.OperationUpgradeApplication);
            argumentsList = ImageBuilderExeTestWrapper.AddArgument(argumentsList, StringConstants.AppTypeName, applicationTypeName);
            argumentsList = ImageBuilderExeTestWrapper.AddArgument(argumentsList, StringConstants.CurrentAppInstanceVersion, currentAppInstanceVersion);
            argumentsList = ImageBuilderExeTestWrapper.AddArgument(argumentsList, StringConstants.AppTypeVersion, targetApplicationTypeVersion);
            argumentsList = ImageBuilderExeTestWrapper.AddArgument(argumentsList, StringConstants.AppId, applicationId);
            argumentsList = ImageBuilderExeTestWrapper.AddArgument(argumentsList, StringConstants.Output, output);

            foreach (KeyValuePair <string, string> applicationParameter in applicationParameters)
            {
                string formatedParameter = string.Format(CultureInfo.InvariantCulture, "{0};{1}", applicationParameter.Key, applicationParameter.Value);
                argumentsList = ImageBuilderExeTestWrapper.AddArgument(argumentsList, StringConstants.AppParam, formatedParameter);
            }

            return(ImageBuilderExeTestWrapper.RunImageBuilder(argumentsList));
        }
        public int BuildApplication(
            string applicationTypeName,
            string applicationTypeVersion,
            string applicationId,
            string nameUri,
            IDictionary <string, string> applicationParameters,
            string output)
        {
            string argumentsList = this.GetDefaultArgument();

            argumentsList = ImageBuilderExeTestWrapper.AddArgument(argumentsList, StringConstants.Operation, StringConstants.OperationBuildApplication);
            argumentsList = ImageBuilderExeTestWrapper.AddArgument(argumentsList, StringConstants.AppTypeName, applicationTypeName);
            argumentsList = ImageBuilderExeTestWrapper.AddArgument(argumentsList, StringConstants.AppTypeVersion, applicationTypeVersion);
            argumentsList = ImageBuilderExeTestWrapper.AddArgument(argumentsList, StringConstants.AppId, applicationId);
            argumentsList = ImageBuilderExeTestWrapper.AddArgument(argumentsList, StringConstants.NameUri, nameUri);
            argumentsList = ImageBuilderExeTestWrapper.AddArgument(argumentsList, StringConstants.Output, output);

            string tempFile = null;

            if (applicationParameters.Count != 0)
            {
                tempFile = Path.GetTempFileName();
                WriteApplicationParametersFile(tempFile, applicationParameters);
                argumentsList = AddArgument(argumentsList, StringConstants.AppParam, tempFile);
            }
            var retval = ImageBuilderExeTestWrapper.RunImageBuilder(argumentsList);

            if (File.Exists(tempFile))
            {
                File.Delete(tempFile);
            }
            return(retval);
        }
        public int ProvisionFabric(string codePath, string configPath, string infrastructureManifestFilePath)
        {
            string argumentsList = this.GetDefaultArgument();

            argumentsList = AddArgument(argumentsList, StringConstants.Operation, StringConstants.OperationProvisionFabric);
            argumentsList = AddArgument(argumentsList, StringConstants.CodePath, codePath);
            argumentsList = AddArgument(argumentsList, StringConstants.ConfigPath, configPath);
            argumentsList = AddArgument(argumentsList, StringConstants.InfrastructureManifestFile, infrastructureManifestFilePath);

            return(ImageBuilderExeTestWrapper.RunImageBuilder(argumentsList));
        }
        public int GetApplicationTypeInfo(string buildPath, string errorDetailsFile, out string applicationTypeName, out string applicationTypeVersion)
        {
            int exitCode = -1;

            applicationTypeName = applicationTypeVersion = null;

            string applicationTypeInfoFile = "ApplicationTypeInfo.txt";

            string argumentsList = this.GetDefaultArgument();

            argumentsList = AddArgument(argumentsList, StringConstants.BuildPath, buildPath);
            argumentsList = AddArgument(argumentsList, StringConstants.Output, applicationTypeInfoFile);

            if (errorDetailsFile == null)
            {
                argumentsList = AddArgument(argumentsList, StringConstants.Operation, StringConstants.OperationBuildApplicationTypeInfo);
            }
            else
            {
                argumentsList = AddArgument(argumentsList, StringConstants.Operation, StringConstants.TestErrorDetails);
                argumentsList = AddArgument(argumentsList, StringConstants.ErrorDetails, errorDetailsFile);
            }

            try
            {
                exitCode = ImageBuilderExeTestWrapper.RunImageBuilder(argumentsList);

                if (exitCode == 0)
                {
                    using (StreamReader reader = new StreamReader(applicationTypeInfoFile))
                    {
                        string outputString   = reader.ReadLine();
                        int    delimiterIndex = outputString.IndexOf(":", StringComparison.OrdinalIgnoreCase);

                        if (delimiterIndex != -1)
                        {
                            applicationTypeName    = outputString.Substring(0, delimiterIndex);
                            applicationTypeVersion = outputString.Substring(delimiterIndex + 1);
                        }
                    }
                }
            }
            finally
            {
                if (File.Exists(applicationTypeInfoFile))
                {
                    File.Delete(applicationTypeInfoFile);
                }
            }

            return(exitCode);
        }
        public int GetApplicationType(string buildPath)
        {
            int exitCode = -1;

            string argumentsList = this.GetDefaultArgument();

            argumentsList = AddArgument(argumentsList, StringConstants.Operation, StringConstants.OperationBuildApplicationType);
            argumentsList = AddArgument(argumentsList, StringConstants.BuildPath, buildPath);

            exitCode = ImageBuilderExeTestWrapper.RunImageBuilder(argumentsList);

            return(exitCode);
        }
        public int GetFabricVersion(string codePath, string configPath, out string codeVersion, out string configVersion)
        {
            int exitCode = -1;

            codeVersion = configVersion = null;

            string tempOutputFile = Path.GetTempFileName();

            string argumentsList = this.GetDefaultArgument();

            argumentsList = AddArgument(argumentsList, StringConstants.Operation, StringConstants.OperationGetFabricVersion);
            argumentsList = AddArgument(argumentsList, StringConstants.CodePath, codePath);
            argumentsList = AddArgument(argumentsList, StringConstants.ConfigPath, configPath);
            argumentsList = AddArgument(argumentsList, StringConstants.Output, tempOutputFile);

            try
            {
                exitCode = ImageBuilderExeTestWrapper.RunImageBuilder(argumentsList);

                if (exitCode == 0)
                {
                    using (StreamReader reader = new StreamReader(tempOutputFile))
                    {
                        string outputString   = reader.ReadLine();
                        int    delimiterIndex = outputString.IndexOf(":", StringComparison.OrdinalIgnoreCase);

                        if (delimiterIndex != -1)
                        {
                            codeVersion   = outputString.Substring(0, delimiterIndex);
                            configVersion = outputString.Substring(delimiterIndex + 1);
                        }
                    }
                }
            }
            finally
            {
                if (File.Exists(tempOutputFile))
                {
                    File.Delete(tempOutputFile);
                }
            }

            return(exitCode);
        }