Skip to content

Commit 6795a50

Browse files
committed
Add availibity to add default attrs
1 parent 4b918ac commit 6795a50

File tree

6 files changed

+15
-3
lines changed

6 files changed

+15
-3
lines changed

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ Guide. Typically, running Registrator looks like this:
4444
Usage of /bin/registrator:
4545
/bin/registrator [options] <registry URI>
4646
47+
-attrs="": Append attrs (ServiceMeta) for all registered services (only for consul)
4748
-cleanup=false: Remove dangling services
4849
-deregister="always": Deregister exited services "always" or "on-success"
4950
-internal=false: Use internal ports instead of published ones
@@ -52,8 +53,8 @@ Usage of /bin/registrator:
5253
-retry-attempts=0: Max retry attempts to establish a connection with the backend. Use -1 for infinite retries
5354
-retry-interval=2000: Interval (in millisecond) between retry-attempts.
5455
-tags="": Append tags for all registered services
55-
-ttl=0: TTL for services (default is no expiry)
5656
-ttl-refresh=0: Frequency with which service TTLs are refreshed
57+
-ttl=0: TTL for services (default is no expiry)
5758
```
5859

5960
## Contributing

bridge/bridge.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ func (b *Bridge) newService(port ServicePort, isgroup bool) *Service {
266266
port.HostIP = b.config.HostIp
267267
}
268268

269-
metadata, metadataFromPort := serviceMetaData(container.Config, port.ExposedPort)
269+
metadata, metadataFromPort := serviceMetaData(container.Config, port.ExposedPort, b.config.ForceAttrs)
270270

271271
ignore := mapDefault(metadata, "ignore", "")
272272
if ignore != "" {

bridge/types.go

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ type Config struct {
2525
Explicit bool
2626
UseIpFromLabel string
2727
ForceTags string
28+
ForceAttrs string
2829
RefreshTtl int
2930
RefreshInterval int
3031
DeregisterCheck string

bridge/util.go

+8-1
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,20 @@ func combineTags(tagParts ...string) []string {
5454
return tags
5555
}
5656

57-
func serviceMetaData(config *dockerapi.Config, port string) (map[string]string, map[string]bool) {
57+
func serviceMetaData(config *dockerapi.Config, port string, default_attrs string) (map[string]string, map[string]bool) {
5858
meta := config.Env
5959
for k, v := range config.Labels {
6060
meta = append(meta, k+"="+v)
6161
}
6262
metadata := make(map[string]string)
6363
metadataFromPort := make(map[string]bool)
64+
65+
for _, kv := range strings.Split(default_attrs, ",") {
66+
kvp := strings.SplitN(kv, "=", 2)
67+
key := strings.ToLower(kvp[0])
68+
metadata[key] = kvp[1]
69+
}
70+
6471
for _, kv := range meta {
6572
kvp := strings.SplitN(kv, "=", 2)
6673
if strings.HasPrefix(kvp[0], "SERVICE_") && len(kvp) > 1 {

docs/user/run.md

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ hostname (`-h $HOSTNAME`) and using the `-ip` Registrator option below.
3333

3434
Option | Since | Description
3535
------ | ----- | -----------
36+
`-attrs <attrs>` | v? | Force comma-separated attrs on all registered services (Consul Only)
3637
`-cleanup` | v7 | Cleanup dangling services
3738
`-deregister <mode>` | v6 | Deregister exited services "always" or "on-success". Default: always
3839
`-internal` | | Use exposed ports instead of published ports

registrator.go

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ var useIpFromLabel = flag.String("useIpFromLabel", "", "Use IP which is stored i
2626
var refreshInterval = flag.Int("ttl-refresh", 0, "Frequency with which service TTLs are refreshed")
2727
var refreshTtl = flag.Int("ttl", 0, "TTL for services (default is no expiry)")
2828
var forceTags = flag.String("tags", "", "Append tags for all registered services")
29+
var forceAttrs = flag.String("attrs", "", "Append attrs (ServiceMeta) for all registered services (only for consul)")
2930
var resyncInterval = flag.Int("resync", 0, "Frequency with which services are resynchronized")
3031
var deregister = flag.String("deregister", "always", "Deregister exited services \"always\" or \"on-success\"")
3132
var retryAttempts = flag.Int("retry-attempts", 0, "Max retry attempts to establish a connection with the backend. Use -1 for infinite retries")
@@ -108,6 +109,7 @@ func main() {
108109
Explicit: *explicit,
109110
UseIpFromLabel: *useIpFromLabel,
110111
ForceTags: *forceTags,
112+
ForceAttrs: *forceAttrs,
111113
RefreshTtl: *refreshTtl,
112114
RefreshInterval: *refreshInterval,
113115
DeregisterCheck: *deregister,

0 commit comments

Comments
 (0)