示例#1
0
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))
示例#2
0
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))
示例#3
0
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))
示例#4
0
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))
示例#5
0
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
示例#6
0
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))
示例#7
0
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))
示例#8
0
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))
示例#9
0
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))
示例#10
0
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))
示例#11
0
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))
示例#12
0
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))