def register_or_update(clients, **workflow_input): """Node Registration or Update Run the tripleo.baremetal.v1.register_or_update Mistral workflow. """ workflow_client = clients.workflow_engine tripleoclients = clients.tripleoclient with tripleoclients.messaging_websocket() as ws: execution = base.start_workflow( workflow_client, 'tripleo.baremetal.v1.register_or_update', workflow_input=workflow_input) for payload in base.wait_for_messages(workflow_client, ws, execution): if 'message' in payload: print(payload['message']) if payload['status'] == 'SUCCESS': registered_nodes = payload['registered_nodes'] for nd in registered_nodes: print('Successfully registered node UUID %s' % nd['uuid']) return registered_nodes else: raise exceptions.RegisterOrUpdateError( 'Exception registering nodes: {}'.format(payload['message']))
def validate_nodes(clients, **workflow_input): """Node Registration or Update Run the tripleo.baremetal.v1.validate_nodes Mistral workflow. """ workflow_client = clients.workflow_engine tripleoclients = clients.tripleoclient with tripleoclients.messaging_websocket() as ws: execution = base.start_workflow(workflow_client, 'tripleo.baremetal.v1.validate_nodes', workflow_input=workflow_input) for payload in base.wait_for_messages(workflow_client, ws, execution): if 'message' in payload: print(payload['message']) if payload['status'] == 'SUCCESS': print('Successfully validated environment file') return True else: raise exceptions.RegisterOrUpdateError( 'Exception validating environment file: {}'.format( payload['message']))
def register_or_update(clients, **workflow_input): """Node Registration or Update Run the tripleo.baremetal.v1.register_or_update Mistral workflow. """ workflow_client = clients.workflow_engine tripleoclients = clients.tripleoclient queue_name = workflow_input['queue_name'] execution = workflow_client.executions.create( 'tripleo.baremetal.v1.register_or_update', workflow_input=workflow_input) with tripleoclients.messaging_websocket(queue_name) as ws: payload = ws.wait_for_message(execution.id) if payload['status'] == 'SUCCESS': registered_nodes = payload['registered_nodes'] for nd in registered_nodes: print('Successfully registered node UUID %s' % nd['uuid']) return registered_nodes else: raise exceptions.RegisterOrUpdateError( 'Exception registering nodes: {}'.format(payload['message']))
def register_or_update(clients, nodes_json, kernel_name=None, ramdisk_name=None, instance_boot_option=None): """Node Registration or Update :param clients: Application client object. :type clients: Object :param nodes_json: :type nodes_json: Object :param kernel_name: Kernel to use :type kernel_name: String :param ramdisk_name: RAMDISK to use :type ramdisk_name: String :param instance_boot_option: Whether to set instances for booting from local hard drive (local) or network (netboot). :type instance_boot_option: String :returns: List """ context = clients.tripleoclient.create_mistral_context() nodes = baremetal.RegisterOrUpdateNodes( nodes_json=nodes_json, ramdisk_name=ramdisk_name, kernel_name=kernel_name, instance_boot_option=instance_boot_option ) registered_nodes = nodes.run(context=context) if not isinstance(registered_nodes, list): raise exceptions.RegisterOrUpdateError(registered_nodes) else: for node in registered_nodes: if node.provision_state == 'enroll': clients.baremetal.node.set_provision_state( node_uuid=node.uuid, state='manage' ) print('Successfully registered node UUID {}'.format(node.uuid)) else: print('Node UUID {} is already registered'.format(node.uuid)) return registered_nodes
def validate_nodes(clients, nodes_json): """Validate nodes. :param clients: Application client object. :type clients: Object :param nodes_json: :type nodes_json: Object :returns: Boolean """ context = clients.tripleoclient.create_mistral_context() nodes = baremetal.ValidateNodes(nodes_json=nodes_json) validated_nodes = nodes.run(context=context) if not validated_nodes: return True else: raise exceptions.RegisterOrUpdateError(validated_nodes)