Import External Process and Products - linea-it/dri GitHub Wiki
Descrição da Api para importação de Processos e produtos
Common
name | type | size | Null | Description |
---|---|---|---|---|
ticket | Char | 6 | False | Esta chave é usada para associar o owner do processo/produto importado a um usuário ver Ticket |
Process
name | type | size | Null | Description |
---|---|---|---|---|
process_name | Char | 128 | Internal name do processo de origem ou nome do pipeline que o gerou | |
process_id | Char | 128 | Original process_id | |
owner_username | Char | 128 | False | Display name do proprietário original do processo. |
process_start_date | DateTime | Data de inicio de execução do processo na origem | ||
process_end_date | DateTime | Data de termino da execução do processo na origem | ||
process_description | Char | 128 | Descrição do processo ou Readme | |
process_comment | Char | 128 | Comentário utilizado na submissão do processo | |
releases | Lista dos Releases associados ao processo ver: {releases} | |||
products | Lista de {product} produtos do processo |
Product
name | type | size | Null | Description |
---|---|---|---|---|
type | Char | False | Define qual tipo de produto está sendo importado. os tipos atualmente suportados são: {catalog}, {map}, {mask} | |
class | Char | 128 | False | internal name da classe de produto. verificar na API http://localhost:8000/productclass/. |
name | Char | 128 | False | Internal name do produto na origem. |
product_id | Char | 128 | Id do produto na origem. | |
display_name | Char | 128 | Display name do produto que sera utilizado pelas interfaces. | |
version | Char | 128 | Versão do produto. | |
description | Char | 1024 | Descrição do produto | |
releases | Lista dos Releases associados ao produto ver: {releases} | |||
fields | Lista dos Fields associados ao produto ver: {fields} | |||
filter | Char | 3 | Banda ex: g, r, i, z, Y ... Todos os valores disponíveis podem ser obtidos na Api projecthost/filters/. |
Obs: Caso os produtos não possuam campos field(s) e release(s) estes devem ser do tipo lista vazia. Caso contrário ocorrerá erro no registro do produto.
Catalog
name | type | size | Null | Description |
---|---|---|---|---|
schema | Char | 128 | Schema name da tabela no banco de catalogos quando houver. | |
table | Char | 128 | False | Table name no banco de catalogos. |
Map
name | type | size | Null | Description |
---|---|---|---|---|
schema | Char | 128 | Schema name da tabela no banco de catalogos quando houver. | |
table | Char | 128 | False | Table name no banco de catalogos. |
nside | PositiveSmallInteger | False | valores aceitos para nsize: [16, 32, 64, 128, 256, 512, 1024, 2048, 4096]. | |
ordering | Char | 8 | False | valores aceitos para ordering: [ring, nest]. |
Mask
name | type | size | Null | Description |
---|---|---|---|---|
schema | Char | 128 | Schema name da tabela no banco de catalogos quando houver. | |
table | Char | 128 | False | Table name no banco de catalogos. |
filter | Char | 3 |
Releases
Este atributo possui o mesmo comportamento para processo ou produto, usa o internal_name de um release para fazer a ligação entre o processo ou produto com o release. os valores aceitos podem ser obtidos na Api http://localhost:8000/releases/.
deve ser sempre uma lista mesmo que só tenha um release o valor deve ser passado como array. ex:
"releases": ["y3a1_coadd_test_01"]
Fields
Este atributo permite fazer a ligação entre um produto e um field, deve ser utilizado com produtos que foram gerados a partir de um release com mais de um field exemplo produtos gerados pelo Y1A1 com seus fields SPT, Stripe82, etc. nestes casos o atributo releases pode ser omitindo e no momento da importação sera criada a ligação com os respectivos releases a partir dos seus fields.
para releases sem fields ou com um único field (All) esse atributo pode ser ignorado e a ligação pode ser feita usando apenas o campo releases.
os fields disponiveis podem ser obtidos pela API na url projecthost/fields/
ex: "fields": ["y1a1_coadd_stripe82", "y1a1_coadd_spt"]
Exemplo:
Este exemplo importa um processo com 3 produtos de tipos diferentes map, catalog e mask. para importar esse processo deve se fazer uma Ajax Request para a API usando os seguintes parametros Request
method: POST
url: http://localhost:8000/importexternalprocess/
Substituir localhost pelo projecthost
Headers:
Content-Type: application/json
Authorization: Token string_token
ver Authorization
Body:
{
"ticket":"XQW8283",
"process": {
"owner_username": "carlosadean",
"process_name": "internal_name_do_processo",
"process_id": "10022250",
"process_start_date": "2016-06-27T10:00:00Z",
"process_end_date": "2016-06-27T08:00:00Z",
"process_description": "some process description",
"process_comment": "some comments about my process",
"releases": ["y3a1_coadd_test_01"],
"products": [{
"type": "map",
"class": "systematic_maps_mag_limit",
"product_id": "1001",
"name": "test_maps_ring",
"display_name": "My Map 5",
"version": "1.0",
"schema": "",
"table": "tablename",
"releases": ["y3a1_coadd_test_01"],
"nside":4096,
"ordering":"ring",
"filter": "g",
"description": ""
},{
"type": "catalog",
"class": "galaxy_clusters",
"product_id": "1002",
"name": "my_galaxy_clusters_catalog",
"display_name": "My Catalog",
"version": "1.0",
"schema": "",
"table": "tablename",
"releases": ["y3a1_coadd_test_01"],
"description": ""
},{
"type": "mask",
"class": "molygon",
"product_id": "1003",
"name": "test_mask",
"display_name": "My Mask 1",
"version": "1.0",
"schema": "",
"table": "tablename",
"releases": ["y3a1_coadd_test_01"],
"filter": "g",
"description": "",
}]
}
}
Authorization
A autorização para realizar um import é composta por 2 elementos:
Token
O token é utilizado para autenticar a requisição esse atributo não representa um usuário mas a Instância ou aplicação que está realizando a integração. através deste parâmetro que deve ser passado pelo Header da requisição é que o import vai determinar a origem do que está sendo importado, cada aplicação que for ter acesso a esta integração deve ser adicionada a API ver Create Token.
Obs: o valor do parametro dever ter a string Token seguida de um espaçao e depois o token.
ex:
Authorization: Token f114316cea318f3ad8c08156a2fb3bc01518a223
Ticket
O ticket é associado a um usuario e senha e será uma chave composta por letras e números que deve ser obitida pela API, e deve ser adquirida antes da requisição de import.
Request
method: POST
url: http://localhost:8000/importauthorization/
Substituir localhost pelo projecthost
Headers:
Content-Type: application/json
Authorization: Basic string_authorization
essa string é gerada com por uma base64(username + ':' + password)
A reposta dessa Requisição vai ser:
{
"ticket": "TET5560"
}
Exemplo de para gerar a string_authorization no javascript.
var key = window.btoa(username + ':' + password);
Troubleshooting
-
A interface de produção não possui debug ativado então retornará erro 500 do servidor web. Para debug de problemas utilize a versão de testes.
-
Para testes de inserção de dados utilizar a extensão RESTer no Mozilla e preencher com os dados abaixo:
Headers:
Method: POST URL: https://example.com/dri/api/importexternalprocess/
Name: Content-Type Value: application/json
Name: Authorization Value: Token
Body
Copiar e colar o conteúdo do .json