<commit_before>
package middlewares;

import autoelastic.AutoElastic;
import static autoelastic.AutoElastic.gera_log;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JTextArea;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.opennebula.client.Client;
import org.opennebula.client.OneResponse;
import org.opennebula.client.host.Host;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

/**
 *
 * @author Vinicius
 * 27/10/2014 - viniciusfacco
 *            - added parameter LAST_MON_TIME
 * 17/11/2014 - viniciusfacco
 *            - implementeded method to log the name of the host and the creation and exclusion time
 *            - added parameter "AllocationTime"
 */
public class OneHost {
    
    private static final String objname = "middlewares.OneHost"; //name of the class to be used in the logs
    private int id; //id do host: preenchido quando host é criado
    private Host host; //representação do host: instanciado quando onehost é criado
    private String name; //ip do host: preenchido quando onehost é criado
    private String image_manager; //preenchido quando onehost é criado
    private String virtual_machine_manager; //preenchido quando onehost é criado
    private String virtual_network_manager; //preenchido quando onehost é criado
    private int cluster_id; //preenchido quando onehost é criado
    //private String transfer_manager; //preenchido quando onehost é criado - comentado por atualização de versão
    private boolean status; //flag que definirá se host já foi criado ou não no ambiente opennebula
    private ArrayList<OneVM> vms; //VMs alocadas no host
    private float MAX_CPU;
    private float USED_CPU;
    private float MAX_MEM;
    private float USED_MEM;
    private long LAST_MON_TIME;
    private JTextArea log;
    private String AllocationTime;
    
    public OneHost(String nome, String im, String vmm, String vnm, int cid, JTextArea plog){
    //public OneHost(String nome, String im, String vmm, String vnm, String tm){ comentado por atualização de versão
        this.vms = new ArrayList();
        this.name = nome;
        this.image_manager = im;
        this.virtual_machine_manager = vmm;
        this.virtual_network_manager = vnm;
        this.cluster_id = cid;
        //this.transfer_manager = tm; comentado por atualização de versão
        this.status = false;
        log = plog;
    }
    
    public boolean create(Client oc) throws Exception {
        //OneResponse rc = Host.allocate(oc, name, image_manager, virtual_machine_manager, virtual_network_manager, transfer_manager); comentado por atualização de versão
        OneResponse rc = Host.allocate(oc, name, image_manager, virtual_machine_manager, virtual_network_manager);
        if( rc.isError() ){
            gera_log(objname,"Falha ao criar Host!" + "\n" + rc.getErrorMessage());
            return false;
        }
        else {
            this.id = Integer.parseInt(rc.getMessage());
            this.host = new Host(this.id, oc);
            DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");   //code to get
            Date date = new Date();                                     //the allocate time
            this.AllocationTime = dateFormat.format(date);                
        }
        this.status = true;
        return true;
    }
    
    public boolean create(Client oc, String id) throws Exception {
        this.id = Integer.parseInt(id);
        this.host = new Host(this.id, oc);
        //aqui tambem tenho que ler e adicionar as vms que estao neste host
        String id_vms[] = this.get_values_from_xml("VMS", "ID");
        for(int i = 0; i < id_vms.length; i++){
            this.add_vm(new OneVM(oc, id_vms[i]));
        }
        this.status = true;
        return true;
    }
    
    public boolean delete() {
        OneResponse rc = this.host.delete();
        if (rc.isError()){
            gera_log(objname,"Falha ao deletar host ID " + this.id + "\n" + rc.getErrorMessage());
            return false;
        }
        DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");   //code to get
        Date date = new Date();                                     //the delete time
        greenHPC_log(this.name + ";" + this.AllocationTime + ";" + dateFormat.format(date));
        this.status = false;
        return true;
    }
    
    public void add_vm(OneVM onevm){
        this.vms.add(0, onevm);
    }
    
    public boolean delete_vms(){
        while (!vms.isEmpty()){
            vms.get(0).delete();
            vms.remove(0);
        }
        return true;
    }
    <commit_msg>Update to export additional information.<commit_after>
package middlewares;

import autoelastic.AutoElastic;
import static autoelastic.AutoElastic.gera_log;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JTextArea;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.opennebula.client.Client;
import org.opennebula.client.OneResponse;
import org.opennebula.client.host.Host;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

/**
 *
 * @author Vinicius
 * 27/10/2014 - viniciusfacco
 *            - added parameter LAST_MON_TIME
 * 17/11/2014 - viniciusfacco
 *            - implementeded method to log the name of the host and the creation and exclusion time
 *            - added parameter "AllocationTime"
 */
public class OneHost {
    
    private static final String objname = "middlewares.OneHost"; //name of the class to be used in the logs
    private int id; //id do host: preenchido quando host é criado
    private Host host; //representação do host: instanciado quando onehost é criado
    private String name; //ip do host: preenchido quando onehost é criado
    private String image_manager; //preenchido quando onehost é criado
    private String virtual_machine_manager; //preenchido quando onehost é criado
    private String virtual_network_manager; //preenchido quando onehost é criado
    private int cluster_id; //preenchido quando onehost é criado
    //private String transfer_manager; //preenchido quando onehost é criado - comentado por atualização de versão
    private boolean status; //flag que definirá se host já foi criado ou não no ambiente opennebula
    private ArrayList<OneVM> vms; //VMs alocadas no host
    private float MAX_CPU;
    private float USED_CPU;
    private float MAX_MEM;
    private float USED_MEM;
    private long LAST_MON_TIME;
    private JTextArea log;
    
    public OneHost(String nome, String im, String vmm, String vnm, int cid, JTextArea plog){
    //public OneHost(String nome, String im, String vmm, String vnm, String tm){ comentado por atualização de versão
        this.vms = new ArrayList();
        this.name = nome;
        this.image_manager = im;
        this.virtual_machine_manager = vmm;
        this.virtual_network_manager = vnm;
        this.cluster_id = cid;
        //this.transfer_manager = tm; comentado por atualização de versão
        this.status = false;
        log = plog;
    }
    
    public boolean create(Client oc) throws Exception {
        //OneResponse rc = Host.allocate(oc, name, image_manager, virtual_machine_manager, virtual_network_manager, transfer_manager); comentado por atualização de versão
        OneResponse rc = Host.allocate(oc, name, image_manager, virtual_machine_manager, virtual_network_manager);
        if( rc.isError() ){
            gera_log(objname,"Falha ao criar Host!" + "\n" + rc.getErrorMessage());
            return false;
        }
        else {
            this.id = Integer.parseInt(rc.getMessage());
            this.host = new Host(this.id, oc);
            DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");   //code to get
            Date date = new Date();                                     //the allocate time
            greenHPC_log(this.name + ";" + dateFormat.format(date) + ";ALOCA");
        }
        this.status = true;
        return true;
    }
    
    public boolean create(Client oc, String id) throws Exception {
        this.id = Integer.parseInt(id);
        this.host = new Host(this.id, oc);
        //aqui tambem tenho que ler e adicionar as vms que estao neste host
        String id_vms[] = this.get_values_from_xml("VMS", "ID");
        for(int i = 0; i < id_vms.length; i++){
            this.add_vm(new OneVM(oc, id_vms[i]));
        }
        this.status = true;
        return true;
    }
    
    public boolean delete() {
        OneResponse rc = this.host.delete();
        if (rc.isError()){
            gera_log(objname,"Falha ao deletar host ID " + this.id + "\n" + rc.getErrorMessage());
            return false;
        }
        DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");   //code to get
        Date date = new Date();                                     //the delete time
        greenHPC_log(this.name + ";" + dateFormat.format(date) + ";DESALOCA");
        this.status = false;
        return true;
    }
    
    public void add_vm(OneVM onevm){
        this.vms.add(0, onevm);
    }
    
    public boolean delete_vms(){
        while (!vms.isEmpty()){
            vms.get(0).delete();
            vms.remove(0);
        }
        return true;
    }
    
{'fraction_non_alphanumeric': 0.09396763119176067, 'fraction_numerical': 0.0047081902893575285, 'mean_word_length': 2.631054131054131, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 12}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '117954', 'n_tokens_mistral': 3080, 'n_tokens_neox': 3026, 'n_words': 878}