GoodData: Как создать проект через API?

Вы можете создать новый проект в GoodData с помощью API: http://docs.gooddata.apiary.io/#project

Иногда, например, при создании проекта из шаблона, создание проекта происходит не синхронно. Когда я использую проект до того, как он будет готов, я получаю такие ошибки, как 403 и 409.

Каковы возможные состояния проекта (кроме ENABLED)? Каков рекомендуемый способ создания проекта (может быть, опрос для определенного состояния)? Что такое статусы ошибок и как их обрабатывать? Пример кода был бы полезен.


person pcv    schedule 25.03.2014    source источник


Ответы (3)


да, лучший способ - опросить состояние проекта.

проект может иметь эти состояния.

«ПОДГОТОВКА» | 'ПОДГОТОВЛЕНО' | 'ЗАГРУЗКА' | «ВКЛЮЧЕНО» | 'ОТКЛЮЧЕНО' | 'УДАЛЕН' | 'АРХИВИРОВАНО',

Я могу создать пример для вас, какой язык вы предпочитаете для него?

Иржи Саймон

Поддержка GoodData

person Jiri Simon    schedule 26.03.2014

Я бы посоветовал вам использовать Ruby Cookbook для создания новых проектов. У Gooddata очень хорошие библиотеки на ruby ​​для работы с проектами.

Создание проекта по шаблону http://sdk.gooddata.com/gooddata-ruby-examples/#_creating_project_from_template

Создание пустого проекта http://sdk.gooddata.com/gooddata-ruby-examples/#_creating_empty_project

В идеале вы хотели бы создать проект gooddata с помощью инструмента облачного подключения etl, как указано в следующей ссылке https://help.gooddata.com/cloudconnect/manual/gooddata-project.html

person Amogh Huilgol    schedule 17.07.2018

здесь вы можете увидеть очень простой пример на питоне.

from urllib2 import Request, urlopen
import Cookie
from json import dumps
import re
import ast



values = dumps({"postUserLogin":{"login":"[email protected]","password":"mypassword","remember":1}})
headers = {"Accept": "application/json", "Content-Type": "application/json"}
request = Request("https://na1.secure.gooddata.com/gdc/account/login", data=values, headers=headers)
response_body = urlopen(request)
#print response_body.read()
msg = response_body.info()
#print msg.getheaders('set-cookie')
x=msg.getheaders('set-cookie')
import re
GD_SST = re.search('GDCAuthSST(.*?);', x[1]).group()
print GD_SST


headers = {"Cookie": "$Version=0; $Path=/gdc/account", "Accept": "application/json", "Content-Type": "application/json"}
headers['Cookie'] = GD_SST
request = Request("https://na1.secure.gooddata.com/gdc/account/token", headers=headers)
response_body = urlopen(request)
#print response_body.read() 
#print response_body.info() 
msg = response_body.info()
#print msg.getheaders('set-cookie')
x=msg.getheaders('set-cookie')
#print x
GD_TT = re.search('GDCAuthTT(.*?);', x[0]).group()
print GD_TT


values = dumps({ "project" : {
       "content" : {"guidedNavigation": 1, "driver" : "Pg", "authorizationToken" : "MYTOKEN"},
       "meta" : {
       "title" : "Test Project API",
       "summary" : "Testing Project",
       "projectTemplate" : "/projectTemplates/{templateName}/{version}"
       } }
})
headers = {"Accept": "application/json", "Content-Type": "application/json"}
headers['Cookie'] = GD_TT
request = Request("https://na1.secure.gooddata.com/gdc/projects", data=values, headers=headers)
response_body = urlopen(request).read()
#project_url=response_body['uri']
project_url=ast.literal_eval(response_body)['uri']
print project_url

request = Request("https://na1.secure.gooddata.com%s" % project_url , headers=headers)
#response_body = urlopen(request).read()
#print response_body
response_body = urlopen(request).read()
print response_body
#project_details = ast.literal_eval(response_body)['project']
#project_state = project_details['content']['state']

project_state = " "
#print "project_state is %s" % project_state
while project_state != "ENABLED" or project_state != "DELETED" :

    response_body = urlopen(request).read()
    #print response_body
    project_details = ast.literal_eval(response_body)['project']
    project_state = project_details['content']['state']
    print "project_state is %s" % project_state
    if project_state == "DELETED":
      break

if project_state == "ENABLED" :
  print "project created %s" %project_ur
else:
 print "something was wrong"
person Jiri Simon    schedule 26.03.2014