2017-12-21 7 views
0

내 계정에 대금 청구 계정을 이동하려는 많은 프로젝트가 있습니다. Ruby API에는 update! 메소드가 포함 된 Google::Apis::CloudbillingV1::ProjectBillingInfo 메소드가 있습니다.프로그래밍 방식으로 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

CloudBillingService 인스턴스의 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 

내가 지금 웹 UI에 전파 청구 정보 변경을 참조하십시오.

관련 문제