def list_env(): environments = Environment.list_all() for env in environments: print "Env: %s" % env.name print "DNS: %s" % socket.getfqdn() for node in env.get_nodes(): if node.is_admin: print "admin node ip: %s" % node.get_ip_address_by_network_name( 'admin')
def dnsmasq_file_output(): environments = Environment.list_all() print "# fuel-devops dnsmasq output:" print "# last update UTC: %s" % datetime.datetime.utcnow() for env in environments: for node in env.get_nodes(): if node.is_admin: #dnsmasq format: print("server=/{0}.{1}/{2}".format( env.name, socket.getfqdn(), node.get_ip_address_by_network_name('admin')))
def update(): from os import environ from devops.models import Environment environ.setdefault("DJANGO_SETTINGS_MODULE", "devops.settings") with open("hosts.pp", "w") as pp: for e in Environment.list_all(): ip = e.nodes().admin.get_ip_address_by_network_name(e.admin_net) pp.write("host {{ '{}': ip => '{}' }}\n".format(e.name, ip)) local("sudo puppet apply hosts.pp")
def _create_env_from_config(self, config): env_name = config['template']['devops_settings']['env_name'] for env in Environment.list_all(): if env.name == env_name: print("Please, set another environment name") raise SystemExit() self.env = Environment.create_environment(config) self.env.define() # Start all l2 network devices for group in self.env.get_groups(): for net in group.get_l2_network_devices(): net.start()
def do_list(self): env_list = Environment.list_all().values("name", "created") columns = [] for env in env_list: column = collections.OrderedDict({"NAME": env["name"]}) if self.params.list_ips: cur_env = Environment.get(name=env["name"]) admin_ip = "" if "admin" in [node.name for node in cur_env.get_nodes()]: admin_ip = cur_env.get_node(name="admin").get_ip_address_by_network_name("admin") column["ADMIN IP"] = admin_ip if self.params.timestamps: column["CREATED"] = env["created"].strftime("%Y-%m-%d_%H:%M:%S") columns.append(column) self.print_table(headers="keys", columns=columns)
def do_create(self): env_name = self.params.name for env in Environment.list_all(): if env.name == env_name: print("Please, set another environment name") raise SystemExit() self.env = Environment.create(env_name) networks, prefix = self.params.net_pool.split(":") Network.default_pool = Network.create_network_pool(networks=[ipaddr.IPNetwork(networks)], prefix=int(prefix)) networks = Network.create_networks(environment=self.env) admin_node = self.admin_add(networks=networks) self.do_slave_add(force_define=False) self.env.define() admin_node.disk_devices.get(device="cdrom").volume.upload(self.params.iso_path) for net in self.env.get_networks(): net.start()
def do_list(self): env_list = Environment.list_all().values('name', 'created') columns = [] for env in env_list: column = collections.OrderedDict({'NAME': env['name']}) if self.params.list_ips: cur_env = Environment.get(name=env['name']) admin_ip = '' if 'admin' in [node.name for node in cur_env.get_nodes()]: admin_ip = (cur_env.get_node( name='admin').get_ip_address_by_network_name('admin')) column['ADMIN IP'] = admin_ip if self.params.timestamps: column['CREATED'] = env['created'].strftime( '%Y-%m-%d_%H:%M:%S') columns.append(column) self.print_table(headers="keys", columns=columns)
def do_create(self): env_name = self.params.name for env in Environment.list_all(): if env.name == env_name: print("Please, set another environment name") raise SystemExit() self.env = Environment.create(env_name) networks, prefix = self.params.net_pool.split(':') Network.default_pool = Network.create_network_pool( networks=[ipaddr.IPNetwork(networks)], prefix=int(prefix)) networks = Network.create_networks(environment=self.env) admin_node = self.admin_add(networks=networks) self.do_slave_add(force_define=False) self.env.define() admin_node.disk_devices.get(device='cdrom').volume.upload( self.params.iso_path) for net in self.env.get_networks(): net.start()
def do_list(self): env_list = Environment.list_all().values('name', 'created') columns = [] for env in env_list: column = collections.OrderedDict({'NAME': env['name']}) if self.params.list_ips: cur_env = Environment.get(name=env['name']) admin_ip = '' if 'admin' in [node.name for node in cur_env.get_nodes()]: admin_ip = (cur_env.get_node(name='admin'). get_ip_address_by_network_name('admin')) column['ADMIN IP'] = admin_ip if self.params.timestamps: column['CREATED'] = env['created'].strftime( '%Y-%m-%d_%H:%M:%S') columns.append(column) self.print_table(headers="keys", columns=columns)
def tearDown(self): for environment in Environment.list_all(): environment.erase()
nodes=[] for node in env.get_nodes(): if node.name =='admin' or not admin_only: nd={'env':env.name, 'node': node.name, 'interfaces': node_interfaces(node), 'state': libvirt_vm_state("{}_{}".format(env.name,node.name))} nodes.append(nd) return nodes import sys if len(sys.argv) > 1: output_file = sys.argv[1] else: output_file = '/dev/stdout' conn=libvirt.openReadOnly(None) results=[] for env in Environment.list_all(): # nodes=env_nodes(env, admin_only=True) nodes=env_nodes(env, admin_only=False) if len(nodes) >0: results.append(nodes) with open(output_file, 'w') as f: json.dump({'lab': gethostname(), 'updated': datetime.utcnow().isoformat(), 'environments': results} ,f)