Example #1
0
    def test_update_host_status(self, session, _session):
        _commit = mock.Mock()
        _session.commit = _commit

        _insert_data = HostMeta(hostname="Marvin", ip="123.456.78.9")
        session.add(_insert_data)

        with mock.patch.object(
            HostMeta, "query", session.query_property()
        ) as _query:
            HostMeta.update_host_status(
                "123.456.78.9",
                {
                    "Hostname": "Marvin",
                    "IP": "123.456.78.9",
                    "Status": "Active",
                    "CPU Load": 0.1,
                    "Memory Usage": [2000, 5000],
                    "Disk Usage": [20, 40]
                }
            )
            _commit.assert_called_once_with()
            _query_data = session.query(HostMeta).filter_by(
                hostname="Marvin"
            ).first()
            self.assertEqual(_query_data.status, json.dumps(
                {
                    "Hostname": "Marvin",
                    "IP": "123.456.78.9",
                    "Status": "Active",
                    "CPU Load": 0.1,
                    "Memory Usage": [2000, 5000],
                    "Disk Usage": [20, 40]
                }
            ))
Example #2
0
def cron_get_host_process_status():
    hosts_status = HostMeta.get_all_hosts_status()
    for host_id in hosts_status:
        host_ip = hosts_status[host_id]["IP"]
        process_status = get_host_process_status(host_ip)
        HostMeta.update_host_process_status(ip=host_ip,
                                            process_status=process_status)
Example #3
0
    def test_get_host_process_status(self, session):
        _insert_data = HostMeta(hostname="Marvin", ip="123.456.78.9")
        _insert_data.process_status = json.dumps([
            {
                "PID": 1,
                "User": "******",
                "Memory Usage": 0.1,
                "CPU Usage": 0.2,
                "Time": "11:11:11",
                "Command": "/bin/place/holder"
            }
        ])
        session.add(_insert_data)

        with mock.patch.object(
            HostMeta, "query", session.query_property()
        ) as _query:
            _id = HostMeta.query.all()[-1].id
            hosts_process_status = HostMeta.get_host_process_status(
                host_id=_id
            )
            self.assertEqual(hosts_process_status, [
                {
                    "PID": 1,
                    "User": "******",
                    "Memory Usage": 0.1,
                    "CPU Usage": 0.2,
                    "Time": "11:11:11",
                    "Command": "/bin/place/holder"
                }
            ])
Example #4
0
    def test_update_hosts_dockers_status(self, session, _session):
        _dockers_status = [
            {
                "Container ID": "4c01db0b339c",
                "Image": "ubuntu:12.04",
                "Command": "bash",
                "Created": "17 seconds ago",
                "Status": "Up 16 seconds",
                "Ports": "3300-3310/tcp",
                "Names": "webapp"
            }
        ]
        _commit = mock.Mock()
        _session.commit = _commit
        _insert_data = HostMeta(hostname="Marvin", ip="123.456.78.9")
        session.add(_insert_data)

        with mock.patch.object(
            HostMeta, "query", session.query_property()
        ) as _query:
            HostMeta.update_host_dockers_status(
                ip="123.456.78.9", dockers_status=_dockers_status
            )
            _commit.called_once_with()
            _query_data = session.query(HostMeta).filter_by(
                hostname="Marvin"
            ).first()
            self.assertEqual(
                _query_data.dockers_status, json.dumps(_dockers_status)
            )
Example #5
0
    def test_get_all_hosts_dockers_status(self, session):
        _dockers_status = [
            {
                "Container ID": "4c01db0b339c",
                "Image": "ubuntu:12.04",
                "Command": "bash",
                "Created": "17 seconds ago",
                "Status": "Up 16 seconds",
                "Ports": "3300-3310/tcp",
                "Names": "webapp"
            }
        ]
        _insert_data = HostMeta(hostname="Marvin", ip="123.456.78.9")
        _insert_data.dockers_status = json.dumps(_dockers_status)
        session.add(_insert_data)

        with mock.patch.object(
            HostMeta, "query", session.query_property()
        ) as _query:
            dockers_status = HostMeta.get_all_hosts_dockers_status()
            _result_dockers_status = _dockers_status[:]
            _result_dockers_status[0].update({
                "IP": "123.456.78.9",
                "Hostname": "Marvin"
            })
            self.assertEqual(dockers_status, _result_dockers_status)
Example #6
0
    def test_update_host_process_status(self, session, _session):
        _commit = mock.Mock()
        _session.commit = _commit

        _insert_data = HostMeta(hostname="Marvin", ip="123.456.78.9")
        session.add(_insert_data)

        with mock.patch.object(
            HostMeta, "query", session.query_property()
        ) as _query:
            HostMeta.update_host_process_status(
                "123.456.78.9",
                [{
                    "PID": 2,
                    "User": "******",
                    "Memory Usage": 0.2,
                    "CPU Usage": 0.4,
                    "Time": "23:33:33",
                    "Command": "/bin/another/place/holder"
                }]
            )
            _commit.called_once_with()
            _query_data = session.query(HostMeta).filter_by(
                hostname="Marvin"
            ).first()
            self.assertEqual(_query_data.process_status, json.dumps(
                [{
                    "PID": 2,
                    "User": "******",
                    "Memory Usage": 0.2,
                    "CPU Usage": 0.4,
                    "Time": "23:33:33",
                    "Command": "/bin/another/place/holder"
                }]
            ))
Example #7
0
def cron_get_host_docker_status():
    hosts_status = HostMeta.get_all_hosts_status()
    for host_id in hosts_status:
        host_ip = hosts_status[host_id]["IP"]
        dockers_status = get_host_docker_status(host_ip)
        for docker_status in dockers_status:
            docker_status.update({
                "IP": hosts_status[host_id]["IP"],
                "Hostname": hosts_status[host_id]["Hostname"],
            })
        HostMeta.update_host_dockers_status(ip=host_ip,
                                            dockers_status=dockers_status)
Example #8
0
def cron_get_host_status():
    hosts_status = HostMeta.get_all_hosts_status()
    for host_id in hosts_status:
        host_ip = hosts_status[host_id]["IP"]
        host_status = get_host_status(host_ip)
        host_status.update(
            {
                "Hostname": hosts_status[host_id]["Hostname"],
                "IP": hosts_status[host_id]["IP"]
            }
        )
        HostMeta.update_host_status(ip=host_ip, status=host_status)
Example #9
0
def do_deploy(deploy_id, entry_point, user, hosts, repo_uri):
    hosts_status = HostMeta.get_all_hosts_status()
    hosts_ip = [hosts_status[_id]["IP"] for _id in hosts]

    p = Process(target=deploy,
                kwargs={
                    "deploy_id": deploy_id,
                    "entry_point": entry_point,
                    "user": user,
                    "hosts_ip": hosts_ip,
                    "repo_uri": repo_uri
                })
    p.start()
Example #10
0
 def get_ssh_permission_by_user_id(cls, user_id):
     all_hosts_status = HostMeta.get_all_hosts_status()
     session.close()
     hosts_has_permission = set([
         item.host_id for item in cls.query.filter_by(user_id=user_id).all()
     ])
     result = {}
     for host_id in all_hosts_status.keys():
         result[host_id] = {
             "Hostname": all_hosts_status[host_id]["Hostname"],
             "IP": all_hosts_status[host_id]["IP"],
             "Has Permission": (
                 True if host_id in hosts_has_permission else False
             )
         }
     return result
Example #11
0
    def test_get_all_hosts_status(self, session):
        _insert_data = HostMeta(hostname="Marvin", ip="123.456.78.9")
        session.add(_insert_data)

        with mock.patch.object(
            HostMeta, "query", session.query_property()
        ) as _query:
            hosts_status = HostMeta.get_all_hosts_status()
            self.assertEqual(hosts_status, {
                hosts_status.keys()[0]: {
                    "Hostname": "Marvin",
                    "IP": "123.456.78.9",
                    "Status": "Down",
                    "CPU Load": 0,
                    "Memory Usage": [0, 0],
                    "Disk Usage": [0, 0]
                }
            })
Example #12
0
    def patch(self):
        username = self.get_secure_cookie("username")
        user_item = UserMeta.query.filter_by(username=username).first()
        user_id, public_key_path = user_item.id, user_item.public_key
        host_id, has_permission = (
            int(self.get_argument("host_id")),
            True if self.get_argument("has_permission") == "true" else False
        )
        if has_permission:
            host_ip = HostMeta.get_all_hosts_status()[host_id]["IP"]
            ssh_permission_item = SSHPermissionMeta(
                user_id=user_id, host_id=host_id
            )
            session.add(ssh_permission_item)
            session.commit()
            session.close()

            print public_key_path, user_id

            subprocess.call(
                "cat " + public_key_path + " | ssh root@" + host_ip +
                " \'cat >> ~/.ssh/authorized_keys\'", shell=True
            )
        self.write({"msg": "success"})
Example #13
0
 def get(self):
     self.write(
         json.dumps(HostMeta.get_all_hosts_dockers_status())
     )
Example #14
0
 def get(self, host_id):
     self.write(
         json.dumps(HostMeta.get_host_process_status(host_id=int(host_id)))
     )
Example #15
0
 def get(self):
     self.write(HostMeta.get_all_hosts_status())