Astute deployment in minimal, simple, full

This commit is contained in:
monroid 2013-05-17 13:35:19 +04:00
parent 92f9e6d9e7
commit 6d3de54e55
9 changed files with 98 additions and 44 deletions

View File

@ -1,11 +1,20 @@
import unittest
from fuel_test.cobbler.vm_test_case import CobblerTestCase
from fuel_test.config import Config
from fuel_test.helpers import write_config
from fuel_test.manifest import Manifest, Template
from fuel_test.settings import CREATE_SNAPSHOTS
from fuel_test.settings import CREATE_SNAPSHOTS, ASTUTE_USE
class FullTestCase(CobblerTestCase):
def test_full(self):
def deploy(self):
if ASTUTE_USE:
self.prepare_astute()
self.deploy_by_astute()
else:
self.deploy_one_by_one()
def deploy_one_by_one(self):
manifest = Manifest().generate_openstack_manifest(
template=Template.full(),
ci=self.ci(),
@ -26,6 +35,30 @@ class FullTestCase(CobblerTestCase):
self.validate(self.nodes().controllers[:1], 'puppet agent --test 2>&1')
self.validate(self.nodes().computes, 'puppet agent --test 2>&1')
def deploy_by_astute(self):
self.remote().check_stderr("astute -f /root/astute.yaml")
def prepare_astute(self):
config = Config().generate(
ci=self.ci(),
nodes=self.nodes(),
template=Template.full(),
quantums=self.nodes().quantums,
swift=False,
loopback=False,
use_syslog=False,
quantum=True
)
config_path = "/root/config.yaml"
write_config(self.remote(), config_path, str(config))
self.remote().check_call("cobbler_system -f %s" % config_path)
self.remote().check_stderr("openstack_system -c %s -o /etc/puppet/manifests/site.pp -a /root/astute.yaml" % config_path)
def test_full(self):
self.deploy()
if CREATE_SNAPSHOTS:
self.environment().snapshot('full', force=True)

View File

@ -3,7 +3,7 @@ from fuel_test.ci.ci_vm import CiVM
from fuel_test.cobbler.vm_test_case import CobblerTestCase
from fuel_test.config import Config
from fuel_test.helpers import write_config
from fuel_test.manifest import Template
from fuel_test.manifest import Template, Manifest
from fuel_test.settings import CREATE_SNAPSHOTS, ASTUTE_USE
@ -13,30 +13,39 @@ class MinimalTestCase(CobblerTestCase):
self.prepare_astute()
self.deploy_by_astute()
else:
pass
#self.deploy_one_by_one()
self.deploy_one_by_one()
def deploy_one_by_one(self):
manifest = Manifest().generate_openstack_manifest(
template=Template.minimal(),
ci=self.ci(),
controllers=self.nodes().controllers,
quantums=self.nodes().quantums,
quantum=True
)
Manifest().write_manifest(remote=self.remote(), manifest=manifest)
self.validate(self.nodes().controllers[:1], 'puppet agent --test')
self.validate(self.nodes().controllers[1:], 'puppet agent --test')
self.validate(self.nodes().controllers[:1], 'puppet agent --test')
self.validate(self.nodes().computes, 'puppet agent --test')
def deploy_by_astute(self):
self.remote().check_stderr("astute -f astute.yaml")
self.remote().check_stderr("astute -f /root/astute.yaml")
def prepare_astute(self):
config = Config().generate(
template=Template.minimal(),
ci=self.ci(),
nodes = self.ci().nodes(),
nodes = self.nodes().controllers + self.nodes().computes,
quantums=self.nodes().quantums,
quantum=True,
cinder_nodes=['controller']
)
config_path = "/root/config.yaml"
write_config(self.remote(), config_path, str(config))
self.remote().check_stderr("openstack_system -c config.yaml -o /etc/puppet/manifests/site.pp -a astute.yaml")
self.remote().check_call("cobbler_system -f %s" % config_path)
self.remote().check_stderr("openstack_system -c %s -o /etc/puppet/manifests/site.pp -a /root/astute.yaml" % config_path)
def test_minimal(self):
self.deploy()

View File

@ -37,13 +37,14 @@ class SimpleTestCase(CobblerTestCase):
config = Config().generate(
template=Template.simple(),
ci=self.ci(),
nodes = self.ci().nodes(),
nodes = self.ci().nodes().computes + [self.ci().nodes().controllers[0]],
quantum=True,
cinder_nodes=['controller']
)
config_path = "/root/config.yaml"
write_config(self.remote(), config_path, str(config))
self.remote().check_stderr("openstack_system -c config.yaml -o /etc/puppet/manifests/site.pp -a astute.yaml")
self.remote().check_call("cobbler_system -f %s" % config_path)
self.remote().check_stderr("openstack_system -c %s -o /etc/puppet/manifests/site.pp -a /root/astute.yaml" % config_path)
def test_simple(self):
self.deploy()

View File

@ -9,7 +9,7 @@ from fuel_test.cobbler.cobbler_client import CobblerClient
from fuel_test.config import Config
from fuel_test.helpers import tcp_ping, udp_ping, add_to_hosts, await_node_deploy, write_config
from fuel_test.manifest import Manifest
from fuel_test.settings import OS_FAMILY, CLEAN, USE_ISO, INTERFACES, PARENT_PROXY
from fuel_test.settings import OS_FAMILY, CLEAN, USE_ISO, INTERFACES, PARENT_PROXY, DOMAIN_NAME
class CobblerTestCase(BaseTestCase):
@ -53,11 +53,8 @@ class CobblerTestCase(BaseTestCase):
def prepare_cobbler_environment(self):
self.deploy_cobbler()
if USE_ISO:
self.configure_cobbler(self.ci().nodes().masters[0])
else:
if not USE_ISO:
self.configure_cobbler(self.ci().nodes().cobblers[0])
#self.deploy_stomp_node()
self.deploy_nodes()
def deploy_cobbler(self):
@ -123,7 +120,7 @@ class CobblerTestCase(BaseTestCase):
ks_meta=Config().get_ks_meta('master.your-domain-name.com',
stomp_name),
name=node_name,
hostname=node_name + ".your-domain-name.com",
hostname=node_name,
name_servers=cobbler.get_ip_address_by_network_name('internal'),
name_servers_search="your-domain-name.com",
profile=profile,
@ -135,7 +132,7 @@ class CobblerTestCase(BaseTestCase):
"macaddress-eth1": str(node_mac1),
"ipaddress-eth1": str(node_ip),
"netmask-eth1": str(net_mask),
"dnsname-eth1": node_name + ".your-domain-name.com",
"dnsname-eth1": node_name + DOMAIN_NAME,
"static-eth1": "1",
"macaddress-eth2": str(node_mac2),
"static-eth2": "1"
@ -178,7 +175,7 @@ class CobblerTestCase(BaseTestCase):
remote,
master.get_ip_address_by_network_name('internal'),
master.name,
master.name + ".your-domain-name.com")
master.name + DOMAIN_NAME)
self.environment().snapshot('cobbler-configured', force=True)

View File

@ -1,6 +1,6 @@
import yaml
from fuel_test.manifest import Manifest
from fuel_test.settings import CURRENT_PROFILE, PUPPET_VERSION, INTERFACE_ORDER, INTERFACES
from fuel_test.settings import CURRENT_PROFILE, PUPPET_VERSION, INTERFACE_ORDER, INTERFACES, DOMAIN_NAME
class Config():
@ -38,7 +38,7 @@ class Config():
quantum, swift, loopback, use_syslog, cinder_nodes):
if not quantums: quantums = []
node_configs = Manifest().generate_node_configs_list(nodes)
node_configs = Manifest().generate_node_configs_list(ci, nodes)
master = ci.nodes().masters[0]
@ -54,7 +54,7 @@ class Config():
"internal_netmask": ci.internal_net_mask(),
"internal_virtual_ip": ci.internal_virtual_ip(),
"mirror_type": Manifest().mirror_type(),
"nagios_master": "%s.your-domain-name.com" % nodes.controllers[0].name,
"nagios_master": ci.nodes().controllers[0].name + DOMAIN_NAME,
"network_manager": "nova.network.manager.FlatDHCPManager",
"nv_physical_volumes": ["/dev/sdb"],
"private_interface": Manifest().private_interface(),
@ -84,7 +84,7 @@ class Config():
"name-servers-search": "your-domain-name.com",
"profile": CURRENT_PROFILE}
ksmeta = self.get_ks_meta("%s.your-domain-name.com" % ci.nodes().masters[0].name, ci.nodes().masters[0].name)
ksmeta = self.get_ks_meta(ci.nodes().masters[0].name + DOMAIN_NAME, ci.nodes().masters[0].name)
config.update({"ksmeta": ksmeta})
@ -123,7 +123,7 @@ class Config():
"static": 1,
"ip-address": str(node.get_ip_address_by_network_name('internal')),
"netmask": ci.internal_net_mask(),
"dns-name": "%s.your-domain-name.com" % node.name,
"dns-name": node.name + DOMAIN_NAME,
"management": "1"
}
}

View File

@ -2,7 +2,7 @@ from ipaddr import IPNetwork
import re
from fuel_test.helpers import load, write_config
from fuel_test.root import root
from fuel_test.settings import INTERFACES, TEST_REPO
from fuel_test.settings import INTERFACES, TEST_REPO, DOMAIN_NAME
class Template(object):
@ -149,21 +149,21 @@ class Manifest(object):
node_dict.update({'mountpoints': '1 2\n 2 1'})
return node_dict
def generate_node_configs_list(self, nodes):
def generate_node_configs_list(self, ci, nodes):
zones = range(1, 50)
node_configs = []
for node in nodes.computes: node_configs.append(self.describe_node(node, 'compute'))
for node in nodes.controllers[:1]: node_configs.append(
self.describe_swift_node(node, 'primary-controller', zones.pop()))
for node in nodes.controllers[1:]: node_configs.append(self.describe_swift_node(node, 'controller', zones.pop()))
for node in nodes.storages: node_configs.append(self.describe_swift_node(node, 'storage', zones.pop()))
for node in nodes.proxies[:1]: node_configs.append(self.describe_node(node, 'primary-swift-proxy'))
for node in nodes.proxies[1:]: node_configs.append(self.describe_node(node, 'swift-proxy'))
for node in nodes.quantums: node_configs.append(self.describe_node(node, 'quantum'))
for node in nodes.masters: node_configs.append(self.describe_node(node, 'master'))
for node in nodes.cobblers: node_configs.append(self.describe_node(node, 'cobbler'))
for node in nodes.stomps: node_configs.append(self.describe_node(node, 'stomp'))
for node in nodes:
if node in ci.nodes().computes: node_configs.append(self.describe_node(node, 'compute'))
elif node in ci.nodes().controllers[:1]: node_configs.append(self.describe_swift_node(node, 'primary-controller', zones.pop()))
elif node in ci.nodes().controllers[1:]: node_configs.append(self.describe_swift_node(node, 'controller', zones.pop()))
elif node in ci.nodes().storages: node_configs.append(self.describe_swift_node(node, 'storage', zones.pop()))
elif node in ci.nodes().proxies[:1]: node_configs.append(self.describe_node(node, 'primary-swift-proxy'))
elif node in ci.nodes().proxies[1:]: node_configs.append(self.describe_node(node, 'swift-proxy'))
elif node in ci.nodes().quantums: node_configs.append(self.describe_node(node, 'quantum'))
elif node in ci.nodes().masters: node_configs.append(self.describe_node(node, 'master'))
elif node in ci.nodes().cobblers: node_configs.append(self.describe_node(node, 'cobbler'))
elif node in ci.nodes().stomps: node_configs.append(self.describe_node(node, 'stomp'))
return node_configs
@ -228,10 +228,15 @@ class Manifest(object):
enable_test_repo=TEST_REPO,
)
def generate_openstack_manifest(self, template, ci,
controllers, quantums, proxies=None,
use_syslog=True, quantum=True,
loopback=True, cinder=True,
def generate_openstack_manifest(self, template,
ci,
controllers,
quantums,
proxies=None,
use_syslog=True,
quantum=True,
loopback=True,
cinder=True,
cinder_nodes=None,
quantum_netnode_on_cnt=True,
swift=True,
@ -252,10 +257,10 @@ class Manifest(object):
use_syslog=use_syslog,
cinder=cinder,
ntp_servers=['pool.ntp.org', ci.internal_router()],
nagios_master=controllers[0].name + '.your-domain-name.com',
nagios_master=controllers[0].name + DOMAIN_NAME,
cinder_nodes=cinder_nodes,
external_ipinfo=self.external_ip_info(ci, quantums),
nodes=self.generate_node_configs_list(ci),
nodes=self.generate_node_configs_list(ci, ci.nodes()),
dns_nameservers=self.generate_dns_nameservers_list(ci),
default_gateway=ci.public_router(),
enable_test_repo=TEST_REPO,

View File

@ -122,3 +122,4 @@ PROFILES_COBBLER_COMMON = {
ASTUTE_USE = os.environ.get('ASTUTE_USE', 'true') == 'true'
CURRENT_PROFILE = PROFILES_COBBLER_COMMON.get(OS_FAMILY)
DOMAIN_NAME = os.environ.get('DOMAIN_NAME', '.your-domain-name.com')

View File

@ -15,7 +15,7 @@ class TestConfig(BaseTestCase):
def test_generate_minimal(self):
print Config().generate(
ci=self.ci(),
nodes = self.ci().nodes().controllers + self.ci().nodes().computes,
nodes = self.nodes().controllers + self.nodes().computes,
template=Template.minimal(),
quantums=self.nodes().quantums,
swift=False,
@ -37,6 +37,7 @@ class TestConfig(BaseTestCase):
def test_generate_full(self):
print Config().generate(
ci=self.ci(),
nodes=self.nodes().controllers,
template=Template.full(),
quantums=self.nodes().quantums,
swift=False,
@ -47,21 +48,26 @@ class TestConfig(BaseTestCase):
def test_generate_simple(self):
print Config().generate(
ci=self.ci(),
nodes=self.nodes().storages + self.nodes().proxies + [self.nodes().controllers[0]],
template=Template.simple())
def test_generate_single(self):
print Config().generate(
ci=self.ci(),
nodes=[self.nodes().computes[0]],
template=Template.single())
def test_generate_stomp(self):
print Config().generate(
ci=self.ci(),
nodes=[self.nodes().computes[0]],
template=Template.stomp())
if __name__ == '__main__':
unittest.main()

View File

@ -41,7 +41,9 @@ class TestManifest(BaseTestCase):
def test_generate_simple(self):
Manifest().generate_openstack_manifest(
ci=self.ci(), template=Template.simple(),
controllers=self.nodes().controllers, ha=False, quantums=self.nodes().quantums)
controllers=self.nodes().controllers,
ha=False,
quantums=self.nodes().quantums)
def test_generate_single(self):
Manifest().generate_openstack_single_manifest(