Example #1
0
    def test_get_service_nodes(self, service_name, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        status=executor.STATUS_FAILED,
                                        host='10.0.0.2'),
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.3')
            ]
        ]

        fuel_managment = fuel.FuelManagement(self.conf)

        service = fuel_managment.get_service(service_name)

        nodes = service.get_nodes()
        cmd = 'bash -c "ps ax | grep -v grep | grep \'{}\'"'.format(
            service.grep)
        ansible_runner_inst.execute.assert_has_calls([
            mock.call([self.master_host], {'command': 'fuel node --json'}),
            mock.call(self.hosts, {'command': cmd}, []),
        ])

        self.assertEqual(nodes.hosts, [self.hosts[1]])
    def test_freeze(self, service_name, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [fakes.FakeAnsibleResult(payload={'stdout': ''},
                                     host='10.0.0.2'),
             fakes.FakeAnsibleResult(payload={'stdout': ''},
                                     host='10.0.0.3')],
            [fakes.FakeAnsibleResult(payload={'stdout': ''},
                                     host='10.0.0.2'),
             fakes.FakeAnsibleResult(payload={'stdout': ''},
                                     host='10.0.0.3')]
        ]

        fuel_managment = fuel.FuelManagement(self.conf)

        service = fuel_managment.get_service(service_name)
        service.freeze()

        get_nodes_cmd = 'bash -c "ps ax | grep -v grep | grep \'{}\'"'.format(
            service.grep)
        ansible_runner_inst.execute.assert_has_calls([
            mock.call([self.master_host], {'command': 'fuel node --json'}),
            mock.call(self.hosts, {'command': get_nodes_cmd}, []),
            mock.call(self.hosts, {'kill': {'grep': service.grep, 'sig': 19}}),
        ])
Example #3
0
    def test_start(self, service_name, service_cls, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.2'),
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.3')
            ],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.2'),
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.3')
            ]
        ]

        fuel_managment = fuel.FuelManagement(self.conf)

        service = fuel_managment.get_service(service_name)
        self.assertIsInstance(service, service_cls)

        service.start()

        get_nodes_cmd = 'bash -c "ps ax | grep \'{}\'"'.format(service.GREP)
        ansible_runner_inst.execute.assert_has_calls([
            mock.call(['fuel.local'], {'command': 'fuel node --json'}),
            mock.call(['10.0.0.2', '10.0.0.3'], {'command': get_nodes_cmd},
                      []),
            mock.call(['10.0.0.2', '10.0.0.3'], {'shell': service.START_CMD}),
        ])
Example #4
0
    def test_execute_on_cloud(self, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''}),
                fakes.FakeAnsibleResult(payload={'stdout': ''})
            ]
        ]
        fuel_managment = fuel.FuelManagement({
            'address': 'fuel.local',
            'username': '******',
        })
        nodes = fuel_managment.get_nodes()
        result = fuel_managment.execute_on_cloud(nodes.get_ips(),
                                                 {'command': 'mycmd'},
                                                 raise_on_error=False)

        ansible_runner_inst.execute.assert_has_calls([
            mock.call(['fuel.local'], {'command': 'fuel node --json'}),
            mock.call(['10.0.0.2', '10.0.0.3'], {'command': 'mycmd'}, []),
        ])

        self.assertEqual(result, [
            fakes.FakeAnsibleResult(payload={'stdout': ''}),
            fakes.FakeAnsibleResult(payload={'stdout': ''})
        ])
Example #5
0
    def test_get_service_nodes(self, service_name, service_cls,
                               mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        status=executor.STATUS_FAILED,
                                        host='10.0.0.2'),
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.3')
            ]
        ]

        fuel_managment = fuel.FuelManagement({
            'address': 'fuel.local',
            'username': '******',
        })

        service = fuel_managment.get_service(service_name)
        self.assertIsInstance(service, service_cls)

        nodes = service.get_nodes()
        cmd = 'bash -c "ps ax | grep \'{}\'"'.format(service_cls.GREP)
        ansible_runner_inst.execute.assert_has_calls([
            mock.call(['fuel.local'], {'command': 'fuel node --json'}),
            mock.call(['10.0.0.2', '10.0.0.3'], {'command': cmd}, []),
        ])

        hosts = [
            node_collection.Host(ip='10.0.0.3', mac='03', fqdn='node-3'),
        ]
        self.assertEqual(nodes.hosts, hosts)
Example #6
0
    def test_run_node_collection_empty(self, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.2',
                                        status=executor.STATUS_FAILED),
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.3',
                                        status=executor.STATUS_FAILED)
            ],
        ]

        fuel_managment = fuel.FuelManagement(self.conf)

        service = fuel_managment.get_service('keystone')
        exception = self.assertRaises(error.ServiceError, service.restart)
        self.assertEqual('Node collection is empty', str(exception))

        get_nodes_cmd = 'bash -c "ps ax | grep \'{}\'"'.format(service.GREP)
        ansible_runner_inst.execute.assert_has_calls([
            mock.call(['fuel.local'], {'command': 'fuel node --json'}),
            mock.call(['10.0.0.2', '10.0.0.3'], {'command': get_nodes_cmd},
                      []),
        ])
Example #7
0
    def test_start(self, service_name, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result], [self.fake_node_ip_result],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        status=executor.STATUS_FAILED,
                                        host='10.0.0.2'),
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.3')
            ],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.2'),
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.3')
            ]
        ]

        tcp_managment = tcpcloud.TCPCloudManagement(self.tcp_conf)

        service = tcp_managment.get_service(service_name)
        service.start()

        cmd = 'bash -c "ps ax | grep -v grep | grep \'{}\'"'.format(
            service.grep)
        ansible_runner_inst.execute.assert_has_calls([
            mock.call([self.master_host], {'command': self.get_nodes_cmd}),
            mock.call([self.master_host], {'command': self.get_ips_cmd}),
            mock.call(self.hosts, {'command': cmd}, []),
            mock.call([self.hosts[1]], {'shell': service.start_cmd}),
        ])
Example #8
0
    def test_execute_on_cloud(self, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result], [self.fake_node_ip_result],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''}),
                fakes.FakeAnsibleResult(payload={'stdout': ''})
            ]
        ]
        tcp_managment = tcpcloud.TCPCloudManagement(self.tcp_conf)
        nodes = tcp_managment.get_nodes()
        result = tcp_managment.execute_on_cloud(nodes.hosts,
                                                {'command': 'mycmd'},
                                                raise_on_error=False)

        ansible_runner_inst.execute.assert_has_calls([
            mock.call([self.master_host], {'command': self.get_nodes_cmd}),
            mock.call([self.master_host], {'command': self.get_ips_cmd}),
            mock.call(self.hosts, {'command': 'mycmd'}, []),
        ])

        self.assertEqual(result, [
            fakes.FakeAnsibleResult(payload={'stdout': ''}),
            fakes.FakeAnsibleResult(payload={'stdout': ''})
        ])
Example #9
0
    def test_get_service_nodes(self, service_name, service_cls,
                               mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        status=executor.STATUS_FAILED,
                                        host='10.0.0.2'),
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.3')
            ]
        ]

        tcp_managment = tcpcloud.TCPCloudManagement(self.tcp_conf)

        service = tcp_managment.get_service(service_name)
        self.assertIsInstance(service, service_cls)

        nodes = service.get_nodes()
        cmd = 'bash -c "ps ax | grep \'{}\'"'.format(service_cls.GREP)
        ansible_runner_inst.execute.assert_has_calls([
            mock.call(['tcp.local'], {'command': self.get_nodes_cmd}),
            mock.call(['10.0.0.2', '10.0.0.3'], {'command': cmd}, []),
        ])

        hosts = [
            node_collection.Host(ip='10.0.0.3',
                                 mac='09:7b:74:90:63:c3',
                                 fqdn='cmp02.mk20.local'),
        ]
        self.assertEqual(nodes.hosts, hosts)
Example #10
0
    def test_get_service_nodes(self, service_name, service_cls,
                               mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c1'})],
            [fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2')]
        ]

        devstack_management = devstack.DevStackManagement(self.conf)

        service = devstack_management.get_service(service_name)
        self.assertIsInstance(service, service_cls)

        nodes = service.get_nodes()

        cmd = 'bash -c "ps ax | grep \'{}\'"'.format(service_cls.GREP)
        ansible_runner_inst.execute.assert_has_calls([
            mock.call(
                ['10.0.0.2'], {'command': 'cat /sys/class/net/eth0/address'}),
            mock.call(['10.0.0.2'], {'command': cmd}, [])
        ])
        self.assertEqual(
            [node_collection.Host(ip='10.0.0.2', mac='09:7b:74:90:63:c1',
                                  fqdn='')],
            nodes.hosts)
Example #11
0
    def test_start(self, service_name, service_cls, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        status=executor.STATUS_FAILED,
                                        host='10.0.0.2'),
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.3')
            ],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.2'),
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.3')
            ]
        ]

        tcp_managment = tcpcloud.TCPCloudManagement(self.tcp_conf)

        service = tcp_managment.get_service(service_name)
        self.assertIsInstance(service, service_cls)

        service.start()

        cmd = 'bash -c "ps ax | grep \'{}\'"'.format(service_cls.GREP)
        ansible_runner_inst.execute.assert_has_calls([
            mock.call(['tcp.local'], {'command': self.get_nodes_cmd}),
            mock.call(['10.0.0.2', '10.0.0.3'], {'command': cmd}, []),
            mock.call(['10.0.0.3'], {'shell': service.START_CMD}),
        ])
Example #12
0
    def test_plug(self, service_name, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [fakes.FakeAnsibleResult(payload={'stdout': ''},
                                     host='10.0.0.2'),
             fakes.FakeAnsibleResult(payload={'stdout': ''},
                                     host='10.0.0.3')],
            [fakes.FakeAnsibleResult(payload={'stdout': ''},
                                     host='10.0.0.2'),
             fakes.FakeAnsibleResult(payload={'stdout': ''},
                                     host='10.0.0.3')]
        ]

        fuel_managment = fuel.FuelManagement(self.conf)

        service = fuel_managment.get_service(service_name)
        service.plug()

        get_nodes_cmd = 'bash -c "ps ax | grep -v grep | grep \'{}\'"'.format(
            service.grep)
        ansible_runner_inst.execute.assert_has_calls([
            mock.call([self.master_host], {'command': 'fuel node --json'}),
            mock.call(self.hosts, {'command': get_nodes_cmd}, []),
            mock.call(self.hosts,
                      {'iptables': {'protocol': service.port[0],
                                    'port': service.port[1],
                                    'action': 'unblock',
                                    'service': service.service_name}}),
        ])
Example #13
0
    def test_get_nodes_with_slaves(self, mock_ansible_runner):
        self.conf['slaves'] = ['10.0.0.3', '10.0.0.4']
        self.conf['iface'] = 'eth1'
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c1'},
                                     host='10.0.0.2'),
             fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c2'},
                                     host='10.0.0.3'),
             fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c3'},
                                     host='10.0.0.4')],
        ]
        hosts = [
            node_collection.Host('10.0.0.2'),
            node_collection.Host('10.0.0.3'),
            node_collection.Host('10.0.0.4')
        ]
        devstack_management = devstack.DevStackManagement(self.conf)
        nodes = devstack_management.get_nodes()

        ansible_runner_inst.execute.assert_called_once_with(
            hosts, {'command': 'cat /sys/class/net/eth1/address'})

        self.assertIsInstance(nodes, devstack.DevStackNode)
        self.assertEqual(
            [node_collection.Host(ip='10.0.0.2', mac='09:7b:74:90:63:c1',
                                  fqdn=''),
             node_collection.Host(ip='10.0.0.3', mac='09:7b:74:90:63:c2',
                                  fqdn=''),
             node_collection.Host(ip='10.0.0.4', mac='09:7b:74:90:63:c3',
                                  fqdn='')],
            nodes.hosts)
Example #14
0
    def test_execute_on_cloud(self, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [fakes.FakeAnsibleResult(payload={'stdout': '/root'})],
        ]
        devstack_management = devstack.DevStackCloudManagement(self.conf)
        result = devstack_management.execute_on_cloud(
            ['10.0.0.2'], {'command': 'pwd'})

        ansible_runner_inst.execute.assert_called_once_with(
            ['10.0.0.2'], {'command': 'pwd'})
        self.assertEqual(
            [fakes.FakeAnsibleResult(payload={'stdout': '/root'})], result)
Example #15
0
    def setUp(self):
        super(TCPCloudManagementTestCase, self).setUp()
        self.fake_ansible_result = fakes.FakeAnsibleResult(
            payload={
                'stdout':
                'cmp01.mk20.local:\n'
                '  eth1:\n'
                '    hwaddr: 09:7b:74:90:63:c2\n'
                '    inet:\n'
                '    - address: 10.0.0.2\n'
                '  eth2:\n'
                '    hwaddr: 00:00:00:00:00:02\n'
                '    inet:\n'
                '    - address: 192.168.1.2\n'
                'cmp02.mk20.local:\n'
                '  eth1:\n'
                '    hwaddr: 00:00:00:00:00:03\n'
                '    inet:\n'
                '    - address: 192.168.1.3\n'
                '  eth2:\n'
                '    hwaddr: 09:7b:74:90:63:c3\n'
                '    inet:\n'
                '    - address: 10.0.0.3\n'
            })
        self.fake_node_ip_result = fakes.FakeAnsibleResult(
            payload={
                'stdout':
                'cmp01.mk20.local:\n'
                '  10.0.0.2\n'
                'cmp02.mk20.local:\n'
                '  10.0.0.3\n'
            })

        self.tcp_conf = {
            'address': 'tcp.local',
            'username': '******',
        }
        self.get_nodes_cmd = (
            "salt -E '^(?!cfg|mon)' network.interfaces --out=yaml")
        self.get_ips_cmd = ("salt -E '^(?!cfg|mon)' "
                            "pillar.get _param:single_address --out=yaml")

        self.master_host = node_collection.Host('tcp.local')
        self.hosts = [
            node_collection.Host(ip='10.0.0.2',
                                 mac='09:7b:74:90:63:c2',
                                 fqdn='cmp01.mk20.local'),
            node_collection.Host(ip='10.0.0.3',
                                 mac='09:7b:74:90:63:c3',
                                 fqdn='cmp02.mk20.local'),
        ]
Example #16
0
    def test_verify(self, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c1'},
                                     host='10.0.0.2')],
            [fakes.FakeAnsibleResult(payload={'stdout': ''},
                                     host='10.0.0.2')],
        ]
        devstack_management = devstack.DevStackCloudManagement(self.conf)
        devstack_management.verify()

        ansible_runner_inst.execute.assert_has_calls([
            mock.call([self.host],
                      {'command': 'cat /sys/class/net/eth0/address'}),
        ])
Example #17
0
    def test_verify(self, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''}),
                fakes.FakeAnsibleResult(payload={'stdout': ''})
            ],
        ]
        tcp_managment = tcpcloud.TCPCloudManagement(self.tcp_conf)
        tcp_managment.verify()

        ansible_runner_inst.execute.assert_has_calls([
            mock.call(['tcp.local'], {'command': self.get_nodes_cmd}),
            mock.call(['10.0.0.2', '10.0.0.3'], {'command': 'hostname'}),
        ])
Example #18
0
    def test_verify(self, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''}),
                fakes.FakeAnsibleResult(payload={'stdout': ''})
            ],
        ]
        fuel_managment = fuel.FuelManagement(self.conf)
        fuel_managment.verify()

        ansible_runner_inst.execute.assert_has_calls([
            mock.call([self.master_host], {'command': 'fuel node --json'}),
            mock.call(self.hosts, {'command': 'hostname'}),
        ])
Example #19
0
    def test_no_discovery(self, mock_ansible_runner):
        address = '10.0.0.10'
        ansible_result = fakes.FakeAnsibleResult(payload=dict(
            stdout='openstack.local'))
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [[ansible_result]]

        cloud = universal.UniversalCloudManagement(dict(address=address))
        self.assertRaises(error.OSFError, cloud.verify)
Example #20
0
    def setUp(self):
        super(FuelManagementTestCase, self).setUp()

        self.fake_ansible_result = fakes.FakeAnsibleResult(
            payload={
                'stdout':
                '[{"ip": "10.0.0.2", "mac": "02", "fqdn": "node-2"},'
                ' {"ip": "10.0.0.3", "mac": "03", "fqdn": "node-3"}]'
            })
Example #21
0
 def setUp(self):
     super(FuelServiceTestCase, self).setUp()
     self.conf = {'address': 'fuel.local', 'username': '******'}
     self.fake_ansible_result = fakes.FakeAnsibleResult(
         payload={
             'stdout':
             '[{"ip": "10.0.0.2", "mac": "02", "fqdn": "node-2"},'
             ' {"ip": "10.0.0.3", "mac": "03", "fqdn": "node-3"}]'
         })
Example #22
0
    def test_verify(self, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [fakes.FakeAnsibleResult(payload={'stdout': 'node1.com'})],
        ]
        devstack_management = devstack.DevStackManagement(self.conf)
        devstack_management.verify()

        ansible_runner_inst.execute.assert_called_once_with(
            ['10.0.0.2'], {'shell': 'screen -ls | grep stack'})
Example #23
0
    def test_verify(self, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''}),
                fakes.FakeAnsibleResult(payload={'stdout': ''})
            ],
        ]
        fuel_managment = fuel.FuelManagement({
            'address': 'fuel.local',
            'username': '******',
        })
        fuel_managment.verify()

        ansible_runner_inst.execute.assert_has_calls([
            mock.call(['fuel.local'], {'command': 'fuel node --json'}),
            mock.call(['10.0.0.2', '10.0.0.3'], {'command': 'hostname'}),
        ])
Example #24
0
    def test_verify(self, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [self.fake_node_ip_result],
            [fakes.FakeAnsibleResult(payload={'stdout': ''}),
             fakes.FakeAnsibleResult(payload={'stdout': ''})],
        ]
        self.tcp_conf['slave_name_regexp'] = '(ctl*|cmp*)'
        tcp_managment = saltcloud.SaltCloudManagement(self.tcp_conf)
        tcp_managment.verify()

        get_nodes_cmd = "salt -E '(ctl*|cmp*)' network.interfaces --out=yaml"
        get_ips_cmd = ("salt -E '(ctl*|cmp*)' "
                       "pillar.get _param:single_address --out=yaml")
        ansible_runner_inst.execute.assert_has_calls([
            mock.call([self.master_host], {'command': get_nodes_cmd}),
            mock.call([self.master_host], {'command': get_ips_cmd}),
            mock.call(self.hosts, {'command': 'hostname'}),
        ])
Example #25
0
    def test_unplug(self, service_name, service_cls, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [self.fake_ansible_result],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.2'),
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.3')
            ],
            [
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.2'),
                fakes.FakeAnsibleResult(payload={'stdout': ''},
                                        host='10.0.0.3')
            ]
        ]

        fuel_managment = fuel.FuelManagement(self.conf)

        service = fuel_managment.get_service(service_name)
        self.assertIsInstance(service, service_cls)

        service.unplug()

        get_nodes_cmd = 'bash -c "ps ax | grep \'{}\'"'.format(
            service_cls.GREP)
        ansible_runner_inst.execute.assert_has_calls([
            mock.call(['fuel.local'], {'command': 'fuel node --json'}),
            mock.call(['10.0.0.2', '10.0.0.3'], {'command': get_nodes_cmd},
                      []),
            mock.call(
                ['10.0.0.2', '10.0.0.3'], {
                    'iptables': {
                        'protocol': service_cls.PORT[0],
                        'port': service_cls.PORT[1],
                        'action': 'block',
                        'service': service_cls.SERVICE_NAME
                    }
                }),
        ])
Example #26
0
    def test_verify_slaves(self, mock_ansible_runner):
        self.conf['slaves'] = ['10.0.0.3', '10.0.0.4']
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [fakes.FakeAnsibleResult(payload={'stdout': 'mac1'},
                                     host='10.0.0.2'),
             fakes.FakeAnsibleResult(payload={'stdout': 'mac2'},
                                     host='10.0.0.3'),
             fakes.FakeAnsibleResult(payload={'stdout': 'mac3'},
                                     host='10.0.0.4')],
            [fakes.FakeAnsibleResult(payload={'stdout': ''},
                                     host='10.0.0.2'),
             fakes.FakeAnsibleResult(payload={'stdout': ''},
                                     host='10.0.0.3'),
             fakes.FakeAnsibleResult(payload={'stdout': ''},
                                     host='10.0.0.4')],
        ]
        devstack_management = devstack.DevStackManagement(self.conf)
        devstack_management.verify()

        hosts = [
            node_collection.Host('10.0.0.2'),
            node_collection.Host('10.0.0.3'),
            node_collection.Host('10.0.0.4')
        ]

        ansible_runner_inst.execute.assert_has_calls([
            mock.call(hosts, {'command': 'cat /sys/class/net/eth0/address'}),
        ])
Example #27
0
    def test_restart(self, service_name, service_cls, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c1'})],
            [fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2')],
            [fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2')]
        ]

        devstack_management = devstack.DevStackManagement(self.conf)

        service = devstack_management.get_service(service_name)
        self.assertIsInstance(service, service_cls)

        service.restart()

        cmd = 'bash -c "ps ax | grep \'{}\'"'.format(service_cls.GREP)
        ansible_runner_inst.execute.assert_has_calls([
            mock.call(
                ['10.0.0.2'], {'command': 'cat /sys/class/net/eth0/address'}),
            mock.call(['10.0.0.2'], {'command': cmd}, []),
            mock.call(['10.0.0.2'], {'shell': service_cls.RESTART_CMD})
        ])
Example #28
0
 def setUp(self):
     super(FuelServiceTestCase, self).setUp()
     self.conf = {'address': 'fuel.local', 'username': '******'}
     self.fake_ansible_result = fakes.FakeAnsibleResult(
         payload={
             'stdout': '[{"ip": "10.0.0.2", "mac": "02", "fqdn": "node-2"},'
                       ' {"ip": "10.0.0.3", "mac": "03", "fqdn": "node-3"}]'
         })
     self.master_host = node_collection.Host('fuel.local')
     self.hosts = [
         node_collection.Host(ip='10.0.0.2', mac='02', fqdn='node-2'),
         node_collection.Host(ip='10.0.0.3', mac='03', fqdn='node-3'),
     ]
Example #29
0
    def test_start(self, service_name, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c1'},
                                     host='10.0.0.2')],
            [fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2')],
            [fakes.FakeAnsibleResult(payload={'stdout': ''}, host='10.0.0.2')]
        ]

        devstack_management = devstack.DevStackCloudManagement(
            self.conf)

        service = devstack_management.get_service(service_name)
        service.start()

        cmd = 'bash -c "ps ax | grep -v grep | grep \'{}\'"'.format(
            service.grep)
        ansible_runner_inst.execute.assert_has_calls([
            mock.call(
                [self.host], {'command': 'cat /sys/class/net/eth0/address'}),
            mock.call([self.discoverd_host], {'command': cmd}, []),
        ])
Example #30
0
    def test_get_nodes(self, mock_ansible_runner):
        ansible_runner_inst = mock_ansible_runner.return_value
        ansible_runner_inst.execute.side_effect = [
            [fakes.FakeAnsibleResult(payload={'stdout': '09:7b:74:90:63:c1'},
                                     host='10.0.0.2')],
        ]

        devstack_management = devstack.DevStackCloudManagement(self.conf)
        nodes = devstack_management.get_nodes()
        ansible_runner_inst.execute.assert_called_once_with(
            [self.host], {'command': 'cat /sys/class/net/eth0/address'})

        self.assertIsInstance(nodes, devstack.DevStackNodeCollection)
        self.assertEqual(
            [node_collection.Host(ip='10.0.0.2', mac='09:7b:74:90:63:c1',
                                  fqdn='')],
            nodes.hosts)