Allgemeine Information

Aktuell ist die API nur für ETHZ Mitarbeiter freigegeben, Studenten können die Schnittstelle nicht benutzen.

Authentifizierung

Der Webservice benutzt Basic Authentication der ETHZ AD Domain als Authorisierung, womit sie einfach ihr ETH Userkonto benutzen können (inklusive Domain).

Beispiel:
Username: mmuster@ethz.ch
Passwort: xxxxxxx

Auslesen der bestehenden NAS Shares GET

Beschreibung: Es werden die NAS Shares ausgelesen, welche von der angemeldeten Person erstellt worden sind.

URL: https://itshopwsvc.ethz.ch:44348/api/nas

Auslesen eines dedizierten NAS Shares GET

Beschreibung: Es wird der angegebene NAS Shares ausgelesen, sofern die angemeldete Person Besitzer (Owner) oder in der adminGroup des Shares ist.

URL: https://itshopwsvc.ethz.ch:44348/api/nas/{sharename}

Bestellung eines NAS Shares POST

Beschreibung: Es wird ein neuer NAS Share bestellt. Die angemeldete Person kann auch Shares für andere Personen bestellen.

Bedingungen/Einschränkungen:

  • name (der Sharename setzt sich aus [ou]_[institut]_[suffix] zusammen und muss vollständig angegeben werden), wobei das Institut der OU angegliedert sein muss)
  • approvalData (sapElement & sapApprover müssen zusammenpassen)
  • adminGroup (der User muss in der angegebenen Admingruppe enthalten sein)

URL: https://itshopwsvc.ethz.ch:44348/api/nas

Content-Type: application/json

Syntax und Semantik der einzelnen Parameter im body

NameObligatorischSyntaxSemantik
nameja

String, beginnend mit orgUnit, danach institute und suffix,
jeweils durch Unterstrich getrennt

bestimmt den eindeutigen Namen des Shares
sizeInGBjanatürliche ZahlGrösse des Shares in GiB
inodesjanatürliche Zahlmaximale Anzahl möglicher Dateien und Ordner im Share
thresholdInPercentnein0..100Prozentwert gegen welchen die belegte Grösse und die belegten inodes täglich geprüft werden. Bei Überschreitung wird ein E-Mail ausgelöst
adminGroupjaString, AD Gruppenname (ohne Domain)Berechtigungsgruppe auf dem Filesystem und im IT Shop (Modification/Deletion)
storageClassjaQoS1
locationjaRZ | HIT
snapshotPolicyneindailySnapshot | noSnapshotRegel für Disk-basierte Snapshots
backupPolicyneindailyBackup | noBackupRegel für Band-basierte Datensicherung
sapElementja5-stellige Kostenstelle beginnend mit 2 oder
12-stelliges PSP Element inkl. Bindestrich
verrechnungs-relevante Information
sapApproverjaPrimäres E-Mail-Konto / UPNverrechnungs-relevante Information
approvalReasonneinStringInformation für den Bewilliger in Ethis
(cifs) enabledneinfalse | trueFür den Share wird ein CIFS/SMB Export angelegt
(cifs) browsable
neinfalse | trueDer Share wird im Windows-Explorer beim Browsen des Servers angezeigt
(cifs) shareCommentneinStringDer Kommentar ist beim Browsen des Servers neben dem Namen sichtbar
(cifs) hideUnreadableneinfalse | trueAlle Dateien und Verzeichnisse, für die der Benutzer keine Lese-Berechtigung hat, sind aus den Verzeichnislisten ausgeblendet
(cifs) enableDFSneinfalse | trueFür den Share wird ein DFS Eintrag angelegt welcher auf den Share zeigt
(cifs) dfsPathneinString, nur Pfadteil subOu\linkUnter diesem Namen wird der DFS Eintrag angelegt:
\\d.ethz.ch\groups\subOu
(cifs) domainneinDAD Domain der nachfolgenden Berechtigungsgruppe; immer 'D'
(cifs) groupNameneinString, AD Gruppenname (ohne Domain)Die Gruppe erhält einen Eintrag in den 'share permissions' und in der ACL des Filessytems
(cifs) accessneinAllowed
(cifs) permissionneinFull | Change | ReadBerechtigungsstufe bei den 'share permissions'
(nfs) enabledneinfalse | trueFür den Share wird ein NFS Export angelegt
(nfs) clientneinHostname, IP-Adresse , subnet (CIDR Notation) oder netgroupDer/die benannte/n Client/s erhält/erhalten Zugriff auf den Export
(nfs) accessTypeneinRO | RWBerechtigungsstufe: Nur-Lesen oder Lese-/Schreibzugriff
(nfs) squashneinno_root_squash | root_squash

Behandlung beim Zugriff auf den Export als Benutzer root:

root_squash: die ID für root wird auf die höchste UID gemappt

no_root_squash: die ID für root wird auf UID ‘0’ gemappt. Der Benutzer agiert auf dem Share als root.

(nfs) priviledgedPortsneinfalse | truePorts < 1024 gelten als privileged und können vom Client nur genutzt werden wenn der Parameter auf 'true' gesetzt wird
(nfs) protocolVersionneinv3_sys | v4_krb5 | v4_sys_krb5Regelt das mögliche Zugriffsprotokoll und den Security-Typ für den Client
userneinETH Username (ohne Domain)der User wird zum Owner des Shares (Automatisch der Ausführer des Requests, kann aber auch separat gesetzt werden)
orgUnitjaOuName gem. IT Shoporganisatorische Zugehörigkeit des Shareowners (siehe "user" Property oben)
POST Example - CIFS Export
{
  "name": "phys_astro_experiments",
  "sizeInGB": 1024,
  "inodes": 1024,
  "thresholdInPercent": 95,
  "adminGroup": "ID-PPF-NAS-FileShare",
  "storageClass": "QoS1",
  "location": "RZ",
  "snapshotPolicy": "dailySnapshot",
  "backupPolicy": "dailyBackup",
  "approvalData": {
    "sapElement": "nnnnn",
    "sapApprover": "approver@ethz.ch",
    "approvalReason": "Fileablage fuer experimentelle Daten"
  },
  "cifsExportData": {
    "enabled": true
	"browsable": true,
    "shareComment": "Fileablage fuer experimentelle Daten",
    "hideUnreadable": false,
    "enableDFS": false,
    "dfsPath": "",
    "permissions": [
      {
        "domain": "D",
        "groupName": "ID-PPF-NAS-FileShare",
        "access": "Allowed",
        "permission": "Full"
      }
    ]
  },
  "nfsExportData": {
    "enabled": false
  },
  "user": "mmuster",
  "orgUnit": "phys"
}
POST Example - NFS Export
{
  "name": "phys_astro_experiments",
  "sizeInGB": 1024,
  "inodes": 1024,
  "thresholdInPercent": 95,
  "adminGroup": "ID-PPF-NAS-FileShare",
  "storageClass": "QoS1",
  "location": "RZ",
  "snapshotPolicy": "dailySnapshot",
  "backupPolicy": "dailyBackup",
  "approvalData": {
    "sapElement": "nnnnn",
    "sapApprover": "approver@ethz.ch",
    "approvalReason": "Fileablage fuer experimentelle Daten"
  },
  "cifsExportData": {
    "enabled": false
  },
  "nfsExportData": {
    "enabled": true,
    "permissions": [
      {
        "client": "my-client.ethz.ch",
        "accessType": "RO",
        "squash": "no_root_squash",
        "priviledgedPorts": true,
        "protocolVersion": "v3_sys"
      }
    ]
  },
  "user": "mmuster",
  "orgUnit": "phys" 
}

Ändern eines NAS Shares PUT

Beschreibung: Es werden Paramter des angegebenen, bestehenden Shares geändert

Bedingungen/Einschränkungen: 

  • Der User muss Besitzer (Owner) des Shares oder in der Admingruppe enthalten sein 

URL: https://itshopwsvc.ethz.ch:44348/api/nas/

Content-Type: application/json

Syntax und Semantik der einzelnen Parameter im body

NameObligatorischSyntaxSemantik
nameja

String, beginnend mit orgUnit, danach institute und suffix,
jeweils durch Unterstrich getrennt

eindeutiger Name des Shares
sizeInGBneinnatürliche Zahlneue Grösse des Shares in GiB
inodesneinnatürliche Zahlneue maximale Anzahl möglicher Dateien und Ordner im Share
thresholdInPercentnein0..100neuer Prozentwert gegen welchen die belegte Grössun und die belegten inodes täglich geprüft werden. Bei Überschreitung wird ein E-Mail ausgelöst
adminGroupneinString, AD Gruppenname (ohne Domain)neue Berechtigungsgruppe auf dem Filesystem und im IT Shop (Modification/Deletion)
snapshotPolicyneindailySnapshot | noSnapshotneue Regel für Disk-basierte Snapshots
backupPolicyneindailyBackup | noBackupneue Regel für Band-basierte Datensicherung
sapElementnein5-stellige Kostenstelle beginnend mit 2 oder
12-stelliges PSP Element inkl. Bindestrich
verrechnungs-relevante Information
sapApproverneinPrimäres E-Mail-Konto / UPNverrechnungs-relevante Information
approvalReasonneinStringInformation für den Bewilliger in Ethis
(cifs) enabledneinfalse | trueFür den Share wird ein CIFS/SMB Export angelegt oder entfernt
(cifs) browsable
neinfalse | trueDer Share wird im Windows-Explorer beim Browsen des Servers angezeigt
(cifs) shareCommentneinStringDer Kommentar ist beim Browsen des Servers neben dem Namen sichtbar
(cifs) hideUnreadableneinfalse | trueAlle Dateien und Verzeichnisse, für die der Benutzer keine Lese-Berechtigung hat, sind aus den Verzeichnislisten ausgeblendet
(cifs) enableDFSneinfalse | trueFür den Share wird ein DFS Eintrag angelegt oder entfernt
(cifs) dfsPathneinString, nur Pfadteil subOu\linkUnter diesem Namen wird der DFS Eintrag angelegt:
\\d.ethz.ch\groups\subOu
(cifs) domainneinDAD Domain der nachfolgenden Berechtigungsgruppe; immer 'D'
(cifs) groupNameneinString, AD Gruppenname (ohne Domain)Die Gruppe erhält einen Eintrag in den 'share permissions' und in der ACL des Filessytems (Permissions), oder wird entfernt (removePermission)
(cifs) accessneinAllowed
(cifs) permissionneinFull | Change | ReadBerechtigungsstufe bei den 'share permissions'
(nfs) enabledneinfalse | trueFür den Share wird ein NFS Export angelegt
(nfs) clientneinHostname, IP-Adresse , subnet (CIDR Notation) oder netgroupDer/die benannte/n Client/s erhält/erhalten Zugriff auf den Export (Permissions) oder wird entfernt (removePermission)
(nfs) accessTypeneinRO | RWBerechtigungsstufe: Nur-Lesen oder Lese-/Schreibzugriff
(nfs) squashneinno_root_squash | root_squash

Behandlung beim Zugriff auf den Export als Benutzer root:

root_squash: die ID für root wird auf die höchste UID gemappt

no_root_squash: die ID für root wird auf UID ‘0’ gemappt. Der Benutzer agiert auf dem Share als root.

(nfs) priviledgedPortsneinfalse | truePorts < 1024 gelten als privileged und können vom Client nur genutzt werden wenn der Parameter auf 'true' gesetzt wird
(nfs) protocolVersionneinv3_sys | v4_krb5 | v4_sys_krb5Regelt das mögliche Zugriffsprotokoll und den Security-Typ für den Client
PUT Example
{
  "name": "phys_astro_experiments",
  "sizeInGB": 2048,
  "inodes": 2048,
  "thresholdInPercent": 90,
  "adminGroup": "ID.CCR.PFM.ALL",
  "snapshotPolicy": "hourlySnapshot",
  "backupPolicy": "noBackup",
  "approvalData": {
    "sapElement": "nnnnn",
    "sapApprover": "new_approver@ethz.ch",
    "approvalReason": "Mehr Platz fuer experimentelle Daten"
   }, 
  "cifsExportData": {
    "removePermission": [
      {
        "domain": "D",
        "groupName": "ID-PPF-NAS-FileShare"
      }
    ],
    "enabled": true,
    "browsable": true,
    "shareComment": "Fileablage fuer experimentelle Daten",
    "hideUnreadable": true,
    "enableDFS": true,
    "dfsPath": "astro\exp",
    "permissions": [
      {
        "domain": "D",
        "groupName": "ID.CCR.PFM.ALL",
        "access": "Allowed",
        "permission": "Change"
      }
    ]
  },
  "nfsExportData": {
    "removePermission": [
      {
        "client": "my-client.ethz.ch"
      }
    ],
    "enabled": true,
    "permissions": [
      {
        "client": "my-new-client.ethz.ch",
        "accessType": "RW",
        "squash": "no_root_squash",
        "priviledgedPorts": false,
        "protocolVersion": "v3_sys"
      }
    ]
  }
}

Setzen eines neuen NAS Share Owners PUT

Beschreibung: Es wird der bestehende Owner des Shares geändert

Bedingungen/Einschränkungen: 

  • Parameter shareName, newOwner und orgUnit müssen zwingend angegeben werden, wobei der neue Owner Mitglied der OrgUnit sein muss
  • Der angemeldete User muss in der Admingruppe des Shares enthalten sein, um die Änderung ausführen zu können

URL: https://itshopwsvc.ethz.ch:44348/api/nas/newowner

Content-Type: application/json

Syntax und Semantik der einzelnen Parameter im body

NameObligatorischSyntaxSemantik
shareNameja

String, beginnend mit orgUnit, danach institute und suffix,
jeweils durch Unterstrich getrennt

eindeutiger Name des Shares
newOwnerjaETH Username (ohne Domain)der User wird zum Owner des Shares (Automatisch der Ausführer des Requests, kann aber auch separat gesetzt werden)
orgunitjaOuName gem. IT Shoporganisatorische Zugehörigkeit des Shareowners (siehe "user" Property oben)
PUT Example
{
  "shareName": "phys_astro_experiments",
  "newOwner": "mmuster",
  "orgUnit": "ethz"
}
  • No labels