[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