1. May 19-20 l Washington, DC l Omni Shoreham
Extending Plesk Functionality to
Control External Web Services
A SoftLayer API Case Study
Nathan Day
CTO, SoftLayer Technologies, Inc.
2. Introduction
How to extend the functionality of Plesk for Linux
to talk to an external web service—the SoftLayer API.
1.Plesk Modules Overview
2.SoftLayer API Overview
3.Example: SoftLayer Demo Module
4.Questions
2 Softlayer—Extending Plesk Functionality to Control External Web Services
3. Introduction
A global, on-demand data center
and hosting service provider
The SoftLayer difference:
– Automated Services and Solutions
– Industry-leading Customer Portal and Open API
– Industry’s First Secure Network-within-a-Network Topology
– On-demand Scalability
– Integrated Geographical Diversity
www.SoftLayer.com
3 Softlayer—Extending Plesk Functionality to Control External Web Services
4. Introduction
&
Long-standing partnership across multiple Parallels
product lines
– Gold Partner
– Member of Service Provider Alliance Program
– Sponsor of Parallels Summit
4 Softlayer—Extending Plesk Functionality to Control External Web Services
5. Plesk Modules Overview
“The main advantage of Plesk is the opportunity to manage a wide
range of functionality from a single control panel. In this sense,
integrating additional applications and services with Plesk via the
mechanism of modules gains benefit as follows:
– PCP (Plesk Control Panel) provides means for installing/uninstalling modules easily
– Modules integrate with Plesk Language system
– Modules integrate with Plesk Help system
– Modules use skins provided by Plesk
– Plesk provides Modules API specially designed to create Plesk-specific modules
– Modules are registered in Plesk, which prevents from casual deletion of 'module’
applications”
Plesk 8.3 Modules Development Guide
5 Softlayer—Extending Plesk Functionality to Control External Web Services
6. Plesk Modules Overview
Plesk Modules
– Consist of Front-end, Back-end,
Resource Files, Install scripts,
Third-party code
– Controlled by a GUI Using Module
Manager
6 Softlayer—Extending Plesk Functionality to Control External Web Services
7. SoftLayer API Web Service
– Used for infrastructure management
▪ Control Servers or Services (DNS, iSCSI, CDN, etc.)
– SOAP or XML-RPC
– Same functionality available as SoftLayer customer portal
– Details available at SoftLayer Developer Network
http://www.softlayer.com/devnet.html
7 Softlayer—Extending Plesk Functionality to Control External Web Services
8. SoftLayer Plesk Module Example
– Server Details
– Bandwidth Graph from Switch Data
– Server Power and Reboot Management
– Accounting
▪ Previous Invoices
▪ Current Balance
– Support Ticket
▪ New
▪ Previous
8 Softlayer—Extending Plesk Functionality to Control External Web Services
9. How we did it
– Written in PHP
– Built a class extending PHP SOAP Client
– Uses built in Plesk templating
– References built-in Plesk Module API
– Uses built-in Plesk Global Constants
– Created a template file per tab
– Created a controller file per tab
– Stores data in Plesk backend database
9 Softlayer—Extending Plesk Functionality to Control External Web Services
10. File listing
10 Softlayer—Extending Plesk Functionality to Control External Web Services
11. Code to access SoftLayer API
$client = new SoftLayer_API_SoapClient('SoftLayer_Hardware_Server');
$objectMask = new SoftLayer_API_ObjectMask();
// General
$objectMask->datacenter;
$objectMask->serverRoom;
$objectMask->provisionDate;
$objectMask->lastOperatingSystemReload;
// Hardware Components
$objectMask->components->hardwareComponentModel->hardwareGenericComponentModel->hardwareComponentType;
$objectMask->hardwareChassis;
//software components
$objectMask->softwareComponents->softwareLicense->softwareDescription->drivers;
//network component
$objectMask->primaryBackendIpAddress;
$objectMask->primaryIpAddress;
$objectMask->frontendNetworkComponents->uplinkComponent->networkVlan;
$objectMask->frontendNetworkComponents->primarySubnet;
$objectMask->frontendNetworkComponents->uplinkComponent->hardware;
$objectMask->backendNetworkComponents->uplinkComponent->networkVlan;
$objectMask->backendNetworkComponents->primarySubnet;
$objectMask->backendNetworkComponents->uplinkComponent->hardware;
$objectMask->bandwidthAllocation;
// Billing cycle for bandwidth calculation
$objectMask->account->billingInfo;
$client->setObjectMask($objectMask);
$server = $client->findByIpAddress($_SERVER['SERVER_ADDR']);
11 Softlayer—Extending Plesk Functionality to Control External Web Services
12. Module Page
12 Softlayer—Extending Plesk Functionality to Control External Web Services
13. General Tab
13 Softlayer—Extending Plesk Functionality to Control External Web Services
14. General Tab (continued)
14 Softlayer—Extending Plesk Functionality to Control External Web Services
15. Account Tab
15 Softlayer—Extending Plesk Functionality to Control External Web Services
16. Tickets Tab
16 Softlayer—Extending Plesk Functionality to Control External Web Services
17. Settings Tab
17 Softlayer—Extending Plesk Functionality to Control External Web Services
18. Conclusion
Plesk functionality can be extended
beyond the server using the modules subsystem
– Next Steps for SoftLayer
▪ Publish SoftLayer Demo
▪ Encourage/Develop Integration Projects
18 Softlayer—Extending Plesk Functionality to Control External Web Services
19. References
– Plesk 8.3 Unix Modules Guide
– Plesk 8.3 Unix Modules Reference
– SoftLayer API User’s Guide Wiki, http://sldn.softlayer.com/wiki
– Kevin Laude, SoftLayer API Evangelist, klaude@softlayer.com
19 Softlayer—Extending Plesk Functionality to Control External Web Services