def createstep1(request): logger.info('OSイメージ作成のステップ1') #セッションからログインユーザ情報を取得する login_user = request.session['ss_usr_user'] #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #ログインユーザのイメージの一覧を取得 images = get_euca_info.get_image() #イメージモデルのリストを取得 image_model_List = createImageModelList(images) form = ImageCreateStep1Form({'imagetype': 'machine'}) imagetype_tuple = [('machine', '仮想OSイメージ'), ('ramdisk', 'ラムディスクイメージ'), ('kernel', 'カーネルイメージ')] form.fields['imagetype'].choices = imagetype_tuple request.session['ss_img_imagetype'] = imagetype_tuple message = "" return render_to_response('create_image_1.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request))
def createstep2back(request): logger.info('OSイメージ作成のステップ3からステップ2へ戻る') #セッションからログインユーザ情報を取得する login_user = request.session['ss_usr_user'] #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #ログインユーザのイメージの一覧を取得 images = get_euca_info.get_image() message = "" #イメージモデルのリストを取得 image_model_List = createImageModelList(images) form = ImageCreateStep2Form({ 'kernel': request.session['ss_img_kernel'], 'ramdisk': request.session['ss_img_ramdisk'], 'image_path': request.session['ss_img_imagepath'] }) form.fields['image_path'].update() form.fields['kernel'].choices = getSelectListKernelImage(image_model_List) form.fields['ramdisk'].choices = getSelectListRamdiskImage( image_model_List) return render_to_response('create_image_2.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request))
def modpublicrange(request): logger.info('公開範囲を変更') #セッションからログインユーザ情報を取得する login_user = request.session['ss_usr_user'] #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #ログインユーザのイメージの一覧を取得 images = get_euca_info.get_image() #イメージモデルのリストを取得 image_model_List = createImageModelList(images) #セッションに選択中のイメージナンバーの情報を取得する selectImageNumber = request.session['ss_img_selectNumber'] form = ImagePublicRangeForm( {'publicrange': image_model_List[selectImageNumber].is_public}) publicrange_tuple = [('public', '全体に公開 (システムOSイメージとして登録されます)'), ('private', '自分自身のみ (マイOSイメージとして登録されます)')] form.fields['publicrange'].choices = publicrange_tuple request.session['ss_img_publicrange'] = publicrange_tuple return render_to_response('modify_image_range.html', { 'image_model_List': image_model_List, 'form': form }, context_instance=RequestContext(request))
def delete(request): logger.info('イメージの削除') #セッションからログインユーザ情報を取得する login_user = request.session['ss_usr_user'] #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #ログインユーザのイメージの一覧を取得 images = get_euca_info.get_image() message = "" form = ImageModForm() if not 'ss_img_selectNumber' in request.session: #イメージモデルのリストを取得 image_model_List = createImageModelList(images) return render_to_response('image_list.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request)) #イメージモデルのリストを取得 image_model_List = createImageModelList(images) selected_image_model = None for image_model in image_model_List: if image_model.id == request.session['ss_img_selectID']: selected_image_model = image_model break deregister = DeregisterOSImage(selected_image_model) deregister.deregisterImage() selected_image_model.delete() #選択中のイメージをリストから削除する del image_model_List[request.session['ss_img_selectNumber']] if 'ss_img_selectNumber' in request.session: del request.session['ss_img_selectNumber'] if 'ss_img_selectID' in request.session: del request.session['ss_img_selectID'] logger.info('イメージの削除完了') return render_to_response('image_list.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request))
def createTemplateModelList(login_user=None): template_model_List = [] if login_user == None: return [] #テンプレートdbのオブジェクトをすべて取得する db_templateList = Template.objects.all() #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #ログインユーザのイメージの一覧を取得 images = get_euca_info.get_image() #リソースの一覧を取得する # Apache対応(VMTypesオブジェクトを取得できるよう、DBからユーザ情報を取得) #db_user = User.objects.get(account_id=login_user.account_id, user_id=login_user.id) #vmtypes = get_euca_info.get_vmtypes(db_user) for db_template in db_templateList: vmtype_model = euca_common.createVMTypeModel(db_template.vmtype) if vmtype_model == None: continue db_user = User.objects.get(account_id=db_template.account_id, user_id=db_template.user_id) if db_user == None: continue templete_user = User_Model(db_user) image_model = euca_common.createImageModel(images, db_template.image_id) if image_model == None: continue template_model = Template_Model(db_template, templete_user, image_model, vmtype_model) template_model_List.append(template_model) return template_model_List
def docreate(request): #カスタムログ logger = logging.getLogger('koalalog') logger.info('テンプレート新規作成 作成ボタン押下') #セッションからログインユーザ情報を取得する login_user = request.session['ss_usr_user'] #テンプレートのデータモデルのリストを作成する template_model_List = createTemplateModelList(login_user) form = TemplateModForm(request.POST) #ToDo Eucalyptusへの短時間接続エラー無理やり回避策 time.sleep(1) #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #リスト型をタプル型に変換して値を渡す form.fields['image'].choices = getSelectListImage(get_euca_info) form.fields['vmtype'].choices = getSelectListVMType(get_euca_info) #保存ボタンを押下した時の処理 if form.is_valid(): logger.info('テンプレート新規作成 作成実施') #ToDo Eucalyptusへの短時間接続エラー無理やり回避策 time.sleep(1) #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #ログインユーザのイメージの一覧を取得 images = get_euca_info.get_image() selectImage = form.cleaned_data['image'] selectVMType = form.cleaned_data['vmtype'] new_image_model = euca_common.createImageModel(images, selectImage) # Apache対応(VMTypesオブジェクトを取得できるよう、DBからユーザ情報を取得) #db_user = User.objects.get(account_id = login_user.account_id, user_id = login_user.id) #vmtypes = get_euca_info.get_vmtypes(db_user) new_vmtype_model = euca_common.createVMTypeModel(selectVMType) new_db_template = Template() new_db_template.name = form.cleaned_data['name'] new_db_template.description = form.cleaned_data['description'] new_db_template.count = form.cleaned_data['count'] new_db_template.account_id = login_user.account_id new_db_template.user_id = login_user.id new_db_template.image_id = selectImage new_db_template.vmtype = selectVMType if login_user.admin == True: new_db_template.kind = 1 else: new_db_template.kind = 0 #DBに登録 new_db_template.save() #新規登録したテンプレートのモデルを生成する new_template_model = Template_Model(new_db_template, login_user, new_image_model, new_vmtype_model) template_model_List.append(new_template_model) #新規作成したテンプレートを選択状態にする #セッションに選択中のテンプレートナンバーの情報を保持する request.session['ss_tpl_selectNumber'] = len(template_model_List) - 1 #セッションに選択中のテンプレートナンバーの情報を保持する request.session['ss_tpl_selectID'] = new_db_template.id logger.info('テンプレート新規作成 完了') return render_to_response('template_list.html', {'template_model_List': template_model_List}, context_instance=RequestContext(request)) else: message = [] tmp_errors = form.errors.values() for error in tmp_errors: message.extend(error) logger.warn(error) return render_to_response('create_template.html', { 'template_model_List': template_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request))
def domod(request): #カスタムログ logger = logging.getLogger('koalalog') logger.info('テンプレート修正 保存ボタン押下') #セッションからログインユーザ情報を取得する login_user = request.session['ss_usr_user'] #選択中のテンプレートの位置を取得する selectTemplateNumber = request.session['ss_tpl_selectNumber'] logger.debug("template_id=%s " % selectTemplateNumber) #テンプレートのデータモデルのリストを作成する template_model_List = createTemplateModelList(login_user) selectedTemplate = template_model_List[selectTemplateNumber] form = TemplateModForm(request.POST) #ToDo Eucalyptusへの短時間接続エラー無理やり回避策 time.sleep(1) #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #リスト型をタプル型に変換して値を渡す form.fields['image'].choices = getSelectListImage(get_euca_info) form.fields['vmtype'].choices = getSelectListVMType(get_euca_info) #保存ボタンを押下した時の処理 if form.is_valid(): logger.info('テンプレート修正 保存') selectedTemplate.name = form.cleaned_data['name'] selectedTemplate.description = form.cleaned_data['description'] selectedTemplate.count = form.cleaned_data['count'] #ToDo Eucalyptusへの短時間接続エラー無理やり回避策 time.sleep(1) #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #ログインユーザのイメージの一覧を取得 images = get_euca_info.get_image() selectImage = form.cleaned_data['image'] selectVMType = form.cleaned_data['vmtype'] logger.debug('selectImage = %s ' % selectImage) logger.debug('selectVMType = %s' % selectVMType) if euca_common.createImageModel(images, selectImage) != None: selectedTemplate.image = euca_common.createImageModel( images, selectImage) # Apache対応(VMTypesオブジェクトを取得できるよう、DBからユーザ情報を取得) #db_user = User.objects.get(account_id=login_user.account_id, user_id=login_user.id) #vmtypes = get_euca_info.get_vmtypes(db_user) if euca_common.createVMTypeModel(selectVMType) != None: selectedTemplate.vmtype = euca_common.createVMTypeModel( selectVMType) logger.info('テンプレート修正 完了') return render_to_response('template_list.html', {'template_model_List': template_model_List}, context_instance=RequestContext(request)) else: #エラーメッセージ message = [] tmp_errors = form.errors.values() for error in tmp_errors: message.extend(error) logger.warn(error) return render_to_response('modify_template.html', { 'template_model_List': template_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request))
def createstep3(request): logger.info('OSイメージ作成 Step3のOSイメージの登録処理') register = RegisterOSImage(request) image_id = "" if request.session['ss_img_selectimagetype'] == 'machine': image_id = register.registerOSImage() elif request.session['ss_img_selectimagetype'] == 'kernel': image_id = register.registerKernel() elif request.session['ss_img_selectimagetype'] == 'ramdisk': image_id = register.registerRamdisk() else: logger.error('selectImageType error .') raise Exception('selectImageType error .') new_db_image = Image() new_db_image.image_id = image_id new_db_image.name = request.session['ss_img_name'] new_db_image.description = request.session['ss_img_description'] new_db_image.save() #セッションからログインユーザ情報を取得する login_user = request.session['ss_usr_user'] #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #ログインユーザのイメージの一覧を取得 images = get_euca_info.get_image() #イメージモデルのリストを取得 image_model_List = createImageModelList(images) selectImageNumber = 0 count = 0 for i in image_model_List: if image_id == i.id: selectImageNumber = count break count = count + 1 #セッションに選択中のイメージナンバーの情報を保持する request.session['ss_img_selectNumber'] = selectImageNumber #セッションに選択中のイメージのIDの情報を保持する request.session['ss_img_selectID'] = image_id message = "" form = ImageModForm({ 'image_name': image_model_List[selectImageNumber].name, 'image_description': image_model_List[selectImageNumber].description }) logger.info('OSイメージ作成 完了 image_id=%s' % image_id) return render_to_response('image_list.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request))
def top(request, image_id): """仮想マシンイメージメニューの初期表示""" logger.info('仮想OSイメージ表示') #メニューを「仮想マシンイメージ」に設定 request.session['ss_sys_menu'] = "image" #セッションからログインユーザ情報を取得する login_user = request.session['ss_usr_user'] #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #ログインユーザのイメージの一覧を取得 images = get_euca_info.get_image() #イメージモデルのリストを取得 image_model_List = createImageModelList(images) selectImageNumber = 0 logger.debug("image_id=%s" % image_id) if 'ss_img_selectNumber' in request.session: logger.debug("session=%s" % request.session['ss_img_selectNumber']) if image_id != 'top': count = 0 for i in image_model_List: if image_id == i.id: selectImageNumber = count break count = count + 1 #セッションに選択中のイメージナンバーの情報を保持する request.session['ss_img_selectNumber'] = selectImageNumber #セッションに選択中のイメージのIDの情報を保持する request.session['ss_img_selectID'] = image_id logger.debug('selectImageNumber=%s' % request.session['ss_img_selectNumber']) logger.debug('selectImageid=%s' % request.session['ss_img_selectID']) elif 'ss_img_selectNumber' in request.session: del request.session['ss_img_selectNumber'] elif 'ss_img_selectID' in request.session: del request.session['ss_img_selectID'] #エラーメッセージ message = "" if request.method == 'POST': logger.info('保存ボタン押下') form = ImageModForm(request.POST) #保存ボタンを押下した時の処理 if form.is_valid(): selected_image_model = image_model_List[selectImageNumber] selected_image_model.name = form.cleaned_data['image_name'] selected_image_model.description = form.cleaned_data[ 'image_description'] logger.info('仮想OSイメージ 設定保存完了') return render_to_response('image_list.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request)) else: #エラーメッセージ message = [] tmp_errors = form.errors.values() for error in tmp_errors: message.extend(error) logger.warn(error) return render_to_response('image_list.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request)) else: form = None if len(image_model_List) > 0: form = ImageModForm({ 'image_name': image_model_List[selectImageNumber].name, 'image_description': image_model_List[selectImageNumber].description }) else: form = ImageModForm() logger.info('仮想OSイメージ表示完了') return render_to_response('image_list.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request))
def createstep2(request): logger.info('OSイメージ作成のステップ2 次へボタンを押下') #セッションからログインユーザ情報を取得する login_user = request.session['ss_usr_user'] #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #ログインユーザのイメージの一覧を取得 images = get_euca_info.get_image() message = "" #イメージモデルのリストを取得 image_model_List = createImageModelList(images) if request.method == 'POST': form = ImageCreateStep2Form(request.POST) form.fields['kernel'].choices = getSelectListKernelImage( image_model_List) form.fields['ramdisk'].choices = getSelectListRamdiskImage( image_model_List) if request.session['ss_img_selectimagetype'] != 'machine': form.fields['kernel'].required = False form.fields['ramdisk'].required = False else: form.fields['kernel'].required = True form.fields['ramdisk'].required = True #次へボタンを押下した時の処理 if form.is_valid(): logger.info('OSイメージ作成のステップ3') if request.session['ss_img_selectimagetype'] == 'machine': request.session['ss_img_kernel'] = form.cleaned_data['kernel'] kernel_list = list(getSelectListKernelImage(image_model_List)) """ ToDoもっときれいな方法があるはず・・・""" for k in kernel_list: if k[0] == form.cleaned_data['kernel']: request.session['ss_img_kernel_value'] = k[1] break request.session['ss_img_ramdisk'] = form.cleaned_data[ 'ramdisk'] ramdisk_list = list( getSelectListRamdiskImage(image_model_List)) """ ToDoもっときれいな方法があるはず・・・""" for r in ramdisk_list: if r[0] == form.cleaned_data['ramdisk']: request.session['ss_img_ramdisk_value'] = r[1] break request.session['ss_img_imagepath'] = form.cleaned_data[ 'image_path'] return render_to_response('create_image_3.html', {'image_model_List': image_model_List}, context_instance=RequestContext(request)) else: message = [] tmp_errors = form.errors.values() for error in tmp_errors: message.extend(error) logger.warn(error) return render_to_response('create_image_2.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request)) else: message = 'リクエストはGETにしてください' logger.warn(message) return render_to_response('create_image_2.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request))
def createstep1end(request): logger.info('OSイメージ作成のステップ1 次へボタンを押下') #セッションからログインユーザ情報を取得する login_user = request.session['ss_usr_user'] #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #ログインユーザのイメージの一覧を取得 images = get_euca_info.get_image() message = "" #イメージモデルのリストを取得 image_model_List = createImageModelList(images) if request.method == 'POST': form = ImageCreateStep1Form(request.POST) form.fields['imagetype'].choices = request.session['ss_img_imagetype'] #次へボタンを押下した時の処理 if form.is_valid(): logger.info('OSイメージ作成のステップ2') request.session['ss_img_name'] = form.cleaned_data['image_name'] request.session['ss_img_description'] = form.cleaned_data[ 'image_description'] request.session['ss_img_bucketname'] = form.cleaned_data[ 'bucket_name'] request.session['ss_img_selectimagetype'] = form.cleaned_data[ 'imagetype'] imagetype_tuple = request.session['ss_img_imagetype'] imagetype_list = list(imagetype_tuple) """ ToDoもっときれいな方法があるはず・・・""" for l in imagetype_list: if l[0] == form.cleaned_data['imagetype']: request.session['ss_img_selectimagetype_value'] = l[1] break step2form = ImageCreateStep2Form() step2form.fields['image_path'].update() step2form.fields['kernel'].choices = getSelectListKernelImage( image_model_List) step2form.fields['ramdisk'].choices = getSelectListRamdiskImage( image_model_List) return render_to_response('create_image_2.html', { 'image_model_List': image_model_List, 'form': step2form, 'message': message }, context_instance=RequestContext(request)) else: message = [] tmp_errors = form.errors.values() for error in tmp_errors: message.extend(error) logger.warn(error) return render_to_response('create_image_1.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request)) else: message = 'リクエストはGETにしてください' logger.warn(message) return render_to_response('create_image_1.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request))
def domodpublicrange(request): logger.info('公開範囲の変更実施') #セッションからログインユーザ情報を取得する login_user = request.session['ss_usr_user'] #ToDo Eucalyptusへの短時間接続エラー無理やり回避策 time.sleep(1) #Eucalyptus基盤へのアクセサを生成する get_euca_info = GetEucalyptusInfo(login_user) #ログインユーザのイメージの一覧を取得 images = get_euca_info.get_image() #セッションに選択中のイメージナンバーの情報を取得する selectImageNumber = request.session['ss_img_selectNumber'] message = "" #イメージモデルのリストを取得 image_model_List = createImageModelList(images) if request.method == 'POST': logger.info('設定ボタンを押下') rangeform = ImagePublicRangeForm(request.POST) rangeform.fields['publicrange'].choices = request.session[ 'ss_img_publicrange'] #設定ボタンを押下した時の処理 if rangeform.is_valid(): selected_publicrange = rangeform.cleaned_data['publicrange'] if selected_publicrange == 'public': result = get_euca_info.modify_image_attribute_groups( image_model_List[selectImageNumber].id, 'add', groups=['all']) logger.debug('result = %s' % result) else: result = get_euca_info.modify_image_attribute_groups( image_model_List[selectImageNumber].id, 'remove', groups=['all']) logger.debug('result = %s' % result) #ログインユーザのイメージの一覧を再び取得 modimages = get_euca_info.get_image() #イメージモデルのリストを再び取得 image_model_Mod_List = createImageModelList(modimages) form = ImageModForm({ 'image_name': image_model_Mod_List[selectImageNumber].name, 'image_description': image_model_Mod_List[selectImageNumber].description }) logger.info('公開範囲の変更完了 range=%s' % selected_publicrange.encode('utf-8')) return render_to_response('image_list.html', { 'image_model_List': image_model_Mod_List, 'form': form, 'message': message }, context_instance=RequestContext(request)) else: #エラーメッセージ message = [] tmp_errors = form.errors.values() for error in tmp_errors: message.extend(error) logger.warn(error) form = ImageModForm({ 'image_name': image_model_List[selectImageNumber].name, 'image_description': image_model_List[selectImageNumber].description }) return render_to_response('image_list.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request)) else: form = ImageModForm({ 'image_name': image_model_List[selectImageNumber].name, 'image_description': image_model_List[selectImageNumber].description }) return render_to_response('image_list.html', { 'image_model_List': image_model_List, 'form': form, 'message': message }, context_instance=RequestContext(request))