[alcatel-nsp] Automate SAM Provisioning through text/csv?

Kirby Files kfiles at masergy.com
Fri Aug 7 09:48:08 EDT 2009


Richard Lee wrote:

 > I'm wondering if any of you know how to automate SAM provisioning,
 > either by CLI, or importing a text/csv file into it's database. I
 > don't fancy all that point and clicking :-)

 > I believe the SAM-O module uses XML and could therefore
 > possibly be extended.

Sure, SAMO uses XML, transferred over SOAP. You can use scripts, 
templates, or programatically create XML via DOM if that makes you 
happy. Warning, it's not terse.
For instance, here's the XML for creating a VPLS instance:

<?xml version="1.0" encoding="UTF-8"?>

<SOAP:Envelope
   xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">

<SOAP:Header>
<header xmlns="xmlapi_1.0">
<security>
<user>oss_client</user>
<!-- 5620Sam! -->
<password>c36b885125105c462d34774140eec076</password>
</security>
<requestID>client1:0</requestID>
</header>
</SOAP:Header>

<SOAP:Body>
<generic.GenericObject.configureChildInstance xmlns="xmlapi_1.0">
<deployer>immediate</deployer>
<synchronousDeploy>true</synchronousDeploy>
<distinguishedName>svc-mgr</distinguishedName>
<childConfigInfo>
<vpls.Vpls>
<actionMask><bit>create</bit></actionMask>
<displayedName>Vpls Example</displayedName>
<description>Vpls Example for existing subscriber</description>
<subscriberPointer>subscriber:1</subscriberPointer>
<topologyAutoCompletion>false</topologyAutoCompletion>
<topologyAutoCompletionType>noHierarchy</topologyAutoCompletionType>
<transportPreference>any</transportPreference>
<useBwReservedPath>noPreference</useBwReservedPath>
<children-Set>
<vpls.Site>
<actionMask><bit>create</bit></actionMask>
<displayedName>vpls site</displayedName>
<description>VPLS Service Site - Create</description>
<siteId>10.1.1.223</siteId>
<monitorAccessInterfaceOper>false</monitorAccessInterfaceOper>
<administrativeState>serviceUp</administrativeState>
<oamEnabled>false</oamEnabled>
<mtu>1400</mtu>
<localRouting>disabled</localRouting>
<children-Set>
<l2fwd.SiteStp>
<actionMask><bit>modify</bit></actionMask>
<administrativeState>up</administrativeState>
<bridgeForwardDelay>16</bridgeForwardDelay>
<bridgeHelloTime>3</bridgeHelloTime>
<bridgeMaxAge>21</bridgeMaxAge>
<priority>28672</priority>
</l2fwd.SiteStp>

<l2fwd.SiteFib>
<actionMask><bit>modify</bit></actionMask>
<agingEnabled>true</agingEnabled>
<discardUnknownDestinations>false</discardUnknownDestinations>
<highWatermark>96</highWatermark>
<learningEnabled>true</learningEnabled>
<localAgeTime>301</localAgeTime>
<lowWatermark>91</lowWatermark>
<remoteAgeTime>901</remoteAgeTime>
<size>301</size>
</l2fwd.SiteFib>

<vpls.L2AccessInterface>
<actionMask><bit>create</bit></actionMask>
<displayedName>vpls</displayedName>
<description>VPLS Service - General Creation</description>
<administrativeState>serviceUp</administrativeState>
<portPointer>network:10.1.1.223:shelf-1:cardSlot-1:card:daughterCardSlot-1:daughterCard:port-4</portPointer>
<innerEncapValue>0</innerEncapValue>
<outerEncapValue>2</outerEncapValue>
<ingressPolicyObjectPointer>Access ingress:1</ingressPolicyObjectPointer>
<egressPolicyObjectPointer>Access Egress:1</egressPolicyObjectPointer>
<aggregation>off</aggregation>
<ingressSchedulerObjectPointer></ingressSchedulerObjectPointer>
<egressSchedulerObjectPointer></egressSchedulerObjectPointer>
<aggregationSchedulerObjectPointer></aggregationSchedulerObjectPointer>
<ingressFilterPointer></ingressFilterPointer>
<ingressMatchQinqDot1pBits>none</ingressMatchQinqDot1pBits>
<egressFilterPointer></egressFilterPointer>
<accountingPolicyObjectPointer></accountingPolicyObjectPointer>
<accountingOn>true</accountingOn>
<sharedQueueOn>false</sharedQueueOn>
<shgSitePointer></shgSitePointer>

<children-Set>

<l2fwd.AccessInterfaceStp>
<actionMask><bit>modify</bit></actionMask>
<administrativeState>up</administrativeState>
<pathCost>21</pathCost>
<portNum>0</portNum>
<priority>112</priority>
<rapidStart>disabled</rapidStart>
</l2fwd.AccessInterfaceStp>
</children-Set>

</vpls.L2AccessInterface>
</children-Set>
</vpls.Site>
<vpls.Site>
<actionMask><bit>create</bit></actionMask>
<displayedName>vpls site</displayedName>
<description>VPLS Service Site - Create</description>
<siteId>10.1.1.225</siteId>
<monitorAccessInterfaceOper>false</monitorAccessInterfaceOper>
<administrativeState>serviceUp</administrativeState>
<oamEnabled>false</oamEnabled>
<mtu>1400</mtu>
<localRouting>disabled</localRouting>
<children-Set>
<l2fwd.SiteStp>
<actionMask><bit>modify</bit></actionMask>
<administrativeState>up</administrativeState>
<bridgeForwardDelay>16</bridgeForwardDelay>
<bridgeHelloTime>3</bridgeHelloTime>
<bridgeMaxAge>21</bridgeMaxAge>
<priority>28672</priority>
</l2fwd.SiteStp>

<l2fwd.SiteFib>
<actionMask><bit>modify</bit></actionMask>
<agingEnabled>true</agingEnabled>
<discardUnknownDestinations>false</discardUnknownDestinations>
<highWatermark>96</highWatermark>
<learningEnabled>true</learningEnabled>
<localAgeTime>301</localAgeTime>
<lowWatermark>91</lowWatermark>
<remoteAgeTime>901</remoteAgeTime>
<size>301</size>
</l2fwd.SiteFib>

<vpls.L2AccessInterface>
<actionMask><bit>create</bit></actionMask>
<displayedName>vpls</displayedName>
<description>VPLS Service - General Creation</description>
<administrativeState>serviceUp</administrativeState>
<portPointer>network:10.1.1.225:shelf-1:cardSlot-1:card:daughterCardSlot-1:daughterCard:port-4</portPointer>
<innerEncapValue>0</innerEncapValue>
<outerEncapValue>2</outerEncapValue>
<ingressPolicyObjectPointer>Access ingress:1</ingressPolicyObjectPointer>
<egressPolicyObjectPointer>Access Egress:1</egressPolicyObjectPointer>
<aggregation>off</aggregation>
<ingressSchedulerObjectPointer></ingressSchedulerObjectPointer>
<egressSchedulerObjectPointer></egressSchedulerObjectPointer>
<aggregationSchedulerObjectPointer></aggregationSchedulerObjectPointer>
<ingressFilterPointer></ingressFilterPointer>
<ingressMatchQinqDot1pBits>none</ingressMatchQinqDot1pBits>
<egressFilterPointer></egressFilterPointer>
<accountingPolicyObjectPointer></accountingPolicyObjectPointer>
<accountingOn>true</accountingOn>
<sharedQueueOn>false</sharedQueueOn>
<shgSitePointer></shgSitePointer>

<children-Set>

<l2fwd.AccessInterfaceStp>
<actionMask><bit>modify</bit></actionMask>
<administrativeState>up</administrativeState>
<pathCost>21</pathCost>
<portNum>0</portNum>
<priority>112</priority>
<rapidStart>disabled</rapidStart>
</l2fwd.AccessInterfaceStp>
</children-Set>

</vpls.L2AccessInterface>
</children-Set>
</vpls.Site>
</children-Set>
</vpls.Vpls>
</childConfigInfo>
</generic.GenericObject.configureChildInstance>
</SOAP:Body>
</SOAP:Envelope>

If you have access to Alcatel SAM docs, the SAM OSS Developer Guide 
provides a fair amount of detail, although to get the actual XML above, 
you have to first use the SAMO generic.find() command to get the XML 
representation of an existing instance.

 > Also does anyone know what kind of database it runs on?

It runs on Oracle, but the schema is auto-generated, and to call it 
obtuse would be kind. Also, Alcatel says about accessing the Oracle DB 
directly:


"Alcatel (IPD NSM) do not permit direct access the Oracle database by 
customers of the 5620SAM. This would constitute a violation of our 
Oracle license. Any access to the data in the database must be through 
the interfaces offered in the 5620 SAM application. In addition since 
the database schema is not a published interface NSM are free to change 
it at will and without notice."


---
Kirby Files
Software Architect
Masergy Communications
kfiles at masergy.com



More information about the alcatel-nsp mailing list