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')))
Esempio n. 3
0
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")
Esempio n. 4
0
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")
Esempio n. 5
0
    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()
Esempio n. 6
0
    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()
Esempio n. 7
0
    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)
Esempio n. 8
0
 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()
Esempio n. 9
0
    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)
Esempio n. 10
0
 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()
Esempio n. 11
0
    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)
Esempio n. 12
0
 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)
Esempio n. 14
0
 def tearDown(self):
     for environment in Environment.list_all():
         environment.erase()