Sanggu's blog




최상단 광고 코드

 추천 사이트

 애자일 이야기 : http://agile.egloos.com
 서명덕 기자의 인터넷 : http://itviewpoint.com
 비지니스 뉴스 : http://www.ciobiz.co.kr
 MOCOMSYS : http://www.mocomsys.com
 Apache Software : http://www.apache.org
 소프트웨어 기술경력관리: http://career.sw.or.kr
 한이음 (지식경제부): http://www.hanium.or.kr
 IT 기술 뉴스: http://www.bloter.net/
 IBM 티볼리 까페: http://cafe.naver.com/tivolitool.cafe
 JAVA jar 검색 : http://www.findjar.com
 VM Ware 가상화: http://www.vmware.com

2011년 10월 4일 화요일

XEN Java API

0. Host에 접근하기

XEN Server에 구축된 Host에게 접근하기 위해서는 기본적으로 3단계를 거칩니다.
.
1단계.
Connection c = new Connection(new URL("http://" + "ip"));  // Host 주소에 Connection 객체 생성.
.
2단계.
Session.loginWithPassword(c, "id", "password", APIVersion.latest().toString());   // 해당 Connection 객체에 아이디, 비밀번호, API 버젼을 넣고 접속.
.
3단계.
클래스 객체명 = Host.메소드( c )    // Host의 메소드를 활용하여 return 타입에 맞는 클래스 객체를 할당받아서 정보를 활용.

예제 소스코드 ( Host 정보와 HostCpu, HostMemory 정보를 모두 출력하는 예제 소스코드 )

=============================================================================
sampleCode/Xen/HostPrintTest.java
import java.net.URL;
import java.util.Map;
  
import com.xensource.xenapi.APIVersion;
import com.xensource.xenapi.Connection;
import com.xensource.xenapi.Host;
import com.xensource.xenapi.HostCpu;
import com.xensource.xenapi.HostMetrics;
import com.xensource.xenapi.Session;
  
public class Test {
  
    static Connection c;
  
    public static void main(String[] args) throws Exception {
  
        c = new Connection(new URL("http:/// + "ip"));
        Session.loginWithPassword(c, "id", "password", APIVersion.latest
                                 ().toString());
  
        // 필요시 해당 Key값의 Value만 출력해서 사용하면 됨.
  
        // Host의 관한 정보를 모두 출력
        Map HostBasic_records = Host.getAllRecords(c); 
        // Host의 모든 정보를 Map으로
        for(Map.Entry e : HostBasic_records.entrySet()){
            System.out.println(e.getKey());
            System.out.println(e.getValue());
        }
  
        // HostCpu의 모든 스펙을 출력
        Map HostCpuinfo_records = HostCpu.getAllRecords(c);  
        // HostCpu의 모든 정보를 Map으로
        for(Map.Entry e : HostCpuinfo_records.entrySet()){
            System.out.println(e.getKey());
            System.out.println(e.getValue());
        }
  
        // Host의 메모리 Total, Space 출력(사용량은 Total - Space 으로 출력)
        Map HostMemoryinfo_records = HostMetrics.getAllRecords(c); 
        // HostMetrics(메모리 정보)를 Map으로
        for(Map.Entry e :  HostMemoryinfo_records.entrySet()){
            System.out.println(e.getKey());
            System.out.println(e.getValue());
        }
  
        Session.logout(c);
    }
}

1. VM에 접근하기

XEN Server에 구축된 VM에게 접근하기 위해서는 기본적으로 3단계를 거칩니다.
.
1단계.
Connection c = new Connection(new URL("http://" + "ip"));  // Host 주소에 Connection 객체 생성.
.
2단계.
Session.loginWithPassword(c, "id", "password", APIVersion.latest().toString());   // 해당 Connection 객체에 아이디, 비밀번호, API 버젼을 넣고 접속.
.
3단계.
클래스 객체명 = VM.메소드( c )    // Host의 메소드를 활용하여 return 타입에 맞는 클래스 객체를 할당받아서 정보를 활용.

예제 소스코드 ( VM의 정보를 모두 출력하는 예제 소스코드 )

=============================================================================
sampleCode/Xen/VMPrintTest.java
import java.net.URL;
import java.util.Map;
  
import com.xensource.xenapi.APIVersion;
import com.xensource.xenapi.Connection;
import com.xensource.xenapi.Session;
import com.xensource.xenapi.VM;
import com.xensource.xenapi.VMGuestMetrics;
import com.xensource.xenapi.VMMetrics;
  
public class VmPrintTest {
  
    static Connection c;
  
    public static void main(String[] args) throws Exception {
  
        c = new Connection(new URL("http:/// + "ip"));
        Session.loginWithPassword(c, "id", "password", APIVersion.latest
                                  ().toString());
  
  
        // 필요시 해당 Key값의 Value만 출력해서 사용하면 됨.
  
        // XenServer가 가질 수 있는 모든 VM이 가지고 있는 기본 정보에 대한 출력
        System.out.println("Get all the  VM Records");
        Map VM_records = VM.getAllRecords(c);
        for(Map.Entry e : VM_records.entrySet()){
            if(e.getKey().getPowerState(c).toString().matches("RUNNING")){ 
                // 현재 RUNNING되고 있는 VM의 정보만 (Host 포함)
                System.out.println(e.getKey());
                System.out.println(e.getValue());
            }
        }
  
        // XenServer가 가질 수 있는 모든 VM이 가지고 있는 Metrics에 대해 출력.
        System.out.println("Get all the  VMMetrics Records");
        Map VMMetrics_records = VMMetrics.getAllRecords(c);
        for(Map.Entry e : VMMetrics_records.entrySet()){
            if(!e.getKey().getMemoryActual(c).toString().matches("0")){
                // ActualMemory가 0이 아닌 VMMetrics만 추출.
                System.out.println(e.getKey());
                System.out.println(e.getValue());
            }
        }
        Session.logout(c);
        // 현재 Guest로 올라와 있는 GuestOS의 대한 Metric
        System.out.println("Get all the  VMGuestMetrics Records");
        Map VMGuestMetrics_records = VMGuestMetrics.getAllRecords(c);
        for(Map.Entry e : VMGuestMetrics_records.entrySet()){
            System.out.println(e.getKey());
            System.out.println(e.getValue());
        }
     }
}

댓글 없음:

댓글 쓰기