/// <summary> /// Deploys the supplied resource and waits. /// </summary> /// <param name="resourceDefinition">The resource definition.</param> /// <returns>The async <see cref="Task"/>.</returns> public async Task <ResourceLog> DeployAndWait(JObject resourceDefinition) { var response = new ResourceLog() { ResourceId = _resourceId, ResourceType = _resourceType }; try { if (_resourceApi.ListUrl != null) { var ids = GetResourceIdentifiers(resourceDefinition); var existingResourceDetails = (await GetResourceByIdentifiers(ids)).SingleOrDefault(); if (existingResourceDetails != null) { if (_resourceApi.EditUrl == null) { _logProvider.LogMessage($"Resource '{_resourceId}' already exists and cannot be updated. Using existing resource even if its definition doesn't match the template."); response.Details = existingResourceDetails; response.CaasId = response.Details["id"].Value <string>(); response.DeploymentStatus = ResourceLogStatus.UsedExisting; return(response); } else { var existingId = existingResourceDetails["id"].Value <string>(); await UpdateExistingResource(existingId, resourceDefinition); response.Details = await Get(existingId); response.CaasId = response.Details["id"].Value <string>(); response.DeploymentStatus = ResourceLogStatus.Updated; return(response); } } } var id = await DeployNewResource(resourceDefinition); response.Details = await WaitForDeploy(id); response.CaasId = response.Details["id"].Value <string>(); response.DeploymentStatus = ResourceLogStatus.Deployed; return(response); } catch (CaasException ex) { _logProvider.LogError(ex.Message); response.DeploymentStatus = ResourceLogStatus.Failed; response.Error = new Error { Message = ex.Message, Operation = ex.Operation, ResponseCode = ex.ResponseCode }; return(response); } }
/// <summary> /// Deletes a resource by CaaS identifier and waits. /// </summary> /// <param name="caasId">The CaaS identifier.</param> /// <returns>The async <see cref="Task"/>.</returns> public async Task <ResourceLog> DeleteAndWait(string caasId) { var response = new ResourceLog { CaasId = caasId, ResourceId = _resourceId, ResourceType = _resourceType, DeploymentStatus = ResourceLogStatus.Deleted }; try { bool wait = await DeleteExistingResource(caasId); if (wait) { await WaitForDelete(caasId); } } catch (CaasException ex) { _logProvider.LogError(ex.Message); response.DeploymentStatus = ResourceLogStatus.Failed; response.Error = new Error { Message = ex.Message, Operation = ex.Operation, ResponseCode = ex.ResponseCode }; } return(response); }
/// <summary> /// Initializes a new instance of the <see cref="DeleteResourceTask"/> class. /// </summary> /// <param name="resourceLog">The resource log to delete.</param> public DeleteResourceTask(ResourceLog resourceLog) { if (resourceLog == null) { throw new ArgumentNullException(nameof(resourceLog)); } ResourceLog = resourceLog; }
public void AddItem_Adds1ItemWhen2OnlyDifferByCase_WhenCaseInsensitive() { var log = new ResourceLog(); var urlA = new Uri2("http://www.foo.com/page.html"); var urlB = new Uri2("http://www.foo.com/Page.html"); log.AddItem(urlA); log.AddItem(urlB); Assert.AreEqual(1, log.ItemCount); }
public void AddItem_AddsTheItemToTheLog_WhenCalled() { var log = new ResourceLog(); log.CaseSensitive = true; var url = new Uri2("http://www.foo.com/Page.html"); log.AddItem(url); Assert.AreEqual(1, log.ItemCount); }
private ResourceLog GetLog(string alias) { ResourceLog log = logRepository.Get(alias); var newLog = new ResourceLog { ActionType = ActionTypes.Delete, UserId = memberService.GetCurrentUser().MemberId, PreviousLogId = log.Id }; return(newLog); }
public void AddItem_Adds2ItemsThatOnlyDifferByCase_WhenCaseSensitive() { var log = new ResourceLog(); log.CaseSensitive = true; var urlA = new Uri2("http://www.foo.com/page.html"); var urlB = new Uri2("http://www.foo.com/Page.html"); log.AddItem(urlA); log.AddItem(urlB); Assert.AreEqual(2, log.ItemCount); }
private ResourceLog GetLog(Resource resource) { IMemberModel currentUser = memberService.GetCurrentUser(); ResourceLog previousLog = logRepository.Get(resource.Alias); var log = new ResourceLog { UserId = currentUser.MemberId, Resource = resource, PreviousLogId = previousLog?.Id ?? Guid.Empty, ActionType = previousLog == null ? ActionTypes.Create : ActionTypes.Modify }; return(log); }
public void Save(ResourceLog entity) { logCollection.InsertOne(entity); }
public void PendingCount_EqualsZero_WhenNoItems() { var log = new ResourceLog(); Assert.IsTrue(log.PendingCount == 0); }