nfs and cifs port display in yawn page.

Jan Synacek jsynacek at redhat.com
Fri Oct 4 12:24:58 UTC 2013


On 10/04/2013 02:04 PM, Stephen Gallagher wrote:
> On 10/04/2013 03:22 AM, Jan Synacek wrote:
>> Hi,
> 
>> On 10/03/2013 09:08 PM, sunil kumar wrote:
>>> hi!.
>>>
>>> we need to know, how to debug and trace the program from where i
>>> start. We have return to view the nfs port and cifs port in the
>>> yawn page..
>>>
>>>
>>> here is the code for that.!..
>>>
>>> CMPIStatus res = { CMPI_RC_OK, NULL }; Network *network =
>>> mi->hdl; const char *ns = KNameSpace(cop);
>>>
>>> char *name; Port *port; int pid;
>>>
>>> network_lock(network); const Ports *ports =
>>> network_get_ports(network); for (size_t i = 0; i <
>>> ports_length(ports); ++i) { if (!KOkay(res)) { break; } port =
>>> ports_index(ports, i);  asprintf(&name, "%s_%ld",
>>> port_get_id(port), i); LMI_ProtocolEndpoint w; 
>>> LMI_ProtocolEndpoint_Init(&w, _cb, ns); 
>>> LMI_ProtocolEndpoint_Set_SystemName(&w, get_system_name()); 
>>> LMI_ProtocolEndpoint_Set_SystemCreationClassName(&w, 
>>> get_system_creation_class_name()); 
>>> LMI_ProtocolEndpoint_Set_CreationClassName(&w, 
>>> LMI_ProtocolEndpoint_ClassName); 
>>> LMI_ProtocolEndpoint_Set_Name(&w, name); free(name); pid = (int)
>>> *port_get_id(port);  switch (pid) { case 4200: 
>>> LMI_ProtocolEndpoint_Set_ProtocolIFType_NFS(&w); 
>>> LMI_ProtocolEndpoint_Set_ProtocolIFType(&w, 
>>> LMI_ProtocolEndpoint_ProtocolIFType_NFS); break; case 4201: 
>>> LMI_ProtocolEndpoint_Set_ProtocolIFType_CIFS(&w); 
>>> LMI_ProtocolEndpoint_Set_ProtocolIFType(&w, 
>>> LMI_ProtocolEndpoint_ProtocolIFType_CIFS); break; default: 
>>> break; } if (!ReturnInstance(cr, w)) { error("Unable to return
>>> instance of class " LMI_ProtocolEndpoint_ClassName); 
>>> CMSetStatus(&res, CMPI_RC_ERR_FAILED); break; } }
>>>
>>> network_unlock(network); return res;
>>>
>>>
>>>
>>> i need to know how to trace this.. how could i do this..
> 
>> If I understand correctly, you want to know how to attach a
>> debugger to the provider process.
> 
>> This is probably server dependent. I'll try to describe how it
>> works when using tog-pegasus, which is the CIMOM we prefer.
> 
>> Everytime you make a request that needs your provider to be run,
>> the server forks a new process (unless you are running it with
>> forceProviderProcesses=false option). The process exists in the
>> system until it gets automatically cleaned up by the server. That
>> happens after 5 minutes of idleness. So you have 5 minutes to do
>> the following.
> 
>> The process' name is usually in form of "cimprovagt
>> <provider_name>". You can identify it e.g. by using 'top'. Then,
>> you can attach your favorite debugger to the running process like
>> so:
> 
>> $ gdb /usr/bin/cimprovagt <process_id>
> 
>> Hope this helps.
> 
> 
> 
> This is the sort of information that we *really* want to include on
> the Wiki/Drupal. Perhaps on
> https://fedorahosted.org/openlmi/wiki/ProviderTutorial ?

Added.

https://fedorahosted.org/openlmi/wiki/ProviderTutorialImplementationC#Pegasus

-- 
Jan Synacek
Software Engineer, Red Hat


More information about the openlmi-devel mailing list