我想添加更多的數據到屬性的CreateImageForm
在handle
方法。所以當它創建圖像時,它有一個自定義屬性abc
。如何覆蓋OpenStack horizon中SelfHandlingForm中的句柄方法?
修改後的代碼可能是這樣的
def handle(self, request, data):
# Glance does not really do anything with container_format at the
# moment. It requires it is set to the same disk_format for the three
# Amazon image types, otherwise it just treats them as 'bare.' As such
# we will just set that to be that here instead of bothering the user
# with asking them for information we can already determine.
if data['disk_format'] in ('ami', 'aki', 'ari',):
container_format = data['disk_format']
else:
container_format = 'bare'
meta = {'is_public': data['is_public'],
'protected': data['protected'],
'disk_format': data['disk_format'],
'container_format': container_format,
'min_disk': (data['minimum_disk'] or 0),
'min_ram': (data['minimum_ram'] or 0),
'name': data['name'],
'properties': {}}
if data['description']:
meta['properties']['description'] = data['description']
if data['architecture']:
meta['properties']['architecture'] = data['architecture']
###################################
# My changes
###################################
meta['properties']['abc'] = 'def'
if (settings.HORIZON_IMAGES_ALLOW_UPLOAD and
policy.check((("image", "upload_image"),), request) and
data.get('image_file', None)):
meta['data'] = self.files['image_file']
else:
meta['copy_from'] = data['copy_from']
try:
image = api.glance.image_create(request, **meta)
messages.success(request,
_('Your image %s has been queued for creation.') %
data['name'])
return image
except Exception:
exceptions.handle(request, _('Unable to create new image.'))
我想這樣做,不改變現有的代碼,如覆蓋或繼承類。
如果我添加新的儀表板和覆蓋方法,那麼它會向Horizon添加新菜單,所以當用戶點擊我的菜單時,他將獲得新的功能,但如果他點擊舊菜單,不會得到它。 – Nilesh 2014-09-13 11:38:57