struct pbsnode *create_alps_subnode( struct pbsnode *parent, const char *node_id) { pbsnode *subnode; svrattrl *plist = NULL; int bad; int rc = PBSE_NONE; subnode = new pbsnode(node_id, NULL, false); if (subnode->get_error() != PBSE_NONE) { delete subnode; log_err(ENOMEM, __func__, ""); return(NULL); } // all nodes have at least 1 core add_execution_slot(subnode); // we need to increment this count for accuracy svr_clnodes++; /* do we need to do something else here? */ subnode->nd_addrs = parent->nd_addrs; rc = mgr_set_node_attr(subnode, node_attr_def, ND_ATR_LAST, plist, ATR_DFLAG_MGRD | ATR_DFLAG_MGWR, &bad, (void *)subnode, ATR_ACTION_ALTER, false); if (rc != PBSE_NONE) { free(subnode); log_err(rc, __func__, "Couldn't set node attributes"); return(NULL); } subnode->nd_ntype = NTYPE_CLUSTER; subnode->parent = parent; subnode->nd_state &= ~INUSE_NOHIERARCHY; /* add any properties to the subnodes */ parent->copy_properties(subnode); subnode->lock_node(__func__, NULL, LOGLEVEL); insert_node(parent->alps_subnodes, subnode); return(subnode); } /* END create_alps_subnode() */
struct pbsnode *create_alps_subnode( struct pbsnode *parent, char *node_id) { struct pbsnode *subnode = calloc(1, sizeof(struct pbsnode)); svrattrl *plist = NULL; int bad; int rc; if (initialize_pbsnode(subnode, strdup(node_id), NULL, NTYPE_CLUSTER) != PBSE_NONE) { free(subnode); log_err(ENOMEM, __func__, ""); return(NULL); } if (create_subnode(subnode) == NULL) { free(subnode); log_err(ENOMEM, __func__, ""); return(NULL); } /* do we need to do something else here? */ subnode->nd_addrs = parent->nd_addrs; rc = mgr_set_node_attr(subnode, node_attr_def, ND_ATR_LAST, plist, ATR_DFLAG_MGRD | ATR_DFLAG_MGWR, &bad, (void *)subnode, ATR_ACTION_ALTER); if (rc != PBSE_NONE) { free(subnode); log_err(rc, __func__, "Couldn't set node attributes"); return(NULL); } subnode->nd_ntype = NTYPE_CLUSTER; subnode->parent = parent; /* add any properties to the subnodes */ copy_properties(subnode, parent); lock_node(subnode, __func__, NULL, 0); insert_node(&(parent->alps_subnodes), subnode); return(subnode); } /* END create_alps_subnode() */
struct pbsnode *create_alps_subnode( struct pbsnode *parent, const char *node_id) { struct pbsnode *subnode = (struct pbsnode *)calloc(1, sizeof(struct pbsnode)); svrattrl *plist = NULL; int bad; int rc = PBSE_NONE; if (initialize_pbsnode(subnode, strdup(node_id), NULL, NTYPE_CLUSTER, FALSE) != PBSE_NONE) { free(subnode); log_err(ENOMEM, __func__, ""); return(NULL); } // all nodes have at least 1 core add_execution_slot(subnode); // we need to increment this count for accuracy svr_clnodes++; /* do we need to do something else here? */ subnode->nd_addrs = parent->nd_addrs; rc = mgr_set_node_attr(subnode, node_attr_def, ND_ATR_LAST, plist, ATR_DFLAG_MGRD | ATR_DFLAG_MGWR, &bad, (void *)subnode, ATR_ACTION_ALTER); if (rc != PBSE_NONE) { free(subnode); log_err(rc, __func__, "Couldn't set node attributes"); return(NULL); } subnode->nd_ntype = NTYPE_CLUSTER; subnode->parent = parent; /* add any properties to the subnodes */ copy_properties(subnode, parent); lock_node(subnode, __func__, NULL, LOGLEVEL); insert_node(&(parent->alps_subnodes), subnode); return(subnode); } /* END create_alps_subnode() */