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)
|