前のトピック: BFC API の使用次のトピック: BFC API でネットワークを設定する方法


BFC に関する情報の取得方法

バックボーン管理者として、BFC API で BFC サーバに関する情報を取得します。 この情報は、環境を変更する前に BFC 設定を理解するのに役立ちます。 たとえば、より多くのグリッドを追加する前に設定を確認します。 製品バージョン、サーバ、設定されたネットワーク、使用可能なグリッド、および検出設定を含め、BFC 環境に関する情報を取得する Python スクリプトを作成します。

注: テキスト エディタを使用して、GET 操作としてスクリプトを作成してから、BFC API でこれらのスクリプトを実行できます。

以下の図に、BFC に関する情報の取得方法を示します。

BFC に関する情報の取得方法を示す図

  1. 製品バージョン情報を取得します
  2. サーバ情報を取得します
  3. ネットワーク情報を取得します
  4. グリッド情報を取得します
  5. 検出情報を取得します
製品バージョン情報の取得

BFC で現在使用可能なバージョン レコードのセットに関する情報を取得できます。 バージョン レコードは、インストールした comp_id、esx_version、ホットフィックスなどの情報を示します。 resource_running_state にあるバージョンを確認して、CA AppLogic® のグリッドを作成できます。

以下の手順に従います。

  1. bfc_login.py など、BFC API にログインするためのスクリプトを作成します。
  2. 以下の例のようなスクリプトを作成します。
    from httplib import HTTPSConnection
    import json
    import os
    import sys
    bfcHost = os.environ["BFC_HOST"]
    conn = HTTPSConnection(bfcHost + ':8443')
    conn.connect()
    conn.request(method='POST', url='/BFC/1.1/login',
                 body='{"username":"user1","password":"MyPassword"}',
    headers={'Content-Type':'application/json'})
    bfcSession = json.loads(conn.getresponse().read())
    print "BFC_SESSION={0}".format(bfcSession)
    
  3. スクリプトを実行します。

    API はセッション ID を表示します。

  4. バージョン情報のスクリプトを作成します。

    たとえば、get_version.py を作成します。

  5. 以下の例のようなスクリプトを作成します。
    from httplib import HTTPSConnection
    import json
    import os
    import sys
    
    bfcHost = os.environ["BFC_HOST"]
    bfcSession = os.environ["BFC_SESSION"]
    conn = HTTPSConnection(bfcHost + ':8443')
    conn.connect()
    conn.request(method='GET',
                 url='/BFC/versions/',
                 headers={'Content-Type':'application/json',
                          'Authorization':bfcSession})
    r1=conn.getresponse()
    server = json.loads(r1.read())
    print 'HTTP Response Code: {0}'.format(r1.status)
    print json.dumps(server, sort_keys=True, indent=4)
    
  6. スクリプトを実行します。

    API は、HTTP リターン コード 200 およびバージョン レコードのリストを表示します。

    [{'version': {
    'comp_id': 1385, 
    'imported_esx_version': {
    	'esx_version': {
    		'version': '4.0', 'update': '2',
    
    		'build': '261974'}}, 
    
    'name': '3.0.8', 'supported_esx_versions': [{
    	'esx_version': {
    		'version': '4.0',
    		'update': '2', 'build': '261974'}}], 
    'required_bfc_version': '3.0.0', 'state': 'resource_running_state',
    'hotfixes': [{
    	'hotfix': {
    		'comp_id': 1412, 'state': 'resource_running_state', 
    		'version_name': '3.0.8', 'name':'lp3561'}}, {
    	'hotfix': {
    		'comp_id': 1408, 'state': 'resource_running_state', 
    		'version_name': '3.0.8', 'name':'lp2668'}}, {
    	'hotfix': {
    		'comp_id': 1404, 'state': 'resource_running_state', 
    		'version_name': '3.0.8', 'name':'lp1248'}}], 
    	'esx_enabled': True}}]
    

    たとえば、BFC には lp3561、lp2668、および lp1248 ホットフィックスが含まれています。

サーバ情報の取得

バックボーン サーバ、外部サーバ、電力コントローラなどのシステム内で、すべてのサーバに関する情報を取得できます。 たとえば、サーバ名、ステータス、CPU コアの数、および IP アドレスを表示します。

以下の手順に従います。

  1. get_servers.py など、サーバ情報のスクリプトを作成します。
  2. 以下の例のようなスクリプトを作成します。
    from httplib import HTTPSConnection
    import json
    import os
    import sys
    
    bfcHost = os.environ["BFC_HOST"]
    bfcSession = os.environ["BFC_SESSION"]
    conn = HTTPSConnection(bfcHost + ':8443')
    conn.connect()
    conn.request(method='GET',
                 url='/BFC/servers',
                 headers={'Content-Type':'application/json',
                          'Authorization':bfcSession})
    r1 = conn.getresponse()
    print 'HTTP Response Code: {0}'.format(r1.status)
    servers = json.loads(r1.read())
    print json.dumps(servers, sort_keys=True, indent=4)
    
  3. スクリプトを実行します。

    API は、HTTP リターン コード 200 およびサーバ レコードのリストを表示します。

    [{"server":{
    "comp_id":1557,
    "state":"resource_running_state",
    "server_state_info":{
    	"server_state_info":{
    		"effective_state":
    		"resource_running_state",
    		"category_code_args":[],
    
    	"category_code":"core/resources.compute_host.category_compute_host_power",
    		"category_format":"Compute Host Power Status",
    		"code":"core/resources.compute_host.compute_host_normal_powered",
    		"format":"Functioning normally.",
    		"inventorying":false,
    		"applogic_server_name":"srv1",
    		"applogic_server_state":"up",
    		"applogic_server_enabled":true,
    		"has_grid_controller":true,"vmware":false}},
    	"grid_name":"gridtest",
    		"power_status":"on",
    		"description":[],
    		"discovery_date":1344988800000,
    		"cpu_cores":4,"cpu_speed":3.0,"memory_size":4.0,"disk_count":1,
    		"total_disk_space":146.81302272,"force_manual_power":false,
    		"network_interfaces":[{
    		  "network_interface":{
    			"connectivity":"backbone",
    			"ip_address":"192.168.0.x",
    			"is_boot":true,
    			"mac_address":"00:01:02:03:04:05",
    			"name":"eth0","speed":1000}},{
    		  "network_interface":{
    			"connectivity":"external",
    			"ip_address":"10.10.x.x",
    			"is_boot":false,
    			"mac_address":"00:01:02:03:AA:BB",
    			"name":"eth1",
    			"speed":1000}}],
    			"disks": [{
    			   "disk":{
    			     "name":"/dev/sda",
    			     "size":146.81302272}}],
    		  "power_controllers":[{
    			"power_controller":{
    				"comp_id":1574,
    				"ip_address":"10.10.x.x",
    				"mac_address":"00:01:02:03:CC:DD",
    				"type":"controlled",
    				"username":"PowerAdmin__BFC",
    				"password":"*****",
    				"credential_set_time":134580.189,
    				"power_status":"on"}
    			}],
    			"tags":["Blue","Green"]}}]%
    

    たとえば、eth1 の MAC アドレスは 00:01:02:03:AA:BB です。

ネットワーク情報の取得

システム内で設定されたすべてのネットワークに関する情報を取得できます。 たとえば、アドレス空間、使用可能な IP アドレス範囲、ゲートウェイ アドレス、およびタイプを表示します。

以下の手順に従います。

  1. get_networks.py など、ネットワーク情報のスクリプトを作成します。
  2. 以下の例のようなスクリプトを作成します。
    from httplib import HTTPSConnection
    import json
    import os
    import sys
    
    bfcHost = os.environ["BFC_HOST"]
    bfcSession = os.environ["BFC_SESSION"]
    conn = HTTPSConnection(bfcHost + ':8443')
    conn.connect()
    conn.request(method='GET',
                 url='/BFC/networks',
                 headers={'Content-Type':'application/json',
                          'Authorization':bfcSession})
    r1 = conn.getresponse()
    print 'HTTP Response Code: {0}'.format(r1.status)
    servers = json.loads(r1.read())
    print json.dumps(servers, sort_keys=True, indent=4)
    
  3. スクリプトを実行します。

    API は、HTTP リターン コード 200 およびネットワーク レコードのリストを表示します。

    [{"network": {
    
                "address_space": {
                    "ip_space": {
                        "address_pools": [
                            {"ip_pool": {
                                    "available_ranges": [
                                        {"ip_range": {
                                                "end_address": "10.10.x.x",
                                                "size": 10,
                                                "start_address": "10.10.x.x"}}],
                                    "num_addresses": 11,
                                    "num_available": 10,
                                    "num_used": 1,
                                    "ranges": [
                                        {"ip_range": {
                                                "end_address": "10.10.x.x",
                                                "size": 11,
                                                "start_address": "10.10.x.x"}}],
                                    "type": "hardware",
                                    "used_ranges": [
                                        {"ip_range": {
                                                "end_address": "10.10.x.x",
                                                "size": 1,
                                                "start_address": "10.10.x.x"}}]}},
    				{"ip_pool": {
                                    "available_ranges": [],
                                    "num_addresses": 4,
                                    "num_available": 0,
                                    "num_used": 4,
                                    "ranges": [
                                        {"ip_range": {
                                                "end_address": "10.10.x.x",
                                                "size": 4,
                                                "start_address": "10.10.x.x"}}],
                                    "type": "application",
                                    "used_ranges": [
                                        {"ip_range": {
                                                "end_address": "10.10.x.x",
                                                "size": 4,
                                                "start_address": "10.10.x.x"}}]}}],
    		  "available_ranges": [[
                                {"ip_range": {
                                        "end_address": "10.10.x.x",
                                        "size": 137,
                                        "start_address": "10.10.x.x"}},{
                                    "ip_range": {
                                        "end_address": "10.10.x.x",
                                        "size": 101,
                                        "start_address": "10.10.x.x"}}],238]}},
                "base_address": "10.10.x.x",
                "cidr": 24,
                "comp_id": 1450,
                "gateway_addresses": [
                    "10.10.75.1"],
                "ip_version": "ipv4",
                "usages": [
                    "bbc/applogic_external_network"],
                "vlan_address_spaces": []}},{
            "network": {
                "address_space": {
                    "ip_space": {
                        "address_pools": [{
                                "ip_pool": {
                                    "available_ranges": [],
                                    "num_addresses": 1,
                                    "num_available": 0,
                                    "num_used": 1,
                                    "ranges": [{
                                            "ip_range": {
                                                "end_address": "10.10.x.x",
                                                "size": 1,
                                                "start_address": "10.10.x.x"}}],
                                    "type": "power",
                                    "used_ranges": [
                                        {"ip_range": {
                                                "end_address": "10.10.x.xx",
                                                "size": 1,
                                                "start_address": "10.10.x.x"}}]}}],
                        "available_ranges": [[{
    					  "ip_range": {
                                        "end_address": "10.10.x.x",
                                        "size": 242,
                                        "start_address": "10.10.x.x"}},{
                                    "ip_range": {
                                        "end_address": "10.10.x.x",
                                        "size": 10,
                                        "start_address": "10.10.x.x"}}],252]}},
                "base_address": "10.10.x.x",
                "cidr": 24,
                "comp_id": 1414,
                "gateway_addresses": [
                    "10.10.x.x"],
                "ip_version": "ipv4",
                "usages": [
                    "core/power_network"],
                "vlan_address_spaces": []}},{
            "network": {
                "address_space": {
                    "ip_space": {
                        "address_pools": [
                            {"ip_pool": {
                                    "available_ranges": [],
                                    "num_addresses": 1,
                                    "num_available": 0,
                                    "num_used": 1,
                                    "ranges": [
                                        {"ip_range": {
                                                "end_address": "192.168.x.x",
                                                "size": 1,
                                                "start_address": "192.168.x.x"}}],
                                    "type": "hardware",
                                    "used_ranges": [
                                        {"ip_range": {
                                                "end_address": "192.168.x.x",
                                                "size": 1,
                                                "start_address": "192.168.x.x"}}]}}],
                        "available_ranges": [ [
                                {"ip_range": {
                                        "end_address": "192.168.x.x",
                                        "size": 11,
                                        "start_address": "192.168.x.x"}},
                                    "ip_range": {
                                        "end_address": "192.168.x.x",
                                        "size": 242,
                                        "start_address": "192.168.x.x"}}],253]}},
                "base_address": "192.168.x.x",
                "cidr": 24,
                "comp_id": 1367,
                "gateway_addresses": [],
                "ip_version": "ipv4",
                "usages": [
                    "bbc/applogic_backbone_network"],
                "vlan_address_spaces": []}}]
    

    たとえば、バックボーン ネットワークのベース アドレスは 192.168.x.x です。

グリッド情報の取得

システム内のグリッドに関する情報を取得できます。 たとえば、comp_id、グリッド設定、グリッド IP 範囲、およびグリッドの説明を表示します。

以下の手順に従います。

  1. get_grids.py など、グリッド情報のスクリプトを作成します。
  2. 以下の例のようなスクリプトを作成します。
    session = get_session()
    conn = HTTPSConnection(bfcHost + ':8443')
    conn.connect()
    conn.request(method='GET',
                 url='/BFC/grids',
                 headers={'Content-Type':'application/json',
                          'Authorization':session})
    grids = json.loads(conn.getresponse().read())
    print grids
    
  3. スクリプトを実行します。

    API は、HTTP リターン コード 200 およびグリッド レコードのリストを表示します。

    {"grid":{
      "comp_id":1234,"id":2,"name":"SimpleGrid2", 
      "description":"SimpleGrid2 description",
      "state":"resource_allocated_state", 
      "applogic_version":"3.1.2",
      "applogic_hotfixes":null,
      "enable_language_packs":false, 
      "xen_config":{
    	"grid_server_configuration":{
    		"min":2,"target":2,"max":2,
    		"selection_criteria":null}}, 
       "esx_config":{
    	"grid_server_configuration":{
    		"min":2,"target":2,"max":2,
    	"selection_criteria":null}}, 
    	"servers":[],"external_network":"127.x.x.0/24",
    	"app_ips":[{
    		"grid_ip_range":{
    		subnet_id:2345,vlan:10,
    		public_private:"public", 
    		ip_low:"127.x.x.2",
    		ip_high:"127.x.x.11"}],
    	"app_ip_count":10, 
    	"controller_ip":"127.10.10.1","default_vlan":1, 
    	"account_id":null,"account_key":null, "oem_kit":null, 
    	"vmware_license_key":"XXXXX-XXXXX-XXXXX-XXXXX-XXXXX",
    	"global_user_dir":null,
    	"grid_controller_name":null,
    	"grid_controller_user":null,
    	"grid_controller_password":null, 
    	"recovery_password":null,"additional_config":null}},
    {"grid":{
    	"comp_id":5678,"id":1,"name":"SimpleGrid1", 
    	"description":"SimpleGrid1 description",
    	"state":"resource_allocated_state", 
    	"applogic_version":"3.1.1",
    	"applogic_hotfixes":null,
    	"enable_language_packs":false, 
    	"xen_config":{
    		"grid_server_configuration":{
    			"min":2,"target":2,"max":2,
    			"selection_criteria":null}}, 
    	"esx_config":{"
    		grid_server_configuration":{
    			"min":0,"target":0,"max":0,
    			"selection_criteria":null}}, 
    	"servers":[],"external_network":"127.x.x.0/24", 
    	"app_ips":[{"grid_ip_range":{
    	subnet_id:1245,vlan:null,
    	public_private:"public", 
    	ip_low:"127.x.x.13",ip_high:"127.x.x.22"}],
    	"app_ip_count":10, 
    	"controller_ip":"127.x.x.12","default_vlan":1, 
    	"account_id":null,"account_key":null, "oem_kit":null, 
    	"vmware_license_key":"XXXXX-XXXXX-XXXXX-XXXXX-XXXXX",
    	"global_user_dir":null, 
    	"grid_controller_name":null,
    	"grid_controller_user":null,
    	"grid_controller_password":null, 
    	"recovery_password":null, 
    	"additional_config":null,
    	"external_storage":null}}]}
    

    たとえば、SimpleGrid1 の controller_IP は 127.x.x.12 です。

検出情報の取得

検出設定に関する情報を取得できます。 たとえば、サーバの検出モードを表示します。

以下の手順に従います。

  1. 検出情報のスクリプトを作成します。

    たとえば、get_discovery.py を作成します。

  2. 以下の例を使用し、スクリプトを作成します。
    from httplib import HTTPSConnection
    import json
    import os
    import sys
    
    bfcHost = os.environ["BFC_HOST"]
    bfcSession = os.environ["BFC_SESSION"]
    conn = HTTPSConnection(bfcHost + ':8443')
    conn.connect()
    conn.request(method='GET',
                 url='/BFC/admin/discovery',
                 headers={'Content-Type':'application/json',
                          'Authorization':bfcSession})
    r1 = conn.getresponse()
    print 'HTTP Response Code: {0}'.format(r1.status)
    servers = json.loads(r1.read())
    print json.dumps(servers, sort_keys=True, indent=4)
    print grids
    
  3. スクリプトを実行します。

    API は、HTTP リターン コード 200 および検出設定を表示します。

    {"discovery":{
    
    "enabled":"true',
    "mode":"manual",
    "mac_addresses":00:01:02:03:04:05,
    "default_tags":"gold"}}
    

    たとえば、00:01:02:03:04:05 MAC アドレスを持つサーバは手動検出が有効になっています。

これで、BFC 環境に関する情報を正常に取得したので、計画または管理タスクを実行できます。