示例#1
0
def snapshot_delete(request):
	"""バックアップ削除ボタン(スナップショット)"""

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

	# エラー情報
	errors = []

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

	#セッション情報
	snapshot = request.session['ss_vol_snapshots_selected']

	#Eucalyptus操作
	try:
		#Eucalyptus基盤へのアクセサを生成する
		get_euca_info=GetEucalyptusInfo(login_user)
		# スナップショット削除
		get_euca_info.delete_snapshot(snapshot_id=snapshot.id)
	except Exception, ex:
		# Eucalyptusエラー
		errors.append(euca_common.get_euca_error_msg('%s' % ex))
		logger.warn(errors)
		return render_to_response('snapshot_list.html',{'errors':errors},context_instance=RequestContext(request))
示例#2
0
def top(request):

	#カスタムログ
	logger = logging.getLogger('koalalog')
	logger.info('ダッシュボード画面表示')

	#メニューを「ダッシュボード」に設定
	request.session['ss_sys_menu'] = "dashboard"

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

	isNewuser = request.session['newuser']
	request.session['newuser'] = '******'

	#エラー情報
	errors = []

	#仮想マシン利用状況
	try:
		login_user.usevm = euca_common.countActiveMachine(login_user)
		#仮想サーバ一覧表示用
		machineGroupList = getMachineGroupList(login_user)
	except Exception, ex:
		# Eucalyptusエラー
		errors.append("仮想マシン情報の参照に失敗しました。")
		errors.append(euca_common.get_euca_error_msg('%s' % ex))
		login_user.usevm = login_user.db_user.maxvm
示例#3
0
def create(request):
    """接続鍵を作成ボタン"""

    logger.info('接続鍵 作成')

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

    #エラー情報
    errors = []

    #入力フォーム
    form = keypair_form.KeypairForm(request.POST)

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

    try:
        #Eucalyptus基盤へのアクセサを生成する
        get_euca_info = GetEucalyptusInfo(login_user)
        # キーペアを作成
        keypair = get_euca_info.create_keypair(form.cleaned_data['name'])
    except Exception, ex:
        # Eucalyptusエラー
        errors = [euca_common.get_euca_error_msg('%s' % ex)]
示例#4
0
def delete(request, groupname):
    """ファイアウォール削除"""

    logger.info('ファイアウォール 削除')

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

    # エラー情報
    errors = []

    #セキュリティグループ削除(Eucalyptus操作)
    try:
        #Eucalyptus基盤へのアクセサを生成する
        get_euca_info = GetEucalyptusInfo(login_user)

        #セキュリティグループ削除
        security_group = get_euca_info.delete_securitygroup(name=groupname)

    except Exception, ex:
        # Eucalyptusエラー
        errors.append("ファイアウォール削除に失敗しました。")
        errors.append(euca_common.get_euca_error_msg('%s' % ex))
        return render_to_response('securitygroup_list.html',
                                  {'errors': errors},
                                  context_instance=RequestContext(request))
示例#5
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))
示例#6
0
def attach(request):
	"""取り付けボタン(ボリューム)"""

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

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

	# エラー情報
	errors = []

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

	#入力フォーム
	form = volume_form.VolumeAttachForm(request.POST)
	form.fields['machine'].widget.choices = request.session['ss_vol_machines']
	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('attach_volume.html',{'form':form,'errors':errors},context_instance=RequestContext(request))

	machine = models.Machine.objects.get(pk=form.cleaned_data['machine'])
	if not machine:
		errors.append("不正な仮想マシンが選択されました。")
		logger.warn(errors)
		return render_to_response('attach_volume.html',{'form':form,'errors':errors},context_instance=RequestContext(request))

	# 取り付け先仮想マシンが起動中の場合
	if machine.instance_id:
		""" TODO:デバイス名を自動設定する
		"""
		device = form.cleaned_data['device'].encode('utf-8')
		#Eucalyptus操作
		try:
			#Eucalyptus基盤へのアクセサを生成する
			get_euca_info=GetEucalyptusInfo(login_user)

			#仮想マシンの現在ステータスを確認
			reservations = get_euca_info.get_instancelist(instance_ids=[machine.instance_id])
			if reservations:
				if reservations[0].instances[0].state == "running":

					# EBSボリュームアタッチ
					return_code = get_euca_info.attach_volume(volume_id=selected.db.volume_id, instance_id=machine.instance_id, device=device)

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

					""" TODO:アタッチ状況が"attaching"->"attached"へ遷移するのを確認する"""

		except Exception, ex:
			# Eucalyptusエラー
			errors.append(euca_common.get_euca_error_msg('%s' % ex))
			logger.warn(errors)
			return render_to_response('attach_volume.html',{'form':form,'errors':errors},context_instance=RequestContext(request))
示例#7
0
def ruledel(request, rule_num):
    """接続ルール削除"""

    logger.info('ファイアウォール 接続ルール削除')

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

    # エラー情報
    errors = []

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

    # セッション情報
    target = request.session['ss_scr_modify']

    index = int(rule_num)
    if index < len(target.rules):
        del_rule = target.rules[index]
    else:
        errors.append("不正な接続ルールが選択されました。")
        return render_to_response('securitygroup_mod.html', {
            'form': form,
            'errors': errors
        },
                                  context_instance=RequestContext(request))

    #ルール削除(Eucalyptus操作)
    try:
        #Eucalyptus基盤へのアクセサを生成する
        get_euca_info = GetEucalyptusInfo(login_user)

        #ルール削除
        return_code = get_euca_info.revoke_securitygroup(
            group_name=target.name,
            src_security_group_name=del_rule.from_group,
            src_security_group_owner_id=del_rule.from_user,
            ip_protocol=del_rule.ip_protocol,
            from_port=del_rule.from_port,
            to_port=del_rule.to_port,
            cidr_ip=del_rule.cidr)

        if not return_code:
            errors.append("接続許可ルール削除に失敗しました。")
            return render_to_response('securitygroup_mod.html', {
                'form': form,
                'errors': errors
            },
                                      context_instance=RequestContext(request))

    except Exception, ex:
        # Eucalyptusエラー
        errors.append("接続許可ルール削除に失敗しました。")
        errors.append(euca_common.get_euca_error_msg('%s' % ex))
        return render_to_response('securitygroup_mod.html', {
            'form': form,
            'errors': errors
        },
                                  context_instance=RequestContext(request))
示例#8
0
def createform(request):
	"""作成ボタン(ボリューム)"""

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

	# エラー情報
	errors = []

	logger.info('データボリュームメニュー 新規作成フォーム作成 開始')

	# 入力フォーム
	form = volume_form.VolumeCreateForm()


	#入力フォーム用Availability Zone一覧
	try:
		#Eucalyptus基盤へのアクセサを生成する
		get_euca_info=GetEucalyptusInfo(login_user)
		# Availability Zone一覧を取得
		zones = get_euca_info.get_availabilityzones()
		# Availability Zone一覧を選択リストへ設定
		zonelist = []
		for zone in zones:
			sub_zone = []
			sub_zone.append(zone.name)
			sub_zone.append(zone.name)
			zonelist.append(sub_zone)
		form.fields['zone'].choices = zonelist
		request.session['ss_vol_avalabilityzonelist'] = zonelist
	except Exception, ex:
		# Eucalyptusエラー
		errors.append("Availability Zone情報の参照に失敗しました。")
		errors.append(euca_common.get_euca_error_msg('%s' % ex))
		logger.warn(errors)
示例#9
0
def volume_delete(request, vol_id):
    resource_admin_auth(request)
    acc_num = None
    volume = None

    for vol in request.session['res_volumes']:
        if vol.volumeid == vol_id:
            acc_num = vol.accountnumber
            volume = vol
    if acc_num:
        euca_db = EucalyptusDB()
        usrList = euca_db.getEucalyptusUser()
        errors = []
        for usr in usrList:
            if usr.account_number == acc_num and usr.accesskey:
                try:
                    get_euca_info = GetEucalyptusInfo(usr)
                    get_euca_info.delete_volume(vol_id)
                    volume.status = "deleting"
                    request.session.modified = True

                except Exception, ex:
                    # Eucalyptusエラー
                    errors.append(euca_common.get_euca_error_msg('%s' % ex))
                    logger.warn(errors)
示例#10
0
def createNewVolume(login_user, form):
	#リソース上限チェック
	try:
		usevol = euca_common.countActiveVolume(login_user)
	except Exception, ex:
		# Eucalyptusエラー
		logger.warn("ボリューム利用状況の取得に失敗しました。")
		logger.warn(euca_common.get_euca_error_msg('%s' % ex))
		raise ex
示例#11
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))
示例#12
0
def createform_from_snapshot(request):
	"""作成ボタン(スナップショットボリューム)"""

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

	# エラー情報
	errors = []

	logger.info('データボリュームメニュー スナップショットからボリューム作成フォーム作成 開始')

	#入力フォーム用スナップショット一覧
	snapshots = request.session['ss_vol_snapshots']
	snapshotChoice = [ [snapshot.id, snapshot.id] for snapshot in snapshots ]

	# スナップショット画面からの遷移の場合、初期状態でスナップショットID選択
	initialData = {}
	selectedSnapshot = request.session['ss_vol_snapshots_selected']
	if selectedSnapshot:
		initialData['snapshot'] = selectedSnapshot.id

	# 入力フォーム
	form = volume_form.VolumeCreateForm(initial=initialData)
	form.fields['snapshot'].choices = snapshotChoice

	#入力フォーム用Availability Zone一覧
	try:
		#Eucalyptus基盤へのアクセサを生成する
		get_euca_info=GetEucalyptusInfo(login_user)
		# Availability Zone一覧を取得
		zones = get_euca_info.get_availabilityzones()
		# Availability Zone一覧を選択リストへ設定
		zonelist = []
		for zone in zones:
			sub_zone = []
			sub_zone.append(zone.name)
			sub_zone.append(zone.name)
			zonelist.append(sub_zone)
		form.fields['zone'].choices = zonelist
		request.session['ss_vol_avalabilityzonelist'] = zonelist
	except Exception, ex:
		# Eucalyptusエラー
		errors.append("Availability Zone情報の参照に失敗しました。")
		errors.append(euca_common.get_euca_error_msg('%s' % ex))
		logger.warn(errors)
示例#13
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 = []
示例#14
0
def groupcreate(request):
	"""作成ボタン(ボリューム)"""

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

	# エラー情報
	errors = []

	logger.info('グループ作成処理 開始')

	# 入力フォーム
	form = group_form.GroupCreateForm(request.POST)
	form.fields['group_polset'].choices = request.session['ss_vol_polsetlist']
	account_name = request.session['account_name']

	logger.debug('グループ作成処理 入力チェック')

	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('create_group.html',{'account_name':account_name,'form':form,'errors':errors},context_instance=RequestContext(request))

	logger.debug('グループ作成処理 入力チェック終了')

	#グループ作成(Eucalyptus操作)
	try:
		#Eucalyptus基盤へのアクセサを生成する
		euare_cmd=Euarecmd()

		new_group_id = euare_cmd.create_group(user=login_user, group_name=form.cleaned_data['group_name'], \
group_path=form.cleaned_data['group_path'] )

		logger.debug('グループ作成結果 グループID戻り値 %s' % new_group_id)

	except Exception, ex:
		# Eucalyptusエラー
		errors.append("グループ作成に失敗しました。")
		errors.append(euca_common.get_euca_error_msg('%s' % ex))
		logger.warn(errors)
示例#15
0
def snapshot_refresh(request):
	"""表示更新(バックアップ)"""

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

	# エラー情報
	errors = []

	logger.info('データボリュームメニュー スナップショット更新 開始')

	# スナップショット一覧を取得
	try:
		snapshots = getSnapshotList(login_user)
	except Exception, ex:
		# Eucalyptusエラー
		errors = [euca_common.get_euca_error_msg('%s' % ex)]
		logger.warn(errors)
		snapshots = []
示例#16
0
def refresh(request):
	"""表示更新(ボリューム)"""

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

	# エラー情報
	errors = []

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

	# ボリューム一覧を取得
	try:
		volumes = getVolumeList(login_user)
	except Exception, ex:
		# Eucalyptusエラー
		errors = [euca_common.get_euca_error_msg('%s' % ex)]
		logger.warn(errors)
		volumes = []
示例#17
0
def top(request):
    """ファイアウォールメニューの初期表示"""

    logger.info('ファイアウォール 一覧表示')

    #メニューを「ファイアウォール」に設定
    request.session['ss_sys_menu'] = "securitygroup"

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

    # エラー情報
    errors = []

    # セキュリティグループ一覧を取得
    try:
        securitygrouplist = getSecurityGroupList(login_user)
        request.session['ss_scr_securitygrouplist'] = securitygrouplist
    except Exception, ex:
        # Eucalyptusエラー
        errors.append("ファイアウォール一覧取得に失敗しました。")
        errors.append(euca_common.get_euca_error_msg('%s' % ex))
        request.session['ss_scr_securitygrouplist'] = None
示例#18
0
def top(request):
	"""データボリュームメニューの初期表示"""

	logger.info('データボリュームメニューの初期表示開始')

	#メニューを「データボリューム」に設定
	request.session['ss_sys_menu'] = "volume"

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

	# エラー情報
	errors = []

	# ボリューム一覧を取得
	try:
		volumes = getVolumeList(login_user)
		rootDevices = getVolumeList(login_user,True)
	except Exception, ex:
		# Eucalyptusエラー
		errors = [euca_common.get_euca_error_msg('%s' % ex)]
		logger.warn(errors)
		volumes = []
示例#19
0
def top(request):
    """接続鍵メニューの初期表示"""

    logger.info('接続鍵 一覧表示')

    #メニューを「接続鍵」に設定
    request.session['ss_sys_menu'] = "keypair"

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

    #エラー情報
    errors = []

    #入力フォーム
    form = keypair_form.KeypairForm()

    #キーペア一覧を取得
    try:
        keypairlist = getKeypairList(login_user)
    except Exception, ex:
        # Eucalyptusエラー
        errors = [euca_common.get_euca_error_msg('%s' % ex)]
示例#20
0
def delete(request, keyname):
    """削除ボタン"""

    logger.info('接続鍵 削除')

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

    #エラー情報
    errors = []

    #入力フォーム
    form = keypair_form.KeypairForm(request.POST)

    #Eucalyptus操作
    try:
        #Eucalyptus基盤へのアクセサを生成する
        get_euca_info = GetEucalyptusInfo(login_user)
        # キーペアを削除
        #keypair = get_euca_info.delete_keypair(keyname)
        get_euca_info.delete_keypair(keyname)
    except Exception, ex:
        # Eucalyptusエラー
        errors = [euca_common.get_euca_error_msg('%s' % ex)]
示例#21
0
	logger.debug('設定ポリシー情報 ポリシー名 %s' % str(pol_name))
	pol_cont = pol[0].pcontent
	logger.debug('設定ポリシー情報 ポリシー内容 %s' % str(pol_cont))


	#グループポリシー作成(euareコマンド操作)
	try:
		new_group_policy = euare_cmd.create_group_policy(user=login_user, group_name=form.cleaned_data['group_name'], \
pol_name=pol_name, pol_cont=pol_cont )

		logger.debug('グループポリシー作成結果 ポリシー名戻り値 %s' % new_group_policy)

	except Exception, ex:
		# Eucalyptusエラー
		errors.append("グループ作成に失敗しました。")
		errors.append(euca_common.get_euca_error_msg('%s' % ex))
		logger.warn(errors)




	logger.info('グループのcooalaDBへの登録')
	#DB登録
	db_group = models.Group()
	db_group.group_id = new_group_id
	db_group.group_name = form.cleaned_data['group_name']
	db_group.group_path = form.cleaned_data['group_path']
	db_group.account_name = login_user.account_id
	db_group.account_id = login_user.account_number
	db_group.group_pol = form.cleaned_data['group_polset']
	db_group.group_desc = form.cleaned_data['group_desc']
示例#22
0
def create(request):
    """ファイアウォール作成"""

    logger.info('ファイアウォール 作成')

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

    # エラー情報
    errors = []

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

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

    #セキュリティグループ作成(Eucalyptus操作)
    try:
        #Eucalyptus基盤へのアクセサを生成する
        get_euca_info = GetEucalyptusInfo(login_user)

        #セキュリティグループ作成
        security_group = get_euca_info.create_securitygroup(
            name=form.cleaned_data['name'],
            description=form.cleaned_data['description'])

        if form.cleaned_data['defaultrule']:
            # 初期ルール設定
            # icmp
            return_code = get_euca_info.authorize_securitygroup(
                group_name=form.cleaned_data['name'],
                ip_protocol='icmp',
                from_port=-1,
                to_port=-1,
                cidr_ip='0.0.0.0/0')

            if not return_code:
                errors.append("初期ルールの登録に失敗しました。")

            # ssh
            return_code = get_euca_info.authorize_securitygroup(
                group_name=form.cleaned_data['name'],
                ip_protocol='tcp',
                from_port=22,
                to_port=22,
                cidr_ip='0.0.0.0/0')

            if not return_code:
                errors.append("初期ルールの登録に失敗しました。")

    except Exception, ex:
        # Eucalyptusエラー
        errors.append("ファイアウォール作成に失敗しました。")
        errors.append(euca_common.get_euca_error_msg('%s' % ex))
        return render_to_response('securitygroup_create.html', {
            'form': form,
            'errors': errors
        },
                                  context_instance=RequestContext(request))
示例#23
0
def ruleadd(request):
    """接続ルール追加"""

    logger.info('ファイアウォール 接続ルール追加')

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

    # エラー情報
    errors = []

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

    # セッション情報
    target = request.session['ss_scr_modify']

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

    if form.cleaned_data['addType'] == "address":
        # 外部接続
        if not form.cleaned_data['protocol']:
            errors.append("プロトコルを入力してください。")
        if not form.cleaned_data['portMin'] or not form.cleaned_data['portMax']:
            errors.append("解放ポート範囲を入力してください。")
        elif form.cleaned_data['portMin'] > form.cleaned_data['portMax']:
            errors.append("解放ポート範囲が不正です。")
        if not form.cleaned_data['cidr']:
            errors.append("接続許可アドレス範囲を入力してください。")

    elif form.cleaned_data['addType'] == "group":
        # グループ間接続
        if not form.cleaned_data['fromUser']:
            errors.append("接続許可ユーザーを入力してください。")
        if not form.cleaned_data['fromGroup']:
            errors.append("接続許可ファイアウォールを入力してください。")

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

    #ルール追加(Eucalyptus操作)
    try:
        #Eucalyptus基盤へのアクセサを生成する
        get_euca_info = GetEucalyptusInfo(login_user)

        #ルール削除
        return_code = get_euca_info.authorize_securitygroup(
            group_name=target.name,
            src_security_group_name=form.cleaned_data['fromGroup'],
            src_security_group_owner_id=form.cleaned_data['fromUser'],
            ip_protocol=form.cleaned_data['protocol'],
            from_port=form.cleaned_data['portMin'],
            to_port=form.cleaned_data['portMax'],
            cidr_ip=form.cleaned_data['cidr'])

        if not return_code:
            errors.append("接続許可ルール追加に失敗しました。")
            return render_to_response('securitygroup_mod.html', {
                'form': form,
                'errors': errors
            },
                                      context_instance=RequestContext(request))

    except Exception, ex:
        # Eucalyptusエラー
        errors.append("接続許可ルール追加に失敗しました。")
        errors.append(euca_common.get_euca_error_msg('%s' % ex))
        return render_to_response('securitygroup_mod.html', {
            'form': form,
            'errors': errors
        },
                                  context_instance=RequestContext(request))
示例#24
0
def create(request):
	"""作成ボタン(ボリューム)"""

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

	# エラー情報
	errors = []

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

	fromsnapshot = False

	if request.session['ss_vol_snapshots_selected'] != None:
		fromsnapshot = True

	#入力フォーム用スナップショット一覧
	snapshots = request.session['ss_vol_snapshots']
	snapshotChoice = [ [snapshot.id, snapshot.id] for snapshot in snapshots ]

	# 入力フォーム
	form = volume_form.VolumeCreateForm(request.POST)
	form.fields['snapshot'].choices = snapshotChoice
	form.fields['zone'].choices = request.session['ss_vol_avalabilityzonelist']

	if not form.is_valid():
		tmp_errors = form.errors.values()
		for error in tmp_errors:
			errors.extend(error)

		logger.warn(errors)

		if fromsnapshot:
			return render_to_response('create_volume_from_snapshot.html',{'form':form,'errors':errors},context_instance=RequestContext(request))

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

	if fromsnapshot:
		if not form.cleaned_data['snapshot']:
			errors.append(u"バックアップファイルを入力してください。")
			logger.warn(errors)
			return render_to_response('create_volume_from_snapshot.html',{'form':form,'errors':errors},context_instance=RequestContext(request))
	else:
		if not form.cleaned_data['size']:
			errors.append(u"作成サイズを入力してください。")
			logger.warn(errors)
			return render_to_response('create_volume.html',{'form':form,'errors':errors},context_instance=RequestContext(request))

	#リソース上限チェック
	try:
		usevol = euca_common.countActiveVolume(login_user)
	except Exception, ex:
		# Eucalyptusエラー
		errors.append(euca_common.get_euca_error_msg('%s' % ex))

		logger.warn(errors)

		if fromsnapshot:
			return render_to_response('create_volume_from_snapshot.html',{'form':form,'errors':errors},context_instance=RequestContext(request))

		return render_to_response('create_volume.html',{'form':form,'errors':errors},context_instance=RequestContext(request))
示例#25
0
        errors = [euca_common.get_euca_error_msg('%s' % ex)]

    #DBへキーペア情報を登録
    db_keypair = models.Keypair()
    db_keypair.user_id = login_user.id
    db_keypair.account_id = login_user.account_id
    db_keypair.name = form.cleaned_data['name']
    db_keypair.data = keypair.material
    db_keypair.save()

    #キーペア一覧を取得
    try:
        keypairlist = getKeypairList(login_user)
    except Exception, ex:
        # Eucalyptusエラー
        errors = [euca_common.get_euca_error_msg('%s' % ex)]

    #セッション情報
    request.session['ss_key_keypairlist'] = keypairlist

    logger.info('接続鍵 作成 完了')

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


def delete(request, keyname):
    """削除ボタン"""