/// <summary> /// Update a telegraf config. /// </summary> /// <param name="telegrafId">ID of telegraf config</param> /// <param name="telegrafRequest">telegraf config update to apply</param> /// <returns>An updated telegraf</returns> public async Task <Telegraf> UpdateTelegrafAsync(string telegrafId, TelegrafRequest telegrafRequest) { Arguments.CheckNonEmptyString(telegrafId, nameof(telegrafId)); Arguments.CheckNotNull(telegrafRequest, nameof(telegrafRequest)); return(await _service.PutTelegrafsIDAsync(telegrafId, telegrafRequest)); }
/// <summary> /// Create a telegraf config. /// </summary> /// <param name="name">Telegraf Configuration Name</param> /// <param name="description">Telegraf Configuration Description</param> /// <param name="orgId">The organization that owns this config</param> /// <param name="config">ConfigTOML contains the raw toml config</param> /// <param name="metadata">Metadata for the config</param> /// <returns>Telegraf config created</returns> public async Task <Telegraf> CreateTelegrafAsync(string name, string description, string orgId, string config, TelegrafRequestMetadata metadata) { var request = new TelegrafRequest(name, description, metadata, config, orgId); return(await CreateTelegrafAsync(request)); }
/// <summary> /// Clone a telegraf config. /// </summary> /// <param name="clonedName">name of cloned telegraf config</param> /// <param name="telegraf">telegraf config to clone></param> /// <returns>cloned telegraf config</returns> public async Task <Telegraf> CloneTelegrafAsync(string clonedName, Telegraf telegraf) { Arguments.CheckNonEmptyString(clonedName, nameof(clonedName)); Arguments.CheckNotNull(telegraf, nameof(telegraf)); var cloned = new TelegrafRequest(clonedName, telegraf.Description, telegraf.Metadata, telegraf.Config, telegraf.OrgID); return(await CreateTelegrafAsync(cloned).ContinueWith(created => { // // Add labels // return GetLabelsAsync(telegraf) .ContinueWith(labels => { return labels.Result.Select(label => AddLabelAsync(label, created.Result)); }) .ContinueWith(async tasks => { await Task.WhenAll(tasks.Result); return created.Result; }) .Unwrap(); }).Unwrap()); }
/// <summary> /// Update a telegraf config. /// </summary> /// <param name="telegraf">telegraf config update to apply</param> /// <returns>An updated telegraf</returns> public Task<Telegraf> UpdateTelegrafAsync(Telegraf telegraf) { Arguments.CheckNotNull(telegraf, nameof(telegraf)); var request = new TelegrafRequest(telegraf.Name, telegraf.Description, telegraf.Metadata, telegraf.Config, telegraf.OrgID); return UpdateTelegrafAsync(telegraf.Id, request); }
/// <summary> /// Update a telegraf config. /// </summary> /// <param name="telegraf">telegraf config update to apply</param> /// <returns>An updated telegraf</returns> public async Task <Telegraf> UpdateTelegraf(Telegraf telegraf) { Arguments.CheckNotNull(telegraf, nameof(telegraf)); var request = new TelegrafRequest(telegraf.Name, telegraf.Description, telegraf.Agent, telegraf.Plugins, telegraf.OrgID); return(await UpdateTelegraf(telegraf.Id, request)); }
/// <summary> /// Create a telegraf config. /// </summary> /// <param name="name">Telegraf Configuration Name</param> /// <param name="description">Telegraf Configuration Description</param> /// <param name="orgId">The ID of the organization that owns this config</param> /// <param name="collectionInterval">Default data collection interval for all inputs in milliseconds</param> /// <param name="plugins">The telegraf plugins config</param> /// <returns>Telegraf config created</returns> public async Task <Telegraf> CreateTelegraf(string name, string description, string orgId, int collectionInterval, List <TelegrafRequestPlugin> plugins) { Arguments.CheckNonEmptyString(name, nameof(name)); Arguments.CheckNonEmptyString(orgId, nameof(orgId)); Arguments.CheckPositiveNumber(collectionInterval, nameof(collectionInterval)); var request = new TelegrafRequest(name, description, new TelegrafRequestAgent(collectionInterval), plugins, orgId); return(await CreateTelegraf(request)); }
/// <summary> /// Clone a telegraf config. /// </summary> /// <param name="clonedName">name of cloned telegraf config</param> /// <param name="telegraf">telegraf config to clone></param> /// <returns>cloned telegraf config</returns> public async Task<Telegraf> CloneTelegrafAsync(string clonedName, Telegraf telegraf) { Arguments.CheckNonEmptyString(clonedName, nameof(clonedName)); Arguments.CheckNotNull(telegraf, nameof(telegraf)); var cloned = new TelegrafRequest(clonedName, telegraf.Description, telegraf.Metadata, telegraf.Config, telegraf.OrgID); var created = await CreateTelegrafAsync(cloned).ConfigureAwait(false); var labels = await GetLabelsAsync(telegraf).ConfigureAwait(false); foreach (var label in labels) { await AddLabelAsync(label, created).ConfigureAwait(false); } return created; }
/// <summary> /// Create a telegraf config. /// </summary> /// <param name="name">Telegraf Configuration Name</param> /// <param name="description">Telegraf Configuration Description</param> /// <param name="orgId">The organization that owns this config</param> /// <param name="agentConfiguration">The telegraf agent config</param> /// <param name="plugins">The telegraf plugins config</param> /// <returns>Telegraf config created</returns> public Task<Telegraf> CreateTelegrafAsync(string name, string description, string orgId, Dictionary<string, object> agentConfiguration, List<TelegrafPlugin> plugins) { var config = new StringBuilder(); // append agent configuration config.Append("[agent]").Append("\n"); foreach (var pair in agentConfiguration) { AppendConfiguration(config, pair.Key, pair.Value); } config.Append("\n"); // append plugins configuration foreach (var plugin in plugins) { if (!string.IsNullOrEmpty(plugin.Description)) { config.Append("#").Append(plugin.Description).Append("\n"); } config .Append("[[") .Append(plugin.Type.ToString().ToLower()) .Append(".") .Append(plugin.Name) .Append("]]") .Append("\n"); foreach (var pair in plugin.Config) { AppendConfiguration(config, pair.Key, pair.Value); } config.Append("\n"); } var request = new TelegrafRequest(name: name, description: description, orgID: orgId, config: config.ToString()); return CreateTelegrafAsync(request); }
/// <summary> /// Create a telegraf config. /// </summary> /// <param name="telegrafRequest">Telegraf Configuration to create</param> /// <returns>Telegraf config created</returns> public Task<Telegraf> CreateTelegrafAsync(TelegrafRequest telegrafRequest) { Arguments.CheckNotNull(telegrafRequest, nameof(telegrafRequest)); return _service.PostTelegrafsAsync(telegrafRequest); }