예제 #1
0
    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 + "上で利用可能になりました。"}