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.
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
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
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
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
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
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
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
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
File listing




 10   Softlayer—Extending Plesk Functionality to Control External Web Services
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
Module Page




 12   Softlayer—Extending Plesk Functionality to Control External Web Services
General Tab




 13   Softlayer—Extending Plesk Functionality to Control External Web Services
General Tab (continued)




 14   Softlayer—Extending Plesk Functionality to Control External Web Services
Account Tab




 15   Softlayer—Extending Plesk Functionality to Control External Web Services
Tickets Tab




 16   Softlayer—Extending Plesk Functionality to Control External Web Services
Settings Tab




 17   Softlayer—Extending Plesk Functionality to Control External Web Services
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
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

SoftLayer-Extending Plesk Functionality

  • 1.
    May 19-20 lWashington, 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 extendthe 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-demanddata 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 “Themain 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 WebService – 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 ModuleExample – 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 didit – 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 accessSoftLayer 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 canbe 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