Argomento precedente: Utilizzo dell'API di BFCArgomento successivo: Configurazione delle reti con l'API di BFC


Recupero delle informazioni su BFC

In qualità di amministratori backbone, si desidera recuperare informazioni sul server BFC con l'API di BFC. Queste informazioni consentono di comprendere la configurazione BFC prima di modificare l'ambiente. Ad esempio, si desidera rivedere la configurazione prima di aggiungere ulteriori griglie. Creare script Python che recuperano le informazioni sull'ambiente di BFC, inclusi la versione del prodotto, i server, le reti configurate, le griglie disponibili e la configurazione di rilevamento.

Nota: è possibile utilizzare un editor di testo per creare gli script come operazioni GET, quindi eseguire gli script nell'API di BFC.

Il diagramma seguente mostra come recuperare le informazioni su BFC:

Diagramma che mostra come recuperare informazioni su BFC.

  1. Recuperare le informazioni sulla versione del prodotto.
  2. Recuperare le informazioni sui server.
  3. Recuperare le informazioni sulle reti.
  4. Recuperare le informazioni sulle griglie.
  5. Recuperare le informazioni sul rilevamento.
Recupero delle informazioni sulla versione del prodotto

È possibile recuperare le informazioni sull'insieme di record della versione attualmente disponibili in BFC. I record della versione contengono informazioni come comp_id, esx_version e gli aggiornamenti rapidi installati. È possibile rivedere le versioni in resource_running_state per creare griglie di CA AppLogic®.

Attenersi alla seguente procedura:

  1. Creare uno script per un accesso all'API di BFC, ad esempio bfc_login.py.
  2. Creare lo script come nell'esempio seguente:
    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. Eseguire lo script.

    L'API visualizza l'ID sessione.

  4. Creare uno script per le informazioni sulla versione.

    Ad esempio, creare get_version.py.

  5. Creare lo script come nell'esempio seguente:
    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. Eseguire lo script.

    L'API visualizza il codice di ritorno HTTP 200 e un elenco dei record della versione:

    [{'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}}]
    

    Ad esempio, BFC contiene gli aggiornamenti rapidi lp3561, lp2668 e lp1248.

Recupero delle informazioni sui server

È possibile recuperare informazioni su tutti i server presenti nel sistema, come il server backbone, il server esterno e il controller di alimentazione. Ad esempio, si desidera visualizzare il nome dei server, lo stato, il numero di core CPU e gli indirizzi IP.

Attenersi alla seguente procedura:

  1. Creare uno script per le informazioni sui server, ad esempio get_servers.py.
  2. Creare lo script come nell'esempio seguente:
    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. Eseguire lo script.

    L'API visualizza il codice di ritorno HTTP 200 e un elenco dei record dei server:

    [{"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"]}}]%
    

    Ad esempio, eth1 presenta l'indirizzo MAC 00:01:02:03:AA:BB.

Recupero delle informazioni sulle reti

È possibile recuperare informazioni su tutte le reti configurate nel sistema. Ad esempio, si desidera visualizzare gli intervalli di indirizzi, gli intervalli di indirizzi IP disponibili, gli indirizzi gateway e il tipo.

Attenersi alla seguente procedura:

  1. Creare uno script per le informazioni sulle reti, ad esempio get_networks.py.
  2. Creare lo script come nell'esempio seguente:
    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. Eseguire lo script.

    L'API visualizza il codice di ritorno HTTP 200 e un elenco dei record delle reti:

    [{"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": []}}]
    

    Ad esempio, l'indirizzo di base della rete backbone è 192.168.x.x.

Recupero delle informazioni sulle griglie

È possibile recuperare informazioni sulle griglie presenti nel sistema. Ad esempio, si desidera visualizzare il comp_id, le configurazioni, gli intervalli IP e le descrizioni delle griglie.

Attenersi alla seguente procedura:

  1. Creare uno script per le informazioni sulle griglie, ad esempio get_grids.py.
  2. Creare lo script come nell'esempio seguente:
    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. Eseguire lo script.

    L'API visualizza il codice di ritorno HTTP 200 e un elenco dei record delle griglie:

    {"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}}]}
    

    Ad esempio, SimpleGrid1 presenta il controller_IP 127.x.x.12.

Recupero delle informazioni sul rilevamento

È possibile recuperare informazioni sulla configurazione di rilevamento. Ad esempio, si desidera visualizzare la modalità di rilevamento di un server.

Attenersi alla seguente procedura:

  1. Creare uno script per le informazioni di rilevamento.

    Ad esempio, creare get_discovery.py.

  2. Utilizzare l'esempio seguente e creare lo script:
    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. Eseguire lo script.

    L'API visualizza il codice di ritorno HTTP 200 e la configurazione di rilevamento:

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

    Ad esempio, nel server con l'indirizzo MAC 00:01:02:03:04:05 è abilitato il rilevamento manuale.

Le informazioni sull'ambiente BFC sono state recuperate correttamente ed è possibile eseguire le attività di pianificazione o manutenzione.