コード例 #1
0
    def setUp(self):
        super(Base, self).setUp()
        rules.delete_all()

        self.cli_fixture = self.useFixture(
            fixtures.MockPatchObject(ir_utils, 'get_client'))
        self.cli = self.cli_fixture.mock.return_value
        self.cli.node.get.return_value = self.node
        self.cli.node.update.return_value = self.node
        self.cli.node.list.return_value = [self.node]

        self.patch = [
            {'op': 'add', 'path': '/properties/cpus', 'value': '4'},
            {'path': '/properties/cpu_arch', 'value': 'x86_64', 'op': 'add'},
            {'op': 'add', 'path': '/properties/memory_mb', 'value': '12288'},
            {'path': '/properties/local_gb', 'value': '999', 'op': 'add'}
        ]
        self.patch_root_hints = [
            {'op': 'add', 'path': '/properties/cpus', 'value': '4'},
            {'path': '/properties/cpu_arch', 'value': 'x86_64', 'op': 'add'},
            {'op': 'add', 'path': '/properties/memory_mb', 'value': '12288'},
            {'path': '/properties/local_gb', 'value': '19', 'op': 'add'}
        ]

        self.node.power_state = 'power off'

        self.cfg = self.useFixture(config_fixture.Config())
        conf_file = get_test_conf_file()
        self.cfg.set_config_files([conf_file])
コード例 #2
0
    def setUp(self):
        super(Base, self).setUp()
        rules.delete_all()

        self.cli_fixture = self.useFixture(
            fixtures.MockPatchObject(ir_utils, 'get_client'))
        self.cli = self.cli_fixture.mock.return_value
        self.cli.node.get.return_value = self.node
        self.cli.node.update.return_value = self.node
        self.cli.node.list.return_value = [self.node]

        self.patch = [{
            'op': 'add',
            'path': '/properties/cpus',
            'value': '4'
        }, {
            'path': '/properties/cpu_arch',
            'value': 'x86_64',
            'op': 'add'
        }, {
            'op': 'add',
            'path': '/properties/memory_mb',
            'value': '12288'
        }, {
            'path': '/properties/local_gb',
            'value': '999',
            'op': 'add'
        }]
        self.patch_root_hints = [{
            'op': 'add',
            'path': '/properties/cpus',
            'value': '4'
        }, {
            'path': '/properties/cpu_arch',
            'value': 'x86_64',
            'op': 'add'
        }, {
            'op': 'add',
            'path': '/properties/memory_mb',
            'value': '12288'
        }, {
            'path': '/properties/local_gb',
            'value': '19',
            'op': 'add'
        }]

        self.node.power_state = 'power off'

        self.cfg = self.useFixture(config_fixture.Config())
        conf_file = get_test_conf_file()
        self.cfg.set_config_files([conf_file])

        # FIXME(milan) FakeListener.poll calls time.sleep() which leads to
        # busy polling with no sleep at all, effectively blocking the whole
        # process by consuming all CPU cycles in a single thread. MonkeyPatch
        # with eventlet.sleep seems to help this.
        self.useFixture(
            fixtures.MonkeyPatch(
                'oslo_messaging._drivers.impl_fake.time.sleep',
                eventlet.sleep))
コード例 #3
0
ファイル: main.py プロジェクト: namnx228/ironic-inspector
def api_rules():
    if flask.request.method == 'GET':
        res = [rule_repr(rule, short=True) for rule in rules.get_all()]
        return flask.jsonify(rules=res)
    elif flask.request.method == 'DELETE':
        rules.delete_all()
        return _generate_empty_response(204)
    else:
        body = flask.request.get_json(force=True)
        if body.get('uuid') and not uuidutils.is_uuid_like(body['uuid']):
            raise utils.Error(_('Invalid UUID value'), code=400)
        if body.get('scope') and len(body.get('scope')) > 255:
            raise utils.Error(_(
                "Invalid scope: the length of the scope should be within "
                "255 characters"),
                              code=400)

        rule = rules.create(conditions_json=body.get('conditions', []),
                            actions_json=body.get('actions', []),
                            uuid=body.get('uuid'),
                            description=body.get('description'),
                            scope=body.get('scope'))

        response_code = (200 if _get_version() < (1, 6) else 201)
        return flask.make_response(flask.jsonify(rule_repr(rule, short=False)),
                                   response_code)
コード例 #4
0
ファイル: main.py プロジェクト: mandre/ironic-inspector
def api_rules():
    utils.check_auth(flask.request)

    if flask.request.method == 'GET':
        res = [rule_repr(rule, short=True) for rule in rules.get_all()]
        return flask.jsonify(rules=res)
    elif flask.request.method == 'DELETE':
        rules.delete_all()
        return '', 204
    else:
        body = flask.request.get_json(force=True)
        if body.get('uuid') and not uuidutils.is_uuid_like(body['uuid']):
            raise utils.Error(_('Invalid UUID value'), code=400)

        rule = rules.create(conditions_json=body.get('conditions', []),
                            actions_json=body.get('actions', []),
                            uuid=body.get('uuid'),
                            description=body.get('description'))
        return flask.jsonify(rule_repr(rule, short=False))
コード例 #5
0
def api_rules():
    utils.check_auth(flask.request)

    if flask.request.method == 'GET':
        res = [rule_repr(rule, short=True) for rule in rules.get_all()]
        return flask.jsonify(rules=res)
    elif flask.request.method == 'DELETE':
        rules.delete_all()
        return '', 204
    else:
        body = flask.request.get_json(force=True)
        if body.get('uuid') and not uuidutils.is_uuid_like(body['uuid']):
            raise utils.Error(_('Invalid UUID value'), code=400)

        rule = rules.create(conditions_json=body.get('conditions', []),
                            actions_json=body.get('actions', []),
                            uuid=body.get('uuid'),
                            description=body.get('description'))
        return flask.jsonify(rule_repr(rule, short=False))
コード例 #6
0
    def test_delete_all(self):
        rules.delete_all()

        self.assertFalse(db.model_query(db.Rule).all())
        self.assertFalse(db.model_query(db.RuleCondition).all())
        self.assertFalse(db.model_query(db.RuleAction).all())
コード例 #7
0
ファイル: test_rules.py プロジェクト: KanM/ironic-inspector
    def test_delete_all(self):
        rules.delete_all()

        self.assertFalse(db.model_query(db.Rule).all())
        self.assertFalse(db.model_query(db.RuleCondition).all())
        self.assertFalse(db.model_query(db.RuleAction).all())
コード例 #8
0
    def setUp(self):
        super(Base, self).setUp()
        rules.delete_all()

        self.cli = ir_utils.get_client()
        self.cli.reset_mock()
        self.cli.node.get.return_value = self.node
        self.cli.node.update.return_value = self.node
        self.cli.node.list.return_value = [self.node]

        # https://github.com/openstack/ironic-inspector/blob/master/HTTP-API.rst  # noqa
        self.data = {
            'boot_interface': '01-' + self.macs[0].replace(':', '-'),
            'inventory': {
                'interfaces': [
                    {
                        'name': 'eth1',
                        'mac_address': self.macs[0],
                        'ipv4_address': '1.2.1.2'
                    },
                    {
                        'name': 'eth2',
                        'mac_address': '12:12:21:12:21:12'
                    },
                    {
                        'name': 'eth3',
                        'mac_address': self.macs[1],
                        'ipv4_address': '1.2.1.1'
                    },
                ],
                'disks': [
                    {
                        'name': '/dev/sda',
                        'model': 'Big Data Disk',
                        'size': 1000 * units.Gi
                    },
                    {
                        'name': '/dev/sdb',
                        'model': 'Small OS Disk',
                        'size': 20 * units.Gi
                    },
                ],
                'cpu': {
                    'count': 4,
                    'architecture': 'x86_64'
                },
                'memory': {
                    'physical_mb': 12288
                },
                'bmc_address':
                self.bmc_address
            },
            'root_disk': {
                'name': '/dev/sda',
                'model': 'Big Data Disk',
                'size': 1000 * units.Gi,
                'wwn': None
            },
        }
        self.data_old_ramdisk = {
            'cpus': 4,
            'cpu_arch': 'x86_64',
            'memory_mb': 12288,
            'local_gb': 464,
            'interfaces': {
                'eth1': {
                    'mac': self.macs[0],
                    'ip': '1.2.1.2'
                },
                'eth2': {
                    'mac': '12:12:21:12:21:12'
                },
                'eth3': {
                    'mac': self.macs[1],
                    'ip': '1.2.1.1'
                },
            },
            'boot_interface': '01-' + self.macs[0].replace(':', '-'),
            'ipmi_address': self.bmc_address,
        }

        self.patch = [{
            'op': 'add',
            'path': '/properties/cpus',
            'value': '4'
        }, {
            'path': '/properties/cpu_arch',
            'value': 'x86_64',
            'op': 'add'
        }, {
            'op': 'add',
            'path': '/properties/memory_mb',
            'value': '12288'
        }, {
            'path': '/properties/local_gb',
            'value': '999',
            'op': 'add'
        }]
        self.patch_old_ramdisk = [{
            'op': 'add',
            'path': '/properties/cpus',
            'value': '4'
        }, {
            'path': '/properties/cpu_arch',
            'value': 'x86_64',
            'op': 'add'
        }, {
            'op': 'add',
            'path': '/properties/memory_mb',
            'value': '12288'
        }, {
            'path': '/properties/local_gb',
            'value': '464',
            'op': 'add'
        }]
        self.patch_root_hints = [{
            'op': 'add',
            'path': '/properties/cpus',
            'value': '4'
        }, {
            'path': '/properties/cpu_arch',
            'value': 'x86_64',
            'op': 'add'
        }, {
            'op': 'add',
            'path': '/properties/memory_mb',
            'value': '12288'
        }, {
            'path': '/properties/local_gb',
            'value': '19',
            'op': 'add'
        }]

        self.node.power_state = 'power off'
コード例 #9
0
ファイル: functional.py プロジェクト: keedya/ironic-inspector
    def setUp(self):
        super(Base, self).setUp()
        rules.delete_all()

        self.cli = ir_utils.get_client()
        self.cli.reset_mock()
        self.cli.node.get.return_value = self.node
        self.cli.node.update.return_value = self.node
        self.cli.node.list.return_value = [self.node]

        # https://github.com/openstack/ironic-inspector/blob/master/HTTP-API.rst  # noqa
        self.data = {
            'boot_interface': '01-' + self.macs[0].replace(':', '-'),
            'inventory': {
                'interfaces': [
                    {'name': 'eth1', 'mac_address': self.macs[0],
                     'ipv4_address': '1.2.1.2'},
                    {'name': 'eth2', 'mac_address': '12:12:21:12:21:12'},
                    {'name': 'eth3', 'mac_address': self.macs[1],
                     'ipv4_address': '1.2.1.1'},
                ],
                'disks': [
                    {'name': '/dev/sda', 'model': 'Big Data Disk',
                     'size': 1000 * units.Gi},
                    {'name': '/dev/sdb', 'model': 'Small OS Disk',
                     'size': 20 * units.Gi},
                ],
                'cpu': {
                    'count': 4,
                    'architecture': 'x86_64'
                },
                'memory': {
                    'physical_mb': 12288
                },
                'bmc_address': self.bmc_address
            },
            'root_disk': {'name': '/dev/sda', 'model': 'Big Data Disk',
                          'size': 1000 * units.Gi,
                          'wwn': None},
        }
        self.data_old_ramdisk = {
            'cpus': 4,
            'cpu_arch': 'x86_64',
            'memory_mb': 12288,
            'local_gb': 464,
            'interfaces': {
                'eth1': {'mac': self.macs[0], 'ip': '1.2.1.2'},
                'eth2': {'mac': '12:12:21:12:21:12'},
                'eth3': {'mac': self.macs[1], 'ip': '1.2.1.1'},
            },
            'boot_interface': '01-' + self.macs[0].replace(':', '-'),
            'ipmi_address': self.bmc_address,
        }

        self.patch = [
            {'op': 'add', 'path': '/properties/cpus', 'value': '4'},
            {'path': '/properties/cpu_arch', 'value': 'x86_64', 'op': 'add'},
            {'op': 'add', 'path': '/properties/memory_mb', 'value': '12288'},
            {'path': '/properties/local_gb', 'value': '999', 'op': 'add'}
        ]
        self.patch_old_ramdisk = [
            {'op': 'add', 'path': '/properties/cpus', 'value': '4'},
            {'path': '/properties/cpu_arch', 'value': 'x86_64', 'op': 'add'},
            {'op': 'add', 'path': '/properties/memory_mb', 'value': '12288'},
            {'path': '/properties/local_gb', 'value': '464', 'op': 'add'}
        ]
        self.patch_root_hints = [
            {'op': 'add', 'path': '/properties/cpus', 'value': '4'},
            {'path': '/properties/cpu_arch', 'value': 'x86_64', 'op': 'add'},
            {'op': 'add', 'path': '/properties/memory_mb', 'value': '12288'},
            {'path': '/properties/local_gb', 'value': '19', 'op': 'add'}
        ]

        self.node.power_state = 'power off'