Example #1
0
 def convert_with_links(name, hosts):
     driver = Driver()
     driver.name = name
     driver.hosts = hosts
     driver.links = [
         link.Link.make_link('self', pecan.request.public_url, 'drivers',
                             name),
         link.Link.make_link('bookmark',
                             pecan.request.public_url,
                             'drivers',
                             name,
                             bookmark=True)
     ]
     if api_utils.allow_links_node_states_and_driver_properties():
         driver.properties = [
             link.Link.make_link('self', pecan.request.public_url,
                                 'drivers', name + "/properties"),
             link.Link.make_link('bookmark',
                                 pecan.request.public_url,
                                 'drivers',
                                 name + "/properties",
                                 bookmark=True)
         ]
     return driver
Example #2
0
 def convert_with_links(name, hosts):
     driver = Driver()
     driver.name = name
     driver.hosts = hosts
     driver.links = [
         link.Link.make_link('self',
                             pecan.request.public_url,
                             'drivers', name),
         link.Link.make_link('bookmark',
                             pecan.request.public_url,
                             'drivers', name,
                             bookmark=True)
     ]
     if api_utils.allow_links_node_states_and_driver_properties():
         driver.properties = [
             link.Link.make_link('self',
                                 pecan.request.public_url,
                                 'drivers', name + "/properties"),
             link.Link.make_link('bookmark',
                                 pecan.request.public_url,
                                 'drivers', name + "/properties",
                                 bookmark=True)
         ]
     return driver
Example #3
0
 def test_allow_links_node_states_and_driver_properties(self, mock_request):
     mock_request.version.minor = 14
     self.assertTrue(utils.allow_links_node_states_and_driver_properties())
     mock_request.version.minor = 10
     self.assertFalse(utils.allow_links_node_states_and_driver_properties())
Example #4
0
    def convert_with_links(name, hosts, detail=False, interface_info=None):
        """Convert driver/hardware type info to an API-serializable object.

        :param name: name of a hardware type.
        :param hosts: list of conductor hostnames driver is active on.
        :param detail: boolean, whether to include detailed info, such as
                       the 'type' field and default/enabled interfaces fields.
        :param interface_info: optional list of dicts of hardware interface
                               info.
        :returns: API-serializable driver object.
        """
        driver = Driver()
        driver.name = name
        driver.hosts = hosts
        driver.links = [
            link.Link.make_link('self', api.request.public_url, 'drivers',
                                name),
            link.Link.make_link('bookmark',
                                api.request.public_url,
                                'drivers',
                                name,
                                bookmark=True)
        ]
        if api_utils.allow_links_node_states_and_driver_properties():
            driver.properties = [
                link.Link.make_link('self', api.request.public_url, 'drivers',
                                    name + "/properties"),
                link.Link.make_link('bookmark',
                                    api.request.public_url,
                                    'drivers',
                                    name + "/properties",
                                    bookmark=True)
            ]

        if api_utils.allow_dynamic_drivers():
            # NOTE(dtantsur): only dynamic drivers (based on hardware types)
            # are supported starting with the Rocky release.
            driver.type = 'dynamic'
            if detail:
                if interface_info is None:
                    # TODO(jroll) objectify this
                    interface_info = (
                        api.request.dbapi.list_hardware_type_interfaces([name
                                                                         ]))
                for iface_type in driver_base.ALL_INTERFACES:
                    default = None
                    enabled = set()
                    for iface in interface_info:
                        if iface['interface_type'] == iface_type:
                            iface_name = iface['interface_name']
                            enabled.add(iface_name)
                            # NOTE(jroll) this assumes the default is the same
                            # on all conductors
                            if iface['default']:
                                default = iface_name

                    default_key = 'default_%s_interface' % iface_type
                    enabled_key = 'enabled_%s_interfaces' % iface_type
                    setattr(driver, default_key, default)
                    setattr(driver, enabled_key, list(enabled))

        hide_fields_in_newer_versions(driver)
        return driver
Example #5
0
    def convert_with_links(name, hosts, driver_type, detail=False,
                           interface_info=None):
        """Convert driver/hardware type info to an API-serializable object.

        :param name: name of driver or hardware type.
        :param hosts: list of conductor hostnames driver is active on.
        :param driver_type: 'classic' for classic drivers, 'dynamic' for
                            hardware types.
        :param detail: boolean, whether to include detailed info, such as
                       the 'type' field and default/enabled interfaces fields.
        :param interface_info: optional list of dicts of hardware interface
                               info.
        :returns: API-serializable driver object.
        """
        driver = Driver()
        driver.name = name
        driver.hosts = hosts
        driver.links = [
            link.Link.make_link('self',
                                pecan.request.public_url,
                                'drivers', name),
            link.Link.make_link('bookmark',
                                pecan.request.public_url,
                                'drivers', name,
                                bookmark=True)
        ]
        if api_utils.allow_links_node_states_and_driver_properties():
            driver.properties = [
                link.Link.make_link('self',
                                    pecan.request.public_url,
                                    'drivers', name + "/properties"),
                link.Link.make_link('bookmark',
                                    pecan.request.public_url,
                                    'drivers', name + "/properties",
                                    bookmark=True)
            ]

        if api_utils.allow_dynamic_drivers():
            driver.type = driver_type
            if driver_type == 'dynamic' and detail:
                if interface_info is None:
                    # TODO(jroll) objectify this
                    interface_info = (pecan.request.dbapi
                                      .list_hardware_type_interfaces([name]))
                for iface_type in driver_base.ALL_INTERFACES:
                    default = None
                    enabled = set()
                    for iface in interface_info:
                        if iface['interface_type'] == iface_type:
                            iface_name = iface['interface_name']
                            enabled.add(iface_name)
                            # NOTE(jroll) this assumes the default is the same
                            # on all conductors
                            if iface['default']:
                                default = iface_name

                    default_key = 'default_%s_interface' % iface_type
                    enabled_key = 'enabled_%s_interfaces' % iface_type
                    setattr(driver, default_key, default)
                    setattr(driver, enabled_key, list(enabled))

            elif detail:
                for iface_type in driver_base.ALL_INTERFACES:
                    # always return None for classic drivers
                    setattr(driver, 'default_%s_interface' % iface_type, None)
                    setattr(driver, 'enabled_%s_interfaces' % iface_type, None)

        hide_fields_in_newer_versions(driver)
        return driver