Пример #1
0
    def test_object_not_found_exceptions(self):
        with self.assertRaises(DevopsObjNotFound):
            Environment.get(name='other-env')

        with self.assertRaises(DevopsObjNotFound):
            self.env.get_group(name='other-rack')

        with self.assertRaises(DevopsObjNotFound):
            self.env.get_address_pool(name='other-pool')

        with self.assertRaises(DevopsObjNotFound):
            self.env.get_node(name='other-node')

        group = self.env.get_group(name='rack-01')

        with self.assertRaises(DevopsObjNotFound):
            group.get_l2_network_device(name='other-device')

        with self.assertRaises(DevopsObjNotFound):
            group.get_network_pool(name='other-pool')

        with self.assertRaises(DevopsObjNotFound):
            group.get_node(name='other-node')

        with self.assertRaises(DevopsObjNotFound):
            Group.get(name='other-group')

        node = self.env.get_node(name='slave-01')

        with self.assertRaises(DevopsObjNotFound):
            node.get_volume(name='other-volume')
Пример #2
0
 def d_env(self):
     if self._virt_env is None:
         if not self._config:
             try:
                 return Environment.get(name=settings.ENV_NAME)
             except Exception:
                 self._virt_env = Environment.describe_environment(boot_from=settings.ADMIN_BOOT_DEVICE)
                 self._virt_env.define()
         else:
             try:
                 return Environment.get(name=self._config["template"]["devops_settings"]["env_name"])
             except Exception:
                 self._virt_env = Environment.create_environment(full_config=self._config)
                 self._virt_env.define()
     return self._virt_env
Пример #3
0
 def get_env(cls, env_name):
     """Find and return env by name."""
     try:
         return EnvProxy(Environment.get(name=env_name))
     except Exception as e:
         logger.error(
             'failed to find the last created environment{}'.format(e))
         raise
 def get_env(cls, env_name):
     """Find and return env by name."""
     try:
         return EnvProxy(Environment.get(name=env_name))
     except Exception as e:
         logger.error(
             'failed to find the last created environment{}'.format(e))
         raise
Пример #5
0
 def d_env(self):
     if self._virtual_environment is None:
         try:
             return Environment.get(name=settings.ENV_NAME)
         except Exception:
             self._virtual_environment = Environment.describe_environment(
                 boot_from=settings.ADMIN_BOOT_DEVICE)
             self._virtual_environment.define()
     return self._virtual_environment
Пример #6
0
 def d_env(self):
     if self._virt_env is None:
         if not self._config:
             try:
                 return Environment.get(name=settings.ENV_NAME)
             except Exception:
                 self._virt_env = Environment.describe_environment(
                     boot_from=settings.ADMIN_BOOT_DEVICE)
                 self._virt_env.define()
         else:
             try:
                 return Environment.get(name=self._config['template']
                                        ['devops_settings']['env_name'])
             except Exception:
                 self._virt_env = Environment.create_environment(
                     full_config=self._config)
                 self._virt_env.define()
     return self._virt_env
Пример #7
0
 def d_env(self):
     if self._virtual_environment is None:
         try:
             return Environment.get(name=settings.ENV_NAME)
         except Exception:
             self._virtual_environment = Environment.describe_environment(
                 boot_from=settings.ADMIN_BOOT_DEVICE)
             self._virtual_environment.define()
     return self._virtual_environment
Пример #8
0
 def __init__(self, args):
     self.args = args
     self.params = self.get_params()
     if getattr(self.params, "snapshot-name", None):
         self.snapshot_name = getattr(self.params, "snapshot-name")
     if getattr(self.params, "name", None) and getattr(self.params, "command", None) != "create":
         try:
             self.env = Environment.get(name=self.params.name)
         except Environment.DoesNotExist:
             self.env = None
             sys.exit("Enviroment with name {} doesn't exist." "".format(self.params.name))
Пример #9
0
 def __init__(self, args):
     self.args = args
     self.params = self.get_params()
     if getattr(self.params, 'snapshot-name', None):
         self.snapshot_name = getattr(self.params, 'snapshot-name')
     if (getattr(self.params, 'name', None) and
             getattr(self.params, 'command', None) != 'create'):
         try:
             self.env = Environment.get(name=self.params.name)
         except DevopsObjNotFound:
             self.env = None
             sys.exit("Enviroment with name {} doesn't exist."
                      "".format(self.params.name))
Пример #10
0
 def __init__(self, args):
     self.args = args
     self.params = self.get_params()
     if getattr(self.params, 'snapshot-name', None):
         self.snapshot_name = getattr(self.params, 'snapshot-name')
     if (getattr(self.params, 'name', None)
             and getattr(self.params, 'command', None) != 'create'):
         try:
             self.env = Environment.get(name=self.params.name)
         except Environment.DoesNotExist:
             self.env = None
             sys.exit("Enviroment with name {} doesn't exist."
                      "".format(self.params.name))
Пример #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)
    def get_env(cls, env_name=''):
        """Find and return env by name.

        If name is empty will try to find the last created env.
        Will return None is failed to find any env at all.
        """
        env = None
        try:
            if env_name:
                env = Environment.get(name=env_name)
            else:
                env = Environment.objects.all().order_by('created').last()
        except Exception as e:
            logger.error('failed to find the last created environment{}'.
                         format(e))
            raise
        return env
Пример #13
0
    def do_list(self):
        env_list = Environment.list().values('name', 'created')
        for env in env_list:
            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'))
                print('{0}\t{1}'.format(env['name'], admin_ip))
            elif self.params.timestamps:
                created_text = env['created'].strftime('%Y-%m-%d_%H:%M:%S')
                print('{0} {1}'.format(env['name'], created_text))
            else:
                print(env['name'])

        return env_list
Пример #14
0
    def do_list(self):
        env_list = Environment.list().values('name', 'created')
        for env in env_list:
            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'))
                print('{0}\t{1}'.format(env['name'], admin_ip))
            elif self.params.timestamps:
                created_text = env['created'].strftime('%Y-%m-%d_%H:%M:%S')
                print('{0} {1}'.format(env['name'], created_text))
            else:
                print(env['name'])

        return env_list
Пример #15
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)
Пример #16
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)
Пример #17
0
def setup_env_network(fuel_port=8000):
    from os import environ
    environ.setdefault("DJANGO_SETTINGS_MODULE", "devops.settings")

    from devops.models import Environment
    s = Environment.get(name=env.host)
    for net in s.get_networks():
        print net.name, net.ip, net.netmask, net.default_gw

    def get_net(name):
        return next(x for x in s.get_networks() if x.name == name)

    def make_ip(ip, last_octet):
        ip = str(ip.ip).split('.')
        ip[3] = str(last_octet)
        return '.'.join(ip)

    for cluster in clusters('{}:{}'.format(env.host, fuel_port), 'admin',
                            'admin'):
        net = get_network('{}:{}'.format(env.host, fuel_port), 'admin',
                          'admin', cluster['id'])

        public = get_net('public')
        management = get_net('management')
        private = get_net('private')

        net['public_vrouter_vip'] = make_ip(public, 2)
        net['public_vip'] = make_ip(public, 3)

        net['vips']['vrouter_pub']['ipaddr'] = make_ip(public,
                                                       2)  # "10.21.1.2",
        net['vips']['management']['ipaddr'] = make_ip(management,
                                                      2)  # "10.21.2.2"
        net['vips']['public']['ipaddr'] = make_ip(public, 3)  # "10.21.1.3",
        net['vips']['vrouter']['ipaddr'] = make_ip(management,
                                                   2)  # "10.21.2.1",

        net['networking_parameters']['floating_ranges'] = [[
            make_ip(public, 130), make_ip(public, 254)
        ]]

        # "internal_gateway": "10.21.3.1",
        net['networking_parameters']['internal_gateway'] = make_ip(private, 1)

        # "internal_cidr": "10.21.3.0/24",
        net['networking_parameters']['internal_cidr'] = str(
            get_net('private').ip)

        for network in net['networks']:

            if network['name'] == 'private':
                continue

            try:
                kvm_net = get_net(network['name'])
            except StopIteration:
                continue

            network['ip_ranges'] = [[
                make_ip(kvm_net, 1), make_ip(public, 254)
            ]]
            network['cidr'] = str(kvm_net.ip)

            if network['name'] == 'public':
                network['ip_ranges'] = [[
                    make_ip(kvm_net, 2),
                    make_ip(kvm_net, 126)
                ]]

            network['gateway'] = make_ip(kvm_net, 1)

        net['management_vrouter_vip'] = make_ip(management, 1)  # "10.21.2.1",
        net['management_vip'] = make_ip(management, 2)  # "10.21.2.2",

        pprint.pprint(net)
        put_network('{}:{}'.format(env.host, fuel_port), 'admin', 'admin',
                    cluster['id'], net)
Пример #18
0
 def __init__(self):
     self.params = self.get_params()
     if (getattr(self.params, 'name', None)
             and getattr(self.params, 'command', None) != 'create'):
         self.env = Environment.get(name=self.params.name)
Пример #19
0
 def __init__(self, args):
     self.args = args
     self.params = self.get_params()
     if (getattr(self.params, 'name', None) and
             getattr(self.params, 'command', None) != 'create'):
         self.env = Environment.get(name=self.params.name)
Пример #20
0
def setup_env_network(fuel_port=8000):
    from os import environ
    environ.setdefault("DJANGO_SETTINGS_MODULE", "devops.settings")

    from devops.models import Environment
    s = Environment.get(name=env.host)
    for net in s.get_networks():
        print net.name, net.ip, net.netmask, net.default_gw

    def get_net(name):
        return next(x for x in s.get_networks() if x.name == name)

    def make_ip(ip, last_octet):
        ip = str(ip.ip).split('.')
        ip[3] = str(last_octet)
        return '.'.join(ip)

    for cluster in clusters('{}:{}'.format(env.host, fuel_port), 'admin', 'admin'):
        net = get_network('{}:{}'.format(env.host, fuel_port), 'admin', 'admin', cluster['id'])

        public = get_net('public')
        management = get_net('management')
        private = get_net('private')

        net['public_vrouter_vip'] = make_ip(public, 2)
        net['public_vip'] = make_ip(public, 3)



        net['vips']['vrouter_pub']['ipaddr'] = make_ip(public, 2)  # "10.21.1.2",
        net['vips']['management']['ipaddr'] = make_ip(management, 2)  # "10.21.2.2"
        net['vips']['public']['ipaddr'] = make_ip(public, 3) # "10.21.1.3",
        net['vips']['vrouter']['ipaddr'] = make_ip(management, 2)  # "10.21.2.1",

        net['networking_parameters']['floating_ranges'] = [
          [
             make_ip(public, 130), make_ip(public, 254)
          ]
        ]

        # "internal_gateway": "10.21.3.1",
        net['networking_parameters']['internal_gateway'] = make_ip(private, 1)

        # "internal_cidr": "10.21.3.0/24",
        net['networking_parameters']['internal_cidr'] = str(get_net('private').ip)

        for network in net['networks']:

            if network['name'] == 'private':
                continue

            try:
                kvm_net = get_net(network['name'])
            except StopIteration:
                continue

            network['ip_ranges'] = [
              [
                 make_ip(kvm_net, 1), make_ip(public, 254)
              ]
            ]
            network['cidr'] = str(kvm_net.ip)

            if network['name'] == 'public':
                 network['ip_ranges'] = [
                              [
                                 make_ip(kvm_net, 2), make_ip(kvm_net, 126)
                              ] ]

            network['gateway'] = make_ip(kvm_net, 1)

        net['management_vrouter_vip'] = make_ip(management, 1)  # "10.21.2.1",
        net['management_vip'] = make_ip(management, 2)  # "10.21.2.2",

        pprint.pprint(net)
        put_network('{}:{}'.format(env.host, fuel_port), 'admin', 'admin', cluster['id'], net)
Пример #21
0
def get_env():
    env = os.environ
    env_name = env['ENV_NAME']
    return Environment.get(name=env_name)
def _attach_diagnostic_snapshot():
    _configure_log()

    # FIXME(schipiga): include already installed packages for import visibility
    sys.path.extend(['/usr/lib/python2.7',
                     '/usr/lib/python2.7/dist-packages',
                     '/usr/local/lib/python2.7/dist-packages'])

    try:
        from devops.models import Environment
        from fuelclient import client, fuelclient_settings
        from fuelclient.objects import SnapshotTask
    except ImportError as e:
        LOGGER.error(e)
        return

    job_name = os.environ.get('JOB_NAME')
    if not job_name:
        LOGGER.info("Diagnostic snapshot is attached only on CI server")
        return

    env_name = os.environ.get('ENV_NAME')
    if not env_name:
        LOGGER.error("Environment name isn't specified at build")
        return

    try:
        env = Environment.get(name=env_name)
        master = env.get_nodes(role__in=('fuel_master', 'admin'))[0]
        admin_ip = master.get_ip_address_by_network_name('admin')

        os.environ.update({
            'SERVER_ADDRESS': admin_ip,
            'OS_USERNAME': '******',
            'OS_PASSWORD': '******',
        })
        fuelclient_settings._SETTINGS = None
        client.APIClient.__init__()

        config = SnapshotTask.get_default_config()
        task = SnapshotTask.start_snapshot_task(config)

        LOGGER.info('Starting snapshot creating...')
        task.wait()
        if task.status != 'ready':
            LOGGER.error("Snapshot creating is finished with error: {}".format(
                task.data["message"]))
            return
        LOGGER.info("Snapshot creating is finished")

        response = requests.get(
            'http://{}:8000{}'.format(admin_ip, task.data["message"]),
            stream=True,
            headers={'x-auth-token': client.APIClient.auth_token})

        file_path = os.path.join(_reports_dir(), 'diagnostic_snapshot.tar.xz')
        with open(file_path, 'wb') as f:
            for chunk in response.iter_content(65536):
                if chunk:
                    f.write(chunk)
    except Exception as e:
        LOGGER.error(e)
Пример #23
0
def get_env():
    env = os.environ
    env_name = env['ENV_NAME']
    return Environment.get(name=env_name)