Exemplo n.º 1
0
def choice(request, index):
	"""ボリューム選択"""

	logger.info('データボリュームメニュー ボリューム選択開始')

	#セッションからログインユーザ情報を取得する
	#login_user = request.session['ss_usr_user']

	# エラー情報
	errors = []

	# 選択されたボリューム
	activeIndex = int(index)

	#セッション情報
	volumes = request.session['ss_vol_volumes']
	if activeIndex < len(volumes):

		logger.debug('volume_id=%s' % volumes[activeIndex].db.volume_id)

		request.session['ss_vol_volumes_selected'] = volumes[activeIndex]
		form = volume_form.VolumeForm({'volume_id':volumes[activeIndex].db.volume_id, 'name':volumes[activeIndex].db.name, 'description':volumes[activeIndex].db.description})
		request.session['ss_vol_snapshots_selected'] = None
	else:
		errors.append("不正なボリュームが選択されました。")
		logger.warn(errors)

	logger.info('データボリュームメニュー ボリューム選択成功')

	return render_to_response('volume_list.html',{'form':form,'errors':errors},context_instance=RequestContext(request))
Exemplo n.º 2
0
def createsnapshot(request):
	"""バックアップを作成ボタン(ボリューム)"""

	#セッションからログインユーザ情報を取得する
	login_user = request.session['ss_usr_user']

	# エラー情報
	errors = []

	logger.info('データボリュームメニュー バックアップを作成 開始')

	#入力フォーム
	form = volume_form.VolumeForm(request.POST)
	form.is_valid()

	#セッション情報との一致チェック
	selected = request.session['ss_vol_volumes_selected']
	if selected.db.volume_id != form.cleaned_data['volume_id']:
		errors.append("不正な画面遷移です。表示更新を行ってから再操作してください。")
		logger.warn(errors)
		return render_to_response('volume_list.html',{'form':form,'errors':errors},context_instance=RequestContext(request))

	#Eucalyptus操作
	try:
		#Eucalyptus基盤へのアクセサを生成する
		get_euca_info=GetEucalyptusInfo(login_user)
		# スナップショット作成
		created_snapshot = get_euca_info.create_snapshot(volume_id=selected.db.volume_id)
	except Exception, ex:
		# Eucalyptusエラー
		errors.append(euca_common.get_euca_error_msg('%s' % ex))
		logger.warn(errors)
		return render_to_response('volume_list.html',{'form':form,'errors':errors},context_instance=RequestContext(request))
Exemplo n.º 3
0
def detach(request):
	"""取り外しボタン(ボリューム)"""

	#セッションからログインユーザ情報を取得する
	login_user = request.session['ss_usr_user']

	# エラー情報
	errors = []

	logger.info('データボリュームメニュー 仮想マシンから取り外し 開始')

	#入力フォーム
	form = volume_form.VolumeForm(request.POST)
	form.is_valid()

	#セッション情報との一致チェック
	selected = request.session['ss_vol_volumes_selected']
	if selected.db.volume_id != form.cleaned_data['volume_id']:
		errors.append("不正な画面遷移です。表示更新を行ってから再操作してください。")
		logger.warn(errors)
		return render_to_response('volume_list.html',{'form':form,'errors':errors},context_instance=RequestContext(request))

	print selected.instance_id

	# 取り付け先の仮想マシンが起動中の場合
	if selected.instance_id:
		#Eucalyptus操作
		try:
			#Eucalyptus基盤へのアクセサを生成する
			get_euca_info=GetEucalyptusInfo(login_user)
			# EBSボリューム取り外し
			return_code = get_euca_info.detach_volume(volume_id=selected.db.volume_id, instance_id=selected.instance_id,force=True)

			if not return_code:
				errors.append("起動中の仮想マシンからのボリューム取り外しに失敗しました。")
				logger.warn(errors)
				return render_to_response('volume_list.html',{'form':form,'errors':errors},context_instance=RequestContext(request))

			""" TODO:アタッチ状況が"detaching"->"detached"->""(ステータス"available")へ遷移するのを確認する"""

		except Exception, ex:
			# Eucalyptusエラー
			errors.append(euca_common.get_euca_error_msg('%s' % ex))
			logger.warn(errors)
			return render_to_response('volume_list.html',{'form':form,'errors':errors},context_instance=RequestContext(request))
Exemplo n.º 4
0
def update(request):
	"""保存ボタン(ボリューム)"""

	#セッションからログインユーザ情報を取得する
	login_user = request.session['ss_usr_user']

	# エラー情報
	errors = []

	logger.info('データボリュームメニュー プロパティ変更 保存開始')

	if request.method == 'POST':
		logger.info("request.method == Post")

	#入力フォーム
	form = volume_form.VolumeForm(request.POST)

	# 入力チェック
	if not form.is_valid():
		tmp_errors = form.errors.values()
		for error in tmp_errors:
			errors.extend(error)
			logger.warn(errors)
		return render_to_response('volume_list.html',{'form':form,'errors':errors},context_instance=RequestContext(request))

	#セッション情報との一致チェック
	selected = request.session['ss_vol_volumes_selected']
	if selected.db.volume_id != form.cleaned_data['volume_id']:
		errors.append("不正な画面遷移です。表示更新を行ってから再操作してください。")
		logger.warn(errors)
		return render_to_response('volume_list.html',{'form':form,'errors':errors},context_instance=RequestContext(request))

	# DB更新
	selected.db.name = form.cleaned_data['name']
	selected.db.description = form.cleaned_data['description']
	updateVolume(selected.db)

	# ボリューム一覧を取得
	try:
		volumes = getVolumeList(login_user)
	except Exception, ex:
		# Eucalyptusエラー
		errors = [euca_common.get_euca_error_msg('%s' % ex)]
		logger.warn(errors)
		volumes = []
Exemplo n.º 5
0
def attachselect(request):
	"""仮想マシンへ取り付けボタン(ボリューム)"""

	#セッションからログインユーザ情報を取得する
	login_user = request.session['ss_usr_user']

	# エラー情報
	errors = []

	logger.info('データボリュームメニュー 仮想マシンへ取り付けフォーム作成 開始')

	#入力フォーム
	form = volume_form.VolumeForm(request.POST)
	form.is_valid()

	#セッション情報との一致チェック
	selected = request.session['ss_vol_volumes_selected']
	if selected.db.volume_id != form.cleaned_data['volume_id']:
		errors.append("不正な画面遷移です。表示更新を行ってから再操作してください。")
		logger.warn(errors)
		return render_to_response('volume_list.html',{'form':form,'errors':errors},context_instance=RequestContext(request))

	"""
	次画面設定
	"""
	# 入力フォーム
	form = volume_form.VolumeAttachForm()

	machines = models.Machine.objects.filter(group__user_id=login_user.id).values_list('id', 'name')
	form.fields['machine'].widget.choices = machines
	request.session['ss_vol_machines'] = machines
	if not machines:
		errors.append("選択可能な仮想マシンがありません。")
		logger.warn(errors)

	logger.info('データボリュームメニュー 仮想マシンへ取り付けフォーム作成 成功')

	return render_to_response('attach_volume.html',{'form':form,'errors':errors},context_instance=RequestContext(request))
Exemplo n.º 6
0
def cancel(request):
	"""キャンセルボタン"""

	#セッションからログインユーザ情報を取得する
	#login_user = request.session['ss_usr_user']

	# エラー情報
	errors = []

	logger.info('データボリュームメニュー キャンセル 開始')

	"""
	TODO:キャンセル元画面のセッション情報削除
	"""

	if request.session['ss_vol_snapshots_selected']:
		logger.info('データボリュームメニュー キャンセル 成功')
		return render_to_response('snapshot_list.html',{'errors':errors},context_instance=RequestContext(request))
	else:
		selected = request.session['ss_vol_volumes_selected']
		form = volume_form.VolumeForm({'volume_id':selected.db.volume_id, 'name':selected.db.name, 'description':selected.db.description})
		logger.info('データボリュームメニュー キャンセル 成功')
		return render_to_response('volume_list.html',{'form':form, 'errors':errors},context_instance=RequestContext(request))
Exemplo n.º 7
0
		volumes = getVolumeList(login_user)
	except Exception, ex:
		# Eucalyptusエラー
		errors = [euca_common.get_euca_error_msg('%s' % ex)]
		logger.warn(errors)
		volumes = []

	#セッション情報
	request.session['ss_vol_volumes'] = volumes
	selected = request.session['ss_vol_volumes_selected']

	if selected:
		for volume in volumes:
			if volume.db.volume_id == selected.db.volume_id:
				request.session['ss_vol_volumes_selected'] = volume
				form = volume_form.VolumeForm({'volume_id':volume.db.volume_id, 'name':volume.db.name, 'description':volume.db.description})
				logger.info('データボリュームメニュー 表示更新(ボリューム)成功')
				return render_to_response('volume_list.html',{'form':form,'errors':errors},context_instance=RequestContext(request))
			else:
				request.session['ss_vol_volumes_selected'] = None

	logger.info('データボリュームメニュー 表示更新(ボリューム)成功')

	return render_to_response('volume_list.html',{'errors':errors},context_instance=RequestContext(request))


def update(request):
	"""保存ボタン(ボリューム)"""

	#セッションからログインユーザ情報を取得する
	login_user = request.session['ss_usr_user']