summaryrefslogtreecommitdiffstats
path: root/compass-tasks/apiclient/v1/example.py
diff options
context:
space:
mode:
Diffstat (limited to 'compass-tasks/apiclient/v1/example.py')
-rwxr-xr-xcompass-tasks/apiclient/v1/example.py305
1 files changed, 0 insertions, 305 deletions
diff --git a/compass-tasks/apiclient/v1/example.py b/compass-tasks/apiclient/v1/example.py
deleted file mode 100755
index 6f7a7f7..0000000
--- a/compass-tasks/apiclient/v1/example.py
+++ /dev/null
@@ -1,305 +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 requests
-import sys
-import time
-
-from compass.apiclient.restful import Client
-
-
-COMPASS_SERVER_URL = 'http://127.0.0.1/api'
-SWITCH_IP = '10.145.81.220'
-SWITCH_SNMP_VERSION = 'v2c'
-SWITCH_SNMP_COMMUNITY = 'public'
-# MACHINES_TO_ADD = ['00:11:20:30:40:01']
-CLUSTER_NAME = 'cluster2'
-HOST_NAME_PREFIX = 'host'
-SERVER_USERNAME = 'root'
-SERVER_PASSWORD = 'root'
-SERVICE_USERNAME = 'service'
-SERVICE_PASSWORD = 'service'
-CONSOLE_USERNAME = 'console'
-CONSOLE_PASSWORD = 'console'
-HA_VIP = ''
-# NAMESERVERS = '192.168.10.6'
-SEARCH_PATH = 'ods.com'
-# GATEWAY = '192.168.10.6'
-# PROXY = 'http://192.168.10.6:3128'
-# NTP_SERVER = '192.168.10.6'
-MANAGEMENT_IP_START = '192.168.10.130'
-MANAGEMENT_IP_END = '192.168.10.254'
-MANAGEMENT_IP_GATEWAY = '192.168.10.1'
-MANAGEMENT_NETMASK = '255.255.255.0'
-MANAGEMENT_NIC = 'eth0'
-MANAGEMENT_PROMISC = 0
-TENANT_IP_START = '192.168.10.100'
-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.100'
-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.100'
-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
-# ROLES_LIST = [['os-dashboard']]
-
-PRESET_VALUES = {
- 'NAMESERVERS': '192.168.10.1',
- 'NTP_SERVER': '192.168.10.1',
- 'GATEWAY': '192.168.10.1',
- 'PROXY': 'http://192.168.10.1:3128',
- 'ROLES_LIST': 'os-dashboard',
- 'MACHINES_TO_ADD': '00:11:20:30:40:01',
- 'BUILD_TIMEOUT': 60
-}
-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])
-
-# get apiclient object.
-client = Client(COMPASS_SERVER_URL)
-
-
-# get all switches.
-status, resp = client.get_switches()
-print 'get all switches status: %s resp: %s' % (status, resp)
-
-# add a switch.
-status, resp = client.add_switch(
- SWITCH_IP, version=SWITCH_SNMP_VERSION,
- community=SWITCH_SNMP_COMMUNITY)
-
-print 'add a switch status: %s resp: %s' % (status, resp)
-
-if status < 400:
- switch = resp['switch']
-else:
- status, resp = client.get_switches()
- print 'get all switches status: %s resp: %s' % (status, resp)
- switch = None
- for switch in resp['switches']:
- if switch['ip'] == SWITCH_IP:
- break
-
-switch_id = switch['id']
-switch_ip = switch['ip']
-
-
-# if the switch is not in under_monitoring, wait for the poll switch task
-# update the swich information and change the switch state.
-while switch['state'] != 'under_monitoring':
- print 'waiting for the switch into under_monitoring'
- status, resp = client.get_switch(switch_id)
- print 'get switch %s status: %s, resp: %s' % (switch_id, status, resp)
- switch = resp['switch']
- time.sleep(10)
-
-
-# get machines connected to the switch.
-status, resp = client.get_machines(switch_id=switch_id)
-print 'get all machines under switch %s status: %s, resp: %s' % (
- switch_id, status, resp)
-machines = {}
-MACHINES_TO_ADD = PRESET_VALUES['MACHINES_TO_ADD'].split()
-for machine in resp['machines']:
- mac = machine['mac']
- if mac in MACHINES_TO_ADD:
- machines[machine['id']] = mac
-
-print 'machine to add: %s' % machines
-
-if set(machines.values()) != set(MACHINES_TO_ADD):
- print 'only found macs %s while expected are %s' % (
- machines.values(), MACHINES_TO_ADD)
- sys.exit(1)
-
-
-# get adapters.
-status, resp = client.get_adapters()
-print 'get all adapters status: %s, resp: %s' % (status, resp)
-adapter_ids = []
-for adapter in resp['adapters']:
- adapter_ids.append(adapter['id'])
-
-adapter_id = adapter_ids[0]
-print 'adpater for deploying a cluster: %s' % adapter_id
-
-
-# add a cluster.
-status, resp = client.add_cluster(
- cluster_name=CLUSTER_NAME, adapter_id=adapter_id)
-print 'add cluster %s status: %s, resp: %s' % (CLUSTER_NAME, status, resp)
-cluster = resp['cluster']
-cluster_id = cluster['id']
-
-# add hosts to the cluster.
-status, resp = client.add_hosts(
- cluster_id=cluster_id,
- machine_ids=machines.keys())
-print 'add hosts to cluster %s status: %s, resp: %s' % (
- cluster_id, status, resp)
-host_ids = []
-for host in resp['cluster_hosts']:
- host_ids.append(host['id'])
-
-print 'added hosts: %s' % host_ids
-
-
-# set cluster security
-status, resp = client.set_security(
- cluster_id, server_username=SERVER_USERNAME,
- server_password=SERVER_PASSWORD,
- service_username=SERVICE_USERNAME,
- service_password=SERVICE_PASSWORD,
- console_username=CONSOLE_USERNAME,
- console_password=CONSOLE_PASSWORD)
-print 'set security config to cluster %s status: %s, resp: %s' % (
- cluster_id, status, resp)
-
-
-# set cluster networking
-status, resp = client.set_networking(
- cluster_id,
- nameservers=PRESET_VALUES["NAMESERVERS"],
- search_path=SEARCH_PATH,
- gateway=PRESET_VALUES["GATEWAY"],
- proxy=PRESET_VALUES["PROXY"],
- ntp_server=PRESET_VALUES["NTP_SERVER"],
- ha_vip=HA_VIP,
- management_ip_start=MANAGEMENT_IP_START,
- management_ip_end=MANAGEMENT_IP_END,
- management_netmask=MANAGEMENT_NETMASK,
- management_nic=MANAGEMENT_NIC,
- management_gateway=MANAGEMENT_IP_GATEWAY,
- management_promisc=MANAGEMENT_PROMISC,
- tenant_ip_start=TENANT_IP_START,
- tenant_ip_end=TENANT_IP_END,
- tenant_netmask=TENANT_NETMASK,
- tenant_nic=TENANT_NIC,
- tenant_gateway=TENANT_IP_GATEWAY,
- tenant_promisc=TENANT_PROMISC,
- public_ip_start=PUBLIC_IP_START,
- public_ip_end=PUBLIC_IP_END,
- public_netmask=PUBLIC_NETMASK,
- public_nic=PUBLIC_NIC,
- public_gateway=PUBLIC_IP_GATEWAY,
- public_promisc=PUBLIC_PROMISC,
- storage_ip_start=STORAGE_IP_START,
- storage_ip_end=STORAGE_IP_END,
- storage_netmask=STORAGE_NETMASK,
- storage_nic=STORAGE_NIC,
- storage_gateway=STORAGE_IP_GATEWAY,
- storage_promisc=STORAGE_PROMISC)
-print 'set networking config to cluster %s status: %s, resp: %s' % (
- cluster_id, status, resp)
-
-
-# set partiton of each host in cluster
-status, resp = client.set_partition(
- cluster_id,
- home_percentage=HOME_PERCENTAGE,
- tmp_percentage=TMP_PERCENTAGE,
- var_percentage=VAR_PERCENTAGE)
-print 'set partition config to cluster %s status: %s, resp: %s' % (
- cluster_id, status, resp)
-
-
-# set each host config in cluster.
-ROLES_LIST = [PRESET_VALUES['ROLES_LIST'].split()]
-for host_id in host_ids:
- if ROLES_LIST:
- roles = ROLES_LIST.pop(0)
- else:
- roles = []
- status, resp = client.update_host_config(
- host_id, hostname='%s%s' % (HOST_NAME_PREFIX, host_id),
- roles=roles)
- print 'set roles to host %s status: %s, resp: %s' % (
- host_id, status, resp)
-
-
-# deploy cluster.
-status, resp = client.deploy_hosts(cluster_id)
-print 'deploy cluster %s status: %s, resp: %s' % (cluster_id, status, resp)
-
-
-# get intalling progress.
-BUILD_TIMEOUT = float(PRESET_VALUES['BUILD_TIMEOUT'])
-timeout = time.time() + BUILD_TIMEOUT * 60
-while True:
- status, resp = client.get_cluster_installing_progress(cluster_id)
- print 'get cluster %s installing progress status: %s, resp: %s' % (
- cluster_id, status, resp)
- progress = resp['progress']
- if (
- progress['state'] not in ['UNINITIALIZED', 'INSTALLING'] or
- progress['percentage'] >= 1.0
- ):
- break
- if (
- time.time() > timeout
- ):
- raise Exception("Timeout! The system is not ready in time.")
-
- for host_id in host_ids:
- status, resp = client.get_host_installing_progress(host_id)
- print 'get host %s installing progress status: %s, resp: %s' % (
- host_id, status, resp)
-
- time.sleep(60)
-
-
-status, resp = client.get_dashboard_links(cluster_id)
-print 'get cluster %s dashboardlinks status: %s, resp: %s' % (
- cluster_id, status, resp)
-dashboardlinks = resp['dashboardlinks']
-if not dashboardlinks.keys():
- raise Exception("Dashboard link is not found!")
-for x in dashboardlinks.keys():
- if x in ("os-dashboard", "os-controller"):
- dashboardurl = dashboardlinks.get(x)
- if dashboardurl is None:
- raise Exception("No dashboard link is found")
- r = requests.get(dashboardurl, verify=False)
- r.raise_for_status()
- match = re.search(
- r'(?m)(http://\d+\.\d+\.\d+\.\d+:5000/v2\.0)', r.text)
- if match:
- print 'dashboard login page can be downloaded'
- break
- print (
- 'dashboard login page failed to be downloaded\n'
- 'the context is:\n%s\n') % r.text
- raise Exception("os-dashboard is not properly installed!")