public NippsPackageResponse UpgradeApplication(NippsPackageRequest request)
        {
            NippsPackageResponse response = new NippsPackageResponse();

            response.Result = Result.OK;
            response.ResultMessages = new List<string>();

            _Logger.Info("Checking for upgrade {0}", request);

            if (request == null || request.NippsPackages == null || request.NippsPackages.Count == 0)
            {
                response.ResultMessages.Add("ArgumentNullException: NippsPackages is null or empty.");
                return response;
            }
            
            //backup the current version,
            NippsPackageResponse backupResponse = BackupApplication(request);

            _Logger.Info("Starting to upgrade {0} with {1}", request, request.NippsPackages[0].PackageZIP);
            //restore the upgraded version
            NippsPackageResponse restoreResponse = RestoreApplication(request);

            _Logger.Info("Starting to execute upgrade.sql {0}", request);
            //execute upgrade.sql, if exist in the zip

            return response;
        }
        public ActionResult NippsBackup(Models.Nipps nipps)
        {

            ViewBag.Title = Resources.Global.BackupTitle;

            string backupServiceUrl = NippsSiteHelper.BuildDeploymentServiceUrl(nipps.HostName, "BackupService/BackupApplication");
            NippsPackageRequest backupRequest = new NippsPackageRequest 
            {
                NippsPackages = new List<NippsPackage>
                {
                    new NippsPackage
                    {
                        ApplicationName = nipps.ApplicationName,
                        SiteName = nipps.SiteName,
                        HostName = nipps.HostName
                    }
                }
            };

            NippsPackageResponse backupResponse = RestHelper.RestPostObject<NippsPackageResponse, NippsPackageRequest>(backupServiceUrl, backupRequest);

            ViewBag.Result = backupResponse.Result;
            ViewBag.ResultMessages = backupResponse.ResultMessages;
            ViewBag.ReturnToAction = ReturnToAction;
            ViewBag.ReturnToController = ReturnToController;
            ViewBag.Title = Resources.Global.BackupTitle;

            return View(NippsSiteHelper.ResultMessageView);
        }
        public NippsPackageResponse UpgradeApplicationList(NippsPackageRequest request)
        {
            NippsPackageResponse response = new NippsPackageResponse();
            string BackupTargetPath = GetBackupTargetPath();

            response.Result = Result.OK;
            response.ResultMessages = new List<string>();

            if (request != null && request.NippsPackages != null && request.NippsPackages.Count > 0)
                foreach (string fileName in Directory.GetFiles(BackupTargetPath, "Upgr_" + request.NippsPackages[0].ApplicationName.Replace("/", "") + "*.zip", SearchOption.TopDirectoryOnly))
                    response.ResultMessages.Add(fileName.Substring(BackupTargetPath.Length));
            else
                foreach (string fileName in Directory.GetFiles(BackupTargetPath, "Upgr_*.zip", SearchOption.TopDirectoryOnly))
                    response.ResultMessages.Add(fileName.Substring(BackupTargetPath.Length));

            return response;
        }
        public ActionResult NippsDeploy(HttpPostedFileBase PackageZIP, Models.Nipps nipps)
        {
            string deploymentServiceUrl = NippsSiteHelper.BuildDeploymentServiceUrl(nipps.HostName) + "AddSite";

            byte[] packageZipBuffer = new byte[PackageZIP.ContentLength];
            PackageZIP.InputStream.Read(packageZipBuffer, 0, PackageZIP.ContentLength);

            string b64Package = Convert.ToBase64String(packageZipBuffer);

            NippsPackageRequest nippsPackageRequest = new NippsPackageRequest
            {
                NippsPackages = new List<NippsPackage>
                {
                    new NippsPackage { 
                        PackageZIP = b64Package,
                        SiteName = nipps.SiteName,
                        HostName = nipps.HostName,
                        ApplicationPoolName = nipps.ApplicationPoolName,
                        ApplicationName = nipps.ApplicationName
                    }
                }
            };

            NippsPackageResponse response = RestHelper.RestPostObject<NippsPackageResponse, NippsPackageRequest>(deploymentServiceUrl, nippsPackageRequest);
            
            if (response.Result == Result.OK)
                return RedirectToAction("NippsServiceList");

            foreach (String em in response.ResultMessages)
                Logger.Error(em); 
                
            ViewBag.Result = response.Result;
            ViewBag.ResultMessages = response.ResultMessages;
            ViewBag.ReturnToAction = ReturnToAction;
            ViewBag.ReturnToController = ReturnToController;
            ViewBag.Title = Resources.Global.DeployTitle;

            return View(NippsSiteHelper.ResultMessageView);
            
        }
        public ActionResult NippsRestore(Models.Nipps nipps, string restore)
        {

            ViewBag.Title = Resources.Global.RestoreTitle;

            string restoreServiceUrl = NippsSiteHelper.BuildDeploymentServiceUrl(nipps.HostName, "BackupService/RestoreApplication");
            NippsPackageRequest request = new NippsPackageRequest
            {
                NippsPackages = new List<NippsPackage>
                {
                    new NippsPackage
                    {
                        HostName = nipps.HostName,
                        SiteName = nipps.SiteName,
                        ApplicationName = nipps.ApplicationName,
                        ApplicationPoolName = nipps.ApplicationPoolName,
                        PackageZIP = restore
                    }
                }
            };

            NippsPackageResponse response = RestHelper.RestPostObject<NippsPackageResponse, NippsPackageRequest>(restoreServiceUrl, request);

            ViewBag.Result = response.Result;
            ViewBag.ResultMessages = response.ResultMessages;
            ViewBag.ReturnToAction = ReturnToAction;
            ViewBag.ReturnToController = ReturnToController;
            ViewBag.Title = Resources.Global.RestoreTitle;

            return View(NippsSiteHelper.ResultMessageView);
        }
        public ActionResult NippsUpgradeList(Models.Nipps nipps)
        {
            string upgradeServiceUrl = NippsSiteHelper.BuildDeploymentServiceUrl(nipps.HostName, "BackupService/UpgradeApplicationList");
            NippsPackageRequest request = new NippsPackageRequest
            {
                NippsPackages = new List<NippsPackage>()
            };

            if (!String.IsNullOrEmpty(nipps.HostName))
                request.NippsPackages.Add(new NippsPackage
                {
                    HostName = nipps.HostName,
                    SiteName = nipps.SiteName,
                    ApplicationName = nipps.ApplicationName
                });

            NippsPackageResponse response = RestHelper.RestPostObject<NippsPackageResponse, NippsPackageRequest>(upgradeServiceUrl, request);
            ViewBag.ResultList = response.ResultMessages;
            SetViewBagResult(response, ViewBag);

            return View(nipps);
        }
        public NippsPackageResponse RestoreApplicationList(NippsPackageRequest request)
        {
            NippsPackageResponse response = new NippsPackageResponse();
            string BackupTargetPath = GetBackupTargetPath();
            
            response.Result = Result.OK;
            response.ResultMessages = new List<string>();

            if (request != null && request.NippsPackages != null && request.NippsPackages.Count > 0)
                foreach (NippsPackage np in request.NippsPackages)
                    foreach (string fileName in Directory.GetFiles(BackupTargetPath, "Appl_" + ZipFileName(np, false).Replace(".zip", "*.zip"), SearchOption.TopDirectoryOnly))
                        response.ResultMessages.Add(fileName.Substring(BackupTargetPath.Length));
            else
                foreach (string fileName in Directory.GetFiles(BackupTargetPath, "Site_*.zip", SearchOption.TopDirectoryOnly))
                    response.ResultMessages.Add(fileName.Substring(BackupTargetPath.Length));

            return response;
        }
        public NippsPackageResponse RestoreApplication(NippsPackageRequest request)
        {
            NippsPackageResponse response = new NippsPackageResponse();

            response.Result = Result.OK;
            response.ResultMessages = new List<string>();

            _Logger.Debug(request);

            foreach (NippsPackage np in request.NippsPackages)
            {
                if (String.IsNullOrEmpty(np.ApplicationName))
                    np.ApplicationName = "/"; //site restore

                _Logger.Debug(np);

                response.ResultMessages
                    .Add(ApplicationRestore(np));
            }
            
            return response;
        }
        public NippsPackageResponse BackupApplication(NippsPackageRequest request)
        {
            NippsPackageResponse response = new NippsPackageResponse();
            bool succeededOne = false;
            string BackupTargetPath = GetBackupTargetPath();

            response.ResultMessages = new List<string>();
            response.Result = Result.OK;

            _Logger.Debug(request.ToString());

            foreach (NippsPackage np in request.NippsPackages)
            {
                
                try
                {
                    if (String.IsNullOrEmpty(np.ApplicationName))
                        np.ApplicationName = "/"; //site backup

                    response.ResultMessages
                        .Add(ApplicationBackup(np));
                    
                    succeededOne = true;
                }
                catch (Exception ex)
                {
                    if (succeededOne)
                        response.Result = Result.SUCCESSWITHWARN;

                    response.ResultMessages.Add(ex.ToString());
                }
            }

            return response;
        }
示例#10
0
        public BaseResponse RestoreConfiguration(NippsPackageRequest request)
        {

            BaseResponse response = new NippsPackageResponse();
            response.ResultMessages = new List<string>();

            try
            {

                if (request != null && request.NippsPackages != null && request.NippsPackages.Count > 0)
                {
                    string bcpExe = GetBcpExe();
                    string connectionString = ConfigurationManager.ConnectionStrings["UpgradeDb"].ConnectionString;

                    string dataBase = Regex.Match(connectionString, @"(Initial Catalog=)(\w+)").Value.Replace("Initial Catalog=", "");
                    string userName = Regex.Match(connectionString, @"(User ID=)(\w+)").Value.Replace("User ID=", "");
                    string passWord = Regex.Match(connectionString, @"(Password=)(\w+)").Value.Replace("Password="******"");
                    string host = Regex.Match(connectionString, @"(Data Source=)(\w+)").Value.Replace("Data Source=", "");
                    string sqlArgs = string.Format("-c -C RAW -S {0} -d {1} -U {2} -P {3}", host, dataBase, userName, passWord);

                    foreach (NippsPackage np in request.NippsPackages)
                    {
                        response.ResultMessages.Add(
                            string.Format(
                                "restore {0} exit code -> {1}",
                                np.PackageZIP,
                                ConfigurationRestore(bcpExe, sqlArgs, Regex.Match(np.PackageZIP, "(_)(.*)(_)").Value.Replace("_", ""), np.PackageZIP)
                                )
                            );
                    }
                        
                }
                response.Result = Result.OK;

            }
            catch (Exception ex)
            {
                response.Result = Result.FAIL;
                response.ResultMessages.Add(ex.ToString());
            }

            return response;
        }
        public NippsPackageResponse AddSite(NippsPackageRequest nippsPackageRequest)
        {
            bool isSucceededOne = false;
            Logger logger = NLog.LogManager.GetCurrentClassLogger();
            NippsPackageResponse response = new NippsPackageResponse();
            response.ResultMessages = new List<string>();
            response.Result = Result.OK;

            try
            {
                using (ServerManager serverManager = ServerManager.OpenRemote("localhost"))
                {
                    foreach (NippsPackage nippsPackage in nippsPackageRequest.NippsPackages) 
                    {
                        try
                        {
                            
                            Site site = serverManager.Sites
                                .Where(s => s.Name.Equals(nippsPackage.SiteName))
                                .Single();
                        
                            if (site != null)
                            {
                                string basePath = SavePackage(nippsPackage, site);
                                string appPath = basePath + nippsPackage.ApplicationName;

                                logger.Debug(string.Format("Application>{0}", appPath));

                                //execute SQL if exist
                                BaseDaoHelper.ExecuteUpgradeScript(appPath);
                                
                                //add site
                                Application app = site.Applications.Add("/" + nippsPackage.ApplicationName, appPath.Replace("/","\\"));
                                app.ApplicationPoolName = nippsPackage.ApplicationPoolName;

                                response.ResultMessages.Add(
                                    string.Format("[{0} - {1} - {2}]", nippsPackage.SiteName, nippsPackage.ApplicationPoolName, nippsPackage.ApplicationName));

                                isSucceededOne = true;
                            }

                            
                        }
                        catch (Exception ex)
                        {
                            logger.Error(ex.ToString());
                            if (isSucceededOne)
                                response.Result = Result.SUCCESSWITHWARN;
                            response.ResultMessages.Add(ex.ToString());
                            
                        }

                    }

                    if (isSucceededOne)
                        serverManager.CommitChanges();
                }

            }
            catch (Exception ex)
            {
                logger.Error(ex.ToString());
                response.Result = Result.FAIL;
                response.ResultMessages.Add(ex.ToString());
            }

            return response;
        }