diff options
Diffstat (limited to 'ironic/tests/unit/db/utils.py')
-rw-r--r-- | ironic/tests/unit/db/utils.py | 328 |
1 files changed, 328 insertions, 0 deletions
diff --git a/ironic/tests/unit/db/utils.py b/ironic/tests/unit/db/utils.py new file mode 100644 index 000000000..7ea0c5811 --- /dev/null +++ b/ironic/tests/unit/db/utils.py @@ -0,0 +1,328 @@ +# Copyright 2013 Hewlett-Packard Development Company, L.P. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +"""Ironic test utilities.""" + + +from oslo_utils import timeutils + +from ironic.common import states +from ironic.db import api as db_api + + +def get_test_ipmi_info(): + return { + "ipmi_address": "1.2.3.4", + "ipmi_username": "admin", + "ipmi_password": "fake" + } + + +def get_test_ipmi_bridging_parameters(): + return { + "ipmi_bridging": "dual", + "ipmi_local_address": "0x20", + "ipmi_transit_channel": "0", + "ipmi_transit_address": "0x82", + "ipmi_target_channel": "7", + "ipmi_target_address": "0x72" + } + + +def get_test_ssh_info(auth_type='password'): + result = { + "ssh_address": "1.2.3.4", + "ssh_username": "admin", + "ssh_port": 22, + "ssh_virt_type": "vbox", + } + if 'password' == auth_type: + result['ssh_password'] = 'fake' + elif 'file' == auth_type: + result['ssh_key_filename'] = '/not/real/file' + elif 'key' == auth_type: + result['ssh_key_contents'] = '--BEGIN PRIVATE ...blah' + elif 'too_many' == auth_type: + result['ssh_password'] = 'fake' + result['ssh_key_filename'] = '/not/real/file' + else: + # No auth details (is invalid) + pass + return result + + +def get_test_pxe_driver_info(): + return { + "deploy_kernel": "glance://deploy_kernel_uuid", + "deploy_ramdisk": "glance://deploy_ramdisk_uuid", + } + + +def get_test_pxe_driver_internal_info(): + return { + "is_whole_disk_image": False, + } + + +def get_test_pxe_instance_info(): + return { + "image_source": "glance://image_uuid", + "root_gb": 100, + } + + +def get_test_seamicro_info(): + return { + "seamicro_api_endpoint": "http://1.2.3.4", + "seamicro_username": "admin", + "seamicro_password": "fake", + "seamicro_server_id": "0/0", + } + + +def get_test_ilo_info(): + return { + "ilo_address": "1.2.3.4", + "ilo_username": "admin", + "ilo_password": "fake", + } + + +def get_test_drac_info(): + return { + "drac_host": "1.2.3.4", + "drac_port": "443", + "drac_path": "/wsman", + "drac_protocol": "https", + "drac_username": "admin", + "drac_password": "fake", + } + + +def get_test_irmc_info(): + return { + "irmc_address": "1.2.3.4", + "irmc_username": "admin0", + "irmc_password": "fake0", + "irmc_port": 80, + "irmc_auth_method": "digest", + } + + +def get_test_amt_info(): + return { + "amt_address": "1.2.3.4", + "amt_protocol": "http", + "amt_username": "admin", + "amt_password": "fake", + } + + +def get_test_msftocs_info(): + return { + "msftocs_base_url": "http://fakehost:8000", + "msftocs_username": "admin", + "msftocs_password": "fake", + "msftocs_blade_id": 1, + } + + +def get_test_agent_instance_info(): + return { + 'image_source': 'fake-image', + 'image_url': 'http://image', + 'image_checksum': 'checksum', + 'image_disk_format': 'qcow2', + 'image_container_format': 'bare', + } + + +def get_test_agent_driver_info(): + return { + 'deploy_kernel': 'glance://deploy_kernel_uuid', + 'deploy_ramdisk': 'glance://deploy_ramdisk_uuid', + } + + +def get_test_agent_driver_internal_info(): + return { + 'agent_url': 'http://127.0.0.1/foo', + 'is_whole_disk_image': True, + } + + +def get_test_iboot_info(): + return { + "iboot_address": "1.2.3.4", + "iboot_username": "admin", + "iboot_password": "fake", + } + + +def get_test_snmp_info(**kw): + result = { + "snmp_driver": kw.get("snmp_driver", "teltronix"), + "snmp_address": kw.get("snmp_address", "1.2.3.4"), + "snmp_port": kw.get("snmp_port", "161"), + "snmp_outlet": kw.get("snmp_outlet", "1"), + "snmp_version": kw.get("snmp_version", "1") + } + if result["snmp_version"] in ("1", "2c"): + result["snmp_community"] = kw.get("snmp_community", "public") + elif result["snmp_version"] == "3": + result["snmp_security"] = kw.get("snmp_security", "public") + return result + + +def get_test_node(**kw): + properties = { + "cpu_arch": "x86_64", + "cpus": "8", + "local_gb": "10", + "memory_mb": "4096", + } + fake_info = {"foo": "bar", "fake_password": "fakepass"} + return { + 'id': kw.get('id', 123), + 'name': kw.get('name', None), + 'uuid': kw.get('uuid', '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'), + 'chassis_id': kw.get('chassis_id', None), + 'conductor_affinity': kw.get('conductor_affinity', None), + 'power_state': kw.get('power_state', states.NOSTATE), + 'target_power_state': kw.get('target_power_state', states.NOSTATE), + 'provision_state': kw.get('provision_state', states.NOSTATE), + 'target_provision_state': kw.get('target_provision_state', + states.NOSTATE), + 'provision_updated_at': kw.get('provision_updated_at'), + 'last_error': kw.get('last_error'), + 'instance_uuid': kw.get('instance_uuid'), + 'instance_info': kw.get('instance_info', fake_info), + 'driver': kw.get('driver', 'fake'), + 'driver_info': kw.get('driver_info', fake_info), + 'driver_internal_info': kw.get('driver_internal_info', fake_info), + 'clean_step': kw.get('clean_step'), + 'properties': kw.get('properties', properties), + 'reservation': kw.get('reservation'), + 'maintenance': kw.get('maintenance', False), + 'maintenance_reason': kw.get('maintenance_reason'), + 'console_enabled': kw.get('console_enabled', False), + 'extra': kw.get('extra', {}), + 'updated_at': kw.get('updated_at'), + 'created_at': kw.get('created_at'), + 'inspection_finished_at': kw.get('inspection_finished_at'), + 'inspection_started_at': kw.get('inspection_started_at'), + 'raid_config': kw.get('raid_config'), + 'target_raid_config': kw.get('target_raid_config'), + } + + +def create_test_node(**kw): + """Create test node entry in DB and return Node DB object. + + Function to be used to create test Node objects in the database. + + :param kw: kwargs with overriding values for node's attributes. + :returns: Test Node DB object. + + """ + node = get_test_node(**kw) + # Let DB generate ID if it isn't specified explicitly + if 'id' not in kw: + del node['id'] + dbapi = db_api.get_instance() + return dbapi.create_node(node) + + +def get_test_port(**kw): + return { + 'id': kw.get('id', 987), + 'uuid': kw.get('uuid', '1be26c0b-03f2-4d2e-ae87-c02d7f33c781'), + 'node_id': kw.get('node_id', 123), + 'address': kw.get('address', '52:54:00:cf:2d:31'), + 'extra': kw.get('extra', {}), + 'created_at': kw.get('created_at'), + 'updated_at': kw.get('updated_at'), + } + + +def create_test_port(**kw): + """Create test port entry in DB and return Port DB object. + + Function to be used to create test Port objects in the database. + + :param kw: kwargs with overriding values for port's attributes. + :returns: Test Port DB object. + + """ + port = get_test_port(**kw) + # Let DB generate ID if it isn't specified explicitly + if 'id' not in kw: + del port['id'] + dbapi = db_api.get_instance() + return dbapi.create_port(port) + + +def get_test_chassis(**kw): + return { + 'id': kw.get('id', 42), + 'uuid': kw.get('uuid', 'e74c40e0-d825-11e2-a28f-0800200c9a66'), + 'extra': kw.get('extra', {}), + 'description': kw.get('description', 'data-center-1-chassis'), + 'created_at': kw.get('created_at'), + 'updated_at': kw.get('updated_at'), + } + + +def create_test_chassis(**kw): + """Create test chassis entry in DB and return Chassis DB object. + + Function to be used to create test Chassis objects in the database. + + :param kw: kwargs with overriding values for chassis's attributes. + :returns: Test Chassis DB object. + + """ + chassis = get_test_chassis(**kw) + # Let DB generate ID if it isn't specified explicitly + if 'id' not in kw: + del chassis['id'] + dbapi = db_api.get_instance() + return dbapi.create_chassis(chassis) + + +def get_test_conductor(**kw): + return { + 'id': kw.get('id', 6), + 'hostname': kw.get('hostname', 'test-conductor-node'), + 'drivers': kw.get('drivers', ['fake-driver', 'null-driver']), + 'created_at': kw.get('created_at', timeutils.utcnow()), + 'updated_at': kw.get('updated_at', timeutils.utcnow()), + } + + +def get_test_ucs_info(): + return { + "ucs_username": "admin", + "ucs_password": "password", + "ucs_service_profile": "org-root/ls-devstack", + "ucs_address": "ucs-b", + } + + +def get_test_cimc_info(): + return { + "cimc_username": "admin", + "cimc_password": "password", + "cimc_address": "1.2.3.4", + } |