Bobcares

Using oVirt API to automate VPS provisioning

by | Jan 5, 2016

It was Xmas time! Every website was flooding with offers and deals. I felt this was the best time to buy a tablet for myself. But many of these online stores had shipping times of 2 or more days.

That’s when I came across Amazon website, which highlighted a ‘Same Day Delivery!’ offer. I didn’t think for a moment before placing my order. Fast product delivery is what drove me to Amazon for my purchase.

See how our WHMCS oVirt plugin helps you!

No customer is ready to wait for long to get their order delivered. Similarly, in the hosting industry, customers want their service to be ‘delivered’ instantly. An automated provisioning system enables a hosting company to make this possible.

In a recent post, we discussed how we helped a VPS provider build a competitive VPS hosting service using oVirt. Today, we’ll discuss how we used oVirt API and custom python scripts to automate provisioning of new VPS orders.

[ You don’t have to waste your time on provisioning. Our oVirt plugins help to automate the entire process and give you an upper hand in business. ]

Creating customer portal using oVirt API

The oVirt engine admin web interface provides system administrators with a GUI to easily create and edit VPS. But performing tasks ranging from VPS creation to resource management with a GUI can be tedious.

Everytime a VPS had to be provisioned, the customers had to contact the provider, who performed these tasks. To enable VPS owners to create, scale up and manage their VPS instances, we designed a customer portal.

We also integrated it with the billing software so that the users were provided with a single-entry management interface. Using the portal, users could quickly create VPS instances for the plans they ordered.

We automated various provisioning tasks such as storage and network configuration, starting and stopping these instances, user management, etc in this software. The portal featured custom python scripts that directly interacted with the oVirt-engine using the API.

 

Custom Portal over oVirt API

Custom Portal over oVirt API

 

Read: Building custom software solutions – How we integrated WHMCS and oVirt API for a web hosting provider

Scripts for automation

The oVirt API is the Application programming interface for the oVirt engine. Our scripts connected to the API and performed actions on it using its functions. Here are a few snippets from some of the scripts we configured for the customer portal.

1. Script to List VPS instances

When a user connected to his portal, this script connected to the API with his authentication and displayed the list of VPS instances under his account. The function ‘api.vms.list()’ was executed to perform this task. A sample output of the script is shown here.

[root@ovirt1 ~]# python list_vm.py 
 VPS-Gold-35
 VPS-Gold-67
 VPS-Win2k12-03

The portal also listed the plan and resource limits for each VPS, for the user to get the account summary in a glance.

2. Script to create a new VPS

When a user clicked on the option to create a new VPS, the plans allotted to him were listed in the portal. User could choose the plan for which the new instance had to be created. Our custom script checked the billing details and created the VPS based on that plan’s template.

The API functions called in this script were:

  1. api.vms.add() to create the VPS with the name, plan template, memory specifications as parameters.
  2. api.vms.get(VM_NAME).nics.add to add the network interface for the VPS.
  3. api.vms.get(VM_NAME).disks.add to add the storage disk to the VPS

This snippet shows successful creation of a VPS in a plan called ‘VPS-Silver’.

 [root@ovirt1 ~]# python create_vm.py
 VM 'VPS-Silver-06' successfully created in 'VPS-Silver' package
 NIC added to VM
 VM successfully added to Host 'oVirt-Node-01'

Once the VPS was created, it was displayed in the user’s account in the portal.

[root@ovirt1 ~]# python list_vm.py 
 VPS-Gold-35
 VPS-Gold-67
 VPS-Silver-06
 VPS-Win2k12-03

[ Running a cloud hosting infrastructure doesn’t have to be hard, or costly, if you have the right support to assist you. Get 24/7 world class oVirt specialists and find peace of mind. ]

3. Scripts to start and stop the VPS

User was provided with the option to ‘Start’ and ‘Stop’ his VPS instances in the portal. The API functions used were:

  1. api.vms.get(VM_NAME).start() to start the VPS.
  2. api.vms.get(VM_NAME).stop() to stop it.

A snippet from the ‘Start’ script is shown here.

[root@ovirt1 ~]# python start_vm.py
 Starting VM 'VPS-02-01'
 VM 'VPS-02-01' successfully started

4. Additional features for the VPS instances

Along with these basic features, users were also given options to ‘Scale’ up their VPS instances to add more resources such as storage, IP address, memory etc.

The ‘Backups’ feature gave options to configure automatic VPS backups on a daily, weekly and monthly manner. ‘Reports’ tab gave summary reports of the VPS performance and resource usage over a period of time.

Fast provisioning is a core feature in any VPS hosting solution. Here we’ve covered how we automated VPS provisioning in an oVirt cloud system using our custom python scripts for oVirt API.

Bobcares helps VPS providers, data centers and web hosts deliver industry standard services through custom configuration and preventive maintenance of server virtualization systems. Click here to know more about the plugin..

 

Are you a hosting provider?

Want expert assistance in establishing your cloud infrastructure?

We free up your time by taking care of your customers and servers. Our engineers monitor your servers 24/7, and support your customers over help desk, live chat and phone.

GET IN TOUCH WITH THE EXPERTS NOW!

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Never again lose customers to poor
server speed! Let us help you.

Privacy Preference Center

Necessary

Necessary cookies help make a website usable by enabling basic functions like page navigation and access to secure areas of the website. The website cannot function properly without these cookies.

PHPSESSID - Preserves user session state across page requests.

gdpr[consent_types] - Used to store user consents.

gdpr[allowed_cookies] - Used to store user allowed cookies.

PHPSESSID, gdpr[consent_types], gdpr[allowed_cookies]
PHPSESSID
WHMCSpKDlPzh2chML

Statistics

Statistic cookies help website owners to understand how visitors interact with websites by collecting and reporting information anonymously.

_ga - Preserves user session state across page requests.

_gat - Used by Google Analytics to throttle request rate

_gid - Registers a unique ID that is used to generate statistical data on how you use the website.

smartlookCookie - Used to collect user device and location information of the site visitors to improve the websites User Experience.

_ga, _gat, _gid
_ga, _gat, _gid
smartlookCookie
_clck, _clsk, CLID, ANONCHK, MR, MUID, SM

Marketing

Marketing cookies are used to track visitors across websites. The intention is to display ads that are relevant and engaging for the individual user and thereby more valuable for publishers and third party advertisers.

IDE - Used by Google DoubleClick to register and report the website user's actions after viewing or clicking one of the advertiser's ads with the purpose of measuring the efficacy of an ad and to present targeted ads to the user.

test_cookie - Used to check if the user's browser supports cookies.

1P_JAR - Google cookie. These cookies are used to collect website statistics and track conversion rates.

NID - Registers a unique ID that identifies a returning user's device. The ID is used for serving ads that are most relevant to the user.

DV - Google ad personalisation

_reb2bgeo - The visitor's geographical location

_reb2bloaded - Whether or not the script loaded for the visitor

_reb2bref - The referring URL for the visit

_reb2bsessionID - The visitor's RB2B session ID

_reb2buid - The visitor's RB2B user ID

IDE, test_cookie, 1P_JAR, NID, DV, NID
IDE, test_cookie
1P_JAR, NID, DV
NID
hblid
_reb2bgeo, _reb2bloaded, _reb2bref, _reb2bsessionID, _reb2buid

Security

These are essential site cookies, used by the google reCAPTCHA. These cookies use an unique identifier to verify if a visitor is human or a bot.

SID, APISID, HSID, NID, PREF
SID, APISID, HSID, NID, PREF