PATH=.../s3cli/out:$PATH bin/run -I dummy -P ubuntu
To start server locally:
gem install nats
nats-server
To subscribe:
nats-sub '>' -s nats://localhost:4222
To publish:
nats-pub agent.123-456-789 '{"method":"apply","arguments":[{"packages":[{"name":"package-name", "version":"package-version"}]}]}' -s nats://localhost:4222
The Go Agent ships with 4 default blobstores:
- Local filesystem
- Dummy (for testing)
- S3
- DAV
You can, however, use custom blobstores by implementing a simple interface. For example, if you want to use a blobstore named "custom" you need to create an executable named bosh-blobstore-custom somewhere in PATH. This executable must conform to the following command line interface:
-cflag that specifies a config file path (this will be passed to every call to the executable)- must parse the config file in JSON format
- must respond to
get <blobID> <filename>by placing the file identified by the blobID into the filename specified - must respond to
put <filename> <blobID>by storing the file at filename into the blobstore at the specified blobID
A full call might look like:
bosh-blobstore-custom -c /var/vcap/bosh/etc/blobstore-custom.json get 2340958ddfg /tmp/my-cool-file
Note: This guide assumes a few things:
- You have gcc (or an equivalent)
- You can install packages (brew, apt-get, or equivalent)
Get Golang and its dependencies (Mac example, replace with your package manager of choice):
brew updatebrew install gobrew install git(Go needs git for thego getcommand)brew install hg(Go needs mercurial for thego getcommand)
Clone and set up the BOSH Agent repository:
go get -d github.com/cloudfoundry/bosh-agent- Note that this will print an error message because it expects a single package; our repository consists of several packages. The error message is harmless—the repository will still be checked out.
cd $GOPATH/src/github.com/cloudfoundry/bosh-agent
From here on out we assume you're working in $GOPATH/src/github.com/cloudfoundry/bosh-agent
Install tools used by the BOSH Agent test suite:
bin/go get code.google.com/p/go.tools/cmd/vetbin/go get github.com/golang/lint/golint
Each package in the agent has its own unit tests. You can run all unit tests with bin/test-unit.
Additionally, BOSH includes integration tests that use this agent.
Run bin/test-integration to run those.
However, in order to run the BOSH integrations tests, you will need a copy of the BOSH repo, which this script will do in ./tmp.
BOSH uses Ruby for its tests, so you will also need to have that available.
You can run all the tests by running bin/test.
- Install IntelliJ 13 (we are using 13.0.1 Build 133.331)
- Install the latest Google Go plugin for IntelliJ. You may want to grab the latest early access (EAP) build, rather than the last release.
- (Optional) Download, Install & Select improved keybindings for IntelliJ:
git clone [email protected]:Pivotal-Boulder/IDE-Preferences.gitcd ~/Library/Preferences/IntelliJIdea13/keymapsln -sf ~/workspace/IDE-Preferences/IntelliJKeymap.xml- In IntelliJ: Preferences -> Keymap -> Pick 'Mac OS X 10.5+ Improved'
- Clone bosh-agent into a clean go workspace (or use a bosh clone with bosh/go as the workspace root):
mkdir -p ~/workspace/bosh-agent-workspace/src/github.com/cloudfoundrycd ~/workspace/bosh-agent-workspace/src/github.com/cloudfoundrygit clone https://github.com/cloudfoundry/bosh-agent
- Open ~/workspace/bosh-agent-workspace as a new project in IntelliJ.
- Set the Go SDK as the Project SDK:
- Open the Project Structure window:
File -> Project Structure - Select the
Projecttab in left sidebar - (Optional) Add a
NewGo SDK by selecting your go root. - Select
Go SDK go1.3under Project SDK
- Open the Project Structure window:
- Setup module sources
- Open the Project Structure window:
File -> Project Structure - Select the
Modulestab in left sidebar - Select your module in the middle sidebar
- Select the
Sourcestab in the Module pane - Select ~/workspace/bosh-agent-workspace/src and add is as a source dir
- Select ~/workspace/bosh-agent-workspace/src/github.com/cloudfoundry/bosh-agent/Godeps and add is as an excluded dir
- Open the Project Structure window:
- Setup module dependencies
- Open the Project Structure window:
File -> Project Structure - Select the
Modulestab in left sidebar - Select your module in the middle sidebar
- Select the
Dependenciestab in the Module pane - Select the
+ -> Jars or directories...to add ~/workspace/bosh-agent-workspace/src/github.com/cloudfoundry/bosh-agent/Godeps/_workspace as asourcesdependency - Rename the new dependency to
Godeps - Use the arrow buttons to move
GodepsaboveGo SDKand below<Module source>
- Open the Project Structure window:
- Set the bosh-agent dir as the Git root to enable version control
- Select the
-to remove the project root - Select the
+to add the ~/workspace/bosh-agent-workspace/src/github.com/cloudfoundry/bosh-agent dir
- Select the
- Install & configure the Grep Console plugin
- Install via
Preferences -> Plugins - Select
Preferences -> Grep COnsole -> Enable ANSI coloringto colorize Ginkgo test output
- Install via
- Re-index your project:
File -> Invalidate Cache / Restart
You should now be able to 'go to declaration', auto-complete, and run tests from within IntelliJ.
