Tema anterior: Uso de la API de BFCTema siguiente: Cómo configurar redes con la API de BFC


Cómo recuperar información acerca de BFC

Como administrador de la red troncal, querrá recuperar la información acerca de su servidor de BFC con la API de BFC. Esta información ayuda a entender la configuración de BFC antes de que se modifique el entorno. Por ejemplo, se recomienda revisar la configuración antes de agregar más grids. Cree scripts de Python que recuperan información acerca del entorno de BFC, como la versión del producto, los servidores, las redes configuradas, los grids disponibles y la configuración de la detección.

Nota: Se puede utilizar un editor de texto para crear los scripts como operaciones GET y, a continuación, ejecutar estos scripts en la API de BFC.

El siguiente diagrama muestra cómo recuperar información acerca de BFC:

Diagrama que muestra cómo recuperar información acerca de BFC.

  1. Recuperación de la información de la versión del producto
  2. Recuperación de la información de los servidores
  3. Recuperación de la información de las redes
  4. Recuperación de la información de los grids
  5. Recuperación de la información de la detección
Recuperación de la información de la versión del producto

Se puede recuperar la información acerca del conjunto de registros de versiones que están disponibles actualmente en BFC. Los registros de versiones indican información como comp_id, esx_version y las revisiones instaladas. Se pueden revisar las versiones incluidas en resource_running_state para crear grids de CA AppLogic®.

Siga los pasos siguientes:

  1. Cree un script para iniciar sesión en la API de BFC, como bfc_login.py.
  2. Cree el script como el ejemplo siguiente:
    de la importación de httplib HTTPSConnection
    importación de 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. Ejecute el script.

    La API muestra el ID de la sesión.

  4. Cree un script para la información de la versión.

    Por ejemplo, cree get_version.py.

  5. Cree el script como el ejemplo siguiente:
    de la importación de httplib HTTPSConnection
    importación de 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. Ejecute el script.

    La API muestra el código de devolución HTTP 200 y una lista de registros de la versión:

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

    Por ejemplo, el BFC incluye las revisiones lp3561, lp2668 y lp1248.

Recuperación de la información de los servidores

Se puede recuperar la información acerca de todos los servidores del sistema, como el servidor de la red troncal, el servidor externo y el controlador de encendido. Por ejemplo, se recomienda consultar el nombre del servidor, su estado, el número de núcleos de CPU y las direcciones IP.

Siga los pasos siguientes:

  1. Cree un script para la información de los servidores, como get_servers.py.
  2. Cree el script como el ejemplo siguiente:
    de la importación de httplib HTTPSConnection
    importación de 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. Ejecute el script.

    La API muestra el código de devolución HTTP 200 y una lista de registros del servidor:

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

    Por ejemplo, eth1 tiene la dirección MAC 00:01:02:03:AA:BB.

Recuperación de la información de las redes

Se puede recuperar información acerca de todas las redes configuradas en el sistema. Por ejemplo, se recomienda consultar los espacios de dirección, los intervalos de direcciones IP disponibles, las direcciones de la puerta de enlace y el tipo.

Siga los pasos siguientes:

  1. Cree un script para la información de las redes, como get_networks.py.
  2. Cree el script como el ejemplo siguiente:
    de la importación de httplib HTTPSConnection
    importación de 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. Ejecute el script.

    La API muestra el código de devolución HTTP 200 y una lista de registros de la red:

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

    Por ejemplo, la dirección básica de la red troncal es 192.168.x.x.

Recuperación de la información de los grids

Se puede recuperar información acerca de grids del sistema. Por ejemplo, se recomienda consultar comp_id, las configuraciones del grid, los intervalos IP del grid y las descripciones del grid.

Siga los pasos siguientes:

  1. Cree un script para la información de los grids, como get_grids.py.
  2. Cree el script como el ejemplo siguiente:
    sesión = 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())
    imprimir grids
    
  3. Ejecute el script.

    La API muestra el código de devolución HTTP 200 y una lista de registros del grid:

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

    Por ejemplo, SimpleGrid1 tiene establecido controller_IP como 127.x.x.12.

Recuperación de la información de la detección

Se puede recuperar información acerca de la configuración de la detección. Por ejemplo, se recomienda consultar el modo de detección de un servidor.

Siga los pasos siguientes:

  1. Cree un script para la información de la detección.

    Por ejemplo, cree get_discovery.py.

  2. Utilice el siguiente ejemplo y cree el script:
    de la importación de httplib HTTPSConnection
    importación de 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)
    imprimir grids
    
  3. Ejecute el script.

    La API muestra el código de devolución HTTP 200 y la configuración de la detección:

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

    Por ejemplo, el servidor con la dirección MAC 00:01:02:03:04:05 tiene activada la detección manual.

Ha recuperado correctamente la información acerca de su entorno de BFC y puede realizar las tareas de planificación o mantenimiento.