<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-ligatures:none;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:637341115;
        mso-list-type:hybrid;
        mso-list-template-ids:-872753498 134807553 134807555 134807557 134807553 134807555 134807557 134807553 134807555 134807557;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:35.9pt;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:71.9pt;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:107.9pt;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:143.9pt;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:179.9pt;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:215.9pt;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:251.9pt;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:287.9pt;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:323.9pt;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l1
        {mso-list-id:710804379;
        mso-list-type:hybrid;
        mso-list-template-ids:141558442 134807569 134807577 134807579 134807567 134807577 134807579 134807567 134807577 134807579;}
@list l1:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l2
        {mso-list-id:745037295;
        mso-list-type:hybrid;
        mso-list-template-ids:1757333002 134807569 134807577 134807579 134807567 134807577 134807579 134807567 134807577 134807579;}
@list l2:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l2:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l2:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l2:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l2:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l2:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l2:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l2:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l2:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l3
        {mso-list-id:1192108629;
        mso-list-type:hybrid;
        mso-list-template-ids:141558442 -1 -1 -1 -1 -1 -1 -1 -1 -1;}
@list l3:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l3:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l3:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l3:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l4
        {mso-list-id:1237546217;
        mso-list-type:hybrid;
        mso-list-template-ids:-879849366 -171553740 134807555 134807557 134807553 134807555 134807557 134807553 134807555 134807557;}
@list l4:level1
        {mso-level-start-at:2;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:Calibri;}
@list l4:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l4:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l4:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l4:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l4:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l4:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l4:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l4:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-GB link="#0563C1" vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal><span lang=EN-US>Dear all<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>At the last meeting Paul suggested that we could use the HTTP HEAD request to obtain information about what the server would respond to, rather than rely on the Switchboard.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I guess the OPTIONS request ( <a href="https://www.rfc-editor.org/rfc/rfc9110#OPTIONS">https://www.rfc-editor.org/rfc/rfc9110#OPTIONS</a> ) would be more applicable. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>OPTIONS is part of HTTP and so a HTTP/REST server would of course respond to the OPTIONS request without needing any special mechanism. However the response would need to be created that is specific to the system. I guess web servers have these things built in<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>If we specify that only HTTP/REST should be used then this would be OK, but if we want to allow the use of MAL etc also, then this could require a MAL-based server to support both REST as well as MAL.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>The RFC does not specify what attributes OPTIONS returns, but the GB provides the following list of information needed, for which the BB has a Switchboard interface.<o:p></o:p></span></p><ul style='margin-top:0cm' type=disc><li class=MsoNormal style='margin-left:-.1pt;text-align:justify;mso-list:l0 level1 lfo4'><a name="_Toc117515229">DESCRIPTION OF ARCHIVE</a><o:p></o:p></li><li class=MsoNormal style='margin-left:-.1pt;text-align:justify;mso-list:l0 level1 lfo4'><a name="_Toc117515230">URL/PORT</a><a name="_Toc117515231"><o:p></o:p></a></li><li class=MsoNormal style='margin-left:-.1pt;text-align:justify;mso-list:l0 level1 lfo4'><span style='mso-bookmark:_Toc117515231'>AUTHENTICATION METHOD FOR COMMS</span><o:p></o:p></li><li class=MsoNormal style='margin-left:-.1pt;text-align:justify;mso-list:l0 level1 lfo4'><a name="_Toc117515232">SERIALISATION (JSON at this time) including VERSION</a><o:p></o:p></li><li class=MsoNormal style='margin-left:-.1pt;text-align:justify;mso-list:l0 level1 lfo4'><a name="_Toc117515233">COMMUNICATION PROTOCOL (REST at this time but in future others may be possible such as Space Link or ….)</a><o:p></o:p></li><li class=MsoNormal style='margin-left:-.1pt;text-align:justify;mso-list:l0 level1 lfo4'><a name="_Toc117515234">QUERY LANGUAGE to use and QUERY PARAMETERS</a> – to allow queries to be constructed<o:p></o:p></li></ul><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=EN-US style='font-size:14.0pt'>DISCUSSION of possibilities<o:p></o:p></span></b></p><p class=MsoNormal><b><span lang=EN-US style='font-size:14.0pt'><o:p> </o:p></span></b></p><p class=MsoNormal><span lang=EN-US>IN what follows I discuss 2 options – keep the Switchboard as if, or use an OPTIONS approach i.e. ask the service for the info.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><ol style='margin-top:0cm' start=1 type=1><li class=MsoListParagraph style='margin-left:0cm;mso-list:l1 level1 lfo1'><b><span lang=EN-US>Continue to use SWITCHBOARD <o:p></o:p></span></b></li></ol><p class=MsoNormal><span lang=EN-US>The reason I had adopted the Switchboard approach was to accommodate the idea that we should not be restricted to a specific protocol i.e. HTTP/REST.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>On the other hand, Microservice architectures often have a Discovery service such as NetFlix Eureka, which Spring Boot supports. However, use of this service seems more than we need, and more useful for Microservices – and could be used if the BB is implemented as such, but we would not need to specify it in the BB.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>If we go back to an earlier version of the layer diagram:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><img border=0 width=547 height=312 style='width:5.6944in;height:3.25in' id="Picture_x0020_1" src="cid:image001.png@01D9FF9B.C5ADB650"></span><span lang=EN-US><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>This shows that the Switchboard, and RRORI communicate using REST.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>This allows both resources to be shared between many generic adapters. In principle there could be a single Switchboard and a single RRORI used by all generic adapters.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>The single Switchboard would act as a discovery service/OPTIONS request server, without being specific to, for example, an archive.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>However, in earlier discussions we decided to avoid needing to have a central resource.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>PROs:<o:p></o:p></span></p><ul style='margin-top:0cm' type=disc><li class=MsoListParagraph style='margin-left:0cm;mso-list:l4 level1 lfo5'><span lang=EN-US>A local discovery service which would allow us to deal with multiple communications protocols in future and to search for specific services/archives by description.<o:p></o:p></span></li><li class=MsoListParagraph style='margin-left:0cm;mso-list:l4 level1 lfo5'><span lang=EN-US>No need for a central service<o:p></o:p></span></li><li class=MsoListParagraph style='margin-left:0cm;mso-list:l4 level1 lfo5'><span lang=EN-US>The services which are to be used can be tailored i.e. I only want to deal with a specific set of services/archives and here is the list.  In principle a Switchboard could communicate with a central service for updates and extra services/archives.<o:p></o:p></span></li></ul><p class=MsoNormal><span lang=EN-US>CONs:<o:p></o:p></span></p><ul style='margin-top:0cm' type=disc><li class=MsoListParagraph style='margin-left:0cm;mso-list:l4 level1 lfo5'><span lang=EN-US>the Switchboard would need to be set up and kept up to date – the mechanism to do this is not specified in the BB, MB or GB – but as noted above a central service is not forbidden.<o:p></o:p></span></li></ul><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><ol style='margin-top:0cm' start=2 type=1><li class=MsoListParagraph style='margin-left:0cm;mso-list:l1 level1 lfo1'><b><span lang=EN-US>Use OPTIONS i.e., request the “switchboard” type information from the server concerned<o:p></o:p></span></b></li></ol><p class=MsoListParagraph><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>This has the advantage that we do not need centralized knowledge of the capabilities of each, for example, archive. It would be easier if we forget about using MAL in this BB.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Instead of specifying the HTTP/OPTIONS explicitly we can simple transfer most of the Switchboard interface methods to the Generic Adapter. Each Generic Adapter could have the required information in, for example, a properties file. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>PROs:<o:p></o:p></span></p><ul style='margin-top:0cm' type=disc><li class=MsoListParagraph style='margin-left:0cm;mso-list:l4 level1 lfo5'><span lang=EN-US>No need to maintain a list of services with details as above<o:p></o:p></span></li></ul><p class=MsoNormal><span lang=EN-US>CONS:<o:p></o:p></span></p><ul style='margin-top:0cm' type=disc><li class=MsoListParagraph style='margin-left:0cm;mso-list:l4 level1 lfo5'><span lang=EN-US>No ability to search for useful sources of information i.e., a discovery service.<o:p></o:p></span></li><li class=MsoListParagraph style='margin-left:0cm;mso-list:l4 level1 lfo5'><span lang=EN-US>Don’t know what port to use.<o:p></o:p></span></li></ul><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><b><span lang=EN-US style='font-size:14.0pt'>PROPOSALS:<o:p></o:p></span></b></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><ol style='margin-top:0cm' start=1 type=1><li class=MsoListParagraph style='margin-left:0cm;mso-list:l2 level1 lfo6'><span lang=EN-US>Move the methods to access the following pieces of info to the Generic Adapter so that the GA responds when contacted. We should specify the JSON for the response encoding.<o:p></o:p></span></li></ol><ul style='margin-top:0cm' type=disc><li class=MsoNormal style='margin-left:-.1pt;text-align:justify;mso-list:l0 level1 lfo4'>AUTHENTICATION METHOD FOR COMMS<o:p></o:p></li><li class=MsoNormal style='margin-left:-.1pt;text-align:justify;mso-list:l0 level1 lfo4'>SERIALISATION (JSON at this time) including VERSION<o:p></o:p></li><li class=MsoNormal style='margin-left:-.1pt;text-align:justify;mso-list:l0 level1 lfo4'>COMMUNICATION PROTOCOL (REST at this time but in future others may be possible such as Space Link or ….)<o:p></o:p></li><li class=MsoNormal style='margin-left:-.1pt;text-align:justify;mso-list:l0 level1 lfo4'>QUERY LANGUAGE to use and QUERY PARAMETERS – to allow queries to be constructed<o:p></o:p></li></ul><p class=MsoNormal><span lang=EN-US>.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Also keep a minimal Switchboard to provide:<o:p></o:p></span></p><ul style='margin-top:0cm' type=disc><li class=MsoNormal style='margin-left:-.1pt;text-align:justify;mso-list:l0 level1 lfo4'>DESCRIPTION OF ARCHIVE<o:p></o:p></li><li class=MsoNormal style='margin-left:-.1pt;text-align:justify;mso-list:l0 level1 lfo4'>URL/PORT<o:p></o:p></li></ul><p class=MsoNormal><span lang=EN-US>The alternative is to get rid of the Switchboard and simply rely on “external” sources of information not specified in the BB.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Any thoughts?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>..David <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>