func createTemplateCtx(meta *metadata.Client) (interface{}, error) { services, err := meta.GetServices() if err != nil { return nil, errors.Annotate(err, "get services") } containers, err := meta.GetContainers() if err != nil { return nil, errors.Annotate(err, "get containers") } containersW := make([]ContainerWrap, 0) for _, container := range containers { cw := ContainerWrap{container} containersW = append(containersW, cw) } servicesW := make([]ServiceWrap, 0) for _, service := range services { sw := ServiceWrap{service} servicesW = append(servicesW, sw) } ctx := map[string]interface{}{ "Services": servicesW, "Containers": containersW, } return ctx, nil }
func getContainersDnsRecords(m *metadata.Client, dnsEntries map[string]providers.DnsRecord, serviceName string, stackName string) error { containers, err := m.GetContainers() if err != nil { return err } for _, container := range containers { if len(container.ServiceName) == 0 { continue } if len(serviceName) != 0 { if serviceName != container.ServiceName { continue } if stackName != container.StackName { continue } } if len(container.Ports) == 0 { continue } hostUUID := container.HostUUID if len(hostUUID) == 0 { logrus.Debugf("Container's %v host_uuid is empty", container.Name) continue } host, err := m.GetHost(hostUUID) if err != nil { logrus.Infof("%v", err) continue } ip := host.AgentIP domainNameEntries := []string{container.ServiceName, container.StackName, EnvironmentName, providers.RootDomainName} domainName := strings.ToLower(strings.Join(domainNameEntries, ".")) records := []string{ip} dnsEntry := providers.DnsRecord{domainName, records, "A", 300} addToDnsEntries(dnsEntry, dnsEntries) } return nil }