
This is a multipart message in MIME format. ------=_NextPart_000_00F7_01D1E76E.0E1E4A60 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 1. We know that xmlrpc and jsonrpc are enabled default in vdsm, vdsm supply these two service in one port or two? What's the port number and how we can change it? 2. How can we know a vdsm host can supply an xmlrpc service or a jsonrpc service? 3. I found that while ovirt engine installing a vdsm host, engine will check whether we are connecting to vdsm which supports xmlrpc only, engine send a 'Host.ping' jsonrpc request, why the code will enter into bindingxmlrpc.py? Did both jsonrpc and xmlrpc will call bindingxmlrpc.py? 4. Then, I just get an json return with code = 0 or code = 99. What does these error code mean ? I can't find detail in rpcjson Specification(http://www.jsonrpc.org/specification) 5. When installing vdsm, I got an "Host server117 installation failed. Host is not reachable" error. Debugging code as follows: Bindingxmlrpc.py line637 def ping(self): line638 # print 'os.getuid()',os.getuid() = 0 line639 # print 'os.getegit()',os.getegid() =0 line640 api = API.Global() line641 return api.ping() the api.ping() just open an file and update the file updating time, why these will throw an error code 0 or 99? And I see the ping() function created file /var/run/vdsm/client.log already exists in os, the only difference is the file is owned by root:root , not the vdsm:kvm? Why? Thank you. ------=_NextPart_000_00F7_01D1E76E.0E1E4A60 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable <html xmlns:v=3D"urn:schemas-microsoft-com:vml" = xmlns:o=3D"urn:schemas-microsoft-com:office:office" = xmlns:w=3D"urn:schemas-microsoft-com:office:word" = xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" = xmlns=3D"http://www.w3.org/TR/REC-html40"><head><meta = http-equiv=3DContent-Type content=3D"text/html; = charset=3Dus-ascii"><meta name=3DGenerator content=3D"Microsoft Word 14 = (filtered medium)"><style><!-- /* Font Definitions */ @font-face {font-family:SimSun; panose-1:2 1 6 0 3 1 1 1 1 1;} @font-face {font-family:SimSun; panose-1:2 1 6 0 3 1 1 1 1 1;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4;} @font-face {font-family:SimSun; panose-1:2 1 6 0 3 1 1 1 1 1;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; font-family:"Calibri","sans-serif";} a:link, span.MsoHyperlink {mso-style-priority:99; color:blue; text-decoration:underline;} a:visited, span.MsoHyperlinkFollowed {mso-style-priority:99; color:purple; text-decoration:underline;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph {mso-style-priority:34; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; text-indent:21.0pt; font-size:10.5pt; font-family:"Calibri","sans-serif";} span.EmailStyle17 {mso-style-type:personal-compose; font-family:"Calibri","sans-serif"; color:windowtext;} .MsoChpDefault {mso-style-type:export-only;} /* Page Definitions */ @page WordSection1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt;} div.WordSection1 {page:WordSection1;} /* List Definitions */ @list l0 {mso-list-id:914632915; mso-list-type:hybrid; mso-list-template-ids:496776084 1566756444 67698713 67698715 67698703 = 67698713 67698715 67698703 67698713 67698715;} @list l0:level1 {mso-level-tab-stop:none; mso-level-number-position:left; margin-left:18.0pt; text-indent:-18.0pt;} @list l0:level2 {mso-level-number-format:alpha-lower; mso-level-text:"%2\)"; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:42.0pt; text-indent:-21.0pt;} @list l0:level3 {mso-level-number-format:roman-lower; mso-level-tab-stop:none; mso-level-number-position:right; margin-left:63.0pt; text-indent:-21.0pt;} @list l0:level4 {mso-level-tab-stop:none; mso-level-number-position:left; margin-left:84.0pt; text-indent:-21.0pt;} @list l0:level5 {mso-level-number-format:alpha-lower; mso-level-text:"%5\)"; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:105.0pt; text-indent:-21.0pt;} @list l0:level6 {mso-level-number-format:roman-lower; mso-level-tab-stop:none; mso-level-number-position:right; margin-left:126.0pt; text-indent:-21.0pt;} @list l0:level7 {mso-level-tab-stop:none; mso-level-number-position:left; margin-left:147.0pt; text-indent:-21.0pt;} @list l0:level8 {mso-level-number-format:alpha-lower; mso-level-text:"%8\)"; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:168.0pt; text-indent:-21.0pt;} @list l0:level9 {mso-level-number-format:roman-lower; mso-level-tab-stop:none; mso-level-number-position:right; margin-left:189.0pt; text-indent:-21.0pt;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} --></style><!--[if gte mso 9]><xml> <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" /> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext=3D"edit"> <o:idmap v:ext=3D"edit" data=3D"1" /> </o:shapelayout></xml><![endif]--></head><body lang=3DZH-CN link=3Dblue = vlink=3Dpurple style=3D'text-justify-trim:punctuation'><div = class=3DWordSection1><p class=3DMsoListParagraph = style=3D'margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 = lfo1'><![if !supportLists]><span lang=3DEN-US><span = style=3D'mso-list:Ignore'>1.<span style=3D'font:7.0pt "Times New = Roman"'> = </span></span></span><![endif]><span lang=3DEN-US>We know that xmlrpc = and jsonrpc are enabled default in vdsm, vdsm supply these two service = in one port or two? What’s the port number and how we can change = it?<o:p></o:p></span></p><p class=3DMsoListParagraph = style=3D'margin-left:18.0pt;text-indent:0cm'><span = lang=3DEN-US><o:p> </o:p></span></p><p class=3DMsoListParagraph = style=3D'margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 = lfo1'><![if !supportLists]><span lang=3DEN-US><span = style=3D'mso-list:Ignore'>2.<span style=3D'font:7.0pt "Times New = Roman"'> = </span></span></span><![endif]><span lang=3DEN-US>How can we know a vdsm = host can supply an xmlrpc service or a jsonrpc = service?<o:p></o:p></span></p><p class=3DMsoListParagraph><span = lang=3DEN-US><o:p> </o:p></span></p><p class=3DMsoListParagraph = style=3D'margin-left:18.0pt;text-indent:0cm'><span lang=3DEN-US> = <o:p></o:p></span></p><p class=3DMsoListParagraph = style=3D'margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 = lfo1'><![if !supportLists]><span lang=3DEN-US><span = style=3D'mso-list:Ignore'>3.<span style=3D'font:7.0pt "Times New = Roman"'> = </span></span></span><![endif]><span lang=3DEN-US>I found that while = ovirt engine installing a vdsm host, engine will check whether we are = connecting to vdsm which supports xmlrpc only, engine send a = ‘Host.ping’ jsonrpc request, why the code will enter = into bindingxmlrpc.py?<o:p></o:p></span></p><p class=3DMsoNormal><span = lang=3DEN-US>Did both jsonrpc and xmlrpc will call = bindingxmlrpc.py?<o:p></o:p></span></p><p class=3DMsoNormal><span = lang=3DEN-US><o:p> </o:p></span></p><p class=3DMsoListParagraph = style=3D'margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 = lfo1'><![if !supportLists]><span lang=3DEN-US><span = style=3D'mso-list:Ignore'>4.<span style=3D'font:7.0pt "Times New = Roman"'> = </span></span></span><![endif]><span lang=3DEN-US>Then, I just get an = json return with code =3D 0 or code =3D 99. What does these error code = mean ? I can’t find detail in rpcjson Specification(<a = href=3D"http://www.jsonrpc.org/specification">http://www.jsonrpc.org/spec= ification</a>)<o:p></o:p></span></p><p class=3DMsoNormal><span = lang=3DEN-US><o:p> </o:p></span></p><p class=3DMsoListParagraph = style=3D'margin-left:18.0pt;text-indent:-18.0pt;mso-list:l0 level1 = lfo1'><![if !supportLists]><span lang=3DEN-US><span = style=3D'mso-list:Ignore'>5.<span style=3D'font:7.0pt "Times New = Roman"'> = </span></span></span><![endif]><span lang=3DEN-US>When installing vdsm, = I got an “Host server117 installation failed. Host is not = reachable” error. Debugging code as = follows:<o:p></o:p></span></p><p class=3DMsoListParagraph><span = lang=3DEN-US>Bindingxmlrpc.py<o:p></o:p></span></p><p = class=3DMsoNormal><span lang=3DEN-US>line637 def = ping(self):<o:p></o:p></span></p><p class=3DMsoNormal><span = lang=3DEN-US>line638 # print = 'os.getuid()',os.getuid() =3D 0<o:p></o:p></span></p><p = class=3DMsoNormal><span = lang=3DEN-US>line639 # print = 'os.getegit()',os.getegid() =3D0<o:p></o:p></span></p><p = class=3DMsoNormal><span = lang=3DEN-US>line640 api =3D = API.Global()<o:p></o:p></span></p><p class=3DMsoNormal><span = lang=3DEN-US>line641 return = api.ping()<o:p></o:p></span></p><p class=3DMsoNormal><span = lang=3DEN-US><o:p> </o:p></span></p><p class=3DMsoNormal><span = lang=3DEN-US>the api.ping() just open an file and update the file = updating time, why these will throw an error code 0 or 99? And I see the = ping() function created file /var/run/vdsm/client.log already exists in = os, <o:p></o:p></span></p><p class=3DMsoNormal><span lang=3DEN-US>the = only difference is the file is owned by root:root , not the vdsm:kvm? = Why?<o:p></o:p></span></p><p class=3DMsoNormal><span = lang=3DEN-US><o:p> </o:p></span></p><p class=3DMsoNormal><span = lang=3DEN-US>Thank you.<o:p></o:p></span></p><p class=3DMsoNormal><span = lang=3DEN-US><o:p> </o:p></span></p></div></body></html> ------=_NextPart_000_00F7_01D1E76E.0E1E4A60--

On Tue, Jul 26, 2016 at 12:46 PM, lifuqiong <lifuqiong@cncloudsec.com> wrote:
1. We know that xmlrpc and jsonrpc are enabled default in vdsm, vdsm supply these two service in one port or two? What’s the port number and how we can change it?
We use single port for both protocols. There is a code which peeks the data stream and decides which part of the code should handle the connection. In config.py you can find 'management_port' option which defines which port will be used.
2. How can we know a vdsm host can supply an xmlrpc service or a jsonrpc service?
In config.py we have 'xmlrpc_enable' and 'jsonrpc_enable' which determine protocols available during runtime. With the latest vdsm both are enabled but keep in mind that xmlrpc is deprecated and will be removed soon.
3. I found that while ovirt engine installing a vdsm host, engine will check whether we are connecting to vdsm which supports xmlrpc only, engine send a ‘Host.ping’ jsonrpc request, why the code will enter into bindingxmlrpc.py?
Did both jsonrpc and xmlrpc will call bindingxmlrpc.py?
During host installation we attempt to connect to a host using jsonrpc first and if it fails we we attempt to use xmlrpc. Older vdsms provide only xmlrpc so this behavior is for backward compatibility. There are two binding modules bindingjsonrpc.py and bindingxmlrpc.py. Common module for both bindings is API.py
4. Then, I just get an json return with code = 0 or code = 99. What does these error code mean ? I can’t find detail in rpcjson Specification(http://www.jsonrpc.org/specification)
There is a time when vdsm is not able to handle requests due to recovery logic which may take several seconds during this time we return code 99. Once the recovery is done vdsm returns correct codes like 0. Recovery occurs only during start of vdsm.
5. When installing vdsm, I got an “Host server117 installation failed. Host is not reachable” error. Debugging code as follows:
Bindingxmlrpc.py
line637 def ping(self):
line638 # print 'os.getuid()',os.getuid() = 0
line639 # print 'os.getegit()',os.getegid() =0
line640 api = API.Global()
line641 return api.ping()
Can you share the logs with above failure?
the api.ping() just open an file and update the file updating time, why these will throw an error code 0 or 99? And I see the ping() function created file /var/run/vdsm/client.log already exists in os,
ping verb was reused to detect whether vdsm is able to use jsonrpc. This verb originally is used to make sure that any network reconfiguration did not break connection to the engine. During the process of reconfiguration engine call ping and vdsm based on file update time can restore old network configuration in case of failure.
the only difference is the file is owned by root:root , not the vdsm:kvm? Why?
There are 2 vdsm processes running with different user permissions.
Thank you.
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
participants (2)
-
lifuqiong
-
Piotr Kliczewski