/// <summary>
        /// 保存上传软件源进度到数据。
        /// </summary>
        /// <param name="queryObjectResult">返回的软件源进度对戏</param>
        /// <param name="taskName">eSight对应的任务名。</param>
        private void SaveTaskProgressToDB(QueryObjectResult <SourceProgress> queryObjectResult, string taskName)
        {
            //sync to the database.
            SourceProgress sourceProgress = queryObjectResult.Data;
            HWESightTask   hwtask         = HWESightTaskDal.Instance.FindTaskByName(this.ESSession.HWESightHost.ID, taskName);

            hwtask.TaskStatus   = sourceProgress.TaskStatus;
            hwtask.TaskProgress = sourceProgress.TaskProgress;
            hwtask.TaskResult   = sourceProgress.TaskResult;
            hwtask.TaskCode     =
                (!string.IsNullOrEmpty(sourceProgress.TaskCode) && !string.Equals(sourceProgress.TaskCode, "0")) ?
                ("deploy.error." + sourceProgress.TaskCode) : sourceProgress.TaskCode;

            hwtask.ErrorDetail    = sourceProgress.ErrorDetail;
            hwtask.SyncStatus     = GetTaskStatus(hwtask.SyncStatus, sourceProgress.TaskStatus, sourceProgress.TaskResult, sourceProgress.TaskCode);
            hwtask.LastModifyTime = System.DateTime.Now;
            HWESightTaskDal.Instance.UpdateEntity(hwtask);

            /* if (hwtask == null)
             * {
             *   throw new SoftwareSourceExpceion(ConstMgr.ErrorCode.DB_NOTFOUND, this, string.Format("查询软件源上传进度出错:数据库没有找到对应的任务。[{0}]", taskName));
             * }
             * else
             * {
             *   hwtask.TaskStatus = sourceProgress.TaskStatus;
             *   hwtask.TaskProgress = sourceProgress.TaskProgress;
             *   hwtask.TaskResult = sourceProgress.TaskResult;
             *   hwtask.TaskCode = sourceProgress.TaskCode;
             *   hwtask.ErrorDetail = sourceProgress.ErrorDetail;
             *   hwtask.SyncStatus = ConstMgr.HWESightTask.SYNC_STATUS_FINISHED;
             *   hwtask.LastModifyTime = System.DateTime.Now;
             *   HWESightTaskDal.Instance.UpdateEntity(hwtask);
             * }*/
        }
        /// <summary>
        /// 同步任务状态到数据库。
        /// </summary>
        /// <param name="queryObjectResult">查询结果</param>
        /// <param name="taskName">任务名</param>
        private void SaveTaskProgressToDB(QueryObjectResult <DeployProgress> queryObjectResult, string taskName)
        {
            //sync to the database.
            DeployProgress deployProgress = queryObjectResult.Data;
            HWESightTask   hwtask         = HWESightTaskDal.Instance.FindTaskByName(this.ESSession.HWESightHost.ID, taskName);

            hwtask.TaskStatus = deployProgress.TaskStatus;

            hwtask.TaskResult = deployProgress.TaskResult;
            hwtask.TaskCode   = (!string.IsNullOrEmpty(deployProgress.TaskCode) && !string.Equals(deployProgress.TaskCode, "0")) ?
                                (errorPix + deployProgress.TaskCode) : deployProgress.TaskCode;
            hwtask.ErrorDetail = deployProgress.ErrorDetail;

            hwtask.LastModifyTime = System.DateTime.Now;
            //find child device in database.
            int progress = UpdateHWTaskResourceList(hwtask, deployProgress);

            if (progress > 0)
            {
                hwtask.TaskProgress = progress;// deployProgress.TaskProgress;
            }
            else
            {
                hwtask.TaskProgress = deployProgress.TaskProgress;
            }
            if (progress == 100)
            {
                hwtask.SyncStatus = ConstMgr.HWESightTask.SYNC_STATUS_FINISHED;
            }

            hwtask.SyncStatus = GetTaskStatus(hwtask.SyncStatus, deployProgress.TaskStatus, deployProgress.TaskResult, deployProgress.TaskCode);
            HWESightTaskDal.Instance.UpdateEntity(hwtask);
        }
        /// <summary>
        /// 添加部署任务
        /// </summary>
        /// <param name="taskSourceName">任务名,仅仅用做备注任务</param>
        /// <param name="deployTask">部署任务信息,包括模板类型和设备DN</param>
        /// <returns>返回eSight任务名</returns>
        public string AddDeployTask(string taskSourceName, DeployTask deployTask)
        {
            StringBuilder sb = new StringBuilder(ConstMgr.HWESightHost.URL_TASK_DEPLOY);
            IList <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >();

            parameters.Add(new KeyValuePair <string, object>("templates", deployTask.Templates));
            parameters.Add(new KeyValuePair <string, object>("dn", deployTask.DeviceDn));

            JObject jResult = ESSession.HCPostForm(sb.ToString(), parameters);

            CheckAndThrowException(jResult);
            HWESightTask eSightTask = new HWESightTask();
            QueryObjectResult <JObject> queryObjectResult = jResult.ToObject <QueryObjectResult <JObject> >();

            eSightTask.HWESightHostID     = this.ESSession.HWESightHost.ID;
            eSightTask.TaskName           = JsonUtil.GetJObjectPropVal <string>(queryObjectResult.Data, "taskName");
            eSightTask.SoftWareSourceName = taskSourceName;
            eSightTask.TaskStatus         = ConstMgr.HWESightTask.TASK_STATUS_RUNNING;//初始化。
            eSightTask.TaskProgress       = 0;
            eSightTask.TaskResult         = "";
            eSightTask.ErrorDetail        = "";
            eSightTask.SyncStatus         = ConstMgr.HWESightTask.SYNC_STATUS_CREATED;
            eSightTask.TaskType           = ConstMgr.HWESightTask.TASK_TYPE_DEPLOY;
            eSightTask.LastModifyTime     = System.DateTime.Now;
            eSightTask.CreateTime         = System.DateTime.Now;
            int taskId = HWESightTaskDal.Instance.InsertEntity(eSightTask);

            eSightTask.ID = taskId;
            InsertHWTaskResourceList(eSightTask, deployTask.DeviceDn);

            LogUtil.HWLogger.API.InfoFormat("AddDeployTask:{0}", taskId);
            return(JsonUtil.GetJObjectPropVal <string>(queryObjectResult.Data, "taskName"));
        }
        /// <summary>
        /// 上传软件源
        /// </summary>
        /// <param name="softwareSource">软件源参数</param>
        /// <returns>返回任务名</returns>
        public string UploadSoftwareSource(SoftwareSource softwareSource)
        {
            QueryObjectResult <JObject> queryObjectResult = UploadSoftwareSourceWithResult(softwareSource);

            if (queryObjectResult.Code != 0)
            {
                throw GetDeployException(queryObjectResult.Code.ToString(), this, queryObjectResult.Description);//"上传软件源出错:" +
            }
            string taskName = JsonUtil.GetJObjectPropVal <string>(queryObjectResult.Data, "taskName");

            return(taskName);
        }
        /// <summary>
        /// 删除软件源
        /// </summary>
        /// <param name="softwaresourceName">软件源名称,eSight 返回的任务名</param>
        public void DeleteSoftwareSource(string softwaresourceName)
        {
            StringBuilder sb = new StringBuilder(ConstMgr.HWESightHost.URL_DELETE_SOFTWARESOURCE);
            //删除软件源需要把参数放在Body,是POST by Jacky 2017-6-30
            IList <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >();

            parameters.Add(new KeyValuePair <string, object>("softwareName", softwaresourceName));
            JObject jResult = ESSession.HCPostForm(sb.ToString(), parameters);

            CheckAndThrowException(jResult);
            QueryObjectResult <string> queryObjectResult = jResult.ToObject <QueryObjectResult <string> >();

            DeleteTaskProgressFromDBByName(softwaresourceName);
        }
        /// <summary>
        /// 查看模板详情
        /// </summary>
        /// <param name="templateName"></param>
        /// <returns>模板详情</returns>
        public DeployTemplate QueryDeployTemplate(string templateName)
        {
            StringBuilder sb = new StringBuilder(ConstMgr.HWESightHost.URL_DETAIL_TEMPLATE);

            sb.Append("?templateName=").Append(HttpUtility.UrlEncode(templateName, Encoding.UTF8));
            JObject jResult = ESSession.HCGet(sb.ToString());

            CheckAndThrowException(jResult);
            QueryObjectResult <DeployTemplate> queryObjectResult = jResult.ToObject <QueryObjectResult <DeployTemplate> >(new JsonSerializer {
                NullValueHandling = NullValueHandling.Ignore
            });

            return(queryObjectResult.Data);
        }
        /// <summary>
        /// 查询上传软件源进度
        /// </summary>
        /// <param name="taskName">eSight 返回的任务名</param>
        /// <returns>上传软件源进度对象</returns>
        public SourceProgress QuerySoftwareProcess(string taskName)
        {
            StringBuilder sb = new StringBuilder(ConstMgr.HWESightHost.URL_PROGRESS_SOFTWARESOURCE);

            sb.Append("?taskName=").Append(HttpUtility.UrlEncode(taskName, Encoding.UTF8));
            JObject jResult = ESSession.HCGet(sb.ToString());

            CheckAndThrowException(jResult);
            QueryObjectResult <SourceProgress> queryObjectResult = jResult.ToObject <QueryObjectResult <SourceProgress> >();
            //sync to the database.
            HWESightTask hwtask = HWESightTaskDal.Instance.FindTaskByName(this.ESSession.HWESightHost.ID, taskName);

            SaveTaskProgressToDB(queryObjectResult, taskName);
            return(queryObjectResult.Data);
        }
示例#8
0
        public QueryObjectResult FindByPrimaryKey(JObject request)
        {
            var response = new QueryObjectResult();

            Validator.Validate <GenericPropertiesValidator>(request, response, Database, ListRelationSchema.RelationName, ListRelationSchema.SchemaName)
            .Next <GenericPrimaryKeyValidator>();

            if (!response.Success)
            {
                return(response);
            }

            return(new Query(Database, Connection, ListRelationSchema)
                   .Where(request)
                   .One());
        }
        public void UploadSoftwareSourceTest1()
        {
            _esSession.Open();
            SoftwareSource softwareSource = new SoftwareSource();

            softwareSource.SoftwareName        = "OS_Software1111";
            softwareSource.SoftwareDescription = "“This is a OS template.";
            softwareSource.SoftwareType        = "Windows";
            softwareSource.SoftwareVersion     = "Windows Server 2008 R2 x64";
            softwareSource.SoftwareLanguage    = "Chinese";
            softwareSource.SourceName          = "7601.17514.101119 - 1850_x64fre_server_eval_en - us - GRMSXEVAL_EN_DVD.iso";
            softwareSource.SftpserverIP        = "188.10.18.188";
            softwareSource.SftpUserName        = "******";
            softwareSource.SftpPassword        = "******";
            QueryObjectResult <JObject> sourceResult = _esSession.SoftSourceWorker.UploadSoftwareSourceWithResult(softwareSource);

            Assert.IsNotNull(sourceResult);
        }
        /// <summary>
        /// 添加部署任务
        /// </summary>
        /// <param name="taskSourceName"></param>
        /// <param name="deployTask"></param>
        /// <returns>返回eSight任务名</returns>
        public string AddDeployTask(DeployPackageTask deployTask)
        {
            StringBuilder sb = new StringBuilder(ConstMgr.HWESightHost.URL_TASK_BASEPACKAGE);
            IList <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >();

            parameters.Add(new KeyValuePair <string, object>("basepackageName", deployTask.BasepackageName));
            parameters.Add(new KeyValuePair <string, object>("firmwareList", deployTask.FirmwareList));
            parameters.Add(new KeyValuePair <string, object>("dn", deployTask.DeviceDn));
            parameters.Add(new KeyValuePair <string, object>("isforceupgrade", deployTask.IsForceUpgrade));
            parameters.Add(new KeyValuePair <string, object>("effectiveMethod", deployTask.EffectiveMethod));
            JObject jResult = ESSession.HCPostForm(sb.ToString(), parameters);

            CheckAndThrowException(jResult);
            HWESightTask eSightTask = new HWESightTask();
            QueryObjectResult <JObject> queryObjectResult = jResult.ToObject <QueryObjectResult <JObject> >();

            if (queryObjectResult.Code != 0)
            {
                throw GetDeployException(queryObjectResult.Code.ToString(), this, queryObjectResult.Description);//"添加部署任务出错:" +
            }
            else
            {//Save to database.
                eSightTask.HWESightHostID     = this.ESSession.HWESightHost.ID;
                eSightTask.TaskName           = JsonUtil.GetJObjectPropVal <string>(queryObjectResult.Data, "taskName");
                eSightTask.SoftWareSourceName = deployTask.BasepackageName;

                eSightTask.TaskStatus     = ConstMgr.HWESightTask.TASK_STATUS_RUNNING;//初始化。
                eSightTask.TaskProgress   = 0;
                eSightTask.TaskResult     = "";
                eSightTask.ErrorDetail    = "";
                eSightTask.SyncStatus     = ConstMgr.HWESightTask.SYNC_STATUS_CREATED;
                eSightTask.TaskType       = ConstMgr.HWESightTask.TASK_TYPE_DEPLOYFIRMWARE;//部署固件任务
                eSightTask.DeviceIp       = deployTask.DeviceDn;
                eSightTask.ReservedStr1   = deployTask.FirmwareList;
                eSightTask.LastModifyTime = System.DateTime.Now;
                eSightTask.CreateTime     = System.DateTime.Now;
                int taskId = HWESightTaskDal.Instance.InsertEntity(eSightTask);
                eSightTask.ID = taskId;
                InsertHWTaskResourceList(eSightTask, deployTask.DeviceDn);

                LogUtil.HWLogger.API.InfoFormat("add task:{0}", taskId);
            }
            return(JsonUtil.GetJObjectPropVal <string>(queryObjectResult.Data, "taskName"));
        }
示例#11
0
        public void QueryBasePackageDetailTest()
        {
            _esSession.Open();
            var queryParam = new { basepackageName = "basepackage1" };
            WebOneESightParam <dynamic> packageParam = new WebOneESightParam <dynamic>();

            packageParam.ESightIP = "127.0.0.1";
            packageParam.Param    = queryParam;
            LogUtil.HWLogger.API.Info("QueryBasePackageDetailTest packageParam:" + JsonUtil.SerializeObject(packageParam));

            QueryObjectResult <BasePackageDetail> queryLGListResult = _esSession.BasePackageWorker.QueryBasePackageDetail(queryParam.basepackageName);

            //QueryObjectResult<BasePackageDetail> ret = new QueryObjectResult<BasePackageDetail>();
            //ret.Code = 0;
            //ret.Description = "";
            // ret.Data = queryLGListResult;

            LogUtil.HWLogger.API.Info("QueryBasePackageDetailTest queryLGListResult:" + JsonUtil.SerializeObject(queryLGListResult));
        }
        /// <summary>
        /// 上传固件任务。
        /// </summary>
        /// <param name="basePackage"></param>
        /// <returns></returns>
        public string UploadBasePackage(BasePackage basePackage)
        {
            StringBuilder sb      = new StringBuilder(ConstMgr.HWESightHost.URL_UPLOADE_BASEPACKAGE);
            int           retCode = 0;
            JObject       jResult = ESSession.HCPost(sb.ToString(), basePackage);

            CheckAndThrowException(jResult);
            HWESightTask eSightTask = HWESightTaskDal.Instance.FindTaskByBasepackageName(this.ESSession.HWESightHost.ID, basePackage.BasepackageName);

            if (eSightTask == null)
            {
                eSightTask = new HWESightTask();
            }
            else
            {
                LogUtil.HWLogger.API.WarnFormat("Find same package name in the database, the data will be overwrite=[{0}]", basePackage.BasepackageName);
            }
            string taskName = "";
            QueryObjectResult <JObject> queryObjectResult = jResult.ToObject <QueryObjectResult <JObject> >();

            if (queryObjectResult.Code == 0)
            {
                taskName = JsonUtil.GetJObjectPropVal <string>(queryObjectResult.Data, "taskName");
                //Save to database.
                eSightTask.HWESightHostID     = this.ESSession.HWESightHost.ID;
                eSightTask.TaskName           = taskName;
                eSightTask.SoftWareSourceName = basePackage.BasepackageName;
                eSightTask.ReservedStr1       = basePackage.BasepackageType;
                eSightTask.TaskStatus         = ConstMgr.HWESightTask.TASK_STATUS_RUNNING;//初始化。
                eSightTask.TaskProgress       = 0;
                eSightTask.TaskResult         = "";
                eSightTask.ErrorDetail        = "";
                eSightTask.SyncStatus         = ConstMgr.HWESightTask.SYNC_STATUS_CREATED;
                eSightTask.TaskType           = ConstMgr.HWESightTask.TASK_TYPE_FIRMWARE;
                eSightTask.LastModifyTime     = System.DateTime.Now;
                eSightTask.CreateTime         = System.DateTime.Now;
                int taskId = HWESightTaskDal.Instance.InsertEntity(eSightTask);
                LogUtil.HWLogger.API.InfoFormat("add task:{0}", taskId);
            }
            return(taskName);
        }
        /// <summary>
        /// 上传软件源,直接返回结果。
        /// 不抛出错误
        /// </summary>
        /// <param name="softwareSource">软件源参数</param>
        /// <returns>QueryObjectResult[taskname]</returns>
        public QueryObjectResult <JObject> UploadSoftwareSourceWithResult(SoftwareSource softwareSource)
        {
            StringBuilder sb      = new StringBuilder(ConstMgr.HWESightHost.URL_UPLOADE_SOFTWARESOURCE);
            JObject       jResult = ESSession.HCPost(sb.ToString(), softwareSource); //提交eSight服务器

            CheckAndThrowException(jResult);                                         //检测提交错误。
            HWESightTask eSightTask = HWESightTaskDal.Instance.FindTaskBySourceName(this.ESSession.HWESightHost.ID, softwareSource.SoftwareName);

            if (eSightTask == null)//不是重复任务,创建任务对象。
            {
                eSightTask = new HWESightTask();
            }
            else//重复的任务。
            {
                LogUtil.HWLogger.API.WarnFormat("Find same source in the database, the data will be overwite=[{0}]", softwareSource.SoftwareName);
            }
            string taskName = "";                                                                              //eSight返回的任务名。
            QueryObjectResult <JObject> queryObjectResult = jResult.ToObject <QueryObjectResult <JObject> >(); //转换Json对象为期待的序列化对象。

            if (queryObjectResult.Code == 0)                                                                   //成功
            {
                taskName = JsonUtil.GetJObjectPropVal <string>(queryObjectResult.Data, "taskName");
                //Save to database.
                eSightTask.HWESightHostID     = this.ESSession.HWESightHost.ID;
                eSightTask.TaskName           = taskName;
                eSightTask.SoftWareSourceName = softwareSource.SoftwareName;
                eSightTask.TaskStatus         = ConstMgr.HWESightTask.TASK_STATUS_RUNNING;//初始化。
                eSightTask.TaskProgress       = 0;
                eSightTask.TaskResult         = "";
                eSightTask.ErrorDetail        = "";
                eSightTask.SyncStatus         = ConstMgr.HWESightTask.SYNC_STATUS_CREATED;
                eSightTask.TaskType           = ConstMgr.HWESightTask.TASK_TYPE_SOFTWARE;
                eSightTask.LastModifyTime     = System.DateTime.Now;
                eSightTask.CreateTime         = System.DateTime.Now;
                int taskId = HWESightTaskDal.Instance.InsertEntity(eSightTask);
                LogUtil.HWLogger.API.InfoFormat("Add task:{0}", taskId);
            }
            return(queryObjectResult);
        }
        public DeployPackageTaskDetail QueryDeployTaskProcess(string taskName)
        {
            StringBuilder sb = new StringBuilder(ConstMgr.HWESightHost.URL_TASK_PROGRESS_BASEPACKAGE);

            sb.Append("?taskName=").Append(HttpUtility.UrlEncode(taskName, Encoding.UTF8));
            JObject jResult = ESSession.HCGet(sb.ToString());

            CheckAndThrowException(jResult);
            QueryObjectResult <DeployPackageTaskDetail> queryObjectResult = jResult.ToObject <QueryObjectResult <DeployPackageTaskDetail> >();
            //sync to the database.
            HWESightTask hwtask = HWESightTaskDal.Instance.FindTaskByName(this.ESSession.HWESightHost.ID, taskName);

            if (hwtask == null)
            {
                throw new BasePackageExpceion(ConstMgr.ErrorCode.DB_NOTFOUND, this, string.Format("Find task failed, system can't find this task.[{0}]", taskName));
            }
            else
            {
                SaveDeployProgressToDB(queryObjectResult, taskName);
            }
            return(queryObjectResult.Data);
        }
        public QueryObjectResult <BasePackageDetail> QueryBasePackageDetail(string basepackageName)
        {
            StringBuilder sb         = new StringBuilder(ConstMgr.HWESightHost.URL_DETAIL_BASEPACKAGE);
            StringBuilder paramBuild = new StringBuilder();

            if (!string.IsNullOrEmpty(basepackageName))
            {
                //if (paramBuild.Length > 0) paramBuild.Append("&");
                paramBuild.Append("basepackageName=").Append(HttpUtility.UrlEncode(basepackageName, Encoding.UTF8));
            }
            if (paramBuild.Length > 0)
            {
                sb.Append("?").Append(paramBuild.ToString());
            }

            JObject jResult = ESSession.HCGet(sb.ToString());

            CheckAndThrowException(jResult);
            QueryObjectResult <BasePackageDetail> queryObjectResult = jResult.ToObject <QueryObjectResult <BasePackageDetail> >();

            return(queryObjectResult);
        }
        /// <summary>
        /// 加载固件升级包明细列表
        /// </summary>
        private ApiResult <BasePackageDetail> GetFirmwareDetails(object eventData)
        {
            var ret = new ApiResult <BasePackageDetail>(false, ConstMgr.ErrorCode.SYS_UNKNOWN_ERR, "", "", null);

            try
            {
                //1. 解析js传过来的参数
                var jsData            = JsonUtil.SerializeObject(eventData);
                var webOneESightParam = JsonUtil.DeserializeObject <WebOneESightParam <ParamOfQueryBasePackageDetail> >(jsData);
                LogUtil.HWLogger.UI.InfoFormat("Querying basepackage detail, the param is: [{0}] [{1}]", webOneESightParam.ESightIP, webOneESightParam.Param.BasepackageName);
                //2. 根据HostIP获取IESSession
                IESSession esSession = ESSessionHelper.GetESSession(webOneESightParam.ESightIP);
                //3. 获取固件升级包明细数据
                QueryObjectResult <BasePackageDetail> basePackageDetail = esSession.BasePackageWorker.QueryBasePackageDetail(webOneESightParam.Param.BasepackageName);
                //4. 组织数据
                ret.Code    = basePackageDetail.Code.ToString();
                ret.Success = basePackageDetail.Code == 0 ? true : false;
                ret.Data    = basePackageDetail.Data;
                LogUtil.HWLogger.UI.InfoFormat("Querying basepackage detail successful, the ret is: [{0}]", JsonUtil.SerializeObject(ret));
            }
            catch (BaseException ex)
            {
                ret.Code         = string.Format("{0}{1}", ex.ErrorModel, ex.Code);
                ret.Success      = false;
                ret.ExceptionMsg = ex.Message;
                ret.Data         = null;
                LogUtil.HWLogger.UI.Error("Querying basepackage detail failed: ", ex);
            }
            catch (Exception ex)
            {
                ret.Code         = ConstMgr.ErrorCode.SYS_UNKNOWN_ERR;
                ret.Success      = false;
                ret.ExceptionMsg = ex.InnerException.Message ?? ex.Message;
                ret.Data         = null;
                LogUtil.HWLogger.UI.Error("Querying basepackage detail failed: ", ex);
            }
            return(ret);
        }
        private void SaveUploadProgressToDB(QueryObjectResult <BasePackageProgress> queryObjectResult, string taskName)
        {
            //sync to the database.
            BasePackageProgress basePackageProgess = queryObjectResult.Data;
            HWESightTask        hwtask             = HWESightTaskDal.Instance.FindTaskByName(this.ESSession.HWESightHost.ID, taskName);

            if (hwtask == null)
            {
                throw new BasePackageExpceion(ConstMgr.ErrorCode.DB_NOTFOUND, this, string.Format("Find upload package progress filed: System can not find this task in the database[{0}]", taskName));
            }
            else
            {
                hwtask.TaskStatus   = basePackageProgess.TaskStatus;
                hwtask.TaskProgress = basePackageProgess.TaskProgress;
                hwtask.TaskResult   = basePackageProgess.TaskResult;
                hwtask.TaskCode     = (!string.IsNullOrEmpty(basePackageProgess.TaskCode) && !string.Equals(basePackageProgess.TaskCode, "0"))?
                                      (errorPix + basePackageProgess.TaskCode):basePackageProgess.TaskCode;
                hwtask.ErrorDetail    = basePackageProgess.ErrorDetail;
                hwtask.SyncStatus     = GetTaskStatus(hwtask.SyncStatus, basePackageProgess.TaskStatus, basePackageProgess.TaskResult);
                hwtask.LastModifyTime = System.DateTime.Now;
                HWESightTaskDal.Instance.UpdateEntity(hwtask);
            }
        }
        /// <summary>
        /// 查询部署任务状态,从eSight
        /// </summary>
        /// <param name="taskName">任务名称</param>
        /// <returns>部署任务明细对象</returns>
        private DeployProgress QueryDeployProcess(string taskName)
        {
            StringBuilder sb = new StringBuilder(ConstMgr.HWESightHost.URL_PROGRESS_DEPLOY);

            sb.Append("?taskName=").Append(HttpUtility.UrlEncode(taskName, Encoding.UTF8));
            JObject jResult = ESSession.HCGet(sb.ToString());

            CheckAndThrowException(jResult);
            QueryObjectResult <DeployProgress> queryObjectResult = jResult.ToObject <QueryObjectResult <DeployProgress> >(new JsonSerializer {
                NullValueHandling = NullValueHandling.Ignore
            });
            //sync to the database.
            HWESightTask hwtask = HWESightTaskDal.Instance.FindTaskByName(this.ESSession.HWESightHost.ID, taskName);

            if (hwtask == null)//在数据库中没有找到,抛出错误。
            {
                throw new DeployException(ConstMgr.ErrorCode.DB_NOTFOUND, this, string.Format("Query the deployWork failed:System can not find this task in db.[{0}]", taskName));
            }
            else
            {
                SaveTaskProgressToDB(queryObjectResult, taskName);
            }
            return(queryObjectResult.Data);
        }
        public void UploadSoftwareSourceJsonTest()
        {
            _esSession.Open();
            SoftwareSource softwareSource = new SoftwareSource();

            softwareSource.SoftwareName        = "OS_Software1";
            softwareSource.SoftwareDescription = "“This is a OS template.";
            softwareSource.SoftwareType        = "Windows";
            softwareSource.SoftwareVersion     = "Windows Server 2008 R2 x64";
            softwareSource.SoftwareLanguage    = "Chinese";
            softwareSource.SourceName          = "7601.17514.101119 - 1850_x64fre_server_eval_en - us - GRMSXEVAL_EN_DVD.iso";
            softwareSource.SftpserverIP        = "188.10.18.188";
            softwareSource.SftpUserName        = "******";
            softwareSource.SftpPassword        = "******";
            string taskName = _esSession.SoftSourceWorker.UploadSoftwareSource(softwareSource);
            WebMutilESightsParam <SoftwareSource> postESightParam = new WebMutilESightsParam <SoftwareSource>();

            postESightParam.ESights = new List <string>()
            {
                "127.0.0.1"
            };
            postESightParam.Data = softwareSource;
            Console.WriteLine(taskName);

            LogUtil.HWLogger.API.Info("UploadSoftwareSourceJsonTest Params:" + JsonUtil.SerializeObject(postESightParam));
            JObject taskObject = new JObject();

            taskObject.Add("taskName", taskName);
            QueryObjectResult <JObject> taskResult = new QueryObjectResult <JObject>();

            taskResult.Data = taskObject;

            LogUtil.HWLogger.API.Info("UploadSoftwareSourceJsonTest Result:" + JsonUtil.SerializeObject(taskResult));

            Assert.IsTrue(!string.IsNullOrEmpty(taskName));
        }