Le rôle d'administrateur de dorsale vous permet de récupérer des informations concernant le serveur BFC à l'aide de l'API BFC. Ces informations vous aident à déterminer la configuration de BFC avant de modifier l'environnement. Par exemple, vous voulez réviser la configuration avant d'ajouter plusieurs grilles. Créez des scripts Python qui récupèrent des informations sur l'environnement BFC, notamment la version de produit, les serveurs, les réseaux configurés, les grilles disponibles et la configuration de détection.
Remarque : Utilisez un éditeur de texte pour créer des scripts de type GET, puis exécutez-les dans l'API BFC.
Le diagramme suivant présente la méthode de récupération des informations sur BFC :

Vous pouvez récupérer des informations concernant l'ensemble des enregistrements de version actuellement disponibles dans BFC. Les enregistrements de version contiennent différentes informations, notamment les valeurs de comp_id et esx_version, et les correctifs que vous avez installés. Vous pouvez vérifier les versions dans resource_running_state pour créer des grilles CA AppLogic®.
Procédez comme suit :
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)
L'API affiche l'ID de session.
Par exemple, créez le script get_version.py
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)
L'API affiche le code de retour HTTP 200 et une liste d'enregistrements de version :
[{'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}}]
Par exemple, BFC contient les correctifs lp3561, lp2668 et lp1248.
Vous pouvez récupérer des informations sur tous les serveurs du système, comme le serveur de dorsale, le serveur externe et le contrôleur d'alimentation. Par exemple, vous voulez afficher le nom, le statut, le nombre de noyaux d'UC et les adresses IP d'un serveur.
Procédez comme suit :
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)
L'API affiche le code de retour HTTP 200 et une liste d'enregistrements de serveur :
[{"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"]}}]%
Par exemple, eth1 a l'adresse MAC 00:01:02:03:AA:BB.
Vous pouvez récupérer des informations concernant tous les réseaux configurés dans le système. Par exemple, vous voulez afficher les espaces d'adressage, les plages d'adresse IP disponibles, les adresses de passerelle et le type de réseau.
Procédez comme suit :
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)
L'API affiche le code de retour HTTP 200 et une liste d'enregistrements de réseau :
[{"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": []}}]
Par exemple, l'adresse de base de la dorsale est 192.168.x.x.
Vous pouvez récupérer des informations concernant les grilles du système. Par exemple, vous voulez afficher la valeur de comp_id, les configurations de grille, les plages d'adresses IP et les descriptions de grille.
Procédez comme suit :
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
L'API affiche le code de retour HTTP 200 et une liste d'enregistrements de grille :
{"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}}]}
Par exemple, l'adresse controller_IP de la grille SimpleGrid1 est 127.x.x.12.
Vous pouvez récupérer des informations sur la configuration de la détection. Par exemple, vous voulez afficher le mode de détection d'un serveur.
Procédez comme suit :
Par exemple, créez le script get_discovery.py,
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
L'API affiche le code de retour HTTP 200 et la configuration de détection :
{"discovery":{
"enabled":"true', "mode":"manual", "mac_addresses":00:01:02:03:04:05, "default_tags":"gold"}}
Par exemple, la détection manuelle est activée pour le serveur avec l'adresse MAC 00:01:02:03:04:05.
Vous avez récupéré les informations de votre environnement BFC et pouvez effectuer la planification ou la maintenance.
|
Copyright © 2013 CA.
Tous droits réservés.
|
|