160 likes | 278 Views
Questions/Comments on WS-Agreement Specification. 22 nd September 2004 Toshiyuki Nakata NEC Corporation. AP Server. DBMS. Web Server. AP Server. AP Server. DBMS. Web Server. AP Server. Sales Info. Client Info. Global UseCase What we would like to do. JobDescription. ASP Provider.
E N D
Questions/Comments on WS-Agreement Specification 22nd September 2004 Toshiyuki Nakata NEC Corporation
AP Server DBMS Web Server AP Server AP Server DBMS Web Server AP Server Sales Info. Client Info Global UseCaseWhat we would like to do.. JobDescription ASP Provider • Make it possible for an ASP Provider (client) to dispatch a Complex Job • The job is composed of 2 3-tier (web service) applications to be run on 2 sites + batch jobs which would accumulate sales info. • The ASP Provider provides a global job info + One Agreement Offer which embeds/has pointers to several Agreement Offers • The Global Grid Job Manager (GGJM) Based on the requirements from the Agreement Offer, allocates jobs to 2 sites and returns EPR of an Agreement with sufficient info. Batch Job Global Grid Manager Site1 Site2 Resource Provider Sales Info. Client Info Accumulate info Resource Provider Resource Provider
Use Case 1: Usage of variables to Specify Constraints I have a three tier Web Application (AP1) which provides eweb shopping services. I also have a batch job(BJ1), which would collect the weekly sales statistics. I don't care where they run so long as the batch job BJ1 runs on the host which hosts the database server of AP1. Sales Info. Client Info “Hostname1” of DBserver <wsag:ServiceProperties wsag:Name=“A3” wsag:ServiceName="AP1"> <wsag:VariableSet> <wsag:Variable wsag:Name="hostname1" wsag:Metric="job:host"> <wsag:Location> …SDT[@wsag:Name='DB1'] </wsag:Location> </wsag:Variable> </wsag:VariableSet> </wsag:ServiceProperties> <wsag:ServiceProperties wsag:name=”B1” wsag:ServiceName="BJ1"> <wsag:VariableSet> <wsag:Variable wsag:Name="hostname2" wsag:Metric="job:host"> <wsag:Location>… …SDT[@wsag:Name=‘BS1'] </wsag:Location> </wsag:Variable> </wsag:VariableSet> </wsag:ServiceProperties> “Hostname2” of Batch1 All in one Large Agreement Offer <wsag:ServiceDescriptionTerm wsag:Name=“DB1“ wsag:ServiceName=“AP1"> <job:executable>/usr/local/sqlserver </job:executable> </wsag:ServiceDescriptionTerm> <wsag:ServiceDescriptionTerm wsag:Name=“BS1“ wsag:ServiceName=“BJ1"> <job:executable>/usr/local/batch1 </job:executable> </wsag:ServiceDescriptionTerm> <wsag:ServiceScope> <wsag:ServiceName>AP1</wsag:ServiceName> <wsag:ServiceName>BJ1</wsag:ServiceName> </wsag:ServiceScope> <wsag:ServiceLevelObjective> (hostname2) IS_EQUAL_TO (hostname1) </wsag:ServiceLevelObjective>
Use Case 2: Combination of Usage of Related Agreements and variables to Specify Constraints • I have a three tier Web Application (AP1) which provides eweb shopping services. • I sent an Agreement offer (AO1) to the GGJM and received an EPR of agreement1 which corresponds to the 3 Tier Job. • Now I want to run the batch job(BJ1), which would collect the weekly sales statistics. • I need to have the batch job BJ1 run on the host which hosts the database server of AP1. • In the second Agreement Offer(AO2), I would of course refer to Agreement1 Using RelatedAgreements. • Problem1: There might be several related agreements and I would need to distinguish among them. =>Proposal: • Add wsag:name as a component of wsag:RelatedAgreement • Problem2:Since Agreement Offer1 AO1 and AO2 are different offers, Service Names and Names might conflict: How can I refer to the ServiceName in the AO1 without worrying about name conflicts? • => One candidate: Prepend wsag:Name of Related Agreement before the ServiceName Sales Info. Client Info GGJM Agreement Offer(AO1) for 3tier Job Find a Suitable Site EPR of Agreement1 Agreement 1 Agreement Offer (AO2) for batch Job Needs to be ran on the same host!! <wsag:RelatedAgreement wsag:Name=“3tier1” > <wsag:AgreementEPR> “EPR to Agreement1” </wsag:AgreementEPR> </wsag:RelatedAgreement> <wsag:ServiceScope> <wsag:ServiceName>”3Tier1/AP1”</wsag:ServiceName> <wsag:ServiceName>BJ1</wsag:ServiceName> </wsag:ServiceScope> <wsag:ServiceLevelObjective> (hostname2) IS_EQUAL_TO (hostname1) </wsag:ServiceLevelObjective>
“Hostname1” of DBserver <wsag:ServiceDescriptionTerm wsag:Name=“DB1“ wsag:ServiceName=“AP1"> <job:executable>/usr/local/sqlserver </job:executable> </wsag:ServiceDescriptionTerm> “Hostname2” of Batch1 Sales Info. Client Info Part of Agreement1 <wsag:ServiceProperties wsag:Name=“A3” wsag:ServiceName=“3tier1/AP1"><wsag:VariableSet> <wsag:Variable wsag:Name="hostname1" wsag:Metric="job:host"> <wsag:Location> …SDT[@wsag:Name='DB1'] </wsag:Location> </wsag:Variable> </wsag:VariableSet> </wsag:ServiceProperties> <wsag:ServiceProperties wsag:name=”B1” wsag:ServiceName="BJ1"> <wsag:VariableSet> <wsag:Variable wsag:Name="hostname2" wsag:Metric="job:host"> <wsag:Location>… …SDT[@wsag:Name=‘BS1'] </wsag:Location> </wsag:Variable> </wsag:VariableSet> </wsag:ServiceProperties> Part of Agreement Offer 2 <wsag:RelatedAgreement wsag:Name=“3tier1” > <wsag:AgreementEPR> “EPR to Agreement1” </wsag:AgreementEPR> </wsag:RelatedAgreement> <wsag:ServiceDescriptionTerm wsag:Name=“BS1“ wsag:ServiceName=“BJ1"> <job:executable>/usr/local/batch1 </job:executable> </wsag:ServiceDescriptionTerm> <wsag:ServiceScope> <wsag:ServiceName>3tier1/AP1</wsag:ServiceName> <wsag:ServiceName>BJ1</wsag:ServiceName> </wsag:ServiceScope> <wsag:ServiceLevelObjective> (hostname2) IS_EQUAL_TO (hostname1) </wsag:ServiceLevelObjective>
Usecase 3:Usage of Related Agreements • An ASP provider wants to setup 2 sites for his/her web services. • He/she does this by requesting for 2 sites to a global grid job manager (GGJM). • 1) GGJM receives an agreement offer from the ASP provider which requests for 2 sites with necessary conditions and a list of candidate sites. (Sites A, B, C, D & E) • 2)GGJM sends an agreement offer to A & B. • 3) receives EPR of agreement (called agreement1) from A but not from B. • 4)GGJM then sends an agreement offer to site C and receives an EPR of an agreement (called agreement2) from C. • 5)GGJM returns EPR of an agreement (called agrrement3) to the ASP provider. This agreement would contain EPR of agreements from Site A and C. • Question1: Is this kind of Embedding EPRs of related Agreements allowed? • Question2:It would also be necessary to embed the Agreement Offers for 2 sites within the original offer. Is this scheme allowed? Accept & Create Site A 2)Agreement Offer 3)EPR of Agreement1 Agreement1 GGJM ASP Provider 2)Agreement Offer Site B 3)Fault 1)Agreement Offer 4)Agreement Offer 5)EPR of Agreement3 Site C Accept & Create EPR of Agreement12 Create Agreement2 Site D Site E
<wsag:context> <wsag:RelatedAgreements> <wsag:RelatedAgreement wsag:Name=“basic”> (Contents/pointers for offer to agreement1)(cf.nextpage) <wsag:AgreementEPR> <empty> </wsag:AgreementEPR> </wsag:RelatedAgreement> <wsag:RelatedAgreement “ wsag:Name=“ext1”> (Contents / pointers for offer to agreement2)(cf. nex page) <wsag:AgreementEPR> <empty> </wsag:AgreementEPR> </wsag:RelatedAgreement> </wsag:RelatedAgreements> </wsag:context> Site A Accept & Create 2)Agreement Offer Agreement1 3)EPR of Agreement1 Site B 2)Agreement Offer ASP Provider GGJM 3)Fault 4)Agreement Offer Site C 1)Agreement Offer EPR of Agreement12 5)EPR of Agreement3 Accept & Create Create Agreement2 Agreement3 <wsag:RelatedAgreements><wsag:RelatedAgreement > (Contents/pointers for offer to agreement1)(cf. next page) <wsag:AgreementEPR> <EPR of Agreement1> </wsag:AgreementEPR> </wsag:RelatedAgreement> <wsag:RelatedAgreement > (Contents/pointers for offer to agreement2) (cf. next page) <wsag:AgreementEPR> <EPR of Agreement2 > </wsag:AgreementEPR> </wsag:RelatedAgreement> </wsag:AgreementEPR> </wsag:RelatedAgreements> Site D Site E
<wsag:AgreementOffer> …. <wsag:Terms> <wsag:All> <wsag:ServiceDescriptionTerm wsag:Name=“executable1" wsag:ServiceName=“a1> <job:executable> /usr/local/job1 </job:executable> </wsag:ServiceDescriptionTerm> <wsag:ServiceDescriptionTerm wsag:Name="numberOfCPUs1" wsag:ServiceName=“a1"> <job:numberOfCPUs>32</job:numberOfCPUs> </wsag:ServiceDescriptionTerm> <wsag:ServiceDescriptionTerm wsag:Name="memoryPerCPU1“ wsag:ServiceName=“a1"> <job:realMemorySize>200</job:realMemorySize> </wsag:ServiceDescriptionTerm> <wsag:ServiceDescriptionTerm wsag:Name=“sitecandidate1" wsag:ServiceName=“a1"> <job:sitecandidatelist>”list of sites”</job:sitecandidatelist> </wsag:ServiceDescriptionTerm> </wsag:All> </wsag:AgreementOffer> <wsag:context> <wsag:RelatedAgreements> <wsag:RelatedAgreement wsag:Name=“basic” > (Contents/pointers for offer to agreement1) <wsag:AgreementEPR> <empty> </wsag:AgreementEPR> </wsag:RelatedAgreement> <wsag:RelatedAgreement wsag:Name=“ext1” > (Contents / pointers for offer to agreement2) <wsag:AgreementEPR> <empty> </wsag:AgreementEPR> </wsag:RelatedAgreement> </wsag:RelatedAgreements> </wsag:context> <wsag:AgreementOffer> …. <wsag:Terms> <wsag:ServiceDescriptionTerm wsag:Name=“executable2" wsag:ServiceName=“a2"> <job:executable> /usr/local/jobbatch</job:executable> </wsag:ServiceDescriptionTerm> <wsag:ServiceDescriptionTerm wsag:Name="numberOfCPUs2" wsag:ServiceName=“a2"> <job:numberOfCPUs>8</job:numberOfCPUs> </wsag:ServiceDescriptionTerm> <wsag:ServiceDescriptionTerm wsag:Name="memoryPerCPU2" wsag:ServiceName=“a2"> <job:realMemorySize>128</job:realMemorySize> </wsag:ServiceDescriptionTerm> <wsag:ServiceDescriptionTerm wsag:Name=“sitecandidate2" wsag:ServiceName=“a2"> <job:sitecandidatelist>list of sites</job:sitecandidatelist> </wsag:ServiceDescriptionTerm> </wsag:All> </wsag:AgreementOffer>
<wsag:context> <wsag:RelatedAgreements> <wsag:RelatedAgreement wsag:Name=“basic” > (Contents/pointers for offer to agreement1) <wsag:AgreementEPR> <empty> </wsag:AgreementEPR> </wsag:RelatedAgreement> <wsag:RelatedAgreement “wsag:Name=“ext1” > (Contents / pointers for offer to agreement2) <wsag:AgreementEPR> <empty> </wsag:AgreementEPR> </wsag:RelatedAgreement> </wsag:RelatedAgreements> </wsag:context> <wsag:ServiceProperties wsag:ServiceName="AP1"> <wsag:VariableSet> <wsag:Variable wsag:Name="hostname1" wsag:Metric="job:host"> <wsag:Location>/wsag:AgreementOffer/wsag:context/wsag:RelatedAgreements/ wsag:RelatedAgreement[@wsag:Name=‘basic’]/wsag:AgreementOffer/wsag:Terms/ /wsag:All/wsag:ServiceDescriptionTerm[@wsag:Name=‘DBCSNAME1'] </wsag:Location> </wsag:Variable> </wsag:VariableSet> </wsag:ServiceProperties> <wsag:ServiceProperties wsag:ServiceName="BJ1"> <wsag:VariableSet> <wsag:Variable wsag:Name="hostname2" wsag:Metric="job:host"> <wsag:Location>/wsag:AgreementOffer/wsag:context/wsag:RelatedAgreements/ wsag:RelatedAgreement[@wsag:Name=‘ext1’]/wsag:AgreementOffer/wsag:Terms/ /wsag:All/wsag:ServiceDescriptionTerm[@wsag:Name=‘DBCSNAME2'] </wsag:Location> </wsag:Variable> </wsag:VariableSet> </wsag:ServiceProperties> <wsag:ServiceScope> <wsag:ServiceName>a1 or “basic/a1”</wsag:ServiceName> <wsag:ServiceName>a2 or “ext1/a2”</wsag:ServiceName> </wsag:ServiceScope> <wsag:ServiceLevelObjective> (hostname2) IS_EQUAL_TO (hostname1) </wsag:ServiceLevelObjective> Combination of Usecase2 & Usecase3 <wsag:AgreementOffer> ….. <wsag:Terms> <wsag:All> <wsag:ServiceDescriptionTerm wsag:Name=“executable1" wsag:ServiceName=“a1> <job:executable> /usr/local/job1 </job:executable> </wsag:ServiceDescriptionTerm> <wsag:ServiceDescriptionTerm wsag:Name="numberOfCPUs1" wsag:ServiceName=“a1"> <job:numberOfCPUs>32</job:numberOfCPUs> </wsag:ServiceDescriptionTerm> <wsag:ServiceDescriptionTerm wsag:Name=“DB1“ wsag:ServiceName=“a1"> <job:executable>/usr/local/sqlserver</job:executable> </wsag:ServiceDescriptionTerm> <wsag:ServiceDescriptionTerm wsag:Name=“sitecandidate1" wsag:ServiceName=“a1"> <job:sitecandidatelist>”list of sites”</job:sitecandidatelist> </wsag:ServiceDescriptionTerm> </wsag:All> </wsag:AgreementOffer> <wsag:AgreementOffer> ….. <wsag:Terms> <!Description for job2> <wsag:ServiceDescriptionTerm wsag:Name=“executable2" wsa g:ServiceName=“a2"> <job:executable> /usr/local/jobbatch</job:executable> </wsag:ServiceDescriptionTerm> <wsag:ServiceDescriptionTerm wsag:Name="numberOfCPUs2" wsag:ServiceName=“a2"> <job:numberOfCPUs>8</job:numberOfCPUs> </wsag:ServiceDescriptionTerm> <wsag:ServiceDescriptionTerm wsag:Name=“DBCSNAME2" wsag:ServiceName=“a2"> <job:executable>/usr/local/sql</jobexecutable> </wsag:ServiceDescriptionTerm> <wsag:ServiceDescriptionTerm wsag:Name=“sitecandidate2" wsag:ServiceName=“a2"> <job:sitecandidatelist>list of sites</job:sitecandidatelist> </wsag:ServiceDescriptionTerm> </wsag:All> </wsag:AgreementOffer>