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 + "の削除に失敗しました。処理を終了します。"}
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 + "の削除に失敗しました。処理を終了します。" }
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}