public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { RestClient rc = ScribeUtility.Initialize(request.DataStore.GetValue("ScribeUsername"), request.DataStore.GetValue("ScribePassword")); string orgId = request.DataStore.GetValue("ScribeOrganizationId"); ScribeSolution solution = new ScribeSolution { Name = ScribeUtility.BPST_SOLUTION_NAME, Description = string.Empty, SolutionType = "Replication", ReplicationSettings = new ScribeReplicationSettings(request.DataStore.GetValue("Entities").Split(new[] { ',', ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries)), ConnectionIdForSource = await GetConnectionId(rc, orgId, ScribeUtility.BPST_SOURCE_NAME), ConnectionIdForTarget = await GetConnectionId(rc, orgId, ScribeUtility.BPST_TARGET_NAME), AgentId = await GetAgentId(rc, orgId, request.DataStore.GetValue("ScribeAgentName")) }; string response = await rc.Post(string.Format(CultureInfo.InvariantCulture, URL_SOLUTIONS, orgId), JsonConvert.SerializeObject(solution)); ScribeSolution result = JsonConvert.DeserializeObject <ScribeSolution>(response); ScribeSolutionSchedule schedule = new ScribeSolutionSchedule("Daily"); await rc.Put(string.Format(CultureInfo.InvariantCulture, URL_SOLUTION_SCHEDULE, orgId, result.Id), JsonConvert.SerializeObject(schedule)); return(new ActionResponse(ActionStatus.Success, JsonUtility.GetEmptyJObject())); }
public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { RestClient rc = ScribeUtility.Initialize(request.DataStore.GetValue("ScribeUsername"), request.DataStore.GetValue("ScribePassword")); string orgId = request.DataStore.GetValue("ScribeOrganizationId"); Thread.Sleep(SOLUTION_STATUS_WAIT); string solutionId = await ScribeUtility.GetSolutionId(rc, orgId, ScribeUtility.BPST_SOLUTION_NAME); ScribeSolution solution = JsonUtility.Deserialize <ScribeSolution>(await rc.Get(string.Format(ScribeUtility.URL_SOLUTION, orgId, solutionId))); string status = solution.status ?? string.Empty; if (status.EqualsIgnoreCase(SOLUTION_STATUS_IDLE_LAST_RUN_FAILED) || status.EqualsIgnoreCase(SOLUTION_STATUS_ON_DEMAND_LAST_RUN_FAILED)) { return(new ActionResponse(ActionStatus.Failure, new ActionResponseExceptionDetail(string.Empty, await GetHistory(rc, orgId, solutionId)))); } else if (status.EqualsIgnoreCase(SOLUTION_STATUS_IDLE) || status.EqualsIgnoreCase(SOLUTION_STATUS_ON_DEMAND)) { return(new ActionResponse(ActionStatus.Success)); } else { return(new ActionResponse(ActionStatus.InProgress)); } }
public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { RestClient rc = ScribeUtility.Initialize(request.DataStore.GetValue("ScribeUsername"), request.DataStore.GetValue("ScribePassword")); string orgId = request.DataStore.GetValue("ScribeOrganizationId"); List <string> entities = JsonUtility.DeserializeEntities(request.DataStore.GetValue("Entities"), request.DataStore.GetValue("AdditionalObjects")); ScribeSolution solution = new ScribeSolution { Name = ScribeUtility.BPST_SOLUTION_NAME, Description = string.Empty, SolutionType = "Replication", ReplicationSettings = new ScribeReplicationSettings(entities.ToArray()), ConnectionIdForSource = await GetConnectionId(rc, orgId, ScribeUtility.BPST_SOURCE_NAME), ConnectionIdForTarget = await GetConnectionId(rc, orgId, ScribeUtility.BPST_TARGET_NAME), AgentId = await GetAgentId(rc, orgId, request.DataStore.GetValue("ScribeAgentName")) }; ScribeSolution result = JsonUtility.Deserialize <ScribeSolution>(await rc.Post(string.Format(ScribeUtility.URL_SOLUTIONS, orgId), JsonUtility.Serialize(solution))); ScribeSolutionSchedule schedule = new ScribeSolutionSchedule(request.DataStore.GetValue("RefreshSchedule")); await rc.Put(string.Format(ScribeUtility.URL_SOLUTION_SCHEDULE, orgId, result.Id), JsonUtility.Serialize(schedule)); return(new ActionResponse(ActionStatus.Success)); }
private async Task <bool> IsSolutionReady(RestClient rc, string orgId, string solutionId) { ScribeSolution solution = JsonUtility.Deserialize <ScribeSolution>(await rc.Get(string.Format(ScribeUtility.URL_SOLUTION, orgId, solutionId))); string status = solution.status ?? string.Empty; return(!status.EqualsIgnoreCase(SOLUTION_STATUS_PREPARING) && !status.EqualsIgnoreCase(SOLUTION_STATUS_PROVISIONING)); }