Agentas
Agento diegimas:
Agento šaltinių konfigūravimas:
Sinchronizacija
Sinchronizacija – tai procesas, kurio metu sulyginama tiek duomenų struktūra, tiek patys duomenys tarp duomenų šaltinio ir duomenų Kataloge saugomos informacijos.
Pasiruošimas
Prieš pradedant sinchronizaciją, reikia:
Agento registracija Kataloge
Agentų sąsajos registracija duomenų Kataloge.
Registracija vykdoma organizacijos, kuriai priklauso naudotojas, puslapyje. Norėdami tai atlikti:
Prisijunkite prie duomenų Katalogo.
Viršutiniame dešiniajame kampe užveskite pelę ant savo naudotojo vardo.
pav. Navigacijos juosta – vartotojo skirtukasSąraše pasirinkite „Mano organizacijos duomenų ištekliai“.
pav. Nuoroda į organizacijos duomenų ištekliusAtverkite skirtuką „Agentai“.
pav. Agentų skirtukasSpauskite „Pridėti Agentą“.
pav. Agento pridėjimasUžpildykite formos laukus ir spauskite „Sukurti“.
Atlikus registraciją, pateikiami prisijungimo duomenys. Galimos dvi prisijungimo konfigūracijos, jos priklauso nuo pasirinktos Agento rūšies.
Agento konfigūracija
Agentą reikia konfigūruoti, kad būtų galima pasiekti:
Duomenų Šaltinį
Duomenų Katalogą
Lokalaus/Agento DSA failo nustatymas
Norint vykdyti sinchronizaciją, Agentui reikia nurodyti vietą, kur bus saugomas DSA failas. Pagal šį failą, lyginant jį su duomenų šaltiniu ir katalogu (atskiri proceso etapai), bus atliekami duomenų atnaujinimai arba siunčiami pranešimai apie pasikeitusią duomenų struktūrą (į Katalogą).
Šio failo vietą failinėje sistemoje galima nustatyti config.yml faile.
Pastaba
Vietinio failo nustatymo config.yml konfigūracijoje pavyzdys:
manifest: default
manifests:
default:
type: csv
path: /Users/john_doe/manifest.csv
backend: default
keymap: default
mode: external
Pavyzdyje:
manifests.default.path— nurodoma vietinio failo vieta failinėje sistemoje, kur įdiegtas Agentas (Spinta).
Procesas
Sinchronizacija yra procesas, kurio metu norima įsitikinti, kad duomenų struktūra tarp trijų skirtingų vietų, kuriose ji saugoma, yra nepakitusi.
Struktūra yra saugoma:
Duomenų šaltinyje (pvz.: Duomenų bazė)
Agente, lokaliame faile
Duomenų Kataloge (dažniausiu atveju — https://data.gov.lt/)
Procesas vykdomas trimis etapais. Išsamesnė informacija apie kiekvieną etapą pateikta atitinkamuose skyriuose:
Dėmesio
Norint pradėti sinchronizaciją, Agentui reikia įvykdyti komandą: spinta sync
Sinchronizacija: Katalogas -> Agentas
Šio etapo metu yra atsisiunčiami duomenų rinkiniai iš Katalogo, susieti su pasirinktu Agentu.
Šie duomenų rinkiniai apjungiami į vieną struktūros aprašą, ir pradedamas kiekvienos eilutės palyginimas tarp atsisiųsto failo iš Katalogo ir Agento vietinėje failinėje sistemoje esančio duomenų struktūros failo.
Pakeitimai atliekami pagal tokią atvejų matricą:
Atvejo Nr. |
Katalogas |
Agentas |
Veiksmas |
|---|---|---|---|
1 |
Sutampa |
Sutampa |
Niekas neatliekama |
2 |
Nesutampa |
Nesutampa |
Agento ŠDSA perrašomas iš Katalogo |
3 |
Yra |
Nėra |
Agento ŠDSA papildomas Katalogo informacija |
4 |
Nėra |
Yra |
Niekas neatliekama |
Pavyzdys
Kataloge turint tokį duomenų struktūros aprašą:
id | dataset | resource | base | model | property | type | ref | source | source.type | prepare | origin | count | level | status | visibility | access | uri | eli | title | description
b67a8e27-106c-47a6-a85e-a355c8bd9761 | vssa | | | | | | | https://example.com | | | | | | open | | | | | VSSA | vssa
e23139cb-3c6b-40fd-8fba-1d68e5701733 | | geography | | | | dask/csv | | https://get.data.gov.lt/datasets/org/vssa/geography/:ns | | | | | 4 | | | | | | Geography | geography
| | | | | | | | | | | | | | | | | | | |
25568d69-1456-485c-9fca-8124d41a5295 | | | | Country | | | | | | | | | 4 | completed | package | open | | | Country | country
6faa42c1-7ad6-43be-a266-ccab35dd0bc9 | | | | | | id | integer | property_id | | | | | 4 | | | | | | Identifier | identifier
407270ca-f9bd-4c81-8c64-108b24bfafbe | | | | | | size | integer | property_size | | | | | 4 | | | | | | Size | size
O Agente turint tokį duomenų struktūros aprašą:
id | dataset | resource | base | model | property | type | ref | source | source.type | prepare | origin | count | level | status | visibility | access | uri | eli | title | description
b67a8e27-106c-47a6-a85e-a355c8bd9761 | lrs | | | | | | | https://example.com | | | | | | open | | | | | LRS | lrs
e23139cb-3c6b-40fd-8fba-1d68e5701733 | | law | | | | dask/csv | | https://get.data.gov.lt/datasets/org/vssa/geography/:ns | | | | | 4 | | | | | | Law | example
| | | | | | | | | | | | | | | | | | | |
25568d69-1456-485c-9fca-8124d41a5295 | | | | Person | | | | | | | | | 4 | completed | package | open | | | Person | person
6faa42c1-7ad6-43be-a266-ccab35dd0bc9 | | | | | | uuid | string | property_id | | | | | 4 | | | | | | Unique Identifier | unique identifier
Galutinis struktūros aprašo rezultatas (Agente) atrodys taip:
id | dataset | resource | base | model | property | type | ref | source | source.type | prepare | origin | count | level | status | visibility | access | uri | eli | title | description
b67a8e27-106c-47a6-a85e-a355c8bd9761 | vssa | | | | | | | https://example.com | | | | | | open | | | | | VSSA | vssa
e23139cb-3c6b-40fd-8fba-1d68e5701733 | | geography | | | | dask/csv | | https://get.data.gov.lt/datasets/org/vssa/geography/:ns | | | | | 4 | | | | | | Geography | geography
| | | | | | | | | | | | | | | | | | | |
25568d69-1456-485c-9fca-8124d41a5295 | | | | Country | | | | | | | | | 4 | completed | package | open | | | Country | country
6faa42c1-7ad6-43be-a266-ccab35dd0bc9 | | | | | | id | integer | property_id | | | | | 4 | | | | | | Identifier | identifier
407270ca-f9bd-4c81-8c64-108b24bfafbe | | | | | | size | integer | property_size | | | | | 4 | | | | | | Size | size
Sinchronizacija: Agentas -> Katalogas
Įspėjimas
Funkcionalumas vystomas
Viešųjų raktų sukėlimas ir konfigūravimas
Spinta automatiškai įkelia visus galimus viešuosius raktus JWT žetonų tikrinimui. Raktai parenkami iš šių šaltinių prioritetų tvarka:
Konfigūracijoje nustatyti raktai (
token_validation_key) Jeitoken_validation_keyyra nurodytas, visi jame esantys raktai bus naudojami. Galima nurodyti vieną raktą arba kelis raktus sąrašekeys.Vietinis raktas (
<config_path>/keys/public.json) Jei konfigūracijoje nėra raktų, naudojamas raktas iš lokalaus failopublic.json.URL atsisiunčiami raktai (
token_validation_keys_download_url) Jei nei konfigūracijoje, nei vietiniame faile nėra raktų, galima nurodyti OAuth serverio URL, iš kurio raktai bus atsisiųsti. Atsisiųsti raktai paprastai saugomi lokaliame faile (downloaded_public_keys_file) tolimesniam naudojimui.
Konfigūracijos parametrai
token_validation_key: > # vienas raktas arba raktų sąrašas
{
"keys": [
{
"kid": "rotation-1",
"kty": "RSA",
"alg": "RS512",
"use": "sig",
"n": "oAXjeXtZxiEUI7EcG6uITGCuUHmMQxMdTuSkQMaijmX0R1xSN-sQOgrunTqzldGWYhn4CQXmE34TgoZs2l6pZKNEyzap5IstPAUTFfHamyLka-xBwVRpCJaM_ZY9dEhzn9NUB-mx1ud9_clhmlef0SRQ1E5N_oU9wA_Hgd6hdnRzzTDJzmueF_03fEEf27fd69qzPZerOO7E9ytHJm0RpTF-50MGDL9pJaomAry_m0cw66DRd8rwqE-MiSg1xo02YWYIbaNA13K7jO33lW3iqgLdmtiBvX7qoNhEXC5H_umLvd5hgETGVemFcdFgL0Xnj85uk3puiVMsYXqmzHNxdw",
"e": "AQAB"
},
{
"kty": "RSA",
"n": "l9oSzRInpwJLwsFEs80JQlPyf0k-AqvOef2H-1JpNeaivltEzA_hSX6SSEAm7vciOVOuxBJ0iGr7s0_wY0fKEJ4aFiYHR46zpHT_o0iZxrLwIKJugqDEE96mEPK-o5gVRqs-QJXDmaHzAkVntQRMP6GzKHy5Q6ZZQJWwKg_eTSGnGph34T7PUfSNF50G7qflqmWBiVW7qaNFKbgmB_7be-WZ9mbMVwSMMQwo_aahJqI1ZndKXgYGoEabwgSuJOQrAQbvVOyOHTj0ku-FNo8kb9dVeqi0F1qCvs6SAhCzk7qT215xalWIpX8BI1ZFnCv--6VMqIKEgTtjaaDh3V25SQ",
"e": "AQAB"
}
]
}
token_validation_keys_download_url: https://<auth-serverio-adresas> # URL, iš kurio galima atsisiųsti viešuosius raktus
downloaded_public_keys_file: "custom-well-knows.json" # vietinis failas atsisiųstiems raktams saugoti. Jei nenurodyta - "downloaded-well-knows.json" bus naudojamas.
token_validation_keys_download_url negali būti naudojamas kartu su token_validation_key, nes abu atlieka tą pačią funkciją. Skirtumas tas, kad token_validation_keys_download_url yra dinamiškesnis ir palaiko raktų rotaciją.
Naujus raktus galima parsisiųsti su komanda:
spinta key download
Dėmesio
Jei naudojamas token_validation_keys_download_url ir reikalingas raktų rotavimas, papildomai reikia sukonfigūruoti CRON,
kuris periodiškai vykdytų komandą spinta key download (priklausomai nuo naudojamo auth serverio raktų rotacijos dažnio).
Pavyzdys CRON konfigūracijos:
# Redaguokite crontab:
crontab -e
# Pridėkite šią eilutę:
0 3 * * 1 /usr/bin/env bash -c 'cd /path/to/spinta/project && spinta key download >> /var/log/auth.log 2>&1'
Šiame pavyzdyje raktai bus atnaujinami iš auth serverio kas savaitę pirmadienį 03:00 val. Sau tinkama periodiškumą galima nustatyti pagal https://crontab.guru/
Kliento administravimas
Kliento administravimas yra OAuth kliento kūrimas, peržiūra, keitimas ir trynimas.
Kliento atnaujinimas
Kliento atnaujinimas atliekamas PATCH užklausa adresu spinta_url/auth/clients/{client_id},
siunčiant vieną ar kelis atributus, kuriuos norima pakeisti.
Užklausos leidimai:
Leidimas |
Atributai, kuriuos galima keisti |
Klientai, kuriuos galima keisti |
|---|---|---|
|
|
Visus klientus |
|
|
Tik savo klientą |
Be leidimų |
|
Tik savo klientą |
Užklausa su pilnais duomenimis:
{
"client_name": "New Client Name",
"secret": "New Secret",
"scopes": [
"spinta_getone",
],
"backends": {
"new_resource_name": {
"new_key": "new_value"
}
}
}
- client_name:
Kliento pavadinimas, išduodamas kliento registravimo autentifikacijos servise metu.
- secret:
Naujas kliento slaptažodis.
- scopes:
Leidimai.
- backends:
Atributas, kuriame saugoma papildomi autentifikacijos duomenys, kurie gali būti naudojami prisijungimui prie duomenų šaltinio. Autentifikacijos duomenys saugomi kiekvienam DSA resursui atskirai.
Užklausoje nenurodyti atributai nebus pakeisti. Sėkmingos užklausos atveju bus grąžinamas atsakymas:
{
"client_id": "791cdc66-bed8-4c9f-9d92-0e49a061c3d0",
"client_name": "New Client Name",
"scopes": [
"spinta_getone",
],
"backends": {
"new_resource_name": {
"new_key": "new_value"
}
}
}
Formos, jų laukai ir paaiškinimai
Agento kūrimo / redagavimo forma
Ši forma naudojama Agentui sukurti arba esamam Agentui redaguoti.
Naujo Agento kūrimą inicijuokite paspaudę [Pridėti Agentą] viršutiniame dešiniajame kampe.
Norėdami redaguoti jau sukurtą Agentą, sąraše spustelėkite [Redaguoti] šalia įrašo.

Formos laukai ir jų paaiškinimai
- Pavadinimas
Vartotojui matomas Agento pavadinimas, naudojamas ir kodiniam pavadinimui generuoti.
- Rūšis
Nurodo, kokia paslauga naudojama Agento veikimui:
Spinta – sugeneruojamos dvi konfigūracijos:
Kita – suteikiamas prieigos raktas. Likusi dalis priklauso sprendimo tiekėjui.
- Duomenų paslauga
Nurodo, kuriai duomenų paslaugai Agentas bus priskirtas. Jei nenurodyta, duomenų paslauga bus sukurta automatiškai.
- Aplinka
Nurodo, kurioje aplinkoje bus diegiamas Agentas. Galimos reikšmės:
Vystymo – Agentas bus diegiamas vystymo aplinkoje.
Testavimo – Agentas bus diegiamas testavimo aplinkoje.
Gamybinė – Agentas bus diegiamas gamybinėje aplinkoje.
- Agento adresas
Nurodo Agento pasiekimą per URL arba IP adresą. Jei yra nurodytas vartų adresas, tada agento adresas yra vidinis adresas, kurį mato API vartai. Jei API vartai nenurodyti, tada yra nurodomas išorinis agento adresas.
- Autorizacijos serverio adresas
Nurodo autorizacijos serverio adresą, kuris bus naudojamas metaduomenų sinchronizacijai arba duomenų apsikeitimui.
- API vartų serverio adresas
Nurodo API vartų serverio adresą, kuris bus naudojamas metaduomenų sinchronizacijai arba duomenų apsikeitimui.
- Agentas įjungtas
Nurodo, ar Agentas šiuo metu aktyvus.
- Atviri duomenys publikuojami Saugykloje
Pažymėjus šį lauką, leidžiama publikuoti atvirus duomenis per Agentą.
- Duomenų publikavimo nuoroda
Nurodoma tik tada, kai pažymėtas ankstesnis laukas dėl duomenų publikavimo.
Pastaba
Sukūrus Agentą, pateikiamos reikalingos konfigūracijos ir slaptas prisijungimo raktas. Dėl saugumo šis raktas rodomas tik vieną kartą – būtinai jį išsaugokite.
Agentų sąrašo lentelė
Ši lentelė atvaizduoja visus registruotus Agentus ir jų pagrindinę informaciją.

Rodomi laukai ir jų reikšmės
- Būsena
Būsena apima du indikatoriai:
Spalvotas rutuliukas, žymintis paskutinės sinchronizacijos rezultatą:
Žalia – sinchronizacija pavyko.
Raudona – sinchronizacija nepavyko.
Juoda – sinchronizacija dar nevykdyta.
Indikatorius, ar Agentas yra įjungtas.
- Kodinis pavadinimas
Unikalus pavadinimas, generuojamas sistemoje organizacijos mastu.
- Pavadinimas
Vartotojui matomas pavadinimas. Naudojamas kodiniam pavadinimui generuoti.
- Aplinka
Nurodo, kurioje aplinkoje Agentas bus diegiamas.
- Sukurtas
Agento sukūrimo data.
- Užklausa
Paskutinės sinchronizacijos arba bandymo data.
- Duomenų paslauga
Kiekvienam Agentui automatiškai sukuriama susijusi duomenų paslauga arba nurodyta kuriant/redaguojant Agentą.
- Veiksmai
Prie kiekvieno Agento pateikiami šie veiksmai:
Žurnalas – detali Agento informacija.
Redaguoti – Agento redagavimo forma.
Pašalinti – Agento pašalinimas iš sistemos.
Agento peržiūros forma
Ši forma naudojama peržiūrėti sukurto Agento informaciją ir būseną.

Paaiškinimai apie laukų reikšmes
- Sukurtas
Agento sukūrimo data.
- Pavadinimas
Vartotojui matomas pavadinimas.
- Duomenų paslauga
Duomenų paslauga, automatiškai sukuriama ir susiejama su Agentu arba nurodyta kuriant/redaguojant Agentą.
- Kodinis pavadinimas
Unikalus identifikatorius, generuojamas sistemoje.
- Aplinka
Aplinka, kurioje Agentas bus diegiamas.
- Būsena
Nurodoma, ar Agentas įjungtas.
- Rūšis
Naudojama implementacija:
Spinta – naudojama „Spintos“ sinchronizavimo logika.
Kita – nestandartinė implementacija, įgyvendinta sprendimo tiekėjo.
- Agento adresas
Agento pasiekimas per URL arba IP adresą.
Paskutinės sinchronizacijos rezultatas
Žalia – sinchronizacija pavyko.
Raudona – sinchronizacija nepavyko.
Juoda – sinchronizacija dar nevykdyta.
- Paskutinės sinchronizacijos data
Data ir laikas, kada paskutinė sinchronizacija įvyko.
- Publikuojami atviri duomenys
Ar leidžiama publikuoti atvirus duomenis per šį Agentą.
- Atvirų duomenų servisas
Nuoroda, kur atviri duomenys bus publikuojami. Numatytas adresas: https://get.data.gov.lt
Konfigūracija pagal Agento rūšį
Papildomai, priklausomai nuo pasirinktos rūšies, rodoma specifinė Agento konfigūracija:
- Spinta
Rodoma dvi konfigūracijos dalys:
Prisijungimui prie Katalogo.
pav. Konfigūracija pasirinkus „Spinta“: Agentas -> Katalogas
Prisijungimui prie duomenų šaltinio.
pav. Konfigūracija pasirinkus „Spinta“: Agentas -> Duomenų Šaltinis
Kita
Rodoma tik prieigos rakto informacija. Likusi konfigūracija – sprendimo tiekėjo atsakomybė.
pav. Konfigūracija pasirinkus „Kita“
Užklausų vykdomų per Agentą lentelė
Dar žemiau galima rasti visų užklausų, kurios į Katalogą yra vykdomos per Agentą, lentelę. Lentelėje matoma:
- Data ir laikas
Užklausos atlikimo data ir laikas. Data ir laikas taip pat yra nuoroda į detalesnę užklausos informaciją.
- Tipas
Atliktos užklausos tipas ("GET", "POST", "PUT", "DELETE", "PATCH").
- Adresas
Adresas, i kurį buvo atlikta užklausa.
- Rezultatas
Atliktos užklausos rezultatas ("Sėkminga" arba "Nesėkminga").
- Klaidos pranešimas
Jei atliekant užklausą įvyko klaida, matoma nuoroda į detalesnę užklausos informaciją.

Užklausos peržiūros forma
Ši forma naudojama norint peržiūrėti detalią informaciją apie užklausą, atliktą per Agentą.
Paaiškinimai apie laukų reikšmes
- Data ir laikas
Užklausos atlikimo data ir laikas.
- Agentas
Agentas, per kurį buvo atlikta užklausa į katalogą.
- Užklausos API adresas
Adresas, į kurį buvo atlikta užklausa.
- HTTP metodas
HTTP metodas, kuris buvo naudojamas atliekant užklausą ("GET", "POST", "PUT", "DELETE", "PATCH").
- Rezultatas
Atliktos užklausos rezultatas ("Sėkminga" arba "Nesėkminga").
- Statusas (HTTP)
Būsena kuri buvo pasiekta atliekant užklausą. Išsamiau paaiškina, kodėl rezultatas sėkmingas arba nesėkmingas.

Klaidos atliekant užklausą
Jei atliekant užklausą buvo susidurta su klaida, klaidą galima matyti žemiau.
