From 446db21d25ac6a5ce1e55f66a12f3a834960ef4d Mon Sep 17 00:00:00 2001 From: Javier Luraschi Date: Wed, 3 Jan 2018 14:57:56 -0800 Subject: [PATCH] allow account changes to fix #94 --- R/gcloud-storage.R | 20 ++++++++++++++++++++ R/jobs.R | 1 + R/models.R | 2 ++ 3 files changed, 23 insertions(+) diff --git a/R/gcloud-storage.R b/R/gcloud-storage.R index 2891b22c..9a506b57 100644 --- a/R/gcloud-storage.R +++ b/R/gcloud-storage.R @@ -143,6 +143,26 @@ gs_ensure_storage <- function(gcloud) { storage } +gs_ensure_account <- function(gcloud) { + if (!is.null(gcloud) && !is.null(gcloud$account)) { + account <- gexec( + gcloud_binary(), + c("config", "get-value", "account"), + echo = FALSE, + throws = FALSE + )$stdout + + if (!identical(account, gcloud$account)) { + gexec( + gcloud_binary(), + c("config", "set", "account", gcloud$account), + echo = FALSE, + throws = FALSE + ) + } + } +} + gs_bucket_from_gs_uri <- function(uri) { paste0("gs://", strsplit(sub("gs://", "", uri), "/")[[1]][[1]]) } diff --git a/R/jobs.R b/R/jobs.R index e301d904..4e10c5c8 100644 --- a/R/jobs.R +++ b/R/jobs.R @@ -36,6 +36,7 @@ cloudml_train <- function(file = "train.R", gcloud <- gcloud_config(gcloud) cloudml <- cloudml_config(cloudml) + gs_ensure_account(gcloud) if (!is.null(master_type)) cloudml$trainingInput$masterType <- master_type if (!is.null(cloudml$trainingInput$masterType) && diff --git a/R/models.R b/R/models.R index 55667482..734faf3c 100644 --- a/R/models.R +++ b/R/models.R @@ -38,6 +38,8 @@ cloudml_deploy <- function( cloudml <- cloudml_config(cloudml) gcloud <- gcloud_config(gcloud) + + gs_ensure_account(gcloud) storage <- gs_ensure_storage(gcloud) if (is.null(gcloud$region)) gcloud$region <- gcloud_default_region()