def delete(cls, request, uuid): """Remove the Node matching the ID from Ironic if it exists; otherwise, does nothing. :param request: request object :type request: django.http.HttpRequest :param uuid: ID of Node to be removed :type uuid: str """ ironicclient(request).nodes.delete(uuid) return
def create(cls, request, ipmi_address, cpu, ram, local_disk, mac_addresses, ipmi_username=None, ipmi_password=None): """Create a Node in Ironic :param request: request object :type request: django.http.HttpRequest :param ipmi_address: IPMI address :type ipmi_address: str :param cpu: number of cores :type cpu: int :param ram: RAM in GB :type ram: int :param local_disk: local disk in TB :type local_disk: int :param mac_addresses: list of mac addresses :type mac_addresses: list of str :param ipmi_username: IPMI username :type ipmi_username: str :param ipmi_password: IPMI password :type ipmi_password: str :return: the created Node object :rtype: tuskar_ui.api.Node """ node = ironicclient(request).node.create( driver='pxe_ipmitool', driver_info={'ipmi_address': ipmi_address, 'ipmi_username': ipmi_username, 'password': ipmi_password}, properties={'cpu': cpu, 'ram': ram, 'local_disk': local_disk}) for mac_address in mac_addresses: ironicclient(request).port.create( node_uuid=node.uuid, address=mac_address ) return cls(node)
def get(cls, request, uuid): """Return the Node in Ironic that matches the ID :param request: request object :type request: django.http.HttpRequest :param uuid: ID of Node to be retrieved :type uuid: str :return: matching Node, or None if no Node matches the ID :rtype: tuskar_ui.api.Node """ node = ironicclient(request).nodes.get(uuid) return cls(node)
def list(cls, request, associated=None): """Return a list of Nodes in Ironic :param request: request object :type request: django.http.HttpRequest :param associated: should we also retrieve all Nodes, only those associated with an Instance, or only those not associated with an Instance? :type associated: bool :return: list of Nodes, or an empty list if there are none :rtype: list of tuskar_ui.api.Node """ nodes = ironicclient(request).nodes.list( associated=associated) return [cls(node) for node in nodes]
def get_by_instance_uuid(cls, request, instance_uuid): """Return the Node in Ironic associated with the instance ID :param request: request object :type request: django.http.HttpRequest :param instance_uuid: ID of Instance that is deployed on the Node to be retrieved :type instance_uuid: str :return: matching Node :rtype: tuskar_ui.api.Node :raises: ironicclient.exc.HTTPNotFound if there is no Node with the matching instance UUID """ node = ironicclient(request).nodes.get_by_instance_uuid(instance_uuid) return cls(node)