Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add billing account id from credential to CredentialInfo struct #1019

Merged

Conversation

hippo-an
Copy link
Contributor

@hippo-an hippo-an commented Jan 23, 2024

작업 개요

  • GCP price info 를 가지고 오기 위해서 BillingAccountID 를 CredentialInfo 에 셋팅이 필요합니다.
  • GCP Credential 을 등록 시 key value 에 아래 정보 추가하고 등록을 하였습니다.
    {"Key":"BillingAccountID", "Value":"billingAccounts/xxxxxx-xxxxxx-xxxxxx"}
  • 사용자가 입력한 credential 정보를 CredentialInfo struct 로 매핑하는 부분에서
  • BillingAccountID 를 매핑하는 코드가 누락되어 있는 것을 확인하였습니다.
  • 원활한 웹 테스트를 위해 해당 부분 코드 추가하였습니다.

@hippo-an hippo-an changed the title fix: add billing account id mapping from client input credential to C… Add billing account id from credential to CredentialInfo struct Jan 23, 2024
@powerkimhub
Copy link
Member

  • 캄사합니다~ 빠트린 부분이네요^^

@powerkimhub powerkimhub merged commit e58325c into cloud-barista:master Jan 23, 2024
1 check passed
@seokho-son
Copy link
Member

seokho-son commented Jan 23, 2024

@dev-hippo-an 안녕하세요! CB-Tumblebug 메인테닝하고 있는 손석호 입니다. :)
CB-TB에서는 CB-SP를 직접 활용하고 있어서, 활용 관점에서 변화를 주시하고 있습니다.

  1. Credential 에 BillingAccountID 정보 추가를 의무화하면 기존 Credential 의 범용성이 떨어질 것 같습니다. Price, Billing 과 무관한 작업을 하는 (일반) 사용자들을 위해 해당 BillingAccountID는 옵션값이 되도록하고 없으면 예외처리하도록 하면 좋을 것 같습니다.
  2. GCP Credential에 ProjectID가 포함되어 있는데, 지금과 같이 ProjectID와 BillingAccountID를 Credential 내부에 하나로 묶어서 처리하게 되면, Billing Account : Project = 1 : N 할당관계를 표현하지 못할 것 같습니다. (1:1이어도 Price 정보 조회에는 문제가 없을 것 같으나, 향후에 Billing을 처리할 때 다시금 이슈가 될 수 있겠네요.)

이를 고려하면,
BillingAccountID를 사용자에게 입력 받지 않고, BillingAccountID가 필요한 경우(Price 조회, 프로젝트별 Billing 조회 등)에만 GCP 드라이버 내부적으로 조회하여 처리하면 좋을 것 같다는 생각이 듭니다. 현재 Credential의 구조를 고려하면, ProjectID에 연계된 BillingAccountID를 조회하는 형태가 될 것 같긴 하네요. (Billing Account User/Viewer : billing.accounts.list API 등을 사용하면 BillingAccountID를 조회할 수 있을 것 같은데, 확인해보지는 않았어요 ^^;;)

@powerkimhub ⬆️ 이미 고민해보신 문제일 수도 있을 것 같긴한데, 살펴보시고 조율 가능하실까요?

@powerkimhub
Copy link
Member

@dev-hippo-an 안녕하세요! CB-Tumblebug 메인테닝하고 있는 손석호 입니다. :) CB-TB에서는 CB-SP를 직접 활용하고 있어서, 활용 관점에서 변화를 주시하고 있습니다.

  1. Credential 에 BillingAccountID 정보 추가를 의무화하면 기존 Credential 의 범용성이 떨어질 것 같습니다. Price, Billing 과 무관한 작업을 하는 (일반) 사용자들을 위해 해당 BillingAccountID는 옵션값이 되도록하고 없으면 예외처리하도록 하면 좋을 것 같습니다.
  2. GCP Credential에 ProjectID가 포함되어 있는데, 지금과 같이 ProjectID와 BillingAccountID를 Credential 내부에 하나로 묶어서 처리하게 되면, Billing Account : Project = 1 : N 할당관계를 표현하지 못할 것 같습니다. (1:1이어도 Price 정보 조회에는 문제가 없을 것 같으나, 향후에 Billing을 처리할 때 다시금 이슈가 될 수 있겠네요.)

이를 고려하면, BillingAccountID를 사용자에게 입력 받지 않고, BillingAccountID가 필요한 경우(Price 조회, 프로젝트별 Billing 조회 등)에만 GCP 드라이버 내부적으로 조회하여 처리하면 좋을 것 같다는 생각이 듭니다. 현재 Credential의 구조를 고려하면, ProjectID에 연계된 BillingAccountID를 조회하는 형태가 될 것 같긴 하네요. (Billing Account User/Viewer : billing.accounts.list API 등을 사용하면 BillingAccountID를 조회할 수 있을 것 같은데, 확인해보지는 않았어요 ^^;;)

@powerkimhub ⬆️ 이미 고민해보신 문제일 수도 있을 것 같긴한데, 살펴보시고 조율 가능하실까요?

@seokho-son

  1. 항목은 기존 제어 위주의 Connection은 기존처럼 Credential 등록/사용이며,
  • Price Info가 필요한 사용자의 경우에만 BillingAccountID 포함한 Credential 등록 후 사용 형태가 될 것입니다.
  • Best: 기존 Credential 한가지로 사용하는 것이므로, 2.와 같은 방법이 있는지 좀더 고민해보지요.
  1. 항목
  • @dev-hippo-an 관련 내용 확인 부탁 드립니다.

@hippo-an
Copy link
Contributor Author

@dev-hippo-an 안녕하세요! CB-Tumblebug 메인테닝하고 있는 손석호 입니다. :) CB-TB에서는 CB-SP를 직접 활용하고 있어서, 활용 관점에서 변화를 주시하고 있습니다.

  1. Credential 에 BillingAccountID 정보 추가를 의무화하면 기존 Credential 의 범용성이 떨어질 것 같습니다. Price, Billing 과 무관한 작업을 하는 (일반) 사용자들을 위해 해당 BillingAccountID는 옵션값이 되도록하고 없으면 예외처리하도록 하면 좋을 것 같습니다.
  2. GCP Credential에 ProjectID가 포함되어 있는데, 지금과 같이 ProjectID와 BillingAccountID를 Credential 내부에 하나로 묶어서 처리하게 되면, Billing Account : Project = 1 : N 할당관계를 표현하지 못할 것 같습니다. (1:1이어도 Price 정보 조회에는 문제가 없을 것 같으나, 향후에 Billing을 처리할 때 다시금 이슈가 될 수 있겠네요.)

이를 고려하면, BillingAccountID를 사용자에게 입력 받지 않고, BillingAccountID가 필요한 경우(Price 조회, 프로젝트별 Billing 조회 등)에만 GCP 드라이버 내부적으로 조회하여 처리하면 좋을 것 같다는 생각이 듭니다. 현재 Credential의 구조를 고려하면, ProjectID에 연계된 BillingAccountID를 조회하는 형태가 될 것 같긴 하네요. (Billing Account User/Viewer : billing.accounts.list API 등을 사용하면 BillingAccountID를 조회할 수 있을 것 같은데, 확인해보지는 않았어요 ^^;;)
@powerkimhub ⬆️ 이미 고민해보신 문제일 수도 있을 것 같긴한데, 살펴보시고 조율 가능하실까요?

@seokho-son

  1. 항목은 기존 제어 위주의 Connection은 기존처럼 Credential 등록/사용이며,
  • Price Info가 필요한 사용자의 경우에만 BillingAccountID 포함한 Credential 등록 후 사용 형태가 될 것입니다.
  • Best: 기존 Credential 한가지로 사용하는 것이므로, 2.와 같은 방법이 있는지 좀더 고민해보지요.
  1. 항목
  • @dev-hippo-an 관련 내용 확인 부탁 드립니다.

@powerkimhub @seokho-son
2. 항목 관련하여 답변드립니다.

  • BillingAccountID 를 사용자에게 입력받지 않고 Billing Account ID 가 필요한 경우 드라이브에서 조회할 수 있는 방법을 확인해보았습니다.

  • ProjectID 가 Credential 에 등록되어 있고, Project 의 입장에서 Billing Account 는 1 (or 0) 이 보장되기 때문에 ProjectID 로 BillingAccountID 를 조회하는 방법을 확인해본 결과

  • projects.getBillingInfo API 를 확인할 수 있었습니다.

  • 요청 파라미터는 ProjectID 를 사용하며 응답은 다음과 같습니다.

{
  "name": "projects/{ProjectID}/billingInfo"
  "projectId": "{ProjectID}",
  "billingAccountName": "billingAccounts/xxxxxx-xxxxxx-xxxxx",
  "billingEnabled": boolean
}
  • Billing Account 를 연결하지 않은 Project 의 getBillingInfo 요청에 대해선 다음과 같은 응답 형태를 가집니다.
{
  "name": "projects/{ProjectID}/billingInfo",
  "projectId": "{ProjectID}",
  "billingAccountName": "",  // 비어있는 문자열
  "billingEnabled": false
}
  • billingEnabled 필드의 true, false 인 두 계정으로 CostEstimation API 를 호출했을 때 두 계정 모두 동일한 200 ok 의 결과를 받을 수 있었습니다.
  • Currency 는 BillingAccount 에 설정된 통화로 보여집니다.

해당 API 를 사용하면 사용자의 별도 사용자 Credential 입력 없이 Driver 에서 Billing Account ID 를 확인 후 가격 정보 조회를 할 수 있을 것으로 보입니다.

추가로, 개발 당시 해당 API 를 확인하지 못했습니다. 이와 관련하여 의견을 주시고 확인할 기회를 주셔서 감사합니다.

@hippo-an hippo-an deleted the fix_priceInfo_gcp_billing_account_id branch January 23, 2024 05:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants