Matthew Hooker
81522dced0
move packer to hashicorp
2017-04-04 13:39:01 -07:00
Matthew Hooker
bce03492d9
remove references to ServiceAccountEmail
2017-04-03 11:22:00 -07:00
Rickard von Essen
77dc8b84c1
builder/googlecompute: Revert to using default service account
...
Fixes issue with cross Project builds.
Closes #4608
Regression introduced in PR #3639
2017-04-02 17:52:14 +02:00
Matthew Hooker
d1b20b3d9c
remove a bunch of dead code.
...
https://github.com/dominikh/go-tools/tree/master/cmd/unused
2017-03-28 20:36:20 -07:00
Rickard von Essen
eac5b6392d
googlecompute: Correct values for on_host_maintenance
...
If preemptible is true then on_host_maintenance must be TERMINATE.
Also corrected order in docs.
Closes #4620
2017-03-08 19:44:07 +01:00
Matthew Hooker
2381bfa8ad
Merge pull request #4518 from AlexLov/bugfix_image_family
...
[googlecompute] fix bug of creating image from custom image_family
2017-02-21 10:58:23 -08:00
Dimitri Rudnev
2009fcd9df
OnHostMaintenance, googlecompute updating documenation , additional option for validation and setting defaults
2017-02-10 11:57:15 -08:00
Dimitri Rudnev
bab590c177
Adding OnHostMaintenance option for googlecompue builder
2017-02-10 10:58:57 -08:00
Alex Lov
cfa8f8c215
fix bug of creating image from custom image_family
2017-02-08 22:50:19 +03:00
Troy Toman
12f279fa79
add ability to set a different project-id for a network in the googlecloud builder
2016-12-02 15:22:36 -06:00
Rickard von Essen
6947a74151
Merge pull request #4162 from classmarkets/google-source-image-family
...
builder/googlecompute: support source image family
2016-11-26 17:26:47 +01:00
Rickard von Essen
d18da5e679
Added printout of select source_image
2016-11-26 15:06:43 +01:00
Rickard von Essen
96e9a8e6e9
Removed default value for ssh_username
2016-11-17 22:30:34 +01:00
Peter Schultz
bcb319640e
builder/googlecompute: support source image family
...
Closes #4100
2016-11-13 16:54:04 +01:00
Matthew Hooker
5d0892bd37
Merge pull request #4101 from lwander/f-googlecompute-ssh-private-key-file
...
builder/googlecompute: Use ssh_private_key_file if provided
2016-11-03 11:04:02 -07:00
Lars Wander
583e341ae7
builder/googlecompute: Store empty public_key
2016-11-03 12:49:09 -04:00
Lars Wander
7f474d8f78
builder/googlecompute: Tests added
2016-11-03 12:45:52 -04:00
Scott Crunkleton
85210afe92
googlecompute: conditionally omit the wait for startup script step if no startup script is provided.
2016-11-02 15:20:21 -07:00
Lars Wander
d70e783455
builder/googlecompute: Use ssh_private_key_file if provided
...
This seemed to be missing from the googlecompute provider. Now if the
ssh_private_key_file is provided, that will be used in place of a temporary
key. I didn't update the googlecompute specific docs under `./website/`, since
this parameter is already documented under the communicators templates page.
2016-11-02 17:04:34 -04:00
Matthew Hooker
d920b3fbf4
run gofmt
2016-11-01 14:08:04 -07:00
YAMADA Tsuyoshi
da7d317e46
googlecompute: Run instance with custom scopes
2016-10-22 15:46:14 +09:00
Rickard von Essen
924c0bc461
Merge pull request #3932 from pieter-lazzaro/googlecompute-createpassword
...
GCE Windows instance password creation
2016-09-30 22:01:56 +02:00
Rickard von Essen
c0a4067151
builder/googlecompute: Print out WinRM password in debug mode.
2016-09-30 21:17:38 +02:00
Matthew Hooker
a8e57d83d2
gofmt project.
...
noticed many unrelated changes being added to patches because of gofmt.
ran `find . -not -path "./vendor/*" -name "*.go" -exec gofmt -w {} \;`
2016-09-29 14:13:06 -07:00
Matthew Hooker
a9abe43325
builder/amazon: add retry login when creating tags.
...
also move Retry from builder/googlecompute/common to common/retry
2016-09-28 18:22:31 -07:00
Pieter Lazzaro
5db1c1f503
Create a password for windows instances when using WinRM communicator and no password is provided.
2016-09-27 18:42:34 -04:00
Valentin Tjoncke
ef1517064c
googlecompute/builder: Always show message when checking image exists
2016-09-24 21:12:25 +02:00
nouney
4605f9559f
Fix unreachable code
2016-09-23 20:38:28 +02:00
Valentin Tjoncke
6f545af7f7
builder/googlecompute: -force
2016-09-23 14:21:43 +02:00
Rickard von Essen
9ce70bfce0
Merge pull request #3338 from yuki-takeichi/gce-nvme
2016-09-20 12:50:43 +02:00
Yuki Takeichi
04078c5c48
Enable to select NVMe images for googlecompute builder
2016-09-20 12:47:14 +02:00
Orivej Desh
6762965696
Add -on-error command line argument to allow preserving artifacts on builder errors
...
Resolves #409
2016-09-16 12:15:00 +00:00
Scott Crunkleton
b54b82d3ac
Some googlecompute fixes and cleanup. Addresses https://github.com/mitchellh/packer/issues/3829 . Changes:
...
- startup scripts don't run for Windows since it is isn't implemented yet.
- startup scripts use instance metadata instead of serial port output to flag when they are done.
- added licenses to Image data type (to check if an Image is a Windows Image).
- added GetImage and GetImageFromProject to googlecompute Drivers.
- changed some of the builder/googlecompute tests to use github.com/stretchr/testify/assert.
Tests:
- (in the Packer directory) `go test .`, `go test ./builder/googlecompute`, and `go test ./post-processor/googlecompute-export`
- manual run of `packer build packer_template.json` with the following files
--packer_template.json--
{
"builders": [
{
"type": "googlecompute",
"account_file": "creds.json",
"project_id": "google.com:packer-test",
"source_image": "debian-8-jessie-v20160629",
"zone": "us-central1-a",
"startup_script_file": "startup_script.sh",
"metadata": {
"startup-script": "#!/bin/sh\necho \"This should be overwritten.\"",
"startup-script-log-dest": "gs://packer-test.google.com.a.appspot.com/startup-script.log"
},
"image_name": "test-packer-modifications",
"ssh_username": "foo"
}
],
"post-processors": [
{
"type": "googlecompute-export",
"paths": [
"gs://packer-test.google.com.a.appspot.com/foo.tar.gz",
"gs://packer-test.google.com.a.appspot.com/bar.tar.gz"
],
"keep_input_artifact": true
}
]
}
--startup_script.sh--
\#!/bin/sh
echo "Hi, my name is Scott. I'm waiting 60 seconds!" >> /scott
sleep 60
echo "I'm done waiting!" >> /scott
2016-09-09 16:22:50 -07:00
Ingo Gottwald
0c1051a017
GCE builder: Switch to google.DefaultClient ( #3655 )
...
* GCE builder: Switch to google.DefaultClient
This enables authentication through an authenticated gcloud tool.
* GCE builder: Add docs about auth mech precedence
2016-08-27 03:12:55 +02:00
crunk1
55b5a45ae4
Created googlecompute-export post-processor. Modified the googlecompute builder to pass a few configuration values to its resulting artifact. These values can then be used in googlecompute-export post-processor.
...
Added documentation and changed authentication stuff on temporary VM.
2016-08-15 14:36:26 -07:00
Evan Brown
a5c598264f
builder/googlecompute: Support provisioning VM without external IP address
...
This change adds an `omit_external_ip` configuration property that, when true,
will cause no external IP address to be associated with the Google Compute
Engine VM provisioned to create an image. When using `omit_external_ip`, you
must also set the `use_internal_ip` configuration property to true.
Addresses #3296
2016-08-02 13:43:04 -07:00
Scott Crunkleton
7190fbeed8
Adding support for googlecompute startup scripts.
...
- Startup scripts can be provided through the instance creation metadata field 'startup-script'.
- Script log can be copied to a GCS location by setting the metadata field 'startup-script-log-dest'.
Added Retry method to googlecompute package.
Added GetSerialPortOutput to googlecompute Drivers.
Added StepWaitInstanceStartup (and associated test) which waits for an
instance startup-script to finish.
Changed the instance service account to use the same service account as the one provided in the Packer config template. It was the project default service account.
Tested googlecompute package with 'go test' and also performed builds
with a startup script and without a startup script.
2016-07-20 14:54:36 -07:00
Chris Bednarski
2f0e1218dc
Move regexp to package scope so it will be validated by the compiler instead of at runtime
2016-05-13 15:37:25 -07:00
Peter Schultz
a99a417db9
builder/googlecompute: validate image_family
2016-05-13 15:24:02 -07:00
Peter Schultz
8546aafec5
builder/googlecompute: support image family
2016-05-13 15:24:02 -07:00
Christopher Boumenot
2d1347c1ec
Insert Packer's version into the User Agent. ( #3465 )
2016-05-05 13:10:55 -07:00
Chris Bednarski
1b1bbb604e
Merge branch 'googlecompute-disk-type' of https://github.com/meatballhat/packer into f-google-disk-type
2016-03-10 14:51:30 -08:00
Chris Bednarski
4458de4ea0
Reformat
2016-02-11 23:53:40 -08:00
Matt Morrison
daf57c7632
Add tests and documentation for subnetwork attribute
2016-02-11 21:54:48 +13:00
Matt Morrison
942aaa7a85
Add support for Google subnetworks. Closes #3062 . Fixes an issue with how packer populates instances metadata. Closes #3181
2016-02-11 17:31:46 +13:00
Ryan Uber
7732cf45a0
builder/googlecompute: fix image name defaults
2016-01-19 11:12:19 -08:00
Caius Howcroft
069c3c21b1
Added support for GCE external static IPs
2015-12-24 19:15:41 -06:00
YAMADA Tsuyoshi
18d79cfb3d
added test
2015-12-05 15:48:07 +09:00
YAMADA Tsuyoshi
afd314959b
supported `preemptible` in googlecompute builder
2015-12-05 05:13:35 +09:00
Dan Buch
cac93d311c
builder/googlecompute: accept disk type, default pd-standard
2015-10-13 20:18:26 -04:00
Dave Cunningham
1fea962a3a
account_file can be verbatim JSON string
2015-10-08 02:40:18 -04:00
Rickard von Essen
9cf99289c5
Fixed GCE builder after dependency change.
...
See
4af91da601
2015-09-20 10:14:07 +02:00
Chris Bednarski
32b714e085
Update code.google.com/gosshold/ssh to point to golang.org/x/crypto/ssh, since this has been moved into core now
...
Fixes #2515
2015-07-30 19:19:59 -07:00
Chris Bednarski
1c71eaaa91
Change panic to multierror
2015-07-07 17:12:21 -06:00
Chris Bednarski
775450f46a
Merge branch 'fix_gce_image_name' of https://github.com/samitpal/packer into b-google-image-name
2015-07-07 16:19:55 -06:00
Chris Bednarski
bd6c31c2d9
Added TestImageName and moved private methods to the bottom of the file
2015-07-07 16:18:31 -06:00
Samit Pal
6d6b3e1ac2
The default image name in the code has a bug. It is being set to packer-{{timestamp}}, the {{timestamp}} part needs to be interpolated. Without the interpolation the GCE builder fails with
...
the following error
==> googlecompute: Creating image...
==> googlecompute: Error waiting for image: googleapi: Error 400: Invalid value for field 'resource.name': 'packer-{{timestamp}}'. Must be a match of regex '(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?)', invalid
2015-07-07 05:27:58 +00:00
Mitchell Hashimoto
6c7a7b6068
builder/googlecompute: default SSH settings properly [GH-2340]
2015-06-29 09:56:33 -07:00
Mitchell Hashimoto
84189f7a28
builder/*: properly save interpolation context
2015-06-22 09:22:42 -07:00
Mitchell Hashimoto
9bb7d0a2d5
Merge pull request #2152 from abayer/gce-optional-internal-ip
...
builder/google: Adds support for using the internal IP rather than NAT IP in GCE
2015-06-18 10:15:27 +02:00
Mitchell Hashimoto
115d583cff
helper/communicator: make host more generic
2015-06-13 19:23:33 -04:00
Mitchell Hashimoto
502076c92e
builder/googlecompute: use helper/comm
2015-06-13 18:30:16 -04:00
Mark Peek
f398352996
Fix a bug where interpolation was broken in some builders
2015-06-12 14:00:59 -07:00
Mitchell Hashimoto
23a48d6619
go fmt
2015-06-08 21:34:20 -07:00
Mitchell Hashimoto
9dff0adfb1
builder/google: don't hardcode SSH timeout [GH-1781]
2015-06-08 21:13:25 -07:00
Andrew Bayer
ebdd0d991a
Adds support for using the internal IP rather than NAT IP in GCE
2015-05-29 14:50:11 -07:00
jszwedko
b1497b951c
code.google.com/p/go.crypto/ssh -> golang.org/x/crypto/ssh
...
code.google.com/p/go.crypto/ssh is now at golang.org/x/crypto/ssh as of
https://code.google.com/p/go/source/detail?spec=svn.crypto.69e2a90ed92d03812364aeb947b7068dc42e561e&repo=crypto&r=8fec09c61d5d66f460d227fd1df3473d7e015bc6
Using the code.google.com import redirects properly, but runs into
issues if you try to use a subpackage of `ssh`, e.g. `agent` which
refers to golang.org/x/crypto/ssh causing conflicts if your types expect
code.google.com/p/go.crypto/ssh.
This is a precursor to a PR for #1066 .
2015-05-28 08:17:49 -07:00
Mitchell Hashimoto
5aa30caa64
builder/googlecompute: new interpolation
2015-05-27 12:57:48 -07:00
duftler
6d28ee931c
Delete GCE disk on SIGINT.
2015-04-21 18:02:05 +00:00
Dave Cunningham
982934dfb9
Use new Google API and OAuth libs, add UserAgent string
2015-04-17 15:12:39 -04:00
Emil Hessman
002e50f493
builder/googlecompute: fix formatting directives
...
Fixes the following vet reports:
builder/googlecompute/step_create_instance_test.go:42: possible formatting directive in Fatal call
builder/googlecompute/step_teardown_instance_test.go:29: possible formatting directive in Fatal call
builder/googlecompute/step_teardown_instance_test.go:39: possible formatting directive in Fatal call
2015-02-25 05:29:53 +01:00
Ross Smith II
10dee1bd68
Temporarily fix build by forking golang.org/x/oauth2 @ b3f9a68
2014-12-21 11:22:24 -08:00
Eric Johnson
24a774f0d3
Merge pull request #1737 from dcarlino/failfast_gce
...
Check if image already exists before doing anything else on GCE.
2014-12-09 12:10:05 -08:00
Dustin Carlino
fe47f45800
Remove bucket_name from GCE config.
...
Fixes #1732 . Forgot to do this in 23c947acf0
.
2014-12-09 08:44:01 -08:00
Dustin Carlino
7c67228912
Check if image already exists before doing anything else on GCE.
...
This fixes #1729 .
2014-12-09 08:42:34 -08:00
rhapsodhy
dd547af0c4
fix googlecompute oauth dependency
2014-11-30 04:15:44 +00:00
Dustin Carlino
23c947acf0
Create GCE image from persistent disk instead of from a tarball.
...
The new flow:
1) Provision the instance
2) Tear down the instance, but keep the boot disk
3) Create an image from the disk
4) Tear down the disk
The step to update gcloud is no longer needed, since gceimagebundle isn't used anymore.
Fixes #1507 and addresses https://github.com/mitchellh/packer/issues/1447#issuecomment-61610235 .
2014-11-25 17:07:06 -08:00
Eric Johnson
87001dba60
Merge pull request #1679 from evandbrown/gce-service-accounts
...
Use golang/oauth2, no longer require client_secrets.json, and use
2014-11-24 05:43:11 -08:00
Evan Brown
ff149df30f
Use golang/oauth2, no longer require client_secrets.json, and use
...
Service Account when run from a GCE Instance.
2014-11-21 12:45:27 -08:00
Misha Brukman
74e1be7469
Added the Ubuntu image project for GCE.
...
The documentation:
https://cloud.google.com/compute/docs/operating-systems#ubuntu
shows that `ubuntu-os-cloud` is the proper project name.
2014-11-17 23:00:52 -05:00
Mitchell Hashimoto
0db6cd3533
Merge pull request #1330 from qur/qemu-vagrant
...
Qemu vagrant
2014-10-28 08:42:17 -07:00
Mitchell Hashimoto
e422a45449
fmt
2014-10-28 08:35:21 -07:00
Matt Page
0fe61fa1e0
fix: Respect metadata supplied for GCE builders.
...
Previously, any per instance metadata supplied via the GCE builder
was ignored.
Test plan:
- make test
- Manual testing via:
-- Created a packer config that contained a GCE builder with custom
metadata set.
-- Ran `packer build`.
-- Verified the instance had the correct metadata in the GCE console.
2014-10-06 14:18:34 -07:00
Julian Phillips
90a57c411f
Expand Artifact API to expose build state
...
In order that something consuming an artifact can have access to extra
builder specific data add the State method which allows the caller to
ask for arbitary values by name.
2014-09-22 11:15:47 +01:00
Mitchell Hashimoto
b9f82ef17e
fmt
2014-09-05 10:23:49 -07:00
Mitchell Hashimoto
b5c0c63ebc
builder/googlecompute: use new auth scheme
2014-09-05 09:47:20 -07:00
Mitchell Hashimoto
752162c234
fmt
2014-09-02 09:55:06 -07:00
Matt Page
8f237b7b94
Allow specifying project for source images in GCE
...
Within GCE, images may be shared across projects. Prior to this
commit, there was no way to inform the GCE builder that a source
image belonged to a specific project. This adds an optional
'source_image_project_id' key to the GCE builder config.
2014-08-20 10:20:28 -07:00
Jessica Frazelle
8bc696ce9e
add disk size to google compute, so as to avoid disk size errors on exporting the image
2014-08-08 14:39:03 -04:00
Misha Brukman
4a85aefe0f
Rename "Gsutil" to "Gcloud" now that we're updating "gcloud" and not "gsutil".
...
Also renamed files accordingly.
2014-07-25 17:23:15 -04:00
Eric Johnson
7f38936596
Merge pull request #1350 from mbrukman/googlecompute-driver-vm-images
...
builder/googlecompute: added support for all standard VM images
2014-07-25 06:08:06 -07:00
Misha Brukman
5b56970b09
Added CoreOS, OpenSUSE, and Windows projects for searching images.
2014-07-24 20:39:04 -04:00
Misha Brukman
01130da729
builder/googlecompute: added support for all standard VM images
...
Also fixed the error message to be clear that the image was not found in any of
the projects that we attempted to search, rather than keep the error message
from the last project, which may be confusing to users.
2014-07-18 15:08:08 -04:00
Carlos Sanchez
80fa018a36
[GCE] gsutil update fails in newer images, use gcloud
...
googlecompute: It looks like you are trying to run "/usr/local/bin/../share/google/google-cloud-sdk/bin/bootstrapping/gsutil.py update".
googlecompute: The "update" command is no longer needed with the Cloud SDK.
googlecompute: To update, run: gcloud components update
2014-06-26 13:50:06 +02:00
Mitchell Hashimoto
5fac6c79c4
fmt
2014-04-26 11:12:43 -07:00
Mitchell Hashimoto
e84e5e4f2c
Merge branch 'update-ssh-package' of github.com:higebu/packer into higebu-update-ssh-package
...
Conflicts:
builder/amazon/common/ssh.go
builder/digitalocean/ssh.go
builder/googlecompute/ssh.go
builder/openstack/ssh.go
communicator/ssh/communicator_test.go
communicator/ssh/keychain.go
communicator/ssh/keychain_test.go
2014-04-26 11:12:06 -07:00
Mitchell Hashimoto
0da1f2d8c6
builder/googlecompute: template process instance name
2014-04-26 11:02:25 -07:00
Brett Porter
e169013527
builder/googlecompute: configure instance name
...
Retain the current default of an instance name generated by UUID, but allow
users to choose a specific one. Useful for provisioning with Puppet when a
node name is used to select the right manifest.
2014-04-26 12:17:02 +10:00
Ross Smith II
e9c84ef449
Merge pull request #1001 from zshenker/update-gce-builder-to-v1-api
...
Updates googlecompute build to v1 API & uses boot persistent disk
2014-04-21 08:04:35 -07:00
higebu
f087ce16dc
Fix the build problem by updating ssh package
2014-04-15 10:17:26 +09:00
Ross Smith II
27491f93f8
use old ssh code until higebu's branch is ready, see #1019
2014-04-11 08:23:12 -07:00
Zac Shenker
139e498962
Changing to the v1 google-api-go-client. Now creates a persistent disk as the boot disk, and sets it to auto delete
2014-04-03 15:18:58 -07:00
Mitchell Hashimoto
e3c0715eab
fmt
2014-02-21 15:11:56 -08:00
Mitchell Hashimoto
5f01415fb7
builder/googlecompute: tests for #867
2014-02-21 15:10:09 -08:00
Prasanna Santhanam
d4c9ed43c9
Formatted googlecompute builder as per `make format`
2014-01-31 22:26:09 +05:30
Prasanna Santhanam
0e98b2a269
Fixes #867 : save private key when debugging gce builder
...
Signed-off-by: Prasanna Santhanam <tsp@qubole.com>
2014-01-31 19:13:31 +05:30
Mitchell Hashimoto
a91b8f6853
builder/googlecompute: only load secrets/private key if given
2013-12-13 19:32:01 -08:00
Mitchell Hashimoto
bde4b02d2b
builder/googlecompute: artifact tests
2013-12-13 19:08:27 -08:00
Mitchell Hashimoto
637968f2dd
builder/googlecompute: artifact uses Driver, no more api
2013-12-13 19:07:10 -08:00
Mitchell Hashimoto
33a84c0938
builder/googlecompute: StepRegisterImage
2013-12-13 19:03:10 -08:00
Mitchell Hashimoto
587f057bf6
builder/googlecompute: StepUploadImage
2013-12-13 18:30:57 -08:00
Mitchell Hashimoto
20a074b4ee
builder/googlecompute: StepCreateImage
2013-12-13 18:26:00 -08:00
Mitchell Hashimoto
37903337ea
builder/googlecompute: update gsutil
2013-12-13 18:21:02 -08:00
Mitchell Hashimoto
a2cf4cae25
builder/googlecompute: enable provisioning
2013-12-13 18:08:43 -08:00
Mitchell Hashimoto
1055f470e6
builder/googlecompute: enable SSH
2013-12-13 18:07:16 -08:00
Mitchell Hashimoto
a72d31fb5b
builder/googlecompute: get instance info
2013-12-13 13:01:28 -08:00
Mitchell Hashimoto
57f707dfcc
builder/googlecompute: delete instance
2013-12-12 22:34:47 -08:00
Mitchell Hashimoto
f72f7a37d1
builder/googlecompute: fix all sorts of zone issues
2013-12-12 22:23:19 -08:00
Mitchell Hashimoto
b676058144
builder/googlecompute: better logging
2013-12-12 21:53:05 -08:00
Mitchell Hashimoto
54d59fc79f
builder/googlecompute: get rid of all client stuff for now
2013-12-12 21:53:05 -08:00
Mitchell Hashimoto
52f51a1dcd
builder/googlecompute: disable other steps for now
2013-12-12 21:53:05 -08:00
Mitchell Hashimoto
2bd6f1e2d7
builder/googlecompute: driver and create instance tests
2013-12-12 21:53:05 -08:00
Mitchell Hashimoto
3657f33a4d
builder/googlecompute: StepCreateSSHKey tests
2013-12-12 21:53:05 -08:00
Mitchell Hashimoto
2091dffe40
builder/googlecompute: cancel works
2013-12-12 21:53:04 -08:00
Mitchell Hashimoto
fbc07942f0
builder/googlecompute: test config basics
2013-12-12 21:53:04 -08:00
Mitchell Hashimoto
46d297c7bd
builder/googlecompute: client secrets tests
2013-12-12 21:53:04 -08:00
Mitchell Hashimoto
6507afd3ad
builder/googlecompute: private key tests
2013-12-12 21:53:04 -08:00
Mitchell Hashimoto
ee9ea170af
builder/googlecompute: move config out to seperate file
2013-12-12 21:53:04 -08:00
Mitchell Hashimoto
a78b10c06d
builder/googlecompute: set ID to packer namespace now thats in core
2013-12-12 21:53:04 -08:00
Kelsey Hightower
cc1130962b
Use the same license as Packer core
2013-12-12 21:53:04 -08:00
Kelsey Hightower
58c73727e5
builder/googlecompute: Add new googlecompute builder
2013-12-12 21:53:03 -08:00