def addService(self, paramDict): #処理メソッド取得 method = paramDict['method'] #辞書からメソッドキーと値を削除 del paramDict['method'] #引数のチェック result = CommonUtils.checkArguments(method, paramDict) if result != True: return {'result':'1','message':result} #変数設定 serviceName = paramDict['serviceName'] serviceNameDisp = paramDict['serviceNameDisp'] layer = paramDict['layer'] layerNameDisp = paramDict['layerNameDisp'] runOrder = paramDict['runOrder'] zabbixTemplate = paramDict['zabbixTemplate'] addressUrl = None imageNoList = None if "addressUrl" in paramDict: addressUrl = paramDict['addressUrl'] if "imageNoList" in paramDict: imageNoList = paramDict['imageNoList'] #getComponentTypeNoByName呼び出し try: compNo = CommonUtils.getComponentTypeNoByName(serviceName) except Exception as e: return {'result':'1','message':"サービス情報の取得に失敗したため登録処理を中止します。管理者に連絡を行って下さい。"} if compNo != None: return {'result':'1','message':"指定されたサービス名称は既に使用されています。他の名称を設定して下さい。"} #imageNoListが指定された場合imageNoListの存在チェック if imageNoList is not None: imageNoList = imageNoList.split(",") for imageNo in imageNoList: try: imageData = CommonUtils.getImageDataByNo(imageNo) except Exception as e: return {'result':'1','message':"イメージ情報の取得に失敗したため登録処理を中止します。管理者に連絡を行って下さい。"} if imageData is None: return {'result':'1','message':"指定されたイメージNo:" + imageNo + "は存在しません。イメージ情報を確認して下さい。"} #zabbixTemplateの存在チェックと、存在しない場合の追加処理 #zabbixAPI認証コード発行 try: #getConnectZabbixApi呼び出し auth = CommonUtils.getConnectZabbixApi() except Exception as e: return {'result':'1','message':"zabbixAPI認証コード取得に失敗したため処理を終了します。管理者に連絡を行って下さい。"} if auth == None: return {'result':'1','message':"zabbixAPI認証コードが発行されなかったため処理を終了します。"} #zabbixテンプレート存在チェック try: #getZabbixTemplate呼び出し zabbixTemplateData = CommonUtils.getZabbixTemplate(auth, zabbixTemplate) except Exception as e: return {'result':'1','message':"zabbixテンプレート情報の取得に失敗したため処理を終了します。管理者に連絡を行って下さい。"} #テンプレート情報が未登録の場合登録処理実行 createTemp = True if zabbixTemplateData == False: #createZabbixTemplate呼び出し try: createTemp = CommonUtils.createZabbixTemplate(auth, zabbixTemplate) except Exception as e: return {'result':'1','message':"zabbixテンプレートの追加に失敗したため処理を終了します。管理者に連絡を行って下さい。"} if createTemp != True: return {'result':'1','message':createTemp} # サービスを登録 try: componetType = self.conn.getTable("COMPONENT_TYPE") sql = componetType.insert({"COMPONENT_TYPE_NO":None, "COMPONENT_TYPE_NAME":serviceName, "COMPONENT_TYPE_NAME_DISP":serviceNameDisp, "LAYER":layer, "LAYER_DISP":layerNameDisp, "RUN_ORDER":runOrder, "SELECTABLE":1, "ZABBIX_TEMPLATE":zabbixTemplate, "ADDRESS_URL":addressUrl}) self.conn.execute(sql) self.conn.commit() except Exception as e: self.conn.rollback() return {'result':'1','message':"COMPONENT_TYPEテーブルへの登録に失敗したため処理を中止します。"} #imageNoListが指定されなかった場合有効状態の全てのイメージをリストに追加 if imageNoList is None: try: imageNoList = CommonUtils.getSelectableImageNoList() except Exception as e: return {'result':'1','message':"イメージ情報の取得に失敗したため処理を中止します。"} #imageNoListで指定されたイメージに対してサービス情報を追加 for imageNo in imageNoList: #引数用JSONデータ作成 json_data = '{"method":"validateService","imageNo":"' + imageNo + '","serviceList":"' + serviceName + '"}' jsondic = json.loads(json_data) #validateService呼び出し try: result = self.validateService(jsondic) if "1" == result['result']: return result except Exception as e: return {'result':'1','message':"イメージへのサービス情報追加処理呼び出しに失敗したため処理を中止します。管理者に連絡を行って下さい。"} imageNoList = ",".join(imageNoList) return {'result':'0','message':"サービスモジュール:" + serviceName + "の登録が完了しました。イメージNo:" + imageNoList + "上で利用可能になりました。"}
def addService(self, paramDict): #処理メソッド取得 method = paramDict['method'] #辞書からメソッドキーと値を削除 del paramDict['method'] #引数のチェック result = CommonUtils.checkArguments(method, paramDict) if result != True: return {'result': '1', 'message': result} #変数設定 serviceName = paramDict['serviceName'] serviceNameDisp = paramDict['serviceNameDisp'] layer = paramDict['layer'] layerNameDisp = paramDict['layerNameDisp'] runOrder = paramDict['runOrder'] zabbixTemplate = paramDict['zabbixTemplate'] addressUrl = None imageNoList = None if "addressUrl" in paramDict: addressUrl = paramDict['addressUrl'] if "imageNoList" in paramDict: imageNoList = paramDict['imageNoList'] #getComponentTypeNoByName呼び出し try: compNo = CommonUtils.getComponentTypeNoByName(serviceName) except Exception as e: return { 'result': '1', 'message': "サービス情報の取得に失敗したため登録処理を中止します。管理者に連絡を行って下さい。" } if compNo != None: return { 'result': '1', 'message': "指定されたサービス名称は既に使用されています。他の名称を設定して下さい。" } #imageNoListが指定された場合imageNoListの存在チェック if imageNoList is not None: imageNoList = imageNoList.split(",") for imageNo in imageNoList: try: imageData = CommonUtils.getImageDataByNo(imageNo) except Exception as e: return { 'result': '1', 'message': "イメージ情報の取得に失敗したため登録処理を中止します。管理者に連絡を行って下さい。" } if imageData is None: return { 'result': '1', 'message': "指定されたイメージNo:" + imageNo + "は存在しません。イメージ情報を確認して下さい。" } #zabbixTemplateの存在チェックと、存在しない場合の追加処理 #zabbixAPI認証コード発行 try: #getConnectZabbixApi呼び出し auth = CommonUtils.getConnectZabbixApi() except Exception as e: return { 'result': '1', 'message': "zabbixAPI認証コード取得に失敗したため処理を終了します。管理者に連絡を行って下さい。" } if auth == None: return { 'result': '1', 'message': "zabbixAPI認証コードが発行されなかったため処理を終了します。" } #zabbixテンプレート存在チェック try: #getZabbixTemplate呼び出し zabbixTemplateData = CommonUtils.getZabbixTemplate( auth, zabbixTemplate) except Exception as e: return { 'result': '1', 'message': "zabbixテンプレート情報の取得に失敗したため処理を終了します。管理者に連絡を行って下さい。" } #テンプレート情報が未登録の場合登録処理実行 createTemp = True if zabbixTemplateData == False: #createZabbixTemplate呼び出し try: createTemp = CommonUtils.createZabbixTemplate( auth, zabbixTemplate) except Exception as e: return { 'result': '1', 'message': "zabbixテンプレートの追加に失敗したため処理を終了します。管理者に連絡を行って下さい。" } if createTemp != True: return {'result': '1', 'message': createTemp} # サービスを登録 try: componetType = self.conn.getTable("COMPONENT_TYPE") sql = componetType.insert({ "COMPONENT_TYPE_NO": None, "COMPONENT_TYPE_NAME": serviceName, "COMPONENT_TYPE_NAME_DISP": serviceNameDisp, "LAYER": layer, "LAYER_DISP": layerNameDisp, "RUN_ORDER": runOrder, "SELECTABLE": 1, "ZABBIX_TEMPLATE": zabbixTemplate, "ADDRESS_URL": addressUrl }) self.conn.execute(sql) self.conn.commit() except Exception as e: self.conn.rollback() return { 'result': '1', 'message': "COMPONENT_TYPEテーブルへの登録に失敗したため処理を中止します。" } #imageNoListが指定されなかった場合有効状態の全てのイメージをリストに追加 if imageNoList is None: try: imageNoList = CommonUtils.getSelectableImageNoList() except Exception as e: return {'result': '1', 'message': "イメージ情報の取得に失敗したため処理を中止します。"} #imageNoListで指定されたイメージに対してサービス情報を追加 for imageNo in imageNoList: #引数用JSONデータ作成 json_data = '{"method":"validateService","imageNo":"' + imageNo + '","serviceList":"' + serviceName + '"}' jsondic = json.loads(json_data) #validateService呼び出し try: result = self.validateService(jsondic) if "1" == result['result']: return result except Exception as e: return { 'result': '1', 'message': "イメージへのサービス情報追加処理呼び出しに失敗したため処理を中止します。管理者に連絡を行って下さい。" } imageNoList = ",".join(imageNoList) return { 'result': '0', 'message': "サービスモジュール:" + serviceName + "の登録が完了しました。イメージNo:" + imageNoList + "上で利用可能になりました。" }
def addImage(self, paramDict): #処理メソッド取得 method = paramDict['method'] #辞書からメソッドキーと値を削除 del paramDict['method'] iaasNameList = [] retDict = None platformList = None platformNoList = [] imageNoList = [] try: #platformListが指定された場合 if "platformList" in paramDict: #platformListをカンマ区切りで分ける platformList = paramDict['platformList'].split(',') #platformListが指定されなかった場合PLATFORMテーブルからSELECTABLEが1のPLATFORM_NAME一覧取得 else: platformList = CommonUtils.getSelectablePlatformNameList() #AWSプラットフォームが指定された場合、専用のチェックメソッドを指定 for platformName in platformList: iaasName = CommonUtils.getPlatformTypeByName(platformName) if iaasName is None: return {'result':'1','message':"指定されたプラットフォーム名:" + platformName + "は存在しません。登録対象を確認して下さい。"} if "aws" == iaasName: method = "addAwsImage" except Exception as e: return {'result':'1','message':"プラットフォーム情報の取得に失敗したためOSイメージの登録を中止します。管理者に連絡を行って下さい。"} #引数のチェック result = CommonUtils.checkArguments(method, paramDict) if result != True: return {'result':'1','message':result} #引数から変数へセット imageName = paramDict['imageName'] imageNameDisp = paramDict['imageNameDisp'] osName = paramDict['osName'] osNameDisp = paramDict['osNameDisp'] instanceTypeList = paramDict['instanceTypeList'] imageId = paramDict['imageId'] zabbixTemplate = paramDict['zabbixTemplate'] serviceList = None serviceNoList = 0 kernelId = None ramdiskId = None ebsImageFlg = 0 icon = None if "serviceList" in paramDict: serviceList = paramDict['serviceList'] if "kernelId" in paramDict: kernelId = paramDict['kernelId'] if "ramdiskId" in paramDict: ramdiskId = paramDict['ramdiskId'] if "ebsImageFlg" in paramDict: ebsImageFlg = paramDict['ebsImageFlg'] if "icon" in paramDict: icon = paramDict['icon'] #serviceListの値が存在する場合、名称をNoに変換 if serviceList != None: serviceList = serviceList.split(',') serviceNoList = [] for serviceName in serviceList: try: result = CommonUtils.getComponentTypeNoByName(serviceName) if result is None: return {'result':'1','message':"指定されたサービス名称:" + serviceName + "が存在しません。登録対象を確認して下さい。"} else: serviceNoList.append(result) except AttributeError as e: return {'result':'1','message':"サービス名称の取得に失敗したため処理を中止します。管理者に連絡を行って下さい。"} #リストをカンマで結合 serviceNoList = ",".join(serviceNoList) #プラットフォーム存在チェック for platformName in platformList: try: plData = CommonUtils.getPlatformDataByName(platformName) except Exception as e: return {'result':'1','message':"プラットフォーム情報の取得に失敗したため処理を中止します。管理者に連絡を行って下さい。"} platformNoList.append(str(plData["PLATFORM_NO"])) iaasNameList.append(plData["PLATFORM_TYPE"]) #同一プラットフォーム・同一名のイメージデータ存在チェック for platformNo in platformNoList: try: checkImageData = CommonUtils.getImageDataByNameAndPlatformNo(imageName, platformNo) #指定されたプラットフォームに既に同名のイメージが存在する場合 if checkImageData != None: return {'result':'1','message':"指定されたプラットフォーム:" + str(platformNo) +"には既に同じ名称のイメージ:" + imageName + "が存在します。名称を指定し直して下さい。"} except Exception as e: return {'result':'1','message':"イメージ情報の取得に失敗したため処理を中止します。管理者に連絡を行って下さい。"} #アイコンファイル存在チェック if icon != None: if os.path.isfile(icon) == False: return {'result':'1','message':"指定されたアイコンファイルが見つからないため処理を中止します。登録対象を確認して下さい。"} #zabbixTemplateの存在チェックと、存在しない場合の追加処理 #zabbixAPI認証コード発行 try: #getConnectZabbixApi呼び出し auth = CommonUtils.getConnectZabbixApi() except Exception as e: return {'result':'1','message':"zabbixAPI認証コード取得に失敗したため処理を終了します。管理者に連絡を行って下さい。"} if auth == None: return {'result':'1','message':"zabbixAPI認証コードが発行されなかったため処理を終了します。"} #zabbixテンプレート存在チェック try: #getZabbixTemplate呼び出し zabbixTemplateData = CommonUtils.getZabbixTemplate(auth, zabbixTemplate) except Exception as e: return {'result':'1','message':"zabbixテンプレート情報の取得に失敗したため処理を終了します。管理者に連絡を行って下さい。"} #テンプレート情報が未登録の場合登録処理実行 createTemp = True if zabbixTemplateData == False: #createZabbixTemplate呼び出し try: createTemp = CommonUtils.createZabbixTemplate(auth, zabbixTemplate) except Exception as e: return {'result':'1','message':"zabbixテンプレートの追加に失敗したため処理を終了します。管理者に連絡を行って下さい。"} if createTemp != True: return {'result':'1','message':createTemp} cnt = 0 #IMAGEテーブルと各種PLATFORM_TYPE毎のIMAGE系テーブルへのデータ登録 for platformNo in platformNoList: try: #IMAGEテーブル登録処理実行 tableImage = self.conn.getTable("IMAGE") sql = tableImage.insert({"PLATFORM_NO":platformNo, "IMAGE_NAME":imageName, "IMAGE_NAME_DISP":imageNameDisp, "OS":osName, "OS_DISP":osNameDisp, "SELECTABLE":"1", "COMPONENT_TYPE_NOS":serviceNoList, "ZABBIX_TEMPLATE":zabbixTemplate }) #return {'result':'1','message':str(sql)} self.conn.execute(sql) #ここでコミットしないと子テーブルのPLATFROM_NOが取得出来ない self.conn.commit() except Exception as e: self.conn.rollback() return {'result':'1','message':"IMAGEテーブルへの登録に失敗したため処理を中止します。イメージ名:" + imageName} imageData = CommonUtils.getImageDataByNameAndPlatformNo(imageName, platformNo) imageNo = imageData["IMAGE_NO"] imageNoList.append(str(imageNo)) #IaaS毎のテーブル登録 if "aws" == iaasNameList[cnt]: try: #IMAGE_AWSテーブル登録処理実行 tableImageAws = self.conn.getTable("IMAGE_AWS") sql = tableImageAws.insert({"IMAGE_NO":imageNo, "IMAGE_ID":imageId, "KERNEL_ID":kernelId, "RAMDISK_ID":ramdiskId, "INSTANCE_TYPES":instanceTypeList, "EBS_IMAGE":ebsImageFlg }) self.conn.execute(sql) self.conn.commit() except Exception as e: self.conn.rollback() retDict = {'result':'1','message':"IMAGE_AWSテーブルへのデータ登録に失敗したため処理を中止します。"} elif "vmware" == iaasNameList[cnt]: try: #IMAGE_VMWAREテーブル登録処理実行 tableImageVmware = self.conn.getTable("IMAGE_VMWARE") sql = tableImageVmware.insert({"IMAGE_NO":imageNo, "TEMPLATE_NAME":imageId, "INSTANCE_TYPES":instanceTypeList }) self.conn.execute(sql) self.conn.commit() except Exception as e: self.conn.rollback() retDict = {'result':'1','message':"IMAGE_VMWAREテーブルへのデータ登録に失敗したため処理を中止します。"} elif "cloudstack" == iaasNameList[cnt]: try: #IMAGE_CLOUDSTACKテーブル登録処理実行 tableImageCloudstack = self.conn.getTable("IMAGE_CLOUDSTACK") sql = tableImageCloudstack.insert({"IMAGE_NO":imageNo, "TEMPLATE_ID":imageId, "INSTANCE_TYPES":instanceTypeList }) self.conn.execute(sql) self.conn.commit() except Exception as e: self.conn.rollback() retDict = {'result':'1','message':"IMAGE_CLOUDSTACKテーブルへのデータ登録に失敗したため処理を中止します。"} elif "vcloud" == iaasNameList[cnt]: try: #IMAGE_VCLOUDテーブル登録処理実行 tableImageVcloud = self.conn.getTable("IMAGE_VCLOUD") sql = tableImageVcloud.insert({"IMAGE_NO":imageNo, "TEMPLATE_NAME":imageId, "INSTANCE_TYPES":instanceTypeList }) self.conn.execute(sql) self.conn.commit() except Exception as e: self.conn.rollback() retDict = {'result':'1','message':"IMAGE_VCLOUDテーブルへのデータ登録に失敗したため処理を中止します。"} elif "openstack" == iaasNameList[cnt]: try: #IMAGE_OPENSTACKテーブル登録処理実行 tableImageOpenstack = self.conn.getTable("IMAGE_OPENSTACK") sql = tableImageOpenstack.insert({"IMAGE_NO":imageNo, "IMAGE_ID":imageId, "INSTANCE_TYPES":instanceTypeList }) self.conn.execute(sql) self.conn.commit() except Exception as e: self.conn.rollback() retDict = {'result':'1','message':"IMAGE_OPENSTACKテーブルへのデータ登録に失敗したため処理を中止します。"} elif "azure" == iaasNameList[cnt]: try: #IMAGE_AZUREテーブル登録処理実行 tableImageAzure = self.conn.getTable("IMAGE_AZURE") sql = tableImageAzure.insert({"IMAGE_NO":imageNo, "IMAGE_NAME":imageId, "INSTANCE_TYPES":instanceTypeList }) self.conn.execute(sql) self.conn.commit() except Exception as e: self.conn.rollback() retDict = {'result':'1','message':"IMAGE_AZUREテーブルへのデータ登録に失敗したため処理を中止します。"} elif "nifty" == iaasNameList[cnt]: try: #IMAGE_NIFTYテーブル登録処理実行 tableImageNifty = self.conn.getTable("IMAGE_NIFTY") sql = tableImageNifty.insert({"IMAGE_NO":imageNo, "IMAGE_ID":imageId, "INSTANCE_TYPES":instanceTypeList }) self.conn.execute(sql) self.conn.commit() except Exception as e: self.conn.rollback() retDict = {'result':'1','message':"IMAGE_NIFTYテーブルへのデータ登録に失敗したため処理を中止します。"} if retDict != None and retDict['result'] == "1": image = self.conn.getTable("IMAGE") #エラー終了時、登録したイメージデータを削除 image.delete(image.c.IMAGE_NO == imageNo).execute() cnt = cnt + 1 if icon != None: path, ext = os.path.splitext(icon) #iconの指定がある場合iconのパスに存在する画像を/opt/adc/app/auto-web/VAADIN/themes/classy/iconsに(引数.imageName)pngの形式にリネームしてコピーする。 copyName = "/opt/adc/app/auto-web/VAADIN/themes/classy/icons/" + imageName + ext shutil.copyfile(icon, copyName) imageNoList = ",".join(imageNoList) retDict = {'result':'0','message':"OSイメージNo:" + imageNoList + "/" + imageName + "の登録が完了しました。"} return retDict