public static object Resolve(SecretStore secrets, Service service, Resource resource) { Func<ResourceResolutionContext, object> resolver; if (!Resolvers.TryGetValue(resource.Type, out resolver)) { return String.Empty; } return resolver(new ResourceResolutionContext(secrets, service, resource)) ?? String.Empty; }
public ConfigTemplateModel(SecretStore secrets, Service service) { Resources = new ConfigObject( service .Datacenter .Resources .GroupBy(r => r.Type) .ToDictionary(g => g.Key, g => (object)g.ToDictionary(r => r.Name, r => ResolveValue(secrets, service, r)))); Service = service; Services = new ConfigObject( service .Datacenter .Services .ToDictionary(s => s.Name, s => (object)new ServiceModel(s, secrets))); }
public ServiceModel(Service service, SecretStore secrets) { _service = service; _secrets = secrets; _attributes = new ConfigObject(service.Attributes.ToDictionary(p => p.Key, p => (object)p.Value)); }
public ResourceResolutionContext(SecretStore secrets, Service service, Resource resource) { Secrets = secrets; Service = service; Resource = resource; }
protected virtual async Task<Secret> ReadSecretAndFollowLinks(string key, int? datacenter, SecretStore store) { var secret = await store.Read(key, datacenter, "nucmd get"); while (secret != null && secret.Type == SecretType.Link) { // Follow link var link = SecretName.Parse(secret.Value); await Console.WriteInfoLine(Strings.Secrets_FollowingLink, link.Name); secret = await store.Read( link, String.Format(CultureInfo.InvariantCulture, "nucmd get (link from {0})", secret.Name)); } return secret; }
private object ResolveValue(SecretStore secrets, Service service, Resource r) { // Simpler to just to sync here. return ResourceResolver.Resolve(secrets, service, r); }