Producer Portal (Python) का इस्तेमाल करके, अपने SaaS सलूशन को Google Cloud Marketplace API के साथ इंटिग्रेट करना

1. परिचय

Google Cloud Marketplace पर उपलब्ध SaaS सलूशन, सॉफ़्टवेयर सलूशन होते हैं. ये आपके इन्फ़्रास्ट्रक्चर पर चलते हैं, भले ही आपकी जगह कोई भी हो. हालांकि, इनका बिल Google भेजता है.

इस कोडलैब में, आपको एक बुनियादी SaaS सलूशन सेट अप करने का तरीका बताया जाएगा. यह Google Cloud Marketplace के साथ इंटिग्रेट होता है. इससे ये काम किए जा सकते हैं:

  • जब कोई उपयोगकर्ता सैंपल समाधान के लिए साइन अप करे, तब सूचनाएं पाएं.
  • साइन अप करने वाले ग्राहकों को मंज़ूरी दें और उन्हें अपने डेटाबेस में जोड़ें.
  • उन स्थितियों को मैनेज करें जिनमें ग्राहक, बिलिंग प्लान बदलना या रद्द करना चाहते हैं.
  • Google को इस्तेमाल से जुड़ी रिपोर्ट भेजें.

इस कोडलैब की मदद से, Google Cloud Marketplace के प्रोक्योरमेंट और सेवा कंट्रोल करने वाले एपीआई के बारे में ज़्यादा जाना जा सकता है. ध्यान दें कि इस गाइड में, टेस्टिंग के लिए प्रॉडक्ट एनवायरमेंट की पूरी जानकारी नहीं दी गई है.

2. शुरू करने से पहले

  • अगर आपने पहले से ही अपने प्रोजेक्ट के लिए कोडलैब चालू नहीं किया है, तो Producer Portal का इस्तेमाल करके इसे चालू करें.

Producer Portal का डायरेक्ट लिंक यह है:

https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID

कोड लैब को चालू करने के लिए, स्क्रीन की दाईं ओर मौजूद Codelabs पैनल में, चालू करें पर क्लिक करें.

  • अपनी मशीन पर Python 3 इंस्टॉल करें. साथ ही, ये मॉड्यूल भी इंस्टॉल करें:
  • Python Google Client APIs.
  • google-cloud-pubsub क्लाइंट लाइब्रेरी.

Python मॉड्यूल इंस्टॉल करने के लिए, इस निर्देश का इस्तेमाल करें:

pip install --upgrade google-api-python-client google-cloud-pubsub
  • इस कोडलैब के लिए, GitHub रिपॉज़िटरी को क्लोन करें या डाउनलोड करें. इसके लिए, यह कमांड इस्तेमाल करें:
git clone https://github.com/googlecodelabs/gcp-marketplace-integrated-saas.git
cd gcp-marketplace-integrated-saas

  • इस प्रोजेक्ट के आईडी के लिए, GOOGLE_CLOUD_PROJECT एनवायरमेंट वैरिएबल सेट करें:
  • Linux:
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
  • Windows:
set GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID
  • GOOGLE_APPLICATION_CREDENTIALS एनवायरमेंट वैरिएबल को डाउनलोड की गई फ़ाइल के पूरे पाथ पर सेट करें:
  • Linux:
export GOOGLE_APPLICATION_CREDENTIALS="[YOUR_MACHINE]/path/service-account-key.json"
  • Windows:
set GOOGLE_APPLICATION_CREDENTIALS=[YOUR_MACHINE]/path/service-account-key.json
  • Google Cloud Marketplace में समाधान का सैंपल देखने के लिए, Producer Portal पर जाएं. इसके बाद, Codelabs पैनल में जाकर Codelab product पर क्लिक करें. इस समाधान को सीधे तौर पर https://console.cloud.google.com/marketplace/product/DEMO-YOUR_PROJECT_ID/isaas-codelab पर भी ऐक्सेस किया जा सकता है
  • Google Cloud Console में, अपने नए प्रोजेक्ट में Partner Procurement API चालू करें.

इसके बाद, सैंपल समाधान के लिए बैकएंड सेट अप करें.

3. Google Cloud Marketplace के साथ इंटिग्रेट करना

बड़े लेवल पर, सैंपल समाधान को Google Cloud Marketplace के साथ इन तरीकों से इंटिग्रेट किया जा सकता है:

  • Google Cloud Marketplace से सूचनाएं पाने के लिए, Cloud Pub/Sub के साथ इंटिग्रेट करें. जैसे, जब कोई उपयोगकर्ता आपके समाधान के लिए साइन अप करता है. आपका पार्टनर इंजीनियर, Cloud Pub/Sub का एक विषय बनाता है. सूचनाएं पाने के लिए, आपको इसकी सदस्यता लेनी होगी.
  • नए ग्राहकों के लिए खाते बनाने के लिए, Partner Procurement API के साथ इंटिग्रेट करें. जब उपयोगकर्ता सदस्यता प्लान चुनते हैं, बदलते हैं या रद्द करते हैं, तब खातों को अपडेट करने के लिए Partner Procurement API का इस्तेमाल किया जाता है. एपीआई के साथ इंटिग्रेट करने के लिए, आपको अपनी क्लाइंट लाइब्रेरी बनानी होगी.
  • इस्तेमाल की जानकारी देने के लिए, Google सेवा नियंत्रण के साथ इंटिग्रेट करें.

4. Cloud Pub/Sub विषय की सदस्यता लेना

जब कोई उपयोगकर्ता सदस्यता प्लान चुनता है, तो आपको Cloud Pub/Sub विषय के ज़रिए Google Cloud Marketplace से सूचना मिलती है.

Cloud Pub/Sub विषय पर मैसेज सुनने के लिए, आपको सबसे पहले सदस्यता बनानी होगी.

सदस्यता बनाने के लिए, create_subscription.py स्क्रिप्ट का इस्तेमाल करें:

cd gcp-marketplace-integrated-saas/tools
python create_subscription.py

सदस्यता देखने के लिए, Cloud Console में Cloud Pub/Sub डैशबोर्ड खोलें:

https://console.cloud.google.com/cloudpubsub/subscriptions

सदस्यता के लिए अनुरोध करने की सुविधा को आज़माएं

उपयोगकर्ता के तौर पर इस सैंपल ऐप्लिकेशन को टेस्ट करने के लिए, Marketplace में codelab प्रॉडक्ट खोलें. इसके लिए, https://console.cloud.google.com/marketplace/product/DEMO-YOUR_PROJECT_ID/isaas-codelab पर जाएं. पक्का करें कि आपने अपना कोडलैब प्रोजेक्ट चुना हो. इसके बाद, सदस्यता प्लान चुनें.

कोई प्लान चुनने पर भेजे गए Cloud Pub/Sub मैसेज देखने के लिए, रिपॉज़िटरी में python3 डायरेक्ट्री के रूट पर जाएं और यह कमांड चलाएं:

~/gcp-marketplace-integrated-saas/python3$ python -m impl.step_1_pubsub.app

Cloud Pub/Sub मैसेज सुनने वाले सैंपल कोड को देखने के लिए, https://github.com/googlecodelabs/gcp-marketplace-integrated-saas/blob/master/python3/impl/step_1_pubsub/app.py पर जाएं.

Cloud Pub/Sub मैसेज में, eventType फ़ील्ड से पता चलता है कि मैसेज क्यों भेजा गया था. कोई प्लान चुनने पर, आपको eventType: ENTITLEMENT_CREATION_REQUESTED का मैसेज दिखेगा. यह आपके चुने गए पिछले सदस्यता प्लान को दिखाता है.

अगर स्क्रिप्ट चालू रहने के दौरान प्लान रद्द किया जाता है, तो आपको eventType: ENTITLEMENT_CANCELLED के लिए एक नया मैसेज दिखेगा.

ध्यान दें कि ऊपर दिए गए सैंपल में, मैसेज को स्वीकार नहीं किया गया है. इससे आपको हर बार ऐप्लिकेशन चलाने पर एक ही मैसेज मिलता है. इससे आपको टेस्टिंग करने में आसानी होती है.

स्क्रिप्ट बंद करने के लिए, CTRL + \ दबाएं.

5. खाते के अनुरोध को स्वीकार करना

अब आपको Google Cloud Marketplace से मैसेज मिल सकते हैं. इसलिए, आपको उन संसाधनों को मैनेज करना होगा जिन्हें Google Cloud Marketplace Procurement सेवा, खरीदार की ओर से बनाती है.

पहला खाता संसाधन है. खाता, ग्राहक के आपके प्रॉडक्ट से कनेक्शन को दिखाता है. आपको ग्राहक के Procurement खाते का आईडी अपने डेटाबेस में सेव करना होगा, ताकि उनके Google खाते और आपकी सेवा के लिए बनाए गए खाते के बीच संबंध को मैप किया जा सके.

जब कोई ग्राहक कोई प्लान चुनता है, तो Google Cloud Marketplace, Cloud Pub/Sub को एक सूचना भेजता है. इसमें बताया जाता है कि ग्राहक खाते का अनुरोध कर रहा है. आपके ऐप्लिकेशन को अनुरोध स्वीकार करना होगा. इस कोडलैब में, Cloud Pub/Sub से मैसेज मिलने पर, खाते के अनुरोधों को स्वीकार किया जाता है.

खाते की जानकारी के लिए डेटाबेस बनाना

इस कोडलैब के लिए, हम एक सामान्य JSON डेटाबेस का इस्तेमाल करते हैं. यह डेटाबेस, ग्राहक खातों और खरीदारी को ट्रैक कर सकता है.

इस सैंपल को आज़माने के लिए, अपने वर्कस्टेशन पर किसी भी जगह पर एक फ़ाइल बनाएं. इसमें एक खाली JSON ऑब्जेक्ट हो:

{}

PROCUREMENT_CODELAB_DATABASE एनवायरमेंट वैरिएबल को इस फ़ाइल के पूरे पाथ पर सेट करें:

  • Linux:
export PROCUREMENT_CODELAB_DATABASE="YOUR_MACHINE/path/EMPTY_JSON_OBJECT.json"
  • Windows:
set PROCUREMENT_CODELAB_DATABASE=YOUR_MACHINE/path/EMPTY_JSON_OBJECT.json

डेटाबेस को पढ़ने और उसमें बदलाव करने वाला मॉड्यूल, python3/impl/database में है.

सैंपल के तौर पर लागू किए गए इस तरीके में, एक ऐसे स्कीमा का इस्तेमाल किया गया है जिसे बढ़ाया जा सकता है. ऐसा तब किया जा सकता है, जब Google Cloud Marketplace के साथ एक से ज़्यादा प्रॉडक्ट ऑफ़रिंग इंटिग्रेट की जा रही हों. यहां एक ऐसे उपयोगकर्ता के लिए डेटाबेस एंट्री का उदाहरण दिया गया है जिसने सैंपल ऐप्लिकेशन में Very Good प्लान की सदस्यता ली है:

{
   "a2b3c4d5-b3f1-4dea-b134-generated_id":{
      "procurement_account_id":"generated-b3f1-4dea-b134-4a1d100c0335",
      "internal_account_id":"generated-45b7-4f4d-1bcd-2abb114f77de",
      "products":{
         "isaas-codelab":{
            "start_time":"2019-01-04T01:21:16.188Z",
            "plan_id":"very-good",
            "product_id":"isaas-codelab",
            "consumer_id":"project_number:123123345345"
         }
      }
   }
}

आखिरी चरण में, आपको अपने ऐप्लिकेशन को अपने डेटाबेस से कनेक्ट करना होगा. इससे, ग्राहकों के Google Cloud Marketplace खातों को अपनी ग्राहक संसाधनों से लिंक किया जा सकेगा.

खाते को मंज़ूरी देना

खाते के अनुरोध को स्वीकार करने के लिए, यह कमांड चलाएं:

~/gcp-marketplace-integrated-saas/python3$ python3 -m impl.step_2_account.app

खाते को मंज़ूरी देने के लिए सैंपल कोड, impl/step_2_account में मौजूद है.

सैंपल के तौर पर लागू किए गए इस कोड में, Procurement क्लास का इस्तेमाल किया गया है. यह Procurement API के साथ इंटरैक्शन को मैनेज करती है. इसके get_account() और approve_account() तरीके यहां दिए गए हैं:

step_2_account/app.py

def _get_account_name(self, account_id):
    return 'providers/DEMO-{}/accounts/{}'.format(PROJECT_ID,
                                                  account_id)

def get_account(self, account_id):
    """Gets an account from the Procurement Service."""
    name = self._get_account_name(account_id)
    request = self.service.providers().accounts().get(name=name)
    try:
        response = request.execute()
        return response
    except HttpError as err:
        if err.resp.status == 404:
            return None

def approve_account(self, account_id):
    """Approves the account in the Procurement Service."""
    name = self._get_account_name(account_id)
    request = self.service.providers().accounts().approve(
        name=name, body={'approvalName': 'signup'})
    request.execute()

इस कोडलैब के लिए, खरीद सेवा में सेवा देने वाली कंपनी का आईडी DEMO-YOUR_PROJECT_ID है. यहां YOUR_PROJECT_ID वह प्रोजेक्ट है जिसे आपने बनाया है. Procurement API के साथ इंटरैक्ट करते समय, खाते के नाम का फ़ॉर्मैट यह होना चाहिए:

providers/DEMO-YOUR_PROJECT_ID/accounts/account-id

इसके बाद, आपको एनटाइटलमेंट को मंज़ूरी देनी होगी. यह ग्राहक की खरीदारी का रिकॉर्ड होता है.

6. एनटाइटलमेंट को मंज़ूरी देना

जब कोई ग्राहक Google Cloud Marketplace में सदस्यता प्लान चुनता है, तो एक खाता बनाया जाता है. इसके बाद, तुरंत एनटाइटलमेंट का नया अनुरोध बनाया जाता है. एनटाइटलमेंट, किसी सेवा की खरीदारी को दिखाता है. ग्राहक को सेवा का इस्तेमाल करने की अनुमति देने से पहले, आपको एनटाइटलमेंट के अनुरोध को स्वीकार करना होगा. इसके बाद, ग्राहक के लिए सेवा सेट अप करनी होगी, ताकि वह इसका इस्तेमाल शुरू कर सके.

जब सैंपल ऐप्लिकेशन को eventType ENTITLEMENT_CREATION_REQUESTED के साथ Cloud Pub/Sub मैसेज मिलता है, तो एनटाइटलमेंट को मंज़ूरी मिल जाती है. इसके बाद, ऐप्लिकेशन को ENTITLEMENT_ACTIVE मैसेज का इंतज़ार करना होता है, ताकि डेटाबेस में एनटाइटलमेंट रिकॉर्ड किया जा सके. इसके बाद, ग्राहक के लिए संसाधन सेट अप किए जाते हैं.

एनटाइटलमेंट बनाने के लिए, यह कमांड चलाएं:

~/gcp-marketplace-integrated-saas/python3$ python3 -m impl.step_3_entitlement_create.app

एनटाइटलमेंट को मंज़ूरी देने का कोड, सैंपल लागू करने में दिया गया है.

इसके बाद, आपको उन स्थितियों को मैनेज करना होगा जिनमें कोई खरीदार, सदस्यता प्लान में बदलाव करने का अनुरोध करता है.

7. किसी एनटाइटलमेंट में किए गए बदलावों को स्वीकार करना

अगर आपकी सेवा के लिए कई प्लान उपलब्ध हैं, तो आपको उन ग्राहकों के अनुरोधों को मैनेज करना होगा जो अपने मौजूदा प्लान को अपग्रेड या डाउनग्रेड करना चाहते हैं.

अगर आपकी सेवा के लिए सिर्फ़ एक प्लान उपलब्ध है, तो रद्द की गई खरीदारी मैनेज करें पर जाएं.

किसी एनटाइटलमेंट के पहली बार चालू होने और प्लान बदलने के बाद चालू होने में कोई तकनीकी अंतर नहीं होता. इस वजह से, सैंपल लागू करने के लिए, दोनों मामलों में handleActiveEntitlement() का एक ही तरीका इस्तेमाल किया जाता है. यह तरीका, एनटाइटलमेंट से जुड़े इवेंट के लिए आने वाले मैसेज की जांच करता है:

step_4_entitlement_change/app.py

def handleActiveEntitlement(self, entitlement, customer, accountId):
  """Updates the database to match the active entitlement."""

  product = {
      'product_id': entitlement['product'],
      'plan_id': entitlement['plan'],
  }

  if 'consumerId' in entitlement:
    product['consumer_id'] = entitlement['consumerId']

  customer['products'][entitlement['product']] = product

  self.db.write(accountId, customer)

यहां दिए गए स्निपेट से पता चलता है कि eventType, ENTITLEMENT_PLAN_CHANGE_REQUESTED है या ENTITLEMENT_PLAN_CHANGED:

step_4_entitlement_change/app.py

elif eventType == 'ENTITLEMENT_PLAN_CHANGE_REQUESTED':
  if state == 'ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL':
    # Don't write anything to our database until the entitlement becomes
    # active within the Procurement Service.
    self.approveEntitlementPlanChange(id, entitlement['newPendingPlan'])
    return True

elif eventType == 'ENTITLEMENT_PLAN_CHANGED':
  if state == 'ENTITLEMENT_ACTIVE':
    # Handle an active entitlement after a plan change.
    self.handleActiveEntitlement(entitlement, customer, accountId)
    return True

आखिरी चरण में, जब एनटाइटलमेंट ENTITLEMENT_ACTIVE स्थिति में वापस आ जाता है, तो आपकी लिसनर विधि को अपने डेटाबेस को अपडेट करना चाहिए, ताकि बदलाव दिख सके. साथ ही, ज़रूरी प्रावधान करने चाहिए.

आपने अपने प्रॉडक्ट को पार्टनर इंजीनियर के साथ कैसे सेट अप किया है, इसके आधार पर हो सकता है कि आपकी सेवा, बिलिंग साइकल के खत्म होने तक सदस्यता को डाउनग्रेड या रद्द करने की अनुमति न दे. ऐसे मामलों में, प्लान बदलने का अनुरोध मंज़ूरी मिलने के बाद भी 'मंज़ूरी बाकी है' स्थिति में रहेगा. हालांकि, प्लान बदलने की प्रोसेस पूरी होने तक, एनटाइटलमेंट ENTITLEMENT_ACTIVE स्थिति में वापस नहीं जाएगा.

एनटाइटलमेंट में हुए बदलावों की जांच करने और उन्हें स्वीकार करने वाले कोड के लिए, सैंपल लागू करने का तरीका देखें.

इसके बाद, आपको उन स्थितियों को मैनेज करना होगा जिनमें खरीदार अपनी खरीदारी रद्द करते हैं.

8. रद्द की गई खरीदारी मैनेज करना

खरीदार, अपनी खरीदारी रद्द कर सकते हैं. आपने अपने पार्टनर इंजीनियर के साथ मिलकर, प्रॉडक्ट को जिस तरह से सेट अप किया है उसके हिसाब से, सदस्यता रद्द करने का अनुरोध तुरंत लागू हो सकता है या बिलिंग साइकल के खत्म होने पर लागू हो सकता है.

जब कोई खरीदार अपनी खरीदारी रद्द करता है, तो उसे eventType ENTITLEMENT_PENDING_CANCELLATION वाला मैसेज भेजा जाता है. अगर आपने रद्द किए गए प्रॉडक्ट को तुरंत प्रोसेस करने के लिए सेट अप किया है, तो eventType ENTITLEMENT_CANCELLED वाला मैसेज तुरंत भेज दिया जाता है.

step_5_entitlement_cancel/app.py

elif eventType == 'ENTITLEMENT_CANCELLED':
  # Clear out our records of the customer's plan.
  if entitlement['product'] in customer['products']:
    del customer['products'][entitlement['product']]

  ### TODO: Turn off customer's service. ###
  self.db.write(accountId, customer)
  return True

elif eventType == 'ENTITLEMENT_PENDING_CANCELLATION':
  # Do nothing. We want to cancel once it's truly canceled. For now it's
  # just set to not renew at the end of the billing cycle.
  return True

elif eventType == 'ENTITLEMENT_CANCELLATION_REVERTED':
  # Do nothing. The service was already active, but now it's set to renew
  # automatically at the end of the billing cycle.
  return True

आपकी सेवा को ENTITLEMENT_CANCELLED के मैसेज का इंतज़ार करना होगा. इसके बाद, आपको अपने डेटाबेस से एनटाइटलमेंट हटाना होगा और ग्राहक के लिए सेवा बंद करनी होगी.

एनटाइटलमेंट रद्द होने के बाद, इसे Google के सिस्टम से मिटा दिया जाता है. साथ ही, eventType ENTITLEMENT_DELETED वाला मैसेज भेजा जाता है:

step_5_entitlement_cancel/app.py

elif eventType == 'ENTITLEMENT_DELETED':
  # Do nothing. Entitlements can only be deleted when they are already
  # cancelled, so our state is already up-to-date.
  return True

एनटाइटलमेंट रद्द करने वाले कोड के लिए, सैंपल कोड देखें.

9. इस्तेमाल की जानकारी देने वाली रिपोर्ट भेजना

कुछ सेवाओं में इस्तेमाल पर आधारित कॉम्पोनेंट होते हैं. इनमें Google को यह जानना होता है कि ग्राहक ने सेवा का इस्तेमाल किस तरह किया है, ताकि उससे सही शुल्क लिया जा सके. आपकी सेवा को Google Service Control API के ज़रिए, इस्तेमाल की जानकारी देनी होगी.

अगर आपकी सेवा में इस्तेमाल के आधार पर शुल्क लेने वाले कॉम्पोनेंट नहीं हैं, तो इस सेक्शन को छोड़ दें.

इस्तेमाल की रिपोर्ट भेजने के बारे में ज़्यादा जानकारी के लिए, शामिल होने से जुड़ा दस्तावेज़ देखें.

इस्तेमाल की जानकारी देने वाली रिपोर्ट, Google Service Control API को हर घंटे भेजी जानी चाहिए. इस कोडलैब में, रिपोर्ट भेजने के लिए एक स्क्रिप्ट का इस्तेमाल किया जाता है. इसे क्रॉन जॉब के तौर पर शेड्यूल किया जा सकता है. यह स्क्रिप्ट, डेटाबेस में इस्तेमाल की रिपोर्ट के आखिरी समय को सेव करती है. साथ ही, इस्तेमाल का पता लगाने के लिए, इसे शुरुआती समय के तौर पर इस्तेमाल करती है.

यह स्क्रिप्ट, सेवा के हर चालू ग्राहक की जांच करती है. साथ ही, ग्राहक के एनटाइटलमेंट के consumer_id फ़ील्ड का इस्तेमाल करके, Google सेवा कंट्रोल को इस्तेमाल की रिपोर्ट भेजती है. इसके बाद, स्क्रिप्ट ग्राहक के लिए डेटाबेस एंट्री को अपडेट करती है, ताकि last_report_time को इस्तेमाल की रिपोर्ट के खत्म होने के समय पर सेट किया जा सके.

Google Service Control, दो तरीके उपलब्ध कराता है: check और report. पहले वाले को हमेशा दूसरे वाले को कॉल करने से ठीक पहले कॉल किया जाना चाहिए. अगर पहले वाले में कोई गड़बड़ी है, तो उसे ठीक होने तक ग्राहक की सेवा बंद कर दी जानी चाहिए.

किसी एनटाइटलमेंट के सभी इस्तेमाल का श्रेय, एक ही usageReportingId को दिया जाता है. हालांकि, SaaS प्रॉडक्ट के लिए, यह इस्तेमाल Google Cloud Billing में [Charges not specific to a project] लाइन आइटम से जुड़ा होता है. अगर आपके SaaS प्रॉडक्ट को किसी ग्राहक के संगठन में बड़े पैमाने पर शेयर किया जा सकता है और आपको लागत एट्रिब्यूशन की सुविधा का इस्तेमाल करना है, तो हमारा सुझाव है कि आपकी सभी सेवाओं में, इस्तेमाल की रिपोर्ट पर मौजूद userLabels फ़ील्ड शामिल हो. operation.

Google Cloud Marketplace, cloudmarketplace.googleapis.com/resource_name और cloudmarketplace.googleapis.com/container_name लेबल कुंजियों को रिज़र्व करता है. इन लेबल का मकसद, आपकी नेटिव सेवा और संसाधन के क्रम के हिसाब से इस्तेमाल के कॉन्टेक्स्ट को कैप्चर करना है. इन संसाधनों के लिए, ग्राहक की ओर से असाइन किए गए नाम, इस्तेमाल की रिपोर्ट में लेबल वैल्यू के तौर पर शामिल किए जाएंगे. हमारा सुझाव है कि आप इन लेबल को अपनी इस्तेमाल की रिपोर्ट में डिफ़ॉल्ट रूप से शामिल करें.

लेबल की कुंजी

लेबल की वैल्यू

ब्यौरा

cloudmarketplace.googleapis.com/resource_name

RESOURCE_NAME

इस्तेमाल की मेट्रिक से जुड़े संसाधन का नाम.

cloudmarketplace.googleapis.com/container_name

CONTAINER_NAME

संसाधन कंटेनर का नाम.

यहां दिया गया स्निपेट, डेमो ऐप्लिकेशन के इस्तेमाल की जानकारी देता है. साथ ही, SaaS प्रॉडक्ट के इस्तेमाल का श्रेय, ग्राहक की ओर से असाइन किए गए products_db नाम के संसाधन को देता है. इस कोडलैब के लिए, service_name isaas-codelab.mp-marketplace-partner-demos.appspot.com है.

operation = {
  'operationId': '<UUID>',
  'operationName': 'Codelab Usage Report',
  'consumerId': 'project_number:<Project Number>',
  'startTime': '<Timestamp>',
  'endTime': '<Timestamp>',
  'metricValues': [{
      'int64Value': 100,
  }],
  'userLabels': {
    'cloudmarketplace.googleapis.com/container_name': 'saas-storage-solutions',
    'cloudmarketplace.googleapis.com/resource_name': 'products_db'
  }
}

service.services().report(
    serviceName=service_name, body={
        'operations': [operation]
    }).execute()
product['last_report_time'] = end_time
database.write(customer_id, customer)

पूरे कोड के लिए, इस स्क्रिप्ट का सैंपल लागू करने का तरीका देखें. इस्तेमाल की सैंपल रिपोर्ट बनाने के लिए, यह कमांड चलाएं:

~/gcp-marketplace-integrated-saas/python3$ python3 -m impl.step_6_usage_reporting.report isaas-codelab.mp-marketplace-partner-demos.appspot.com

10. बधाई हो!

आपने यह जाना कि ग्राहक खातों और एनटाइटलमेंट को मैनेज करने के लिए, आपके SaaS समाधान को Google Cloud Marketplace के साथ कैसे इंटिग्रेट किया जा सकता है. साथ ही, किसी सेवा के इस्तेमाल की जानकारी कैसे दी जा सकती है. इंटिग्रेशन की पूरी जानकारी पाने के लिए, बैकएंड इंटिग्रेशन से जुड़ा दस्तावेज़ देखें.

व्यवस्थित करें

अगर आपको इनका इस्तेमाल नहीं करना है, तो इन संसाधनों को मिटाएं:

  • Cloud Pub/Sub की सदस्यता
  • सेवा खाता और उसकी कुंजियां
  • इसके अलावा, आपके पास वह प्रोजेक्ट चुनने का विकल्प भी होता है जिसे आपने बनाया है
  • वैकल्पिक तौर पर, वह बिलिंग खाता जिसे आपने बनाया है

आगे क्या करना है

अपने फ़्रंटएंड को इंटिग्रेट करना

इस कोडलैब में दिए गए सैंपल, खातों और एनटाइटलमेंट को अपने-आप मंज़ूरी दे देते हैं. असल में, आपके खरीदारों को उस साइन-अप पेज पर रीडायरेक्ट किया जाना चाहिए जिसे आपने बनाया है. इस पेज पर, वे आपके सिस्टम में खाते बना सकते हैं. साइन अप करने के बाद, आपको उनके खातों और एनटाइटलमेंट को मंज़ूरी देने के लिए, एपीआई अनुरोध करने होंगे.

अपने ऐप्लिकेशन के फ़्रंटएंड को इंटिग्रेट करने के बारे में जानकारी के लिए, Google Cloud Marketplace का दस्तावेज़ देखें.

SaaS समाधान उपलब्ध कराने के बारे में ज़्यादा जानें

Google Cloud Marketplace पर SaaS समाधान ऑफ़र करने की खास जानकारी के लिए, SaaS समाधान ऑफ़र करना लेख पढ़ें.