2017-12-21 10 views
0

私は、請求アカウントを移行するために、私の組織内に多数のプロジェクトがあります。 Ruby APIにはGoogle::Apis::CloudbillingV1::ProjectBillingInfoがあり、これにはupdate!メソッドが含まれています。プログラムでGoogleクラウドプロジェクトの請求先アカウントを更新しますか?

私はステップがありません。私のコードは次のようになります。

require 'googleauth' 
require 'google/apis/cloudbilling_v1' 

service = Google::Apis::CloudbillingV1::CloudbillingService.new 
service.authorization = Google::Auth.get_application_default(['https://www.googleapis.com/auth/cloud-platform']) 

FROM_BA = 'billingAccounts/123456' 
TO_BA = 'billingAccounts/789012' 

puts "Changing billing account on projects:" 
service.list_billing_account_projects(FROM_BA).project_billing_info.each do |p| 
    puts "\t#{p.name} (#{p.project_id}): #{p.billing_account_name} --> #{TO_BA}" 
    p.update!(billing_account_name: TO_BA) 
end 

ループを見つけ、FROM_BA課金アカウント内のすべてのプロジェクトをリストしません。そして、私はupdate!が呼び出されていることを知っています。しかし、変更はアカウント内のプロジェクトには反映されません。私はここで一歩足りないと思う。コミットコール?私は例を見つけることができないようだし、ドキュメントはここでは役に立たない。

アカウント内の実際のプロジェクトの上流にある変更をupdate!変更しないでください。

答えて

0

インスタンスのupdate_project_billing_info methodを使用して、ProjectBillingInfoオブジェクトへの変更をコミットします。今、働く

フルスニペットは、次のようになります。

require 'googleauth' 
require 'google/apis/cloudbilling_v1' 

service = Google::Apis::CloudbillingV1::CloudbillingService.new 
service.authorization = Google::Auth.get_application_default(['https://www.googleapis.com/auth/cloud-platform']) 

FROM_BA = 'billingAccounts/123456' 
TO_BA = 'billingAccounts/789012' 

puts "Changing billing account on projects:" 
service.list_billing_account_projects(FROM_BA).project_billing_info.each do |p| 
    project = p.name.split('/')[0..1].join('/') 
    puts "\t#{project} (#{p.project_id}): #{p.billing_account_name} --> #{TO_BA}" 
    p.update!(billing_account_name: TO_BA) 
    service.update_project_billing_info(project, p) 
end 

が、私は今のWeb UIに伝播し、課金情報の変更を参照してください。

関連する問題