81 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# vim: tabstop=4 shiftwidth=4 softtabstop=4
 | 
						|
 | 
						|
# Copyright (c) 2011 Zadara Storage Inc.
 | 
						|
# Copyright (c) 2011 OpenStack LLC.
 | 
						|
#
 | 
						|
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
 | 
						|
#    not use this file except in compliance with the License. You may obtain
 | 
						|
#    a copy of the License at
 | 
						|
#
 | 
						|
#         http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
#
 | 
						|
#    Unless required by applicable law or agreed to in writing, software
 | 
						|
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
						|
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
						|
#    License for the specific language governing permissions and limitations
 | 
						|
#    under the License.
 | 
						|
 | 
						|
import base64
 | 
						|
from xml.etree import ElementTree
 | 
						|
 | 
						|
from nova import flags
 | 
						|
 | 
						|
FLAGS = flags.FLAGS
 | 
						|
 | 
						|
 | 
						|
def generate_user_data(vsa, volumes):
 | 
						|
    SubElement = ElementTree.SubElement
 | 
						|
 | 
						|
    e_vsa = ElementTree.Element("vsa")
 | 
						|
 | 
						|
    e_vsa_detail = SubElement(e_vsa, "id")
 | 
						|
    e_vsa_detail.text = str(vsa['id'])
 | 
						|
    e_vsa_detail = SubElement(e_vsa, "name")
 | 
						|
    e_vsa_detail.text = vsa['display_name']
 | 
						|
    e_vsa_detail = SubElement(e_vsa, "description")
 | 
						|
    e_vsa_detail.text = vsa['display_description']
 | 
						|
    e_vsa_detail = SubElement(e_vsa, "vc_count")
 | 
						|
    e_vsa_detail.text = str(vsa['vc_count'])
 | 
						|
 | 
						|
    e_vsa_detail = SubElement(e_vsa, "auth_user")
 | 
						|
    e_vsa_detail.text = FLAGS.vsa_ec2_user_id
 | 
						|
    e_vsa_detail = SubElement(e_vsa, "auth_access_key")
 | 
						|
    e_vsa_detail.text = FLAGS.vsa_ec2_access_key
 | 
						|
 | 
						|
    e_volumes = SubElement(e_vsa, "volumes")
 | 
						|
    for volume in volumes:
 | 
						|
 | 
						|
        loc = volume['provider_location']
 | 
						|
        if loc is None:
 | 
						|
            ip = ''
 | 
						|
            iscsi_iqn = ''
 | 
						|
            iscsi_portal = ''
 | 
						|
        else:
 | 
						|
            (iscsi_target, _sep, iscsi_iqn) = loc.partition(" ")
 | 
						|
            (ip, iscsi_portal) = iscsi_target.split(":", 1)
 | 
						|
 | 
						|
        e_vol = SubElement(e_volumes, "volume")
 | 
						|
        e_vol_detail = SubElement(e_vol, "id")
 | 
						|
        e_vol_detail.text = str(volume['id'])
 | 
						|
        e_vol_detail = SubElement(e_vol, "name")
 | 
						|
        e_vol_detail.text = volume['name']
 | 
						|
        e_vol_detail = SubElement(e_vol, "display_name")
 | 
						|
        e_vol_detail.text = volume['display_name']
 | 
						|
        e_vol_detail = SubElement(e_vol, "size_gb")
 | 
						|
        e_vol_detail.text = str(volume['size'])
 | 
						|
        e_vol_detail = SubElement(e_vol, "status")
 | 
						|
        e_vol_detail.text = volume['status']
 | 
						|
        e_vol_detail = SubElement(e_vol, "ip")
 | 
						|
        e_vol_detail.text = ip
 | 
						|
        e_vol_detail = SubElement(e_vol, "iscsi_iqn")
 | 
						|
        e_vol_detail.text = iscsi_iqn
 | 
						|
        e_vol_detail = SubElement(e_vol, "iscsi_portal")
 | 
						|
        e_vol_detail.text = iscsi_portal
 | 
						|
        e_vol_detail = SubElement(e_vol, "lun")
 | 
						|
        e_vol_detail.text = '0'
 | 
						|
        e_vol_detail = SubElement(e_vol, "sn_host")
 | 
						|
        e_vol_detail.text = volume['host']
 | 
						|
 | 
						|
    _xml = ElementTree.tostring(e_vsa)
 | 
						|
    return base64.b64encode(_xml)
 |