Giter Club home page Giter Club logo

gcp-marketplace-integrated-saas's Introduction

Cloud Commerce Partner Procurement API Integration Codelab

This is a step-by-step tutorial for integrating with the Cloud Commerce Partner Procurement API to manage customer Accounts and Entitlements.

The instructions for this codelab are located at https://codelabs.developers.google.com/codelabs/gcp-marketplace-integrated-saas.

The onboarding guide is located at https://cloud.google.com/marketplace/docs/partners/integrated-saas/.

Languages

The codelab directions are specifically tailored to the Python 2.7 implementation.

There are also Python 3 and Java versions that implement similar steps.

Setup

The codelab relies on the values of several environment variables:

  • GOOGLE_APPLICATION_CREDENTIALS The path to your downloaded service account credentials JSON file.

  • GOOGLE_CLOUD_PROJECT The ID of your Google Cloud Project you're using for this codelab.

  • PROCUREMENT_CODELAB_DATABASE The path to the JSON database file you'll use for this codelab. Initially populate this file with {}.

Disclaimer

This is not an officially supported Google product.

gcp-marketplace-integrated-saas's People

Contributors

aaronli39 avatar arshan-alam avatar danhipke avatar deci-ftw avatar dependabot[bot] avatar kishorenamala avatar prashanth9962 avatar tangbiao avatar tatemandel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gcp-marketplace-integrated-saas's Issues

[marketplace-integrated-saas]: create_subscription from https://developers.google.com/gcp-marketplace-saas#3 is out of date

Preliminary steps: I created a fresh python venv, then installed prerequisites using pip install --upgrade google-api-python-client google-cloud google-cloud-pubsub.

In https://developers.google.com/gcp-marketplace-saas#3, the provided create_subscription.py doesn't work out of the box:

  1. it uses a programming API that seemingly doesn't exist anymore
Traceback (most recent call last):
  File "create_subscription.py", line 61, in <module>
    main(sys.argv)
  File "create_subscription.py", line 38, in main
    topic_path = subscriber.topic_path(TOPIC_PROJECT,
  1. subscriber.create_subscription now requires the name and topic arguments to be passed as keywords: its signature is create_subscription(request: google.cloud.pubsub_v1.types.Subscription = None, *, name: str = None, topic: str = None, push_config: google.cloud.pubsub_v1.types.PushConfig = None, ack_deadline_seconds: int = None, retry: google.api_core.retry.Retry = <object object>, timeout: float = None, metadata: Sequence[Tuple[str, str]] = ()) according to https://googleapis.dev/python/pubsub/latest/subscriber/api/client.html#google.cloud.pubsub_v1.subscriber.client.Client.create_subscription

Cheers

[marketplace-integrated-saas]:

On step 4, the instructions are to run the command to create the subscription (which works):

Subscription created: name: "projects/adbe-gcp0739/subscriptions/codelab"
topic: "projects/cloudcommerceproc-prod/topics/DEMO-adbe-gcp0739"
push_config {
}
ack_deadline_seconds: 10
message_retention_duration {
  seconds: 604800
}
expiration_policy {
  ttl {
    seconds: 2678400
  }
}
state: ACTIVE

The subscription is in the console, but click through to the topic gives permission errors (guessing the topic is on a different project ?)

then running the python -m impl.step_1_pubsub.app command appears to be running, but when submitting the "purchase" form nothing ever comes to the console:

Robs-Mac-Studio:python3 robweaver$ python -m impl.step_1_pubsub.app
Listening for messages on projects/adbe-gcp0739/subscriptions/codelab
Exit with Ctrl-\

Also Ctrl-\ doesn't do anything, but I could exit with normal Ctrl-C

[marketplace-integrated-saas]: broken github links

Getting "Precondition check failed." while approving entitlement

When ENTITLEMENT_ACTIVATION_REQUESTED comes, it fails with the following message:

File "/srv/account.py", line 140, in approve_entitlement request.execute() File "/env/lib/python3.7/site-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper return wrapped(*args, **kwargs) File "/env/lib/python3.7/site-packages/googleapiclient/http.py", line 856, in execute raise HttpError(resp, content, uri=self.uri) googleapiclient.errors.HttpError: <HttpError 400 when requesting https://cloudcommerceprocurement.googleapis.com/v1/providers/DEMO-dev-id/entitlements/98e15ffd-c538-428f-b92e-2cda2be98223:approve?alt=json returned "Precondition check failed.">

Please help me with it, this is a major stopper.
Thanks in advance.

P.S. My code has the same implementation of approve_entitlement function.

[marketplace-integrated-saas]:

On step 4, the create_subscription.py script doesn't seem to work.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/andyrose/.pyenv/versions/3.7.5/lib/python3.7/site-packages/google/cloud/pubsub_v1/_gapic.py", line 40, in <lambda>
    fx = lambda self, *a, **kw: wrapped_fx(self.api, *a, **kw)  # noqa
TypeError: create_subscription() takes from 1 to 2 positional arguments but 3 were given

Looking through it, I'm not sure that we would have access to the project 'cloudcommerceproc-prod', but that doesn't seem to be why it failed. When trying to create the subscription in the UI, I am not able to find 'cloudcommerceproc-prod'.

Duplicate class error while building cloudcommerceprocurement jar

I have been following this - https://github.com/googlecodelabs/gcp-marketplace-integrated-saas/tree/master/java to generate cloudcommerceprocurement jar

I did the following -

wget 'https://cloudcommerceprocurement.googleapis.com/$discovery/rest?version=v1' -O discovery.json
python -m pip install google-apis-client-generator --user
~/Library/Python/2.7/bin/generate_library --input=discovery.json --language=java --output_dir=procurement

In the pom file of procurement project the version for google-api-client was set to 1.25.0-SNAPSHOT so I changed it to 1.25.0.

Now when I run mvn clean install, I get the following errors -

[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/com/google/cloudcommerceprocurement/v1/model/ApproveEntitlementPlanChangeRequest.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.ApproveEntitlementPlanChangeRequest
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/./com/google/cloudcommerceprocurement/v1/model/Consumer.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.Consumer
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/./com/google/cloudcommerceprocurement/v1/CloudCommercePartnerProcurementServiceRequestInitializer.java:[80,7] error: duplicate class: com.google.cloudcommerceprocurement.v1.CloudCommercePartnerProcurementServiceRequestInitializer
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/com/google/cloudcommerceprocurement/v1/model/RejectEntitlementRequest.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.RejectEntitlementRequest
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/com/google/cloudcommerceprocurement/v1/model/ListAccountsResponse.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.ListAccountsResponse
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/./com/google/cloudcommerceprocurement/v1/model/Account.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.Account
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/./com/google/cloudcommerceprocurement/v1/model/Entitlement.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.Entitlement
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/./com/google/cloudcommerceprocurement/v1/model/ApproveEntitlementRequest.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.ApproveEntitlementRequest
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/./com/google/cloudcommerceprocurement/v1/CloudCommercePartnerProcurementServiceRequest.java:[25,16] error: duplicate class: com.google.cloudcommerceprocurement.v1.CloudCommercePartnerProcurementServiceRequest
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/com/google/cloudcommerceprocurement/v1/model/Empty.java:[37,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.Empty
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/com/google/cloudcommerceprocurement/v1/CloudCommercePartnerProcurementServiceScopes.java:[24,7] error: duplicate class: com.google.cloudcommerceprocurement.v1.CloudCommercePartnerProcurementServiceScopes
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/./com/google/cloudcommerceprocurement/v1/model/ResetAccountRequest.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.ResetAccountRequest
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/./com/google/cloudcommerceprocurement/v1/model/ListEntitlementsResponse.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.ListEntitlementsResponse
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/./com/google/cloudcommerceprocurement/v1/model/Approval.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.Approval
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/com/google/cloudcommerceprocurement/v1/model/RejectAccountRequest.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.RejectAccountRequest
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/./com/google/cloudcommerceprocurement/v1/model/SuspendEntitlementRequest.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.SuspendEntitlementRequest
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/com/google/cloudcommerceprocurement/v1/model/ApproveAccountRequest.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.ApproveAccountRequest
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/com/google/cloudcommerceprocurement/v1/model/RejectEntitlementPlanChangeRequest.java:[31,13] error: duplicate class: com.google.cloudcommerceprocurement.v1.model.RejectEntitlementPlanChangeRequest
[ERROR] ~/work/gcp-marketplace-integrated-saas/java/procurement/com/google/cloudcommerceprocurement/v1/CloudCommercePartnerProcurementService.java:[40,7] error: duplicate class: com.google.cloudcommerceprocurement.v1.CloudCommercePartnerProcurementService

Python 3

Are there any plans to refactor this codelab to be in Python 3?

[marketplace-integrated-saas]:

following the instructions at https://developers.google.com/gcp-marketplace-saas#3 getting this error
python create_subscription.py
PERMISSION DENIED: Check that the Pub/Sub API is enabled in your project and that your service account was granted the Pub/Sub Editor role.
Check API status at: https://console.cloud.google.com/apis/library/pubsub.googleapis.com?project=opsmx-public
Check IAM roles at: https://console.cloud.google.com/iam-admin/iam?project=opsmx-public

checked that the api version is enabled and the serviceaccount has pubsub-editor role

python --version
Python 3.10.6

pip list | grep google
google-api-core 1.34.0
google-api-python-client 2.89.0
google-auth 2.20.0
google-auth-httplib2 0.1.0
google-cloud 0.34.0
google-cloud-pubsub 1.4.0
googleapis-common-protos 1.59.1
grpc-google-iam-v1 0.12.6

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.