Example #1
0
 def post(self):
     data = request.get_json()
     appschema = subapp_schema.load(data)
     app = SubappModel(**appschema)
     db.session.add(app)
     db.session.commit()
     return normal_request("create subapp success")
Example #2
0
 def post(self):
     # 新增数据
     data = request.get_json()
     instanceschema = instance_schema.load(data)
     instance = InstanceModel(**instanceschema)
     db.session.add(instance)
     db.session.commit()
     return normal_request("create instance success")
Example #3
0
 def delete(self):
     # 新增数据
     data = request.get_json()
     userschema = user_schema.load(data)
     app = UserSchema(**userschema)
     db.session.add(app)
     db.session.commit()
     return normal_request("create app success")
Example #4
0
 def post(self):
     # 新增数据
     data = request.get_json()
     hostschema = host_schema.load(data)
     host = HostModel(**hostschema)
     db.session.add(host)
     db.session.commit()
     return normal_request("create host success")
Example #5
0
    def delete(self, subappid):
        # stop instance
        instList = InstanceModel.query.filter_by(subappid=subappid).all()

        opModel = OperationModel()

        db.session.add(opModel)
        db.session.flush()

        sequenceInstanceType = [
            'WEBDISPATCHER', 'TREX', 'J2EE', 'DIALOG', 'ASCS', 'HDB'
        ]

        newInstList = []
        for inst in instList:
            ipaddressarr = json.loads(inst.host.ipaddress)
            opsub = {}
            opsub['operationid'] = opModel.operationid
            opsub['instanceid'] = inst.instid
            opsub['operationsubtype'] = 'STOP'
            opsub['operationsubdetail'] = {
                "type": "HTTP",
                "method": "DELETE",
                "url":
                f"http://{ipaddressarr[0]['ip']}:23310/api/apps/{inst.subapp.subappsid}/instances/{inst.instanceno}/status",
                "param": {}
            }
            opsub['operationsubcomment'] = f'Stop Instance {inst.instid}'
            opsub['operationsubsequence'] = sequenceInstanceType.index(
                inst.instancetype) + 1
            opsub['operationsubstatus'] = 0
            opsub['operationsubstatusassert'] = '0'

            newopsub = dict(opsub)

            operationSubSchema = OperationSubSchema().load(opsub)
            opSubModel = OperationSubModel(**operationSubSchema)
            db.session.add(opSubModel)
            db.session.flush()

            newopsub['operationsubid'] = opSubModel.operationsubid
            newInstList.append(newopsub)

        db.session.commit()

        newInstList.sort(key=lambda i: i['operationsubsequence'])
        threading.Thread(target=operation_func,
                         name="operation_func_thread",
                         kwargs={
                             "instlist": newInstList
                         }).start()

        return normal_request("create stop subapp operation success")
Example #6
0
    def delete(self, instid):
        # stop instance
        inst = InstanceModel.query.get(instid)

        opModel = OperationModel()

        db.session.add(opModel)
        db.session.flush()

        ipaddressarr = json.loads(inst.host.ipaddress)
        opsub = {}
        opsub['operationid'] = opModel.operationid
        opsub['instanceid'] = instid
        opsub['operationsubtype'] = 'STOP'
        opsub['operationsubdetail'] = {
            "type": "HTTP",
            "method": "DELETE",
            "url":
            f"http://{ipaddressarr[0]['ip']}:23310/api/apps/{inst.subapp.subappsid}/instances/{inst.instanceno}/status",
            "param": {}
        }
        opsub['operationsubcomment'] = f'Stop Instance {instid}'
        opsub['operationsubsequence'] = 1
        opsub['operationsubstatus'] = 0
        opsub['operationsubstatusassert'] = '0'

        newopsub = dict(opsub)

        operationSubSchema = OperationSubSchema().load(opsub)
        opSubModel = OperationSubModel(**operationSubSchema)
        db.session.add(opSubModel)
        db.session.flush()
        newopsub['operationsubid'] = opSubModel.operationsubid
        db.session.commit()

        threading.Thread(target=operation_func,
                         name="operation_func_thread",
                         kwargs={
                             "inst": newopsub
                         }).start()

        return normal_request("create stop instance operation success")
Example #7
0
    def put(self, loginid):
        data = request.get_json()
        subappid = data['subappid']
        app = LoginModel.query.filter_by(loginid=loginid).update(data)
        db.session.commit()

        subapp_m = SubappModel.query.get(subappid)
        subapp = subapp_schema.dump(subapp_m)
        c = consul.Consul(host=os.environ.get('CONSUL_HOST')
                          if os.environ.get('CONSUL_HOST') else '127.0.0.1',
                          port=Config.CONSUL_CLIENT_PORT,
                          scheme='http')
        c.kv.put(
            subapp['subappsid'] + '_login',
            json.dumps({
                "r3client": data['client'],
                "r3user": data['username'],
                "r3pwd": data['password']
            }))
        return normal_request("update sap login info success")
Example #8
0
    def post(self):
        # 新增数据
        data = request.get_json()
        subappid = data['subappid']
        loginschema = login_schema.load(data)
        login = LoginModel(**loginschema)
        db.session.add(login)
        db.session.commit()

        subapp_m = SubappModel.query.get(subappid)
        subapp = subapp_schema.dump(subapp_m)
        c = consul.Consul(host=os.environ.get('CONSUL_HOST')
                          if os.environ.get('CONSUL_HOST') else '127.0.0.1',
                          port=Config.CONSUL_CLIENT_PORT,
                          scheme='http')
        c.kv.put(
            subapp['subappsid'] + '_login',
            json.dumps({
                "r3client": data['client'],
                "r3user": data['username'],
                "r3pwd": data['password']
            }))
        return normal_request("create instance success")
Example #9
0
    def post(self):
        data = request.get_json()
        host_info = data['host']
        subapp_list = data['app']
        hdbapp_list = data['hdb'] if "hdb" in data else []
        """
        {
            "host": {
                "cpu": 16,
                "mem": 135204020224,
                "swap": 68728909824,
                "hostname": "s4ides1",
                "ip": [
                    {
                        "device": "eth0",
                        "ip": "172.16.0.190"
                    },
                    {
                        "device": "docker0",
                        "ip": "172.17.0.1"
                    }
                ]
            },
            "app": [
                {
                    "sid": "DM0",
                    "instance": [
                        {
                            "profile": "DM0_D00_s4ides1",
                            "sysnr": "00",
                            "host": "s4ides1",
                            "sid": "DM0",
                            "servername": "s4ides1_DM0_00",
                            "type": "DIALOG"
                        },
                        {
                            "profile": "DM0_ASCS01_s4ides1",
                            "sysnr": "01",
                            "host": "s4ides1",
                            "sid": "DM0",
                            "servername": "s4ides1_DM0_01",
                            "type": "ASCS"
                        }
                    ]
                }
            ]
        }
        """
        oldhost = HostModel.query.filter_by(
            hostname=host_info['hostname']).first()
        if oldhost:
            hostid = oldhost.hostid
        else:
            hostschema = host_schema.load({
                "hostname":
                host_info['hostname'],
                "ipaddress":
                json.dumps(host_info['ip']),
                "cpu":
                host_info['cpu'],
                "memory":
                host_info['mem'],
            })

            host = HostModel(**hostschema)
            db.session.add(host)
            db.session.commit()
            hostid = host.hostid
        for subapp in subapp_list:
            oldsubapp = SubappModel.query.filter_by(
                subappsid=subapp['sid']).first()
            if oldsubapp:
                subappid = oldsubapp.subappid
            else:
                subappschema = subapp_schema.load({
                    "subappsid":
                    subapp['sid'],
                    "subappmsserv":
                    subapp['msserv']
                })
                subapp_model = SubappModel(**subappschema)
                db.session.add(subapp_model)
                db.session.commit()
                subappid = subapp_model.subappid
            for instance in subapp['instance']:
                oldinstance = InstanceModel.query.filter_by(
                    instanceid=instance['profile']).first()
                if oldinstance:
                    pass
                else:
                    instanceschema = instance_schema.load({
                        "instanceid":
                        instance['profile'],
                        "instanceno":
                        instance['sysnr'],
                        "instancetype":
                        instance['type'],
                        "subappid":
                        subappid,
                        "hostid":
                        hostid,
                    })
                    instance_model = InstanceModel(**instanceschema)
                    db.session.add(instance_model)
                    db.session.commit()

            for hdbapp in hdbapp_list:
                oldsubapp = SubappModel.query.filter_by(
                    subappsid=hdbapp['sid']).first()
                if oldsubapp:
                    subappid = oldsubapp.subappid
                else:
                    subappschema = subapp_schema.load({
                        "subappsid":
                        hdbapp['sid'],
                        "subappmsserv":
                        hdbapp['msserv']
                    })
                    subapp_model = SubappModel(**subappschema)
                    db.session.add(subapp_model)
                    db.session.commit()
                    subappid = subapp_model.subappid
                for instance in hdbapp['instance']:
                    oldinstance = InstanceModel.query.filter_by(
                        instanceid=instance['profile']).first()
                    if oldinstance:
                        pass
                    else:
                        instanceschema = instance_schema.load({
                            "instanceid":
                            instance['profile'],
                            "instanceno":
                            instance['sysnr'],
                            "instancetype":
                            instance['type'],
                            "subappid":
                            subappid,
                            "hostid":
                            hostid,
                        })
                        instance_model = InstanceModel(**instanceschema)
                        db.session.add(instance_model)
                        db.session.commit()

        return normal_request("collect agent info success")
Example #10
0
 def put(self, subappid):
     data = request.get_json()
     app = SubappModel.query.filter_by(subappid=subappid).update(data)
     db.session.commit()
     return normal_request("update subapp success")
Example #11
0
 def put(self, appid):
     # 新增数据
     data = request.get_json()
     app = AppModel.query.filter_by(appid=appid).update(data)
     db.session.commit()
     return normal_request("update app success")
Example #12
0
 def put(self, instid):
     data = request.get_json()
     app = InstanceModel.query.filter_by(instid=instid).update(data)
     db.session.commit()
     return normal_request("update instance success")
Example #13
0
 def put(self, hostid):
     # 新增数据
     data = request.get_json()
     app = HostModel.query.filter_by(hostid=hostid).update(data)
     db.session.commit()
     return normal_request("update host success")