Globus WS MDS

Izvor: CRO NGI

Skoči na: orijentacija, traži

Sadržaj

Uvod

Globus MDS4 koristi WSRF servise za prikupljanje informacija o računalima. Više informacija o MDS4 možete pronaći na adresi [1].

Opis resursa

Organizacija MDS4 servisa je hijerarhijska kao i organizacija MDS2. Na pojedinim klasterima nalaze se Index servisi koji prikupljaju informacije od ostalih lokalnih servisa. Informacije se spremaju u skupinu zapisa, koja se naziva ServiceGroup (prema WS-ServiceGroup specifikaciji, [2]). Trenutačno se prikupljaju informacije od GRAM4 i RFT servisa. Informacije su u XML formatu u obliku elemenata Entry. Primjer jednog Entry zapisa od GRAM4 servisa:

<ns1:Entry xmlns:ns1="http://schemas.xmlsoap.org/ws/2004/03/addressing">
    <ns1:ServiceGroupEntryEPR>
        <ns2:Address>https://161.53.133.2:8443/wsrf/services/DefaultIndexServiceEntry</ns2:Address>
        <ns3:ReferenceProperties xmlns:ns3="http://schemas.xmlsoap.org/ws/2004/03/addressing">
            <ns4:ServiceGroupEntryKey>
                <ns5:GroupKey xmlns:ns5="http://mds.globus.org/aggregator/types">28141700</ns5:GroupKey>
                <ns6:EntryKey xmlns:ns6="http://mds.globus.org/aggregator/types">14133705</ns6:EntryKey>
            </ns4:ServiceGroupEntryKey>
        </ns3:ReferenceProperties>
        <ns7:ReferenceParameters xmlns:ns7="http://schemas.xmlsoap.org/ws/2004/03/addressing"/>
    </ns1:ServiceGroupEntryEPR>
    <ns1:MemberServiceEPR>
        <ns8:Address xmlns:ns8="http://schemas.xmlsoap.org/ws/2004/03/addressing">https://161.53.133.2:8443/wsrf/services/ManagedJobFactoryService</ns8:Address>
        <ns9:ReferenceProperties xmlns:ns9="http://schemas.xmlsoap.org/ws/2004/03/addressing">
            <ns1:ResourceID xmlns:ns1="http://www.globus.org/namespaces/2004/10/gram/job">SGE</ns1:ResourceID>
        </ns9:ReferenceProperties>
        <ns10:ReferenceParameters xmlns:ns10="http://schemas.xmlsoap.org/ws/2004/03/addressing"/>
    </ns1:MemberServiceEPR>
    <ns1:Content xsi:type="ns11:AggregatorContent">
        <ns11:AggregatorConfig>
            <ns11:GetResourcePropertyPollType>
                <ns11:PollIntervalMillis>15000</ns11:PollIntervalMillis>
                <ns11:ResourcePropertyName>glue:GLUECE</ns11:ResourcePropertyName>
            </ns11:GetResourcePropertyPollType>
        </ns11:AggregatorConfig>
        <ns11:AggregatorData>
            <ns1:GLUECE xmlns:ns1="http://mds.globus.org/glue/ce/1.1">
                <ns1:Cluster ns1:Name="SRCE" ns1:UniqueID="SRCE">
                    <ns1:SubCluster ns1:Name="main" ns1:UniqueID="main">
                        <ns1:Host ns1:Name="compute-0-4.local" ns1:UniqueID="compute-0-4.local">
                            <ns1:Processor ns1:CacheL1="0" ns1:CacheL1D="0" ns1:CacheL1I="0" ns1:CacheL2="0" ns1:ClockSpeed="2799" ns1:InstructionSet="x86"/>
                            <ns1:MainMemory ns1:RAMAvailable="1488" ns1:RAMSize="2007" ns1:VirtualAvailable="3621" ns1:VirtualSize="4152"/>
                            <ns1:OperatingSystem ns1:Name="Linux" ns1:Release="2.4.21-20.ELsmp"/>
                            <ns1:Architecture ns1:SMPSize="2"/>
                            <ns1:FileSystem ns1:AvailableSpace="29578" ns1:Name="entire-system" ns1:ReadOnly="false" ns1:Root="/" ns1:Size="34538"/>
                            <ns1:NetworkAdapter ns1:IPAddress="10.255.255.250" ns1:InboundIP="true" ns1:MTU="1500" ns1:Name="compute-0-4.local" ns1:OutboundIP="true"/>
                            <ns1:ProcessorLoad ns1:Last15Min="0" ns1:Last1Min="0" ns1:Last5Min="0"/>
                        </ns1:Host>
                    </ns1:SubCluster>
                </ns1:Cluster>
                <ns1:ComputingElement ns1:Name="batch" ns1:UniqueID="batch">
                    <ns1:Info ns1:TotalCPUs="12"/>
                    <ns1:State ns1:EstimatedResponseTime="0" ns1:FreeCPUs="12" ns1:RunningJobs="0" ns1:Status="enabled" ns1:TotalJobs="0" ns1:WaitingJobs="0" ns1:WorstResponseTime="0"/>
                    <ns1:Policy ns1:MaxCPUTime="0" ns1:MaxRunningJobs="0" ns1:MaxTotalJobs="0" ns1:MaxWallClockTime="0" ns1:Priority="0"/>
                </ns1:ComputingElement>
            </ns1:GLUECE>
        </ns11:AggregatorData>
    </ns1:Content>
 </ns1:Entry> 

Dio ServiceGroupEntryEPR sadrži adresu (End Point Reference, EPR) zapisa u skupini ServiceGroup. MemberService EPR sadrži adresu servisa koji je prijavio informacije, u ovom slučaju GRAM4 servis. Adresa se može koristiti za pristup servisu (pomoću globusrun-ws -Ff, vidi odjeljak 4.2). Content dio sadrži konfiguraciju komponente (AggregatorConfig) koja prijavljuje informacije te same informacije (AggregatorData). GLUECE dio sadrži informacije o GRAM4 servisu i ujedno je najbitniji za krajnjeg korisnika. GLUECE dio se sastoji od Cluster i ComputingElement dijela. Cluster sadrži informacije o čvorovima klastera prikupljene od sustava za nadzor Ganglia. ComputingElement sadrži informacije o sustavu za upravljanje poslovima: ukupan broj čvorova, broj slobodnih čvorova, ograničenja resursa (memorije, diska ), itd. Kako GRAM4 omogućava tri oblika pokretanja poslova: izravno na frontendu (tip Fork), pomoću JMS-a i izvođenje više poslova (tip Multi), u Index servisu bit će prijavljena tri GRAM4 zapisa. Korisnik može razlikovati JMS-ove (SGE i PBS) od Fork i Multi po atributu Name - tipovi Fork i Multi će imati vrijednost default, a JMS-ovi stvarno ime reda poslova (u slučaju CRO-GRID klastera batch ili interactive).

Alat wsrf-query

Osnovna naredba za prikupljanje informacija od MDS4 servisa je

wsrf-query [opcije] "<XPath izraz>"

Parametri naredbe su navedeni u tablici.

Atribut Opis
-a servisu se pristupa bez autentikacije
-s <adresa> adresa servisa koji se kontaktira
-e <datoteka> pristupa se servisu čija je adresa navedena u datoteci

Jezik XPath

Pretraživanje informacija ostvaruje se pomoću XPath jezika. Više informacija o jeziku možete pronaći na adresi [3]. Pregledan uvod u XPath jezik možete pronaći na adresi [4]. Najbitniji izrazi u XPath jeziku su navedeni u tablici.

Atribut Opis
/ označava korijen XML dokumenta, rezultat pretraživanja je cijeli XML dokument.
/<ime> dohvaća sadržaj korijena <ime> XML dokumenta (ukoliko takav postoji)
/<ime1>/<ime2> dohvaća sadržaj svih čvorova <ime2> čiji je izravni predak korijen <ime1>. Ovaj izraz je moguće proizvoljno proširivati - (/<imeN>)...
//<ime> dohvaća sadržaj svih čvorova <ime> bez obzira na njihov položaj u XML dokumentu.
//<ime1>/<ime2> dohvaća sadržaj svih čvorova <ime2> čiji je izravni predak čvor <ime1> koji se može nalaziti bilo gdje u dokumentu. Ovaj izraz je moguće proizvoljno proširivati: /(/<imeN>)...
* označava bilo koje ime čvora. Npr. //<ime>/* dohvaća svu djecu čvora <ime>.
/<ime>[<izraz>] pomoću izraza moguće je definirati uvjete pretraživanja. Pregled izraza i funkcija koje se mogu koristiti u izrazima moguće je pronaći u dokumentaciji [5] (poglavlja 3. i 4.).
@<atribut> dohvaća vrijednost atributa od svih čvorova koji posjeduju taj atribut. Npr. //@brojSlobodnihCvorova.
<izraz_pretrazivanja2> pretraživanje čvorova prema više uvjeta pretraživanja. Izraz se može proizvoljno proširivati. Npr, dohvat Entry i Content čvorova: "//Entry || //Content".
<izraz_pretrazivanja1>/<odnos>::* dohvaća čvorove koji su u odnosu <odnos> s rezultatom pretraživanja. Mogući odnosi su:
  • parent - roditelj pronađenog čvora,
  • child - djeca pronađenog čvora,
  • ancestor - preci pronađenog čvora,
  • descendant - potomci pronađenog čvora,
  • self - pronađeni čvor,
  • following-sibling - čvorovi koji se nalaze nakon pronađenog čvora na istoj hijerarhijskoj razini,
  • preceding-sibling - čvorovi koji se nalaze prije pronađenog čvora na istoj hijerarhijskoj razini,
  • following - svi čvorovi koji se nalaze nakon pronađenog čvora,
  • preceding - svi čvorovi koji se nalaze prije pronađenog čvora.

Ilustracije korištenja svih ovih izraza mogu se pronaći na adresi [6].

Neke korisne funkcije XPath jezika.

Atribut Opis
local-name() dohvaća lokalno ime trenutnog čvora. Imena čvorova se sastoje od prostora imena (namespace) i lokalnog imena. Ova funkcija je iznimno korisna pri korištenju MDS4 servisa, jer svi čvorovi imaju definiran prostor imena. Npr. puno ime čvora Entry je "http://schemas.xmlsoap.org/ws/2004/03/addressing":Entry. Pretraživanje svih čvorova s lokalnim imenom Entry se ostvaruje s izrazom "//*[local-name()='Entry']. Više o imenovanju čvorova u XML dokumentima možete pronaći na adresi [7].
name() dohvaća ime trenutnog čvora. Koristi se umjesto //<ime>. Npr. izraz "//*[name()='Entry']" je ekvivalentan izrazu "//Entry".
count(<skup_cvorova>) dohvaća broj pronađenih rezultata. Npr. broj pronađenih Entry elemenata: "count(//Entry)".
string() dohvaća vrijednost teksta unutar čvora ukoliko ona postoji. Npr. za čvor <ResourceID>Fork</ResourceID>, funkcija string vraća vrijednost Fork.
number(<vrijednost>) dohvaća numeričku vrijednost.

Primjeri korištenja

1. Dohvat svih informacija o svim sredstvima na gridu:

wsrf-query -s https://cs2.cro-ngi.hr/wsrf/services/DefaultIndexService

2. Dohvat informacija o GRAM4 servisima:

wsrf-query -s https://cs2.cro-ngi.hr/wsrf/services/DefaultIndexService "//*[local-name()='GLUECE']"

3. Dohvat ukupnog broja GRAM4 servisa:

wsrf-query -s https://cs2.cro-ngi.hr/wsrf/services/DefaultIndexService "count(//*[local-name()='GLUECE'])"

4. Dohvat informacija o redovima poslova:

wsrf-query -s https://cs2.cro-ngi.hr/wsrf/services/DefaultIndexService "//*[local-name()='ComputingElement']"

5. Dohvat stanja isključivo JMS-ova :

wsrf-query -s https://cs2.cro-ngi.hr/wsrf/services/DefaultIndexService \
    "//*[local-name()='ComputingElement' and @glue:Name!='default']"

6. Dohvat EPR adresa i stanja svih GRAM4 servisa :

wsrf-query -s https://cs2.cro-ngi.hr/wsrf/services/DefaultIndexService \
    "//*[local-name()='MemberServiceEPR'] | //*[local-name()='ComputingElement']"

7. Dohvat ukupnog broja JMS-ova :

wsrf-query -s https://cs2.cro-ngi.hr/wsrf/services/DefaultIndexService \
    "count(//*[local-name()='ResourceID' and string()!='Fork' and string()!='Multi'])"

8. Dohvat EPR adresa svih GRAM4 - JMS servisa :

wsrf-query -s https://cs2.cro-ngi.hr/wsrf/services/DefaultIndexService \
    "//*[local-name()='ResourceID' and string()!='Fork' and string()!='Multi']/parent::*/parent::*"
Osobni alati