Added a new web service to create UserRequest tickets (similarly to Incidents tickets). Based on code from Vincenzo Todisco.

SVN:trunk[1408]
This commit is contained in:
Denis Flaven
2011-08-01 14:07:54 +00:00
parent 9ad6f2c994
commit 0f0abc0501
2 changed files with 83 additions and 5 deletions

View File

@@ -143,6 +143,21 @@
<message name="GetVersionResponse">
<part name="GetVersionReturn" type="xsd:string"/>
</message>
<message name="CreateRequestTicket">
<part name="login" type="xsd:string"/>
<part name="password" type="xsd:string"/>
<part name="title" type="xsd:string"/>
<part name="description" type="xsd:string"/>
<part name="caller" type="typens:ExternalKeySearch"/>
<part name="customer" type="typens:ExternalKeySearch"/>
<part name="service" type="typens:ExternalKeySearch"/>
<part name="service_subcategory" type="typens:ExternalKeySearch"/>
<part name="product" type="xsd:string"/>
<part name="workgroup" type="typens:ExternalKeySearch"/>
<part name="impacted_cis" type="typens:ArrayOfLinkCreationSpec"/>
<part name="impact" type="xsd:string"/>
<part name="urgency" type="xsd:string"/>
</message>
<message name="CreateIncidentTicket">
<part name="login" type="xsd:string"/>
<part name="password" type="xsd:string"/>
@@ -161,6 +176,9 @@
<message name="CreateIncidentTicketResponse">
<part name="CreateIncidentTicketReturn" type="typens:Result"/>
</message>
<message name="CreateRequestTicketResponse">
<part name="CreateRequestTicketReturn" type="typens:Result"/>
</message>
<message name="SearchObjects">
<part name="login" type="xsd:string"/>
<part name="password" type="xsd:string"/>
@@ -178,6 +196,13 @@
<input message="typens:GetVersion"/>
<output message="typens:GetVersionResponse"/>
</operation>
<operation name="CreateRequestTicket">
<!-- <wsdl:documentation>
Create a ticket, return information about reconciliation on external keys and the created ticket
</wsdl:documentation> -->
<input message="typens:CreateRequestTicket"/>
<output message="typens:CreateRequestTicketResponse"/>
</operation>
<operation name="CreateIncidentTicket">
<wsdl:documentation>
Create a ticket, return information about reconciliation on external keys and the created ticket
@@ -204,6 +229,15 @@
<soap:body namespace="urn:ITop" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="CreateRequestTicket">
<soap:operation soapAction="urn:WebServiceAction"/>
<input>
<soap:body namespace="urn:ITop" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body namespace="urn:ITop" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="CreateIncidentTicket">
<soap:operation soapAction="urn:WebServiceAction"/>
<input>

View File

@@ -53,6 +53,48 @@ class BasicServices extends WebServicesBase
return $sVersionString;
}
public function CreateRequestTicket($sLogin, $sPassword, $sTitle, $sDescription, $oCallerDesc, $oCustomerDesc, $oServiceDesc, $oServiceSubcategoryDesc, $sProduct, $oWorkgroupDesc, $aSOAPImpactedCIs, $sImpact, $sUrgency)
{
if (!UserRights::CheckCredentials($sLogin, $sPassword))
{
$oRes = new WebServiceResultFailedLogin($sLogin);
$this->LogUsage(__FUNCTION__, $oRes);
return $oRes->ToSoapStructure();
}
UserRights::Login($sLogin);
$aCallerDesc = self::SoapStructToExternalKeySearch($oCallerDesc);
$aCustomerDesc = self::SoapStructToExternalKeySearch($oCustomerDesc);
$aServiceDesc = self::SoapStructToExternalKeySearch($oServiceDesc);
$aServiceSubcategoryDesc = self::SoapStructToExternalKeySearch($oServiceSubcategoryDesc);
$aWorkgroupDesc = self::SoapStructToExternalKeySearch($oWorkgroupDesc);
$aImpactedCIs = array();
if (is_null($aSOAPImpactedCIs)) $aSOAPImpactedCIs = array();
foreach($aSOAPImpactedCIs as $oImpactedCIs)
{
$aImpactedCIs[] = self::SoapStructToLinkCreationSpec($oImpactedCIs);
}
$oRes = $this->_CreateResponseTicket
(
'UserRequest',
$sTitle,
$sDescription,
$aCallerDesc,
$aCustomerDesc,
$aServiceDesc,
$aServiceSubcategoryDesc,
$sProduct,
$aWorkgroupDesc,
$aImpactedCIs,
$sImpact,
$sUrgency
);
return $oRes->ToSoapStructure();
}
public function CreateIncidentTicket($sLogin, $sPassword, $sTitle, $sDescription, $oCallerDesc, $oCustomerDesc, $oServiceDesc, $oServiceSubcategoryDesc, $sProduct, $oWorkgroupDesc, $aSOAPImpactedCIs, $sImpact, $sUrgency)
{
if (!UserRights::CheckCredentials($sLogin, $sPassword))
@@ -77,8 +119,9 @@ class BasicServices extends WebServicesBase
$aImpactedCIs[] = self::SoapStructToLinkCreationSpec($oImpactedCIs);
}
$oRes = $this->_CreateIncidentTicket
$oRes = $this->_CreateResponseTicket
(
'Incident',
$sTitle,
$sDescription,
$aCallerDesc,
@@ -93,11 +136,12 @@ class BasicServices extends WebServicesBase
);
return $oRes->ToSoapStructure();
}
/**
* Create an incident ticket from a monitoring system
* Create an ResponseTicket (Incident or UserRequest) from an external system
* Some CIs might be specified (by their name/IP)
*
* @param string sClass The class of the ticket: Incident or UserRequest
* @param string sTitle
* @param string sDescription
* @param array aCallerDesc
@@ -112,7 +156,7 @@ class BasicServices extends WebServicesBase
*
* @return WebServiceResult
*/
protected function _CreateIncidentTicket($sTitle, $sDescription, $aCallerDesc, $aCustomerDesc, $aServiceDesc, $aServiceSubcategoryDesc, $sProduct, $aWorkgroupDesc, $aImpactedCIs, $sImpact, $sUrgency)
protected function _CreateResponseTicket($sClass, $sTitle, $sDescription, $aCallerDesc, $aCustomerDesc, $aServiceDesc, $aServiceSubcategoryDesc, $sProduct, $aWorkgroupDesc, $aImpactedCIs, $sImpact, $sUrgency)
{
$oRes = new WebServiceResult();
@@ -124,7 +168,7 @@ class BasicServices extends WebServicesBase
$oMyChange->Set("userinfo", "Administrator");
$iChangeId = $oMyChange->DBInsertNoReload();
$oNewTicket = MetaModel::NewObject('Incident');
$oNewTicket = MetaModel::NewObject($sClass);
$this->MyObjectSetScalar('title', 'title', $sTitle, $oNewTicket, $oRes);
$this->MyObjectSetScalar('description', 'description', $sDescription, $oNewTicket, $oRes);