Sample: create a change request

The following example shows how to create a change request in Python version 3.8.17

Note: Before using this example, replace the username, password, and ticket source values with your own values.

You may have to remove some manual line breaks.

import ssl
from suds.client import Client

AlgoSecServer = '10.20.6.88'
AlgoSecUser = 'user'
AlgoSecPasswd = 'password'
TicketSource = '125.125.22.11'
TicketDest = '10.0.0.0/8'

# Action - 0 for drop, 1 for allow
TicketAction = '0'
TicketService = '*' 
ActionStr = 'Allow'

ActionStr = 'Allow' if TicketAction == '1' else 'Drop'

# bypass ssl verification - needed only if using self-signed certificates (demo machine, etc.)
# ssl._create_default_https_context = ssl._create_unverified_context

# ALGOSEC AFF WSDL is available here 'https://AFFIP/WebServices/FireFlow.wsdl'
AFF_WSDL = 'https://%s/WebServices/FireFlow.wsdl' % AlgoSecServer

# Setup client
client = Client(AFF_WSDL)

try:  
    # Authenticate
    authenticate = client.service.authenticate(username=AlgoSecUser, password=AlgoSecPasswd)
  
    # Create ticket and traffic lines objects
    print("Creating change request with source <%s> destination <%s> service <%s> and action <%s>" % 
          (TicketSource, TicketDest, TicketService, ActionStr))

    ticket = client.factory.create('ticket')
    trafficLine = client.factory.create('trafficLine')
  
    src = client.factory.create('trafficAddress')
    src.address = TicketSource
    trafficLine.trafficSource.append(src)

    dst = client.factory.create('trafficAddress')
    dst.address = TicketDest  
    trafficLine.trafficDestination.append(dst)
 
    srv = client.factory.create('trafficService')
    srv.service = TicketService
    trafficLine.trafficService.append(srv)

    trafficLine.action = TicketAction

    ticket.trafficLines.append(trafficLine)
    ticket.description = 'Demo Ticket'
    ticket.requestor = '[email protected]'
    ticket.subject = '%s Traffic from %s to %s' % (ActionStr, TicketSource, TicketDest)

except:  
    print("A problem occurred")

# Actually create the ticket
try:  
    ticket_added = client.service.createTicket(sessionId = authenticate.sessionId, ticket = ticket)

except:
    print(ticket_added.message)

# Print success message and ticket URL
print(ticket_added.message)
print(ticket_added.ticketDisplayURL)