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:

  1. Prisijunkite prie duomenų Katalogo.

  2. Viršutiniame dešiniajame kampe užveskite pelę ant savo naudotojo vardo.

    Navigacijos juosta
    pav. Navigacijos juosta – vartotojo skirtukas
  3. Sąraše pasirinkite „Mano organizacijos duomenų ištekliai“.

    Nuoroda į organizacijos duomenų išteklius
    pav. Nuoroda į organizacijos duomenų išteklius
  4. Atverkite skirtuką „Agentai“.

    Agentų skirtukas
    pav. Agentų skirtukas
  5. Spauskite „Pridėti Agentą“.

    Agento pridėjimas
    pav. Agento pridėjimas
  6. Užpildykite formos laukus ir spauskite „Sukurti“.

  7. 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:

  1. Duomenų Šaltinį

  2. 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).

Agento prisijungimas prie Duomenų Šaltinio

Norint prijungti agentą prie duomenų šaltinio, reikia papildomai sukonfigūruoti config.yml failą. Tikslui pasiekti reikia nustatyti:

  • Duomenų šaltinio tipą

  • Duomenų šaltinio nuorodą (pvz.: duomenų bazės prisijungimo URL)

Pastaba

Failo config.yml pavyzdys konfigūruojant prisijungimą į PostgreSQL duomenų bazę:

backends:
  default:
    type: sql
    dsn: postgresql://django:django@localhost:9432/django

Pavyzdyje:

  • backends.default.type nurodomas duomenų šaltinio tipas.

  • backends.default.dsn nurodoma duomenų šaltinio nuoroda.

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ą:

Atvejų apžvalga

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: Duomenų Šaltinis -> Agentas

Įspėjimas

Funkcionalumas vystomas

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:

  1. Konfigūracijoje nustatyti raktai (token_validation_key) Jei token_validation_key yra nurodytas, visi jame esantys raktai bus naudojami. Galima nurodyti vieną raktą arba kelis raktus sąraše keys.

  2. Vietinis raktas (<config_path>/keys/public.json) Jei konfigūracijoje nėra raktų, naudojamas raktas iš lokalaus failo public.json.

  3. 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

auth_clients

client_name, secret, scopes, backends

Visus klientus

client_backends_update_self

backends, secret

Tik savo klientą

Be leidimų

secret

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.

Agento kūrimo/redagavimo forma
pav. Agento kūrimo / redagavimo forma

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ą.

Agento sąrašo lentelė
pav. Agentų sąrašo lentelė

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ą.

Vieno Agento peržvalgos puslapis
pav. Agento peržiūros forma

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.

      Konfigūracija pasirinkus rūšį „Spinta“: Agentas -> Katalogas
      pav. Konfigūracija pasirinkus „Spinta“: Agentas -> Katalogas
    • Prisijungimui prie duomenų šaltinio.

      Konfigūracija pasirinkus rūšį „Spinta“: Agentas -> Duomenų Šaltinis
      pav. Konfigūracija pasirinkus „Spinta“: Agentas -> Duomenų Šaltinis
  • Kita

    Rodoma tik prieigos rakto informacija. Likusi konfigūracija – sprendimo tiekėjo atsakomybė.

    Konfigūracija pasirinkus rūšį „Kita“
    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ą.

Agento užklausų istorijos lentelė
pav. Užklausų istorijos lentelė

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.

Detali agento atlikta užklausa
pav. Užklausos peržiūros forma

Klaidos atliekant užklausą

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

Agento užklausų istorijos klaidos
pav. Užklausos klaida

Duomenų gavimas

Klaidos ir jų paaiškinimai

InvalidClientBackend:

Klaida kyla, kai turimas DSA aprašas su bent vienu resursu su creds(key) prepare funkcija, bet tarp kliento duomenų, backends atribute, nėra išsaugotas atributas su resurso pavadinimu. Būtent šiame kintamąjame creds(key) funkcija ieškos key reikšmės.

Norint pataisyti klaidą, prie kliento duomenų backends atributo reikia pridėti atributą su resurso pavadinimu. Skaityti Kliento atnaujinimas.

InvalidClientBackendCredentials:

Klaida kyla, kai turimas DSA aprašas su bent vienu resursu su creds(key) prepare funkcija, backends atribute yra išsaugotas atributas su resurso pavadinimu, bet atribute nėra išsaugota key reikšmė.

Norint pataisyti klaidą, prie kliento duomenų backends atribute esančio atributo resurso pavadinimu reikia pridėti trūkstamą key reikšmę. Skaityti Kliento atnaujinimas.