/// <summary> /// Create deployment /// </summary> /// <param name="factory"></param> /// <param name="deviceId"></param> /// <param name="configuration"></param> public EdgeDeviceDeployment(EdgeDeploymentFactory factory, string deviceId, ConfigurationContentModel configuration) : base(configuration) { _deviceId = deviceId ?? throw new ArgumentNullException(nameof(deviceId)); _factory = factory ?? throw new ArgumentNullException(nameof(factory)); }
/// <summary> /// Create new deployment /// </summary> /// <param name="configuration"></param> internal EdgeDeploymentBase(ConfigurationContentModel configuration) { if (configuration == null) { // Create default configuration _configuration = new ConfigurationContentModel(); _edgeAgent = new EdgeAgentConfigurationModel { SchemaVersion = kDefaultSchemaVersion, Modules = new Dictionary <string, EdgeAgentModuleModel>(), Runtime = new EdgeAgentRuntimeModel { Settings = new EdgeAgentRuntimeSettingsModel() } }; _edgeHub = new EdgeHubConfigurationModel { SchemaVersion = kDefaultSchemaVersion, Routes = new Dictionary <string, string> { [kDefaultRouteName] = kDefaultRoute }, StorageConfig = new EdgeHubStoreAndForwardModel { TimeToLiveSecs = 7200 } }; _configuration.AddModulesContent(_edgeAgent); _configuration.AddModulesContent(_edgeHub); } else { // Use provided configuration _configuration = configuration; _edgeAgent = _configuration.GetEdgeAgentConfiguration(); _edgeHub = _configuration.GetEdgeHubConfiguration(); } }
/// <inheritdoc/> public async Task ApplyConfigurationAsync(string deviceId, ConfigurationContentModel configuration, CancellationToken ct) { try { await _registry.ApplyConfigurationContentOnDeviceAsync(deviceId, configuration.ToContent(), ct); } catch (Exception e) { _logger.Verbose(e, "Apply configuration failed "); throw e.Rethrow(); } }
/// <inheritdoc/> public async Task ApplyConfigurationAsync(string deviceId, ConfigurationContentModel configuration) { try { await _registry.ApplyConfigurationContentOnDeviceAsync(deviceId, configuration.ToContent()); } catch (Exception e) { _logger.Debug(e, "Apply configuration failed "); throw e.Rethrow(); } }
/// <inheritdoc/> public Task ApplyConfigurationAsync(string deviceId, ConfigurationContentModel configuration, CancellationToken ct) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } if (string.IsNullOrEmpty(deviceId)) { throw new ArgumentNullException(nameof(deviceId)); } return(Retry.WithExponentialBackoff(_logger, ct, async() => { var request = NewRequest( $"/devices/{ToResourceId(deviceId, null)}/applyConfigurationContent"); request.SetContent(configuration); var response = await _httpClient.PostAsync(request, ct); response.Validate(); }, kMaxRetryCount)); }
/// <summary> /// Create deployment /// </summary> /// <param name="factory"></param> /// <param name="name"></param> /// <param name="condition"></param> /// <param name="priority"></param> /// <param name="configuration"></param> public EdgeFleetDeployment(EdgeDeploymentFactory factory, string name, string condition, int priority, ConfigurationContentModel configuration) : base(configuration) { if (string.IsNullOrEmpty(condition)) { throw new ArgumentNullException(nameof(condition)); } if (string.IsNullOrEmpty(name)) { throw new ArgumentNullException(nameof(name)); } _factory = factory ?? throw new ArgumentNullException(nameof(factory)); _model = new ConfigurationModel { SchemaVersion = kDefaultSchemaVersion, Id = name, Content = _configuration, TargetCondition = condition, Priority = priority }; }
public Task ApplyConfigurationAsync(string deviceId, ConfigurationContentModel configuration, CancellationToken ct = default) { return(Task.CompletedTask); }
/// <inheritdoc/> public IEdgeDeployment Create(string name, string condition, int priority, ConfigurationContentModel configuration) { return(new EdgeFleetDeployment(this, name, condition, priority, configuration)); }
/// <inheritdoc/> public IEdgeDeployment Create(string deviceId, ConfigurationContentModel configuration) { return(new EdgeDeviceDeployment(this, deviceId, configuration)); }