Sean Chittenden
efe00d2ccd
Update Syncer.Run() to call SyncServices().
2016-06-10 15:54:39 -04:00
Sean Chittenden
83775c5c8b
Add "Service Groups" to the Syncer.
...
Now the right way to register services with the Syncer is to call
`SetServices(groupName, []*services)`. This was required to allow
the Syncer to sync either the Client, Server, or Both using a
single Syncer.
2016-06-10 15:54:39 -04:00
Sean Chittenden
c54539b860
Initialize Consul for the Nomad Agent in a more uniform way.
...
Decompose Client and Server registration into `setupClient()` and
`setupServer()`, respectively.
2016-06-10 15:54:39 -04:00
Sean Chittenden
06e5e615a8
Rename command/agent/consul/sync.go to syncer.go
2016-06-10 15:54:39 -04:00
Sean Chittenden
d307ca2c28
Begin leveraging the Agent-level consul.Syncer
2016-06-10 15:54:39 -04:00
Sean Chittenden
7956eb0c80
Rename structs.Task's Service
attribute to ConsulService
2016-06-10 15:54:39 -04:00
Sean Chittenden
05a2b9528c
Remove Syncer.registerService()
...
This call is obsolete by a future commit that changes the canonical
source of truth to be consul.AgentServiceRegistration structs, which
means it is not necessary to construct AgentServiceRegistration
objects every time a registration is made, we just reuse the existing
object.
2016-06-10 15:54:39 -04:00
Sean Chittenden
8c813630e6
Move package client/consul/sync to command/agent/consul.
...
This has been done to allow the Server and Client to reuse the same
Syncer because the Agent may be running Client, Server, or both
simultaneously and we only want one Syncer object alive in the agent.
2016-06-10 15:54:39 -04:00
Sean Chittenden
6b126ce488
Change the API signature of Syncer.SyncServices().
...
SyncServices() immediately attempts to sync whatever information
the process has with Consul. Previously this method would take an
argument of the exclusive list of services that should exist,
however this is not condusive to having a Nomad Client and Nomad
Server share the same consul.Syncer.
2016-06-10 15:54:39 -04:00
Sean Chittenden
e24de53ead
Refine Nomad's Consul port
handling.
...
Previously this would immediately default to '127.0.0.1' if the
config was set to `:some-port-number`. Now it uses the BindAddr
if available. Also, if the `port` option is set to just a port`
number (e.g. '1234'), attempt to parse the port number by itself
to allow statically configured ports to work, even when no host is
specified.
2016-06-10 15:54:39 -04:00
Sean Chittenden
555f4fe135
Change client/consul.NewSyncer() to accept a shutdown channel
...
In addition to the API changing, consul.Syncer can now be signaled
to shutdown via the Shutdown() method, which will call the Run()'ing
sync task to exit gracefully.
2016-06-10 15:54:39 -04:00
Sean Chittenden
e2a561204a
Fix typo in comment
2016-06-10 15:50:11 -04:00
Sean Chittenden
b199743b8a
Add some trace-level logging for /v1/agent/servers when writing
...
This endpoint shouldn't be hit often, but this could be useful in
logs down the road.
2016-06-10 15:50:11 -04:00
Sean Chittenden
07fa89d2a5
Fix config_parse_test to reflect that consul.addr
does not exist.
...
`consul.address` does, but not `consul.addr`.
2016-06-10 15:50:11 -04:00
Sean Chittenden
7fe1944bc5
Fix tests for client.TestAgent_ServerConfig
...
Add similar logic in Agent `serverConfig()` to set up the
`serverSerfAddr` the same as `serverHttpAddr` and `serverRpcAddr`.
2016-06-10 15:50:11 -04:00
Sean Chittenden
39fb0f2469
Change the endpoint for /v1/agent/servers
and fix tests.
...
When an agent is running a server, the list of servers includes the
Raft peers. When the agent is running a client (which is always the
case?), include a list of the servers found in the Client's RpcProxy.
Dedupe and provide a unique list back to the caller.
2016-06-10 15:50:11 -04:00
Sean Chittenden
cb80e93a6b
Move client.DefaultConfig() to client/config.DefaultConfig()
...
Resolves an import cycle in testing and is more appropriate because
the default should reside next to its struct definition.
2016-06-10 15:50:11 -04:00
Sean Chittenden
b3fd455b1f
Register the serf service with the Nomad server service.
...
This will be unused in this PR.
2016-06-10 15:50:11 -04:00
Sean Chittenden
82d537fbd9
Update the nomad_server_service
default from nomad-server
to just nomad
.
2016-06-10 15:50:11 -04:00
Sean Chittenden
7c3838373b
Create a weak decoder to parse time.Duration.
...
Hat tip to Alex for pointing this out (vs patching mapstructure)
2016-06-10 15:50:11 -04:00
Sean Chittenden
6cd01d7567
Nuke a.consulConfig in favor of a.consul.Config
2016-06-10 15:50:11 -04:00
Sean Chittenden
1fe979a5e4
Remove types.ShutdownChannel and replace with chan struct{}
2016-06-10 15:50:11 -04:00
Sean Chittenden
9fb0104def
Teach Client to reuse an Agent's consulSyncer.
...
"There can be only one."
2016-06-10 15:50:11 -04:00
Sean Chittenden
47891fb559
Register two services each for clients and servers, http and rpc.
...
In order to give clients a fighting chance to talk to the right port,
differentiate RPC services from HTTP services by registering two
services with different tags. This yields
`rpc.nomad-server.service.consul` and
`http.nomad-server.service.consul` which is immensely more useful to
clients attempting to bootstrap their world.
2016-06-10 15:50:11 -04:00
Sean Chittenden
ac7881226c
Advertise the server's RPC endpoint, not its HTTP endpoint.
...
Rename c.serverRpcAddr to serverRpcAddr. This will be broken out
into in additional set of services in a subsequent commit.
2016-06-10 15:50:11 -04:00
Sean Chittenden
410d85cc78
Rename the package from client/rpc_proxy
to client/rpcproxy
...
Also rename `NewRpcProxy()` to just `New()` to avoid package stutter.
2016-06-10 15:50:11 -04:00
Sean Chittenden
10d1b6ba9b
Reduce all forms of ConsulConfig down to a single struct
...
nomad/structs/config/consul.go's ConsulConfig is the canonical definition
for all things Consul now.
2016-06-10 15:50:11 -04:00
Sean Chittenden
520fcb99de
Rename consulConfig to consulAgentConfig
2016-06-10 15:50:11 -04:00
Sean Chittenden
e6c78274c8
Rename client/config/config's ConsulConfig to ConsulAgentConfig
...
A follow up commit to the previous rename. More to come.
2016-06-10 15:50:11 -04:00
Sean Chittenden
e727fd8c3c
Centralize the creation of a consul/api.Config struct.
...
While documented, the consul.timeout parameter wasn't ever set
except one-off in the Consul fingerprinter.
2016-06-10 15:50:11 -04:00
Sean Chittenden
f695d6d70d
Reconcile consul's address configuration section.
...
There were conflicting directives previously, both consul.addr and
consul.address were required to achieve the desired behavior. The
documentation said `consul.address` was the canonical name for the
parameter, so consolidate configuration parameters to `consul.address`.
2016-06-10 15:50:11 -04:00
Sean Chittenden
bd779c3719
Reconcile renamed structures during rebase
2016-06-10 15:50:11 -04:00
Sean Chittenden
882364f4d9
An Agent's consulSyncer is always not nil now.
2016-06-10 15:50:11 -04:00
Sean Chittenden
98cea9ba07
Revise Agent.syncAgentServicesWithConsul()'s interface
...
Reduce down to its lowest common helper function denominator.
2016-06-10 15:50:11 -04:00
Sean Chittenden
b5c70f3729
Alpha sort config keys for Consul
2016-06-10 15:50:11 -04:00
Sean Chittenden
d1442dc317
Reduce all forms of ConsulConfig down to a single struct
...
nomad/structs/config/consul.go's ConsulConfig is the canonical definition
for all things Consul now.
2016-06-10 15:50:11 -04:00
Sean Chittenden
e60580b279
Define a type for the PeriodicCallback handlers and ShutdownChannel
2016-06-10 15:50:11 -04:00
Sean Chittenden
17116fc5a7
Rebalance Nomad client RPCs among different Nomad servers.
...
Implement client/rpc_proxy.RpcProxy.
2016-06-10 15:50:11 -04:00
Sean Chittenden
88f3422d7c
Rename NewConsulService to NewSyncer
2016-06-10 15:49:37 -04:00
Sean Chittenden
b9789e0cf7
Rename client/consul/sync.PeriodicSync to Run
2016-06-10 15:49:37 -04:00
Sean Chittenden
768aab015d
Rename client/consul/sync.ConsulService to client/consul/sync.Syncer
...
Syncer describes the responsibility and actions of the type.
2016-06-10 15:49:37 -04:00
Sean Chittenden
b509da2d0c
Create a nomad/structs/config
to break an import cycle.
...
Flattening and normalizing the various Consul config structures and
services has led to an import cycle. Break this by creating a new package
that is intended to be terminal in the import DAG.
2016-06-10 15:48:36 -04:00
Sean Chittenden
840b49a720
Distill config.Config.ConsulConfig down to config.Config.Consul
...
The enclosed struct provides the necessary context
2016-06-10 15:48:36 -04:00
Sean Chittenden
c7a680c28f
Rename consulConfig to consulAgentConfig
2016-06-10 15:48:36 -04:00
Sean Chittenden
73e173673e
Rename client/config/config's ConsulConfig to ConsulAgentConfig
...
A follow up commit to the previous rename. More to come.
2016-06-10 15:48:36 -04:00
Sean Chittenden
e97652bbfb
Rename consul.ConsulConfig to consul.AgentConfig
...
There were two `ConsulConfig` structs running around, one of them
needed to go away. Rely on the package's path to provide context
for the type of AgentConfig.
2016-06-10 15:48:36 -04:00
Sean Chittenden
e36686a17d
Use consul/lib's RandomStagger
...
Removes four redundant copies of the method in the process.
2016-06-10 15:48:36 -04:00
Jeff Mitchell
b4f25e0b04
Use upstream high-level SCADA provider
2016-06-01 18:25:09 -04:00
Diptanu Choudhury
fd1b0dfd49
Fixed a test
2016-05-31 01:58:32 +02:00
Diptanu Choudhury
f95b1d00c3
Renamed error message in alloc endpoint
2016-05-28 20:03:52 -07:00
Diptanu Choudhury
f0c381e7d7
Added a test for alloc stats api endpoint
2016-05-28 19:59:20 -07:00
Diptanu Choudhury
eb5d831099
Added a test for the clients stats endpoint
2016-05-28 19:59:20 -07:00
Diptanu Choudhury
c0dc6cfbf2
Changing the api of the stats endpoints
2016-05-28 19:59:20 -07:00
Diptanu Choudhury
a0c279f3b2
comments
2016-05-28 19:59:20 -07:00
Diptanu Choudhury
a64062d6a6
Fixed the compilation on linux
2016-05-28 19:59:20 -07:00
Diptanu Choudhury
0b0d0764e4
Changed signature of Allocation Stats Reporter
2016-05-28 19:59:20 -07:00
Diptanu Choudhury
c46400597e
Making the stats collection interval and number of data points to keep in memory configurable
2016-05-28 19:59:20 -07:00
Diptanu Choudhury
464812ea3b
Changed the stats endpoints
2016-05-28 19:59:20 -07:00
Diptanu Choudhury
63166d0e46
Adding a query param to return time series of stats
2016-05-28 19:42:34 -07:00
Diptanu Choudhury
9a96dddc07
Added some docs to resource stats endpoint
2016-05-28 19:42:34 -07:00
Diptanu Choudhury
7569b1af2e
Collecting host stats
2016-05-28 19:42:34 -07:00
Diptanu Choudhury
f3d0aecafe
Reporting time series of stats
2016-05-28 19:42:34 -07:00
Diptanu Choudhury
0fb0e0237f
Added a client API to display resource usage of an allocation
2016-05-28 19:42:34 -07:00
Diptanu Choudhury
bf5b78b77e
Added a test for generation of the server addr
2016-05-24 21:29:13 -07:00
Diptanu Choudhury
227477533c
Using the bind addr as server's IP if advertise addr and addresses.HTTP is not specified
2016-05-24 17:27:09 -07:00
Alex Dadgar
2a4d5f0ef9
Compress HTTP API responses and have the api client utilize this
2016-05-24 10:26:53 -07:00
Alex Dadgar
120ff47cd1
Merge pull request #1182 from hashicorp/f-json-encoder
...
Use codegen for json marshalling
2016-05-20 14:30:25 -07:00
Alex Dadgar
636f886e30
Use codegen for json marshalling: 20% faster, 12% less bytes allocated, 85% less allocations
2016-05-18 09:45:46 -07:00
Diptanu Choudhury
bf27cc1261
Merge pull request #1174 from hashicorp/f-config-consul-block
...
Using the auto-register flag
2016-05-18 04:16:38 +02:00
Dara Kong
9b2b39c7d6
Fix "http_api_response_headers" config not working
...
On startup, the agent starts with either a dev or default config. Extra
config files are merged into final config.
The HTTPAPIResponseHeaders config was missing from the merge logic
therefore it would always result in empty value (regardlesss of any
config files specified).
2016-05-16 20:57:54 -07:00
Alex Dadgar
a5ab96d40e
Merge pull request #1168 from hashicorp/f-plan-endpoint
...
Job.Plan endpoint
2016-05-16 13:15:40 -07:00
Alex Dadgar
a231f6f998
Switch to using the harness
2016-05-16 12:49:18 -07:00
Diptanu Choudhury
c07770fd4d
Using the auto-register flag
2016-05-16 18:23:01 +02:00
Sean Chittenden
dc28ab0cb5
Speling police
2016-05-15 09:41:34 -07:00
Diptanu Choudhury
1b3356375d
Using advertise addr for the http address
2016-05-14 01:09:05 -07:00
Diptanu Choudhury
ecd995b283
Added some docs
2016-05-14 00:36:26 -07:00
Diptanu Choudhury
d94e651c6e
Merge branches 'master' and 'f-config-consul-block' of github.com:hashicorp/nomad into f-config-consul-block
2016-05-13 13:05:11 -07:00
Diptanu Choudhury
df9d256132
Making Nomad register services with consul in dev mode
2016-05-13 10:19:49 -07:00
Alex Dadgar
b634486ebd
Plan api
2016-05-11 18:51:48 -07:00
Diptanu Choudhury
439d7bf326
Fixed an agent test
2016-05-11 17:26:53 -07:00
Diptanu Choudhury
347cb890d2
Removed allocID and task name from consul service
2016-05-11 16:26:41 -07:00
Diptanu Choudhury
83fed62a0a
Implemented registering client and server services
2016-05-11 16:07:02 -07:00
Sean Chittenden
7b8a5dcc15
Fix the unit tests for TestPrettyPrintOff
...
A different failing test masked that this wasn't even being run.
Pointy Hat: sean- for testing first on Travis in a branch vs verifying locally
2016-05-11 15:48:43 -07:00
Alex Dadgar
81f0286dd8
Merge branch 'master' into f-plan-endpoint
2016-05-11 15:39:36 -07:00
Diptanu Choudhury
d9497632ed
Added tests for parsing consul client configuration
2016-05-11 15:22:58 -07:00
Diptanu Choudhury
075a1379c0
Added parsing logic for config block
2016-05-11 15:22:58 -07:00
Sean Chittenden
693e1c6ea9
Fix unit tests for TestPrettyPrintBare
2016-05-11 15:20:57 -07:00
Alex Dadgar
ccc3caae4a
Merge branch 'f-job-diff2' into f-plan-endpoint
2016-05-11 11:25:25 -07:00
Sean Chittenden
36a50e0f15
Update tests for pretty printing that includes a newline.
...
Add a test verifying that pretty printing can be disabled, too.
2016-05-11 10:55:01 -07:00
Sean Chittenden
2fe9b6e97a
Append a newline when pretty-printing the response
...
Instead of typing `curl http://foo/v1/nodes?pretty ; echo` to inject a
newline into your terminal, now pretty will provide its own newline.
2016-05-10 15:46:20 -07:00
Alex Dadgar
ab0b57a9a1
Initial plan endpoint implementation - WIP
2016-05-05 11:21:58 -07:00
Sean Chittenden
09729cf706
When checkpoint emits a log message indicating an agent is out of
...
date, include the current version along with the available version
according to checkpoint.
Inspired by: log output in hashicorp/consul#993
2016-05-04 23:56:37 -07:00
Alex Dadgar
6c6dacd042
Fix missing format variable
2016-04-18 18:53:05 -07:00
Alex Dadgar
3c9e0c9c47
Lower number of submitted jobs
2016-04-13 16:33:30 -07:00
Diptanu Choudhury
891b201eef
removing interfaces from config
2016-04-07 13:25:38 -07:00
Diptanu Choudhury
9d495a4be4
Added the /fs/cat/ api
2016-03-28 11:06:22 -07:00
Alex Dadgar
aefa4b9207
add nomad fingerprinter
2016-03-22 17:12:30 -07:00
Diptanu Choudhury
acd016c7c0
Overriding the device configuration if addresses is present
2016-03-20 23:41:16 -07:00
Diptanu Choudhury
98fd0b889a
Added a comment about iteration of ips in a network device
2016-03-20 23:22:16 -07:00
Diptanu Choudhury
cfb9ae91a1
Using the interfaces for configuring bind addrs for nomad servers
2016-03-19 00:54:19 -07:00