Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit fb59f08

Browse files
authored
Merge pull request #4527 from classmarkets/google-service-account
drivers/google: Add support for non-default service account
2 parents 621d44c + bfa0cf6 commit fb59f08

File tree

2 files changed

+28
-18
lines changed

2 files changed

+28
-18
lines changed

‎drivers/google/compute_util.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ func (c *ComputeUtil) createInstance(d *Driver) error {
265265
},
266266
ServiceAccounts: []*raw.ServiceAccount{
267267
{
268-
Email: "default",
268+
Email: d.ServiceAccount,
269269
Scopes: strings.Split(d.Scopes, ","),
270270
},
271271
},

‎drivers/google/google.go

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ type Driver struct {
2626
Preemptible bool
2727
UseInternalIP bool
2828
UseInternalIPOnly bool
29+
ServiceAccount string
2930
Scopes string
3031
DiskSize int
3132
Project string
@@ -35,15 +36,16 @@ type Driver struct {
3536
}
3637

3738
const (
38-
defaultZone = "us-central1-a"
39-
defaultUser = "docker-user"
40-
defaultMachineType = "n1-standard-1"
41-
defaultImageName = "ubuntu-os-cloud/global/images/ubuntu-1604-xenial-v20170721"
42-
defaultScopes = "https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write"
43-
defaultDiskType = "pd-standard"
44-
defaultDiskSize = 10
45-
defaultNetwork = "default"
46-
defaultSubnetwork = ""
39+
defaultZone = "us-central1-a"
40+
defaultUser = "docker-user"
41+
defaultMachineType = "n1-standard-1"
42+
defaultImageName = "ubuntu-os-cloud/global/images/ubuntu-1604-xenial-v20170721"
43+
defaultServiceAccount = "default"
44+
defaultScopes = "https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write"
45+
defaultDiskType = "pd-standard"
46+
defaultDiskSize = 10
47+
defaultNetwork = "default"
48+
defaultSubnetwork = ""
4749
)
4850

4951
// GetCreateFlags registers the flags this driver adds to
@@ -79,6 +81,12 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
7981
Usage: "GCE Project",
8082
EnvVar: "GOOGLE_PROJECT",
8183
},
84+
mcnflag.StringFlag{
85+
Name: "google-service-account",
86+
Usage: "GCE Service Account for the VM (email address)",
87+
Value: defaultServiceAccount,
88+
EnvVar: "GOOGLE_SERVICE_ACCOUNT",
89+
},
8290
mcnflag.StringFlag{
8391
Name: "google-scopes",
8492
Usage: "GCE Scopes (comma-separated if multiple scopes)",
@@ -150,14 +158,15 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
150158
// NewDriver creates a Driver with the specified storePath.
151159
func NewDriver(machineName string, storePath string) *Driver {
152160
return &Driver{
153-
Zone: defaultZone,
154-
DiskType: defaultDiskType,
155-
DiskSize: defaultDiskSize,
156-
MachineType: defaultMachineType,
157-
MachineImage: defaultImageName,
158-
Network: defaultNetwork,
159-
Subnetwork: defaultSubnetwork,
160-
Scopes: defaultScopes,
161+
Zone: defaultZone,
162+
DiskType: defaultDiskType,
163+
DiskSize: defaultDiskSize,
164+
MachineType: defaultMachineType,
165+
MachineImage: defaultImageName,
166+
Network: defaultNetwork,
167+
Subnetwork: defaultSubnetwork,
168+
ServiceAccount: defaultServiceAccount,
169+
Scopes: defaultScopes,
161170
BaseDriver: &drivers.BaseDriver{
162171
SSHUser: defaultUser,
163172
MachineName: machineName,
@@ -205,6 +214,7 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
205214
d.Preemptible = flags.Bool("google-preemptible")
206215
d.UseInternalIP = flags.Bool("google-use-internal-ip") || flags.Bool("google-use-internal-ip-only")
207216
d.UseInternalIPOnly = flags.Bool("google-use-internal-ip-only")
217+
d.ServiceAccount = flags.String("google-service-account")
208218
d.Scopes = flags.String("google-scopes")
209219
d.Tags = flags.String("google-tags")
210220
d.OpenPorts = flags.StringSlice("google-open-port")

0 commit comments

Comments
 (0)