3 minute read time

Your Private Cloud Operations through a Business Lens for more than 58,000 VMs and counting!

by in IT Operations Cloud

Updated re-publication on 20 March 2020 of a blog published in 2016.

With an internal organization that provides support services for more than 4000 Micro Focus developers and external customers worldwide, Micro Focus is always transforming with the times to meet high demands and maintain an exceptional user experience.

This blog captures the user experience on adopting a solution which blew away their management teams. As a Sr. Manager of R&D Data Centers, Micro Focus Infrastructure Services, said, “When we saw Business Value Dashboard (BVD) for the first time few months back, it was sold to Infrastructure Services VP in less than 5 minutes!”


The Micro Focus Infrastructure Private Cloud environment is spread across approximately 16 sites across the globe, hosting around 58,000 VMs for the Micro Focus Software R&D community. Cloud Optimizer has been an integral part of their solution, monitoring and optimizing these large-scale VM farms. In order to manage such disparate sites with such scale, automation was implemented, rolling up around 21 Cloud Optimizer instances globally. However, it became a tedious effort to manually log in to each instance and collate the required statistics in an excel sheet. Business Value Dashboard and Cloud Optimizer are a part of the Operations Bridge Suite.

At this point, the team discovered the Business Value Dashboard (BVD). It was their “a-ha” moment. As shared by a Senior Engineer from R&D Data Centers, Micro Focus Infrastructure Services, they could now view all 21 Cloud Optimizer instances across 16 sites in real time—and in a one-pane view. They could decide instantly when to add capacity at which site and significantly reduce any dependencies from previous days—for more than 58,000 VMs!

A generic view is provided below:



Here are some tips on integration between Business Value Dashboard (BVD) and Cloud Optimizer:

  1. You need to chalk out what data you will be sending and what script to use before connecting dynamic data to the Business Value Dashboard (BVD)
  2. Take note that any Open Source REST API support product can easily integrate with BVD along with minimal steps. In BVD all data is grouped into, so called data-channels. These data channels can be connected to the dashboard widgets. In order to create a data channel, you need to send your data in JSON format with a HTTP post request. A typical request has a URL and contains the data as POST-request.
  3. Below is a Python script skeleton to pull data from Cloud Optimizer and send real time data into Business Value Dashboard (BVD) seamlessly:



def Start_Parsing(): while 1: final_total_num_vm = 0 for co in config_dict['list']: response_dict = get_co_json(co['url']) outbound_data[co['name']] = response_dict final_total_num_vm = final_total_num_vm response_dict['num_vm'] outbound_package = Build_OutBound_Package_CO() outbound_package['total_num_vm'] = final_total_num_vm print "Outbound Package: ", json.dumps(outbound_package) Push_Data(outbound_package) time.sleep(config_dict['interval']) #Build outbound package from Cloud Optimizer. def Build_OutBound_Package_CO(): outbound_package = { "available_metric": "example.microfocus.com", "mdb": "KEE", "label": "Summary", "type": "Any", } outbound_package = merge_dicts(outbound_package, outbound_data) return Flatten(outbound_package,sep="/") # Flatten the real time data def Flatten(d, parent_key='', sep='_'): items = [] try: for k, v in d.items(): new_key = parent_key sep k if parent_key else k if isinstance(v, collections.MutableMapping): items.extend(flatten(v, new_key, sep=sep).items()) else: items.append((new_key,v)) except: print "Failed to flatten" traceback.print_exc() finally: return dict(items) def Build_BVD_URL(): return '' config_dict['bvd'] '/' config_dict['apikey'] '?dims=mdb,label,type&tags=omi,mdb' #Push json format real time data into BVD along with BVD URL def Push_Data(data): try: url = build_bvd_url() request = urllib2.Request(url) request.add_header('Content-Type', 'application/json') response = urllib2.urlopen(request, json.dumps(data)).read() print response except: print "Error while pushing data to BVD: ", Build_BVD_URL() def Print_Data(data): if __name__ == '__main__': #read the configuration along with validation Read_Conf_Validate(); def Read_Conf_Validate (): try: with open(config_path) as c: config_json = json.loads(c.read()) config_dict['interval'] = config_json['interval'] if isinstance(config_json['list'], list): config_dict['list'] = config_json['list'] config_dict['bvd'] = config_json['bvd'] config_dict['apikey'] = config_json['apikey'] except IOError: print "Failed to open config.json. Proceeding with default configurations." except: print "Failed to parse config.json. Proceeding with default configurations." Start_Parsing(); #Start Parsing the JSON REST API data into BVD.




For further information about Business Value Dashboard, please check out



Operations Bridge