| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you 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. |
| |
| import json |
| import os |
| import random |
| import sys |
| |
| class ZoneCreator: |
| """Creates a zone (and a pod and cluster for now)""" |
| def __init__(self, api, zonenum, dns1='192.168.10.254', |
| dns2='192.168.10.253', internaldns='192.168.10.254'): |
| self._api = api |
| self._zonenum = zonenum |
| self._zonename = "ZONE%04d"%zonenum |
| self._dns1 = dns1 |
| self._dns2 = dns2 |
| self._internaldns = internaldns |
| |
| def create(self): |
| jsonresult = self._api.GET({'command': 'createZone', 'networktype':'Basic', |
| 'name':self._zonename, 'dns1':self._dns1, 'dns2':self._dns2, |
| 'internaldns1':self._internaldns}) |
| if jsonresult is None: |
| print "Failed to create zone" |
| return 0 |
| jsonobj = json.loads(jsonresult) |
| self._zoneid = jsonobj['createzoneresponse']['zone']['id'] |
| self._zonetoken = jsonobj['createzoneresponse']['zone']['zonetoken'] |
| print "Zone %s is created"%self._zonename |
| print "zone=%s"%self._zonetoken |
| #self.createPod() |
| return self._zoneid |
| |
| |
| def createPod(self): |
| self._podname = "POD%04d"%self._zonenum |
| self._clustername = "CLUSTER%04d"%self._zonenum |
| jsonresult = self._api.GET({'command': 'createPod', 'zoneId':self._zoneid, |
| 'name':self._podname, 'gateway':'192.168.1.1', 'netmask':'255.255.255.0', |
| 'startIp':'192.168.1.100', 'endIp':'192.168.1.150'}) |
| if jsonresult is None: |
| print "Failed to create pod" |
| return 2 |
| jsonobj = json.loads(jsonresult) |
| podid = jsonobj['createpodresponse']['pod']['id'] |
| jsonresult = self._api.GET({'command': 'addCluster', 'zoneId':self._zoneid, |
| 'clustername':self._clustername, 'podId':podid, 'hypervisor':'KVM', |
| 'clustertype':'CloudManaged'}) |
| if jsonresult is None: |
| print "Failed to create cluster" |
| return 3 |
| jsonobj = json.loads(jsonresult) |
| clusterid = jsonobj['addclusterresponse']['cluster'][0]['id'] |
| print "pod=%s"%podid |
| print "cluster=%s"%clusterid |
| |