public async Task<Job> StartJob(Job j) { var jobId = Guid.NewGuid(); return await SendAsync<Job>(_tenantId, Parameters.AUTOMATION_API_VERSION, $"jobs/{jobId}", Method.PUT, j); }
public AutomationClient.Models.Job CreateStartRunbookJob(Guid activityId) { var activityObj = GetActivityObject(activityId); EnterpriseManagementObject parentWorkItem = null; object relatedItems = null; object affectedItems = null; var parameters = ParameterMappings.CreateFromString(activityObj[ActivityClass, "ParameterMappings"].Value.ToString()); var job = new AutomationClient.Models.Job(); job.Properties.Runbook.Name = activityObj[ActivityClass, "RunbookName"].Value.ToString(); var runOn = activityObj[ActivityClass, "RunOn"].Value.ToString(); if (runOn.ToLower() == "azure") runOn = null; job.Properties.RunOn = runOn; foreach (var p in parameters) { bool mustSerialize = false; object value = null; if (string.IsNullOrEmpty(p.PropertyMapping)) continue; var arr = p.PropertyMapping.Split(':'); var propType = (PropertyDefinitionType)Enum.Parse(typeof(PropertyDefinitionType), arr[0]); switch (propType) { case PropertyDefinitionType.Property: case PropertyDefinitionType.EnumDisplayName: case PropertyDefinitionType.EnumName: var propId = new Guid(arr[1]); var prop = activityObj[propId]; if (prop.Value != null) { value = prop.Value; if (propType == PropertyDefinitionType.EnumName) value = ((ManagementPackEnumeration)prop.Value).Name; else if (propType == PropertyDefinitionType.EnumDisplayName) value = ((ManagementPackEnumeration)prop.Value).DisplayName; } break; case PropertyDefinitionType.AffectedItems: case PropertyDefinitionType.ReletedItems: case PropertyDefinitionType.ParentWorkItemGuid: case PropertyDefinitionType.ParentWorkItemId: if (parentWorkItem == null) parentWorkItem = GetActivityParentObject(activityObj.Id); if (propType == PropertyDefinitionType.ParentWorkItemGuid) value = parentWorkItem.Id; else if (propType == PropertyDefinitionType.ParentWorkItemId) value = parentWorkItem[WorkItemClass, "Id"].Value; else if (propType == PropertyDefinitionType.AffectedItems) { if (affectedItems == null) affectedItems = GetRelatedObjects(parentWorkItem.Id, AffectedItemRelationship); value = affectedItems; } else if (propType == PropertyDefinitionType.ReletedItems) { if (relatedItems == null) relatedItems = GetRelatedObjects(parentWorkItem.Id, RelatedItemRelationship); value = relatedItems; //get related mustSerialize = true; } break; case PropertyDefinitionType.ActivityGuid: value = activityObj.Id; break; case PropertyDefinitionType.ActivityId: value = activityObj[WorkItemClass, "Id"].Value; break; } if (value is bool) value = ((bool)value) ? "true" : "false"; if (value is Guid) mustSerialize = true; if (p.Type.EndsWith("[]")) //move this elsewere { mustSerialize = true; if (!(value is IEnumerable)) value = new object[] { value }; } if (mustSerialize) value = Serializer.ToJson(value); //mustSerialize to JSON job.Properties.Parameters.Add(p.Name, value); } return job; }