コード例 #1
0
    def test_find_all_hosts(self):
        Playbook().insert({
            'name': 'cool-playbook-1',
            'playbook': [
                {
                    'hosts': 'test',
                    'remote_user': '******',
                    'tasks': [
                        {
                            'name': 'test debug',
                            'debug': {
                                'msg': 'Debug msg'
                            }
                        }
                    ]
                }
            ]
        })

        Playbook().insert({
            'name': 'cool-playbook-2',
            'playbook': [
                {
                    'hosts': 'test',
                    'remote_user': '******',
                    'tasks': [
                        {
                            'name': 'test debug',
                            'debug': {
                                'msg': 'Debug msg'
                            }
                        }
                    ]
                }
            ]
        })

        playbooks = Playbook().find()

        self.assertIsInstance(playbooks.data, list,
                              'Hosts data is not a list')
        self.assertEqual(len(playbooks.data), 2,
                         'There are more than 2 playbooks')
コード例 #2
0
    def test_create_duplicated_host(self):
        pb = {
            'name': 'cool-playbook',
            'playbook': [
                {
                    'hosts': 'test',
                    'remote_user': '******',
                    'tasks': [
                        {
                            'name': 'test debug',
                            'debug': {
                                'msg': 'Debug msg'
                            }
                        }
                    ]
                }
            ]
        }

        Playbook().insert(pb)
        status = Playbook().insert(pb)

        self.assertEqual(status, False, 'Added duplicated playbook')
コード例 #3
0
    def test_create_playbook(self):
        status = Playbook().insert({
            'name': 'cool-playbook',
            'playbook': [
                {
                    'hosts': 'test',
                    'remote_user': '******',
                    'tasks': [
                        {
                            'name': 'test debug',
                            'debug': {
                                'msg': 'Debug msg'
                            }
                        }
                    ]
                }
            ]
        })

        self.assertEqual(status, True, 'Playbook not added')
コード例 #4
0
    def test_run_playbook(self):
        ips = '172.17.0.'

        response_list = DockerEngine().run_container_operation(
            operation='list',
            data={
                'all': False
            }
        )

        if len(response_list) > 0:
            ips = ips + str(2 + len(response_list))
        else:
            ips = ips + '2'

        h = Host().insert({
            'name': self.hosts[0],
            'ips': ips
        })

        self.assertEqual(h, True, 'Host not added')

        p = Playbook().insert({
            'name': self.playbook,
            'playbook': {
                'hosts': self.hosts[0],
                'remote_user': '******',
                'tasks': [
                    {
                        'name': 'Test debug msg',
                        'debug': {
                            'msg': 'This works!'
                        }
                    }
                ]
            }
        })

        self.assertEqual(p, True, 'Playbook not added')

        container = DockerEngine().run_container_operation(
            operation='run',
            data={
                'image': 'sickp/alpine-sshd',
                'detach': True
            }
        )

        self.assertNotEqual(container, False, 'Cointainer not running')
        self.container_id = container.short_id

        # Run the playbook
        response = self.app.post(
            self.path,
            headers=self.headers,
            data=json.dumps({
                'hosts': self.hosts,
                'playbook': self.playbook,
                'passwords': {
                    'conn_pass': '******',
                    'become_pass': '******'
                }
            })
        )

        self.assertEqual(response.status_code, 200, 'Playbook failed running')
        self.assertNotEqual(json.loads(response.data)['result']
                            .find('PLAY [alpine]'), -1)

        # Stop the container
        c = DockerEngine().get_container_by_id(self.container_id)
        DockerEngine().run_operation_in_object(
            object=c,
            operation='stop',
            data={}
        )
コード例 #5
0
ファイル: provision.py プロジェクト: harvestcore/IPManager
 def post():
     data = validate_or_abort(BasePlaybook, request.get_json())
     return response_by_success(Playbook().insert(data))
コード例 #6
0
ファイル: provision.py プロジェクト: harvestcore/IPManager
 def post():
     data = validate_or_abort(QuerySchema, request.get_json())
     playbook = Playbook().find(
         criteria=data['query'],
         projection=data['filter'] if 'filter' in data.keys() else {})
     return parse_data(BasePlaybook, playbook.data)
コード例 #7
0
ファイル: provision.py プロジェクト: harvestcore/IPManager
 def get(name):
     user = Playbook().find(criteria={'name': name})
     return parse_data(BasePlaybook, user.data)
コード例 #8
0
ファイル: provision.py プロジェクト: harvestcore/IPManager
 def delete():
     data = validate_or_abort(ProvisionSchemaDelete, request.get_json())
     return response_by_success(
         Playbook().remove(criteria={'name': data['name']}), is_remove=True)
コード例 #9
0
ファイル: provision.py プロジェクト: harvestcore/IPManager
 def put():
     data = validate_or_abort(ProvisionPlaybookPut, request.get_json())
     return response_by_success(Playbook().update(
         criteria={'name': data['name']}, data=data['data']))