def revokeService(self, paramDict):
        #処理メソッド取得
        method = paramDict['method']
        #辞書からメソッドキーと値を削除
        del paramDict['method']
        
        #引数のチェック
        result = CommonUtils.checkArguments(method, paramDict)
        if result != True:
            return {'result':'1','message':result}
        
        #変数設定
        imageNo = paramDict['imageNo']
        serviceList = paramDict['serviceList']
        componentNoList = []
        instanceNoList = []
        
        #イメージ存在チェック
        try:
            imageData = CommonUtils.getImageDataByNo(imageNo)
        except Exception as e:
            return {'result':'1','message':"イメージ情報の取得に失敗したためサービス情報の削除を中止します。管理者に連絡を行って下さい。"}
        if imageData == None:
            return {'result':'1','message':"imageNo:" + imageNo + "が存在しません。サービス情報の削除を中止します。"}

        #serviceList存在チェック
        serviceNameList = serviceList.split(",")
        serviceNoList = []
        for serviceName in serviceNameList:
            try:
                result =  CommonUtils.getComponentTypeNoByName(serviceName)
                if result == None:
                    return {'result':'1','message':"サービス名称:" + serviceName + "が存在しません。サービス名称を確認して下さい。"}
                else:
                    serviceNoList.append(result)
            except Exception as e:
                return {'result':'1','message':"サービス情報の取得に失敗したためサービス情報の削除を中止します。管理者に連絡を行って下さい。"}

        #インスタンス作成中のサービスチェック
        for componentTypeNo in serviceNoList:
            #COMPONENTテーブル情報取得
            try:
                tableComponent = self.conn.getTable("COMPONENT")
                componentData = self.conn.select(tableComponent.select(tableComponent.c.COMPONENT_TYPE_NO == componentTypeNo))
            except Exception as e:
                return {'result':'1','message':"COMPONENTテーブル情報取得に失敗しました。処理を中止します。"}
            if len(componentData) > 0:
                return {'result':'1','message':"指定されたサービスは現在使用されているため処理を中止します。"}

        #登録用データ作成
        imageServiceDataList = imageData['COMPONENT_TYPE_NOS'].split(",")
        for service in serviceNoList:
            errFlg = False
            for image in imageServiceDataList[:]:
                if image == service:
                    imageServiceDataList.remove(image)
                    errFlg = True
            if errFlg == False:
                try:
                    serviceName = CommonUtils.getComponentTypeNameByNo(service)
                except Exception as e:
                    return {'result':'1','message':"サービス情報の取得に失敗したためサービス削除処理を中止します。管理者に連絡を行って下さい。"}
                return {'result':'1','message':"サービス名称:" + serviceName + "はイメージNo:" + imageNo + "で利用可能なサービス情報に存在しません。削除対象を確認して下さい。"}
        #サービス情報の作成
        imageServiceDataList.sort()
        imageService = ",".join(imageServiceDataList)
        if "" == imageService:
            imageService = 0

        #サービス情報削除
        try:
            image = self.conn.getTable("IMAGE")
            imageData = self.conn.selectOne(image.select(image.c.IMAGE_NO == imageNo))
            imageData['COMPONENT_TYPE_NOS'] = imageService
            sql = image.update(image.c.IMAGE_NO == imageNo, values = imageData)
            self.conn.execute(sql)
            self.conn.commit()
            return {'result':'0','message':"イメージNo:" + imageNo + "上で利用可能なサービス情報:" + serviceList + "の削除に成功しました。"}
        except Exception as e:
            self.conn.rollback()
            return {'result':'1','message':"利用可能サービス情報:" + serviceList + "の削除に失敗しました。処理を終了します。"}
Esempio n. 2
0
    def revokeService(self, paramDict):
        #処理メソッド取得
        method = paramDict['method']
        #辞書からメソッドキーと値を削除
        del paramDict['method']

        #引数のチェック
        result = CommonUtils.checkArguments(method, paramDict)
        if result != True:
            return {'result': '1', 'message': result}

        #変数設定
        imageNo = paramDict['imageNo']
        serviceList = paramDict['serviceList']
        componentNoList = []
        instanceNoList = []

        #イメージ存在チェック
        try:
            imageData = CommonUtils.getImageDataByNo(imageNo)
        except Exception as e:
            return {
                'result': '1',
                'message': "イメージ情報の取得に失敗したためサービス情報の削除を中止します。管理者に連絡を行って下さい。"
            }
        if imageData == None:
            return {
                'result': '1',
                'message': "imageNo:" + imageNo + "が存在しません。サービス情報の削除を中止します。"
            }

        #serviceList存在チェック
        serviceNameList = serviceList.split(",")
        serviceNoList = []
        for serviceName in serviceNameList:
            try:
                result = CommonUtils.getComponentTypeNoByName(serviceName)
                if result == None:
                    return {
                        'result':
                        '1',
                        'message':
                        "サービス名称:" + serviceName + "が存在しません。サービス名称を確認して下さい。"
                    }
                else:
                    serviceNoList.append(result)
            except Exception as e:
                return {
                    'result': '1',
                    'message': "サービス情報の取得に失敗したためサービス情報の削除を中止します。管理者に連絡を行って下さい。"
                }

        #インスタンス作成中のサービスチェック
        for componentTypeNo in serviceNoList:
            #COMPONENTテーブル情報取得
            try:
                tableComponent = self.conn.getTable("COMPONENT")
                componentData = self.conn.select(
                    tableComponent.select(
                        tableComponent.c.COMPONENT_TYPE_NO == componentTypeNo))
            except Exception as e:
                return {
                    'result': '1',
                    'message': "COMPONENTテーブル情報取得に失敗しました。処理を中止します。"
                }
            if len(componentData) > 0:
                return {
                    'result': '1',
                    'message': "指定されたサービスは現在使用されているため処理を中止します。"
                }

        #登録用データ作成
        imageServiceDataList = imageData['COMPONENT_TYPE_NOS'].split(",")
        for service in serviceNoList:
            errFlg = False
            for image in imageServiceDataList[:]:
                if image == service:
                    imageServiceDataList.remove(image)
                    errFlg = True
            if errFlg == False:
                try:
                    serviceName = CommonUtils.getComponentTypeNameByNo(service)
                except Exception as e:
                    return {
                        'result': '1',
                        'message':
                        "サービス情報の取得に失敗したためサービス削除処理を中止します。管理者に連絡を行って下さい。"
                    }
                return {
                    'result':
                    '1',
                    'message':
                    "サービス名称:" + serviceName + "はイメージNo:" + imageNo +
                    "で利用可能なサービス情報に存在しません。削除対象を確認して下さい。"
                }
        #サービス情報の作成
        imageServiceDataList.sort()
        imageService = ",".join(imageServiceDataList)
        if "" == imageService:
            imageService = 0

        #サービス情報削除
        try:
            image = self.conn.getTable("IMAGE")
            imageData = self.conn.selectOne(
                image.select(image.c.IMAGE_NO == imageNo))
            imageData['COMPONENT_TYPE_NOS'] = imageService
            sql = image.update(image.c.IMAGE_NO == imageNo, values=imageData)
            self.conn.execute(sql)
            self.conn.commit()
            return {
                'result':
                '0',
                'message':
                "イメージNo:" + imageNo + "上で利用可能なサービス情報:" + serviceList +
                "の削除に成功しました。"
            }
        except Exception as e:
            self.conn.rollback()
            return {
                'result': '1',
                'message': "利用可能サービス情報:" + serviceList + "の削除に失敗しました。処理を終了します。"
            }
Esempio n. 3
0
    def showImage(self, paramDict):
        #処理メソッド取得
        method = paramDict['method']
        #辞書からメソッドキーと値を削除
        del paramDict['method']
        strServiceName = None
        #引数チェック
        result = CommonUtils.checkArguments(method, paramDict)
        if result != True:
            return {'result':'1','message':result}
        
        #変数定義
        imageNo = paramDict['imageNo']
        imageIaasData = None
        
        #イメージデータ存在チェック
        try:
            imageData = CommonUtils.getImageDataByNo(imageNo)
            if imageData is None:
                return {'result':'1','message':"イメージNo:"+ imageNo + "が存在しません。対象を確認して下さい。"}
        except Exception as e:
            return {'result':'1','message':"イメージ情報の取得に失敗したため処理を中止します。管理者に連絡を行って下さい。"}
        
        strServiceNo = imageData["COMPONENT_TYPE_NOS"]
        #serviceListの値が存在する場合、Noを名称に変換
        if strServiceNo != None:
            serviceList = strServiceNo.split(',')
            serviceNameList = []
            for serviceNo in serviceList:
                try:
                    result =  CommonUtils.getComponentTypeNameByNo(serviceNo)
                    if result is None:
                        return {'result':'1','message':"サービス名称の取得に失敗したため処理を中止します。管理者に連絡を行って下さい。"}
                    else:
                        serviceNameList.append(result)
                except AttributeError as e:
                    return {'result':'1','message':"サービス名称の取得に失敗したため処理を中止します。管理者に連絡を行って下さい。"}
            #リストをカンマで結合
            strServiceName = ",".join(serviceNameList)
            
        imageData.update({"SERVICE_NAME_LIST":strServiceName})

        #ステータスの取得
        try:
            status = CommonUtils.getSelectableStatus(imageData["SELECTABLE"])
        except Exception as e:
            return {'result':'1','message':"ステータス名称の取得に失敗したため処理を中止します。管理者に連絡を行って下さい。"}
            
        #SELECTABLEの値をenable/disableに変換
        imageData["SELECTABLE"] = status
        
        #プラットフォーム存在チェック
        try:
            plData = CommonUtils.getPlatformDataByNo(imageData["PLATFORM_NO"])
            #指定されたプラットフォームが存在しない場合
            if plData is None:
                return {'result':'1','message':"プラットフォーム名:" + platformName + "が存在しません。管理者に連絡を行って下さい。"}
        except Exception as e:
            return {'result':'1','message':"プラットフォーム情報の取得に失敗したため処理を中止します。管理者に連絡を行って下さい。"}
        
        platformName = plData["PLATFORM_NAME"]
        iaasName = plData["PLATFORM_TYPE"]
        
        if "aws" == iaasName:
            try:
                tableImageAws = self.conn.getTable("IMAGE_AWS")
            except Exception as e:
                return {'result':'1','message':"IMAGE_AWSテーブルが存在しません。管理者に連絡を行って下さい。"}
            imageIaasData = self.conn.selectOne(tableImageAws.select(tableImageAws.c.IMAGE_NO==imageNo))
        elif "vmware" == iaasName:
            try:
                tableImageVm = self.conn.getTable("IMAGE_VMWARE")
            except Exception as e:
                return {'result':'1','message':"IMAGE_VMWAREテーブルが存在しません。管理者に連絡を行って下さい。"}
            imageIaasData = self.conn.selectOne(tableImageVm.select(tableImageVm.c.IMAGE_NO==imageNo))
            imageIaasData.update({"IMAGE_ID":imageIaasData["TEMPLATE_NAME"]})
        elif "cloudstack" == iaasName:
            try:
                tableImageCs = self.conn.getTable("IMAGE_CLOUDSTACK")
            except Exception as e:  
                return {'result':'1','message':"IMAGE_CLOUDSTACKテーブルが存在しません。管理者に連絡を行って下さい。"}
            imageIaasData = self.conn.selectOne(tableImageCs.select(tableImageCs.c.IMAGE_NO==imageNo))
            imageIaasData.update({"IMAGE_ID":imageIaasData["TEMPLATE_ID"]})
        elif "vcloud" == iaasName:
            try:
                tableImageVc = self.conn.getTable("IMAGE_VCLOUD")
            except Exception as e:
                return {'result':'1','message':"IMAGE_VCLOUDテーブルが存在しません。管理者に連絡を行って下さい。"}
            imageIaasData = self.conn.selectOne(tableImageVc.select(tableImageVc.c.IMAGE_NO==imageNo))
            imageIaasData.update({"IMAGE_ID":imageIaasData["TEMPLATE_NAME"]})
        elif "openstack" == iaasName:
            try:
                tableImageOs = self.conn.getTable("IMAGE_OPENSTACK")
            except Exception as e:  
                return {'result':'1','message':"IMAGE_OPENSTACKテーブルが存在しません。管理者に連絡を行って下さい。"}
            imageIaasData = self.conn.selectOne(tableImageOs.select(tableImageOs.c.IMAGE_NO==imageNo))
        elif "azure" == iaasName:
            try:
                tableImageAz = self.conn.getTable("IMAGE_AZURE")
            except Exception as e:
                return {'result':'1','message':"IMAGE_AZUREテーブルが存在しません。管理者に連絡を行って下さい。"}
            imageIaasData = self.conn.selectOne(tableImageAz.select(tableImageAz.c.IMAGE_NO==imageNo))
            imageIaasData.update({"IMAGE_ID":imageIaasData["IMAGE_NAME"]})
        elif "nifty" == iaasName:
            try:
                tableImageNif = self.conn.getTable("IMAGE_NIFTY")
            except Exception as e:
                return {'result':'1','message':"IMAGE_NIFTYテーブルが存在しません。管理者に連絡を行って下さい。"}
            imageIaasData = self.conn.selectOne(tableImageNif.select(tableImageNif.c.IMAGE_NO==imageNo))
            
        imageData.update(imageIaasData)
        imageData.update({u"PLATFORM_NAME":platformName})
        retData = json.dumps(imageData, ensure_ascii=False)
        
        return {'result':'0', 'message':"suucess", 'data':retData}