summaryrefslogtreecommitdiffstats
path: root/compass-tasks/apiclient/example.py
diff options
context:
space:
mode:
Diffstat (limited to 'compass-tasks/apiclient/example.py')
-rwxr-xr-xcompass-tasks/apiclient/example.py463
1 files changed, 0 insertions, 463 deletions
diff --git a/compass-tasks/apiclient/example.py b/compass-tasks/apiclient/example.py
deleted file mode 100755
index 4c01b98..0000000
--- a/compass-tasks/apiclient/example.py
+++ /dev/null
@@ -1,463 +0,0 @@
-#!/usr/bin/python
-# copyright 2014 Huawei Technologies Co. Ltd
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Example code to deploy a cluster by compass client api."""
-import os
-import re
-import sys
-import time
-
-# from compass.apiclient.restful import Client
-from restful import Client
-
-COMPASS_SERVER_URL = 'http://localhost/api'
-COMPASS_LOGIN_EMAIL = 'admin@huawei.com'
-COMPASS_LOGIN_PASSWORD = 'admin'
-SWITCH_IP = '172.29.8.40'
-SWITCH_SNMP_VERSION = '2c'
-SWITCH_SNMP_COMMUNITY = 'public'
-CLUSTER_NAME = 'test_cluster'
-HOST_NAME_PREFIX = 'host'
-SERVICE_USERNAME = 'service'
-SERVICE_PASSWORD = 'service'
-CONSOLE_USERNAME = 'console'
-CONSOLE_PASSWORD = 'console'
-HA_VIP = ''
-
-MANAGEMENT_IP_START = '10.145.88.130'
-MANAGEMENT_IP_END = '10.145.88.254'
-MANAGEMENT_IP_GATEWAY = '10.145.88.1'
-MANAGEMENT_NETMASK = '255.255.255.0'
-MANAGEMENT_NIC = 'eth0'
-MANAGEMENT_PROMISC = 0
-TENANT_IP_START = '192.168.10.130'
-TENANT_IP_END = '192.168.10.255'
-TENANT_IP_GATEWAY = '192.168.10.1'
-TENANT_NETMASK = '255.255.255.0'
-TENANT_NIC = 'eth0'
-TENANT_PROMISC = 0
-PUBLIC_IP_START = '12.234.32.130'
-PUBLIC_IP_END = '12.234.32.255'
-PUBLIC_IP_GATEWAY = '12.234.32.1'
-PUBLIC_NETMASK = '255.255.255.0'
-PUBLIC_NIC = 'eth1'
-PUBLIC_PROMISC = 1
-STORAGE_IP_START = '172.16.100.130'
-STORAGE_IP_END = '172.16.100.255'
-STORAGE_NETMASK = '255.255.255.0'
-STORAGE_IP_GATEWAY = '172.16.100.1'
-STORAGE_NIC = 'eth0'
-STORAGE_PROMISC = 0
-HOME_PERCENTAGE = 5
-TMP_PERCENTAGE = 5
-VAR_PERCENTAGE = 10
-HOST_OS = 'CentOS-6.5-x86_64'
-
-
-PRESET_VALUES = {
- 'LANGUAGE': 'EN',
- 'TIMEZONE': 'GMT',
- 'HTTPS_PROXY': 'http://10.145.89.100:3128',
- 'NO_PROXY': ['127.0.0.1'],
- 'DOMAIN': 'ods.com',
- 'NAMESERVERS': ['10.145.89.100'],
- 'NTP_SERVER': '10.145.89.100',
- 'GATEWAY': '10.145.88.1',
- 'PROXY': 'http://10.145.89.100:3128',
- 'OS_NAME_PATTERN': 'CentOS.*',
- 'ADAPTER_NAME': 'openstack_icehouse',
- 'FLAVOR_PATTERN': 'allinone.*',
- 'ROLES_LIST': ['allinone-compute'],
- 'MACHINES_TO_ADD': ['00:0c:29:a7:ea:4b'],
- 'BUILD_TIMEOUT': 60,
- 'SEARCH_PATH': ['ods.com'],
- 'SERVER_USERNAME': 'root',
- 'SERVER_PASSWORD': 'root'
-}
-for v in PRESET_VALUES:
- if v in os.environ.keys():
- PRESET_VALUES[v] = os.environ.get(v)
- print (v + PRESET_VALUES[v] + " is set by env variables")
- else:
- print (PRESET_VALUES[v])
-
-# instantiate a client
-client = Client(COMPASS_SERVER_URL)
-
-# login
-status, response = client.login(COMPASS_LOGIN_EMAIL, COMPASS_LOGIN_PASSWORD)
-print '============================================================'
-print 'login status: %s response: %s' % (status, response)
-if status >= 400:
- sys.exit(1)
-
-# list all switches
-status, response = client.list_switches()
-print '============================================================='
-print 'get all switches status: %s response: %s' % (status, response)
-
-# add a switch
-status, response = client.add_switch(
- SWITCH_IP,
- SWITCH_SNMP_VERSION,
- SWITCH_SNMP_COMMUNITY
-)
-print '============================================'
-print 'adding a switch..status: %s, response: %s' % (status, response)
-
-# if switch already exists, get one from all switches
-switch = None
-if status < 400:
- switch = response
-else:
- status, response = client.list_switches()
- print '========================================='
- print 'list switches status %s response %s' % (status, response)
- if status >= 400:
- sys.exit(1)
- for switch_ in response:
- if switch_['ip'] == SWITCH_IP:
- switch = switch_
- break
-
-switch_id = switch['id']
-switch_ip = switch['ip']
-print '======================'
-print 'switch has been set as %s' % switch_ip
-
-# wait till switch state becomes under_monitoring
-while switch['state'] != 'under_monitoring':
- print 'waiting for state to become under_monitoring'
- client.poll_switch(switch_id)
- status, resp = client.get_switch(switch_id)
- print '====================================='
- print 'poll switch status %s response %s' % (status, resp)
- switch = resp
- print 'switch is in state: %s' % switch['state']
- time.sleep(5)
-
-print '========================================='
-print 'switch state now is %s' % (switch['state'])
-
-# create a machine list
-machine_macs = {}
-machines = {}
-for machine in PRESET_VALUES['MACHINES_TO_ADD']:
- status, response = client.list_machines(mac=machine)
- print '============================================'
- print 'list machines status %s response %s' % (status, response)
- if status >= 400:
- sys.exit(1)
- if status == 200 and response != []:
- machine_id = response[0]['id']
- machine_macs[machine_id] = response[0]['mac']
- machines = response
-
-print '================================='
-print 'found machines are : %s' % machines
-
-machines_to_add = PRESET_VALUES['MACHINES_TO_ADD']
-if set(machine_macs.values()) != set(machines_to_add):
- print 'only found macs %s while expected are %s' % (
- machine_macs.values(), machines_to_add)
- sys.exit(1)
-
-# list all adapters
-status, response = client.list_adapters()
-print '==============================='
-print 'all adapters are: %s' % response
-if status >= 400:
- sys.exit(1)
-
-adapters = response
-adapter_id = None
-os_id = None
-flavor_id = None
-adapter_name = PRESET_VALUES['ADPATER_NAME']
-os_pattern = re.compile(PRESET_VALUES['OS_NAME_PATTERN'])
-flavor_pattern = re.compile(PRESET_VALUES['FLAVOR_PATTERN'])
-for adapter in adapters:
- if adapter_name == adapter['name']:
- adapter_id = adapter['id']
- for supported_os in adapter['supported_oses']:
- if os_pattern.match(supported_os['name']):
- os_id = supported_os['id']
- break
- for flavor in adapter['flavors']:
- if flavor_pattern.match(flavor['name']):
- flavor_id = flavor['id']
- if adapter_id and os_id and flavor_id:
- break
-
-print '======================================================='
-print 'using adapter %s os %s flavor %s to deploy cluster' % (
- adapter_id, os_id, flavor_id
-)
-
-# add a cluster
-status, response = client.add_cluster(
- CLUSTER_NAME,
- adapter_id,
- os_id,
- flavor_id
-)
-print '==============================================================='
-print 'add cluster %s status %s: %s' % (CLUSTER_NAME, status, response)
-if status >= 400:
- sys.exit(1)
-
-status, response = client.list_clusters(name=CLUSTER_NAME)
-print '================================================================'
-print 'list clusters %s status %s: %s' % (CLUSTER_NAME, status, response)
-if status >= 400:
- sys.exit(1)
-
-cluster = response[0]
-cluster_id = cluster['id']
-
-print '=================='
-print 'cluster is %s' % cluster
-
-# Add hosts to the cluster
-machines_dict = {}
-machine_id_list = []
-for machine in machines:
- id_mapping = {}
- id_mapping['machine_id'] = machine['id']
- machine_id_list.append(id_mapping)
-
-machines_dict['machines'] = machine_id_list
-
-status, response = client.add_hosts_to_cluster(
- cluster_id, machines_dict
-)
-print '==================================='
-print 'add hosts %s to cluster status %s response %s' % (
- machines_dict, status, response)
-if status >= 400:
- sys.exit(1)
-
-# Add two subnets
-subnet_1 = '10.145.89.0/24'
-subnet_2 = '192.168.100.0/24'
-
-status, response = client.add_subnet(subnet_1)
-print '=================='
-print 'add subnet %s status %s: %s' % (subnet_1, status, response)
-if status >= 400:
- sys.exit(1)
-
-status, response = client.add_subnet(subnet_2)
-print '=================='
-print 'add subnet %s status %s: %s' % (subnet_2, status, response)
-if status >= 400:
- sys.exit(1)
-
-status, subnet1 = client.list_subnets(subnet=subnet_1)
-print '==========================================================='
-print 'list subnet %s status %s: %s' % (subnet_1, status, subnet1)
-if status >= 400:
- sys.exit(1)
-
-status, subnet2 = client.list_subnets(subnet=subnet_2)
-print '==========================================================='
-print 'list subnet %s status %s: %s' % (subnet_2, status, subnet2)
-if status >= 400:
- sys.exit(1)
-
-subnet1_id = subnet1[0]['id']
-subnet2_id = subnet2[0]['id']
-print '========================'
-print 'subnet1 has id: %s, subnet is %s' % (subnet1_id, subnet1)
-print 'subnet2 has id: %s, subnet is %s' % (subnet2_id, subnet2)
-
-# Add host network
-status, response = client.list_cluster_hosts(cluster_id)
-print '================================================'
-print 'list cluster hosts status %s: %s' % (status, response)
-if status >= 400:
- sys.exit(1)
-
-host = response[0]
-host_id = host['id']
-print '=================='
-print 'host is: %s' % host
-
-status, response = client.add_host_network(
- host_id,
- 'eth0',
- '10.145.89.200',
- subnet1_id,
- is_mgmt=True
-)
-print '======================='
-print 'add eth0 network status %s: %s' % (status, response)
-if status >= 400:
- sys.exit(1)
-
-status, response = client.add_host_network(
- host_id,
- 'eth1',
- '192.168.100.200',
- subnet2_id,
- is_promiscuous=True
-)
-print '======================='
-print 'add eth1 network status %s: %s' % (status, response)
-if status >= 400:
- sys.exit(1)
-
-# Update os config to cluster
-cluster_os_config = {
- 'general': {
- 'language': PRESET_VALUES['LANGUAGE'],
- 'timezone': PRESET_VALUES['TIMEZONE'],
- 'http_proxy': PRESET_VALUES['PROXY'],
- 'https_proxy': PRESET_VALUES['HTTPS_PROXY'],
- 'no_proxy': PRESET_VALUES['NO_PROXY'],
- 'ntp_server': PRESET_VALUES['NTP_SERVER'],
- 'dns_servers': PRESET_VALUES['NAMESERVERS'],
- 'domain': PRESET_VALUES['DOMAIN'],
- 'search_path': PRESET_VALUES['SEARCH_PATH'],
- 'default_gateway': PRESET_VALUES['GATEWAY']
- },
- 'server_credentials': {
- 'username': PRESET_VALUES['SERVER_USERNAME'],
- 'password': PRESET_VALUES['SERVER_PASSWORD']
- },
- 'partition': {
- '/var': {
- 'percentage': VAR_PERCENTAGE,
- },
- '/home': {
- 'percentage': HOME_PERCENTAGE,
- }
- }
-}
-
-
-cluster_package_config = {
- 'security': {
- 'service_credentials': {
- 'image': {
- 'username': SERVICE_USERNAME,
- 'password': SERVICE_PASSWORD
- },
- 'compute': {
- 'username': SERVICE_USERNAME,
- 'password': SERVICE_PASSWORD
- },
- 'dashboard': {
- 'username': SERVICE_USERNAME,
- 'password': SERVICE_PASSWORD
- },
- 'identity': {
- 'username': SERVICE_USERNAME,
- 'password': SERVICE_PASSWORD
- },
- 'metering': {
- 'username': SERVICE_USERNAME,
- 'password': SERVICE_PASSWORD
- },
- 'rabbitmq': {
- 'username': SERVICE_USERNAME,
- 'password': SERVICE_PASSWORD
- },
- 'volume': {
- 'username': SERVICE_USERNAME,
- 'password': SERVICE_PASSWORD
- },
- 'mysql': {
- 'username': SERVICE_USERNAME,
- 'password': SERVICE_PASSWORD
- }
- },
- 'console_credentials': {
- 'admin': {
- 'username': CONSOLE_USERNAME,
- 'password': CONSOLE_PASSWORD
- },
- 'compute': {
- 'username': CONSOLE_USERNAME,
- 'password': CONSOLE_PASSWORD
- },
- 'dashboard': {
- 'username': CONSOLE_USERNAME,
- 'password': CONSOLE_PASSWORD
- },
- 'image': {
- 'username': CONSOLE_USERNAME,
- 'password': CONSOLE_PASSWORD
- },
- 'metering': {
- 'username': CONSOLE_USERNAME,
- 'password': CONSOLE_PASSWORD
- },
- 'network': {
- 'username': CONSOLE_USERNAME,
- 'password': CONSOLE_PASSWORD
- },
- 'object-store': {
- 'username': CONSOLE_USERNAME,
- 'password': CONSOLE_PASSWORD
- },
- 'volume': {
- 'username': CONSOLE_USERNAME,
- 'password': CONSOLE_PASSWORD
- }
- }
- },
- 'network_mapping': {
- 'management': MANAGEMENT_NIC,
- 'tenant': TENANT_NIC,
- 'storage': STORAGE_NIC,
- 'public': PUBLIC_NIC
- }
-}
-
-status, response = client.update_cluster_config(
- cluster_id,
- cluster_os_config,
- cluster_package_config
-)
-
-print '======================================='
-print 'cluster %s update status %s: %s' % (
- cluster_id, status, response)
-if status >= 400:
- sys.exit(1)
-
-status, response = client.update_cluster_host(
- cluster_id, host_id, roles=PRESET_VALUES['ROLES_LIST'])
-print '================================================='
-print 'update cluster host %s/%s status %s: %s' % (
- cluster_id, host_id, status, response)
-if status >= 400:
- sys.exit(1)
-
-# Review and deploy
-status, response = client.review_cluster(
- cluster_id, review={'hosts': [host_id]})
-print '======================================='
-print 'reviewing cluster status %s: %s' % (status, response)
-if status >= 400:
- sys.exit(1)
-
-status, response = client.deploy_cluster(
- cluster_id, deploy={'hosts': [host_id]})
-print '======================================='
-print 'deploy cluster status %s: %s' % (status, response)
-if status >= 400:
- sys.exit(1)