Esempio n. 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')
Esempio n. 2
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
Esempio n. 3
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
Esempio n. 4
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. 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 test_network_pool(self):
     environment = Environment.create('test_env2')
     self.assertEqual('10.0.0.0/24', str(Network.network_create(
         environment=environment, name='internal', pool=None).ip_network))
     self.assertEqual('10.0.1.0/24', str(Network.network_create(
         environment=environment, name='external', pool=None).ip_network))
     self.assertEqual('10.0.2.0/24', str(Network.network_create(
         environment=environment, name='private', pool=None).ip_network))
     environment = Environment.create('test_env2')
     self.assertEqual('10.0.3.0/24', str(Network.network_create(
         environment=environment, name='internal', pool=None).ip_network))
     self.assertEqual('10.0.4.0/24', str(Network.network_create(
         environment=environment, name='external', pool=None).ip_network))
     self.assertEqual('10.0.5.0/24', str(Network.network_create(
         environment=environment, name='private', pool=None).ip_network))
Esempio n. 7
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
Esempio n. 8
0
 def test_network_pool(self):
     environment = Environment.create('test_env2')
     self.assertEqual('10.0.0.0/24', str(Network.network_create(
         environment=environment, name='internal', pool=None).ip_network))
     self.assertEqual('10.0.1.0/24', str(Network.network_create(
         environment=environment, name='external', pool=None).ip_network))
     self.assertEqual('10.0.2.0/24', str(Network.network_create(
         environment=environment, name='private', pool=None).ip_network))
     environment = Environment.create('test_env2')
     self.assertEqual('10.0.3.0/24', str(Network.network_create(
         environment=environment, name='internal', pool=None).ip_network))
     self.assertEqual('10.0.4.0/24', str(Network.network_create(
         environment=environment, name='external', pool=None).ip_network))
     self.assertEqual('10.0.5.0/24', str(Network.network_create(
         environment=environment, name='private', pool=None).ip_network))
Esempio n. 9
0
    def setUp(self):
        super(TestLibvirtVolume, self).setUp()

        self.sleep_mock = self.patch('devops.helpers.retry.sleep')

        self.open_mock = mock.mock_open(read_data='image_data')
        self.patch('devops.driver.libvirt.libvirt_driver.open',
                   self.open_mock, create=True)

        self.os_mock = self.patch('devops.helpers.helpers.os')
        Size = collections.namedtuple('Size', ['st_size'])
        self.file_sizes = {
            '/tmp/admin.iso': Size(st_size=500),
        }
        self.os_mock.stat.side_effect = self.file_sizes.get

        self.env = Environment.create('test_env')
        self.group = self.env.add_group(
            group_name='test_group',
            driver_name='devops.driver.libvirt.libvirt_driver',
            connection_string='test:///default',
            storage_pool_name='default-pool')

        self.node = self.group.add_node(
            name='test_node',
            role='default',
            architecture='i686',
            hypervisor='test',
        )

        self.d = self.group.driver
Esempio n. 10
0
 def test_create_node3(self):
     environment = Environment.create('test_env3')
     internal = Network.network_create(environment=environment,
                                       name='internal',
                                       pool=None)
     external = Network.network_create(environment=environment,
                                       name='external',
                                       pool=None)
     private = Network.network_create(environment=environment,
                                      name='private',
                                      pool=None)
     node = Node.node_create(name='test_node', environment=environment)
     Interface.interface_create(node=node, network=internal)
     Interface.interface_create(node=node, network=external)
     Interface.interface_create(node=node, network=private)
     volume = Volume.volume_get_predefined(
         '/var/lib/libvirt/images/disk-135824657433.qcow2')
     v3 = Volume.volume_create_child('test_vp892',
                                     backing_store=volume,
                                     environment=environment)
     v4 = Volume.volume_create_child('test_vp891',
                                     backing_store=volume,
                                     environment=environment)
     DiskDevice.node_attach_volume(node=node, volume=v3)
     DiskDevice.node_attach_volume(node, v4)
     environment.define()
Esempio n. 11
0
    def setUp(self):
        super(TestLibvirtVolume, self).setUp()

        self.sleep_mock = self.patch('devops.helpers.retry.sleep')

        self.open_mock = mock.mock_open(read_data='image_data')
        self.patch('devops.driver.libvirt.libvirt_driver.open',
                   self.open_mock,
                   create=True)

        self.os_mock = self.patch('devops.helpers.helpers.os')
        Size = collections.namedtuple('Size', ['st_size'])
        self.file_sizes = {
            '/tmp/admin.iso': Size(st_size=500),
        }
        self.os_mock.stat.side_effect = self.file_sizes.get

        self.env = Environment.create('test_env')
        self.group = self.env.add_group(group_name='test_group',
                                        driver_name='devops.driver.libvirt',
                                        connection_string='test:///default',
                                        storage_pool_name='default-pool')

        self.node = self.group.add_node(
            name='test_node',
            role='default',
            architecture='i686',
            hypervisor='test',
        )

        self.d = self.group.driver
Esempio n. 12
0
    def test_update_disks_from_snapshot_with_children(
            self, mock_has_snapshot, mock_volume_define,
            mock_libvirt_version,
            mock_get_snapshot, mock_create_snapshot):
        mock_has_snapshot.return_value = False
        mock_libvirt_version.return_value = 1002012
        volume_path_template = '/var/lib/libvirt/images/{0}'

        environment = Environment.create('test_env_extsnap')
        node = Node.node_create(name='test_node', environment=environment)
        vol_volume_name = factories.fuzzy_string()
        vol = Volume.volume_create(vol_volume_name,
                                   capacity=1000000000,
                                   format='qcow2',
                                   environment=environment)
        vol.uuid = volume_path_template.format(vol_volume_name)
        DiskDevice.node_attach_volume(node=node, volume=vol)
        environment.define()

        snap_name = factories.fuzzy_string('snap_')
        snap_description = factories.fuzzy_string('description_')
        snapshot_volume_name = '{0}.{1}'.format(vol_volume_name,
                                                snap_name)
        mock_get_snapshot.return_value = mock.Mock(
            get_type='external', children_num=1,
            disks={'sda': volume_path_template.format(snap_name)})

        node.snapshot(name=snap_name, description=snap_description,
                      external=True)
        vol1 = environment.get_volume(name=snapshot_volume_name)
        vol1.uuid = volume_path_template.format(snap_name)
        vol1.save()

        node._update_disks_from_snapshot(snap_name)
        self.assertEqual(node.disk_devices[0].volume, vol)
Esempio n. 13
0
    def setUp(self):
        super(TestLibvirtTemplate, self).setUp()

        # speed up retry
        self.sleep_mock = self.patch('time.sleep')

        # mock open
        self.open_mock = mock.mock_open(read_data='image_data')
        self.patch('devops.driver.libvirt.libvirt_driver.open',
                   self.open_mock, create=True)

        self.os_mock = self.patch('devops.helpers.helpers.os')
        self.os_mock.urandom = os.urandom
        # noinspection PyPep8Naming
        Size = collections.namedtuple('Size', ['st_size'])
        self.file_sizes = {
            '/tmp/admin.iso': Size(st_size=500),
        }
        self.os_mock.stat.side_effect = self.file_sizes.get

        # Create Environment
        self.full_conf = yaml.load(ENV_TMPLT)
        self.env = Environment.create_environment(self.full_conf)

        self.d = self.env.get_group(name='rack-01').driver
Esempio n. 14
0
    def setUp(self):
        super(TestLibvirtDriver, self).setUp()

        self.env = Environment.create('test_env')
        self.group = self.env.add_group(
            group_name='test_group',
            driver_name='devops.driver.libvirt.libvirt_driver',
            connection_string='test:///default')

        self.ap = self.env.add_address_pool(
            name='test_ap',
            net='172.0.0.0/16:24',
            tag=0,
            ip_reserved=dict(l2_network_device=1),
        )

        self.net_pool = self.group.add_network_pool(
            name='fuelweb_admin',
            address_pool_name='test_ap',
        )

        self.l2_net_dev = self.group.add_l2_network_device(
            name='test_l2_net_dev',
            address_pool='test_ap',
            forward=dict(mode='nat'),
        )

        self.d = self.group.driver
Esempio n. 15
0
    def test_external_snapshot_erase(
            self, mock_has_snapshot, mock_volume_define,
            mock_libvirt_version, mock_delete_snapshot,
            mock_get_snapshot, mock_create_snapshot):
        mock_has_snapshot.return_value = False
        mock_libvirt_version.return_value = 1002012
        mock_get_snapshot.return_value = mock.Mock(get_type='external',
                                                   children_num=0)

        environment = Environment.create('test_env_extsnap')
        node = Node.node_create(name='test_node', environment=environment)
        vol_volume_name = factories.fuzzy_string()
        vol = Volume.volume_create(vol_volume_name,
                                   capacity=1000000000,
                                   format='qcow2',
                                   environment=environment)
        DiskDevice.node_attach_volume(node=node, volume=vol)
        environment.define()

        snap_name = factories.fuzzy_string('snap_')
        snap_description = factories.fuzzy_string('description_')

        node.snapshot(name=snap_name, description=snap_description,
                      external=True)

        mock_has_snapshot.return_value = True

        node.erase_snapshot(snap_name)

        mock_delete_snapshot.assert_called_with(node=node, name=snap_name)
        self.assertEqual(node.disk_devices[0].volume, vol)
Esempio n. 16
0
    def test_external_snapshot_revert_with_children_revert_present(
            self, mock_revert_snapshot_recreate_disks,
            mock_revert_snapshot, mock_get_snapshot, mock_has_snapshot,
            mock_destroy, mock_update_disks_from_snapshot):
        revert_postfix = '-revert3'

        def get_snapshot(node, snapname):
            if snapname.endswith(revert_postfix):
                return mock.Mock(get_type='external', children_num=0)
            else:
                return mock.Mock(get_type='external', children_num=1)

        mock_has_snapshot.return_value = True
        mock_get_snapshot.side_effect = get_snapshot
        environment = Environment.create('test_env_extsnap')
        node = Node.node_create(name='test_node', environment=environment)
        environment.define()
        snapshot_name = factories.fuzzy_string('snap_')
        node.revert(name=snapshot_name, destroy=False)

        revert_snapshot_name = '{0}{1}'.format(snapshot_name, revert_postfix)
        mock_update_disks_from_snapshot.assert_called_with(
            revert_snapshot_name)
        mock_revert_snapshot_recreate_disks.assert_called_with(
            node, revert_snapshot_name)
        mock_revert_snapshot.assert_called_with(node=node,
                                                name=revert_snapshot_name)
Esempio n. 17
0
 def test_create_volume(self):
     environment = Environment.create('test_env3')
     volume = Volume.volume_get_predefined(
         '/var/lib/libvirt/images/disk-135824657433.qcow2')
     v3 = Volume.volume_create_child(
         'test_vp89', backing_store=volume, environment=environment)
     v3.define()
    def setUp(self):
        super(TestLibvirtL2NetworkDevice, self).setUp()

        self.env = Environment.create('test_env')
        self.group = self.env.add_group(
            group_name='test_group',
            driver_name='devops.driver.libvirt',
            connection_string='test:///default')

        self.ap = self.env.add_address_pool(
            name='test_ap',
            net='172.0.0.0/16:24',
            tag=0,
            ip_reserved=dict(l2_network_device='172.0.0.1'),
        )

        self.net_pool = self.group.add_network_pool(
            name='fuelweb_admin',
            address_pool_name='test_ap',
        )

        self.l2_net_dev = self.group.add_l2_network_device(
            name='test_l2_net_dev',
            forward=dict(mode='nat'),
            address_pool='test_ap',
        )

        self.d = self.group.driver
Esempio n. 19
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. 20
0
    def test_network_model(self):
        environment = Environment.create('test_env')
        node = Node.objects.create(
            group=None,
            name='test_node',
            role='default',
        )
        pool = IpNetworksPool(networks=[IPNetwork('10.1.0.0/24')], prefix=24)
        address_pool = AddressPool.address_pool_create(environment=environment,
                                                       name='internal',
                                                       pool=pool)
        l2_net_dev = L2NetworkDevice.objects.create(group=None,
                                                    address_pool=address_pool,
                                                    name='test_l2_dev')

        interface1 = Interface.interface_create(l2_network_device=l2_net_dev,
                                                node=node,
                                                label='eth0')

        assert interface1.model == 'virtio'
        interface2 = Interface.interface_create(l2_network_device=l2_net_dev,
                                                node=node,
                                                label='eth0',
                                                model='e1000')
        assert interface2.model == 'e1000'
Esempio n. 21
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. 22
0
    def test_snapshot_with_existing_name_force_delete(self, mock_has_snapshot,
                                                      mock_delete_snapshot,
                                                      mock_create_snapshot):
        mock_has_snapshot.return_value = True

        environment = Environment.create('test_env_extsnap')
        node = Node.node_create(name='test_node', environment=environment)
        environment.define()

        snap_name = factories.fuzzy_string('snap_')
        snap_description = factories.fuzzy_string('description_')

        node.snapshot(
            name=snap_name,
            force=True,
            description=snap_description,
            disk_only=True)

        self.assertEqual(mock_delete_snapshot.called, True)
        mock_delete_snapshot.assert_called_with(node=node, name=snap_name)
        mock_create_snapshot.assert_called_with(
            node=node,
            name=snap_name,
            description=snap_description,
            disk_only=True,
            external=False)
Esempio n. 23
0
 def test_node_creation(self):
     environment = Environment.create('test_env3')
     internal = Network.network_create(
         environment=environment, name='internal', pool=None)
     node = Node.node_create(name='test_node', environment=environment)
     Interface.interface_create(node=node, network=internal)
     environment.define()
Esempio n. 24
0
 def test_create_volume(self):
     environment = Environment.create('test_env3')
     volume = Volume.volume_get_predefined(
         '/var/lib/libvirt/images/disk-135824657433.qcow2')
     v3 = Volume.volume_create_child(
         'test_vp89', backing_store=volume, environment=environment)
     v3.define()
    def setUp(self):
        super(TestCloudImage, self).setUp()

        self.open_mock = mock.mock_open(read_data='image_data')
        self.patch('devops.driver.libvirt.libvirt_driver.open',
                   self.open_mock, create=True)

        self.os_mock = self.patch('devops.helpers.helpers.os')
        # noinspection PyPep8Naming
        Size = collections.namedtuple('Size', ['st_size'])
        self.file_sizes = {
            '/tmp/test/cloud_settings.iso': Size(st_size=1 * 1024 ** 3),
        }
        self.os_mock.stat.side_effect = self.file_sizes.get

        self.generate_cloud_image_settings_mock = self.patch(
            'devops.helpers.cloud_image_settings'
            '.generate_cloud_image_settings')

        self.volume_upload_mock = self.patch(
            'devops.driver.libvirt.Volume.upload')

        # Environment with a 'public' network

        self.env = Environment.create('test')
        self.group = self.env.add_group(
            group_name='test_group',
            driver_name='devops.driver.libvirt',
            connection_string='test:///default',
            storage_pool_name='default-pool')

        self.pub_ap = self.env.add_address_pool(
            name='public-pool01', net='10.109.0.0/16:24', tag=0,
            ip_reserved=dict(gateway=1, l2_network_device=1),
            ip_ranges=dict(default=[2, -2]))
        self.group.add_l2_network_device(
            name='public', address_pool='public-pool01')

        # Node connected to the 'public' network

        self.node = self.group.add_node(
            name='test-node',
            role='cloud-node',
            architecture='x86_64',
            hypervisor='test',
            cloud_init_volume_name='iso',
            cloud_init_iface_up='enp0s3')

        self.system_volume = self.node.add_volume(name='system', capacity=10)
        self.iso_volume = self.node.add_volume(name='iso', capacity=5)

        self.adm_iface = self.node.add_interface(
            label='enp0s3',
            l2_network_device_name='public',
            mac_address='64:b6:87:44:14:17',
            interface_model='e1000')

        self.node.add_network_config(
            label='enp0s3',
            networks=['public'])
Esempio n. 26
0
    def test_external_snapshot(
            self, mock_has_snapshot, mock_create_volume,
            mock_libvirt_version, mock_create_snapshot):
        mock_has_snapshot.return_value = False
        mock_libvirt_version.return_value = 1002012

        environment = Environment.create('test_env_extsnap')
        node = Node.node_create(name='test_node', environment=environment)
        vol_volume_name = factories.fuzzy_string()
        vol = Volume.volume_create(vol_volume_name,
                                   capacity=1000000000,
                                   format='qcow2',
                                   environment=environment)
        DiskDevice.node_attach_volume(node=node, volume=vol)
        environment.define()

        snap_name = factories.fuzzy_string('snap_')
        snap_description = factories.fuzzy_string('description_')

        node.snapshot(name=snap_name, description=snap_description,
                      external=True)

        mock_create_volume.assert_called_with(snap_name)
        mock_create_snapshot.assert_called_with(
            node=node, name=snap_name, description=snap_description,
            disk_only=False, external=True)
Esempio n. 27
0
    def test_external_snapshot_volume_creation(self, mock_volume_define):
        mock_volume_define.return_value = None

        environment = Environment.create('test_env_extsnap')
        node = Node.node_create(name='test_node', environment=environment)
        vol_volume_name = factories.fuzzy_string()
        vol = Volume.volume_create(vol_volume_name,
                                   capacity=1000000000,
                                   format='qcow2',
                                   environment=environment)
        DiskDevice.node_attach_volume(node=node, volume=vol)
        environment.define()

        snapshot_name = factories.fuzzy_string('snap_')
        snapshot_volume_name = '{0}.{1}'.format(vol_volume_name,
                                                snapshot_name)

        node.snapshot_create_volume(snapshot_name)

        vol1 = environment.get_volume(name=snapshot_volume_name)

        self.assertEqual(len(node.disk_devices), 1)
        self.assertEqual(vol1.name, snapshot_volume_name)
        self.assertEqual(vol1.format, 'qcow2')
        self.assertEqual(vol1.environment, environment)
        self.assertEqual(vol1.backing_store, vol)
        self.assertEqual(vol1, node.disk_devices[0].volume)
        mock_volume_define.assert_called_with(vol1)
Esempio n. 28
0
    def setUp(self):
        super(TestCloudImage, self).setUp()

        self.open_mock = mock.mock_open(read_data='image_data')
        self.patch('devops.driver.libvirt.libvirt_driver.open',
                   self.open_mock,
                   create=True)

        self.os_mock = self.patch('devops.helpers.helpers.os')
        # noinspection PyPep8Naming
        Size = collections.namedtuple('Size', ['st_size'])
        self.file_sizes = {
            '/tmp/test/cloud_settings.iso': Size(st_size=1 * 1024**3),
        }
        self.os_mock.stat.side_effect = self.file_sizes.get

        self.generate_cloud_image_settings_mock = self.patch(
            'devops.helpers.cloud_image_settings'
            '.generate_cloud_image_settings')

        self.volume_upload_mock = self.patch(
            'devops.driver.libvirt.Volume.upload')

        # Environment with a 'public' network

        self.env = Environment.create('test')
        self.group = self.env.add_group(group_name='test_group',
                                        driver_name='devops.driver.libvirt',
                                        connection_string='test:///default',
                                        storage_pool_name='default-pool')

        self.pub_ap = self.env.add_address_pool(
            name='public-pool01',
            net='10.109.0.0/16:24',
            tag=0,
            ip_reserved=dict(gateway=1, l2_network_device=1),
            ip_ranges=dict(default=[2, -2]))
        self.group.add_l2_network_device(name='public',
                                         address_pool='public-pool01')

        # Node connected to the 'public' network

        self.node = self.group.add_node(name='test-node',
                                        role='cloud-node',
                                        architecture='x86_64',
                                        hypervisor='test',
                                        cloud_init_volume_name='iso',
                                        cloud_init_iface_up='enp0s3')

        self.system_volume = self.node.add_volume(name='system', capacity=10)
        self.iso_volume = self.node.add_volume(name='iso', capacity=5)

        self.adm_iface = self.node.add_interface(
            label='enp0s3',
            l2_network_device_name='public',
            mac_address='64:b6:87:44:14:17',
            interface_model='e1000')

        self.node.add_network_config(label='enp0s3', networks=['public'])
    def setUp(self):
        super(TestLibvirtNodeMultipath, self).setUp()

        self.sleep_mock = self.patch('devops.helpers.retry.sleep')
        self.libvirt_sleep_mock = self.patch(
            'devops.driver.libvirt.libvirt_driver.sleep')

        self.env = Environment.create('test_env')
        self.group = self.env.add_group(
            group_name='test_group',
            driver_name='devops.driver.libvirt',
            connection_string='test:///default',
            storage_pool_name='default-pool',
            vnc_password='******',
        )

        self.ap = self.env.add_address_pool(
            name='test_ap',
            net='172.0.0.0/16:24',
            tag=0,
            ip_reserved=dict(l2_network_device=1),
        )

        self.net_pool = self.group.add_network_pool(
            name='fuelweb_admin',
            address_pool_name='test_ap',
        )

        self.l2_net_dev = self.group.add_l2_network_device(
            name='test_l2_net_dev',
            address_pool='test_ap',
            forward=dict(mode='nat'),
        )

        self.node = self.group.add_node(
            name='test_node',
            role='default',
            architecture='i686',
            hypervisor='test',
        )

        self.interface = self.node.add_interface(
            label='eth0',
            l2_network_device_name='test_l2_net_dev',
            interface_model='virtio',
        )
        self.interface.mac_address = '64:b6:87:44:14:17'
        self.interface.save()

        self.volume = self.node.add_volume(
            name='test_volume',
            capacity=5,
            multipath_count=2,
            serial='3b16d312420d4adbb2d5b04fcbd5221c',
        )

        self.d = self.group.driver

        self.l2_net_dev.define()
Esempio n. 30
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
Esempio n. 31
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
Esempio n. 32
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
 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
Esempio n. 34
0
 def test_node_creation(self):
     environment = Environment.create('test_env3')
     internal = Network.network_create(
         environment=environment, name='internal', pool=None)
     node = Node.node_create(
         name='test_node', environment=environment)
     Interface.interface_create(node=node, network=internal)
     environment.define()
Esempio n. 35
0
    def setUp(self):
        super(TestLibvirtNodeMultipath, self).setUp()

        self.sleep_mock = self.patch('time.sleep')

        self.env = Environment.create('test_env')
        self.group = self.env.add_group(
            group_name='test_group',
            driver_name='devops.driver.libvirt',
            connection_string='test:///default',
            storage_pool_name='default-pool',
            vnc_password='******',
            enable_nwfilters=True,
        )

        self.ap = self.env.add_address_pool(
            name='test_ap',
            net='172.0.0.0/16:24',
            tag=0,
            ip_reserved=dict(l2_network_device=1),
        )

        self.net_pool = self.group.add_network_pool(
            name='fuelweb_admin',
            address_pool_name='test_ap',
        )

        self.l2_net_dev = self.group.add_l2_network_device(
            name='test_l2_net_dev',
            address_pool='test_ap',
            forward=dict(mode='nat'),
        )

        self.node = self.group.add_node(
            name='test_node',
            role='default',
            architecture='i686',
            hypervisor='test',
        )

        self.interface = self.node.add_interface(
            label='eth0',
            l2_network_device_name='test_l2_net_dev',
            interface_model='virtio',
        )
        self.interface.mac_address = '64:b6:87:44:14:17'
        self.interface.save()

        self.volume = self.node.add_volume(
            name='test_volume',
            capacity=5,
            multipath_count=2,
            serial='3b16d312420d4adbb2d5b04fcbd5221c',
        )

        self.d = self.group.driver

        self.l2_net_dev.define()
Esempio n. 36
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. 37
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. 38
0
    def setUp(self):
        super(TestLibvirtNodeSnapshotBase, self).setUp()

        self.sleep_mock = self.patch('devops.helpers.retry.sleep')
        self.libvirt_sleep_mock = self.patch(
            'devops.driver.libvirt.libvirt_driver.sleep')

        self.env = Environment.create('tenv')
        self.group = self.env.add_group(
            group_name='test_group',
            driver_name='devops.driver.libvirt.libvirt_driver',
            connection_string='test:///default',
            storage_pool_name='default-pool',
            vnc_password='******',
        )

        self.ap = self.env.add_address_pool(
            name='test_ap',
            net='172.0.0.0/16:24',
            tag=0,
            ip_reserved=dict(l2_network_device='172.0.0.1'),
        )

        self.net_pool = self.group.add_network_pool(
            name='fuelweb_admin',
            address_pool_name='test_ap',
        )

        self.l2_net_dev = self.group.add_l2_network_device(
            name='test_l2_net_dev',
            address_pool='test_ap',
            forward=dict(mode='nat'),
        )

        self.node = self.group.add_node(
            name='tnode',
            role='default',
            architecture='i686',
            hypervisor='test',
        )

        self.interface = self.node.add_interface(
            label='eth0',
            l2_network_device_name='test_l2_net_dev',
            interface_model='virtio',
        )

        self.volume = self.node.add_volume(
            name='tvol',
            capacity=5,
        )

        self.d = self.group.driver

        self.l2_net_dev.define()
        self.volume.define()
        self.node.define()
Esempio n. 39
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. 40
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
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')
Esempio n. 42
0
 def test_network_model(self):
     environment = Environment.create('test_env')
     node = Node.node_create('test_node', environment)
     network = Network.network_create(
         environment=environment, name='internal', ip_network='10.1.0.0/24')
     interface1 = Interface.interface_create(network=network, node=node)
     self.assertEquals('virtio', interface1.model)
     interface2 = Interface.interface_create(
         network=network, node=node, model='e1000')
     self.assertEquals('e1000', interface2.model)
Esempio n. 43
0
    def test_snapshot_with_existing_name(self, mock_has_snapshot,
                                         mock_node_create_snapshot):
        mock_has_snapshot.return_value = True

        environment = Environment.create('test_env_extsnap')
        node = Node.node_create(name='test_node', environment=environment)
        environment.define()

        node.snapshot(name='test_name')
        self.assertEqual(mock_node_create_snapshot.called, False)
Esempio n. 44
0
 def test_network_model(self):
     environment = Environment.create('test_env')
     node = Node.node_create('test_node', environment)
     network = Network.network_create(
         environment=environment, name='internal', ip_network='10.1.0.0/24')
     interface1 = Interface.interface_create(network=network, node=node)
     self.assertEquals('virtio', interface1.model)
     interface2 = Interface.interface_create(
         network=network, node=node, model='e1000')
     self.assertEquals('e1000', interface2.model)
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. 46
0
 def test_network_iterator(self):
     environment = Environment.create('test_env')
     node = Node.node_create('test_node', environment)
     network = Network.network_create(
         environment=environment, name='internal', ip_network='10.1.0.0/24')
     interface = Interface.interface_create(network=network, node=node)
     Address.objects.create(str('10.1.0.1'), interface=interface)
     network.next_ip()
     Address.objects.create(str('10.1.0.3'), interface=interface)
     ip = network.next_ip()
     self.assertEquals('10.1.0.4', str(ip))
Esempio n. 47
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))
Esempio n. 48
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. 49
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. 50
0
 def test_network_iterator(self):
     environment = Environment.create('test_env')
     node = Node.node_create('test_node', environment)
     network = Network.network_create(environment=environment,
                                      name='internal',
                                      ip_network='10.1.0.0/24')
     interface = Interface.interface_create(network=network, node=node)
     Address.objects.create(str('10.1.0.1'), interface=interface)
     network.next_ip()
     Address.objects.create(str('10.1.0.3'), interface=interface)
     ip = network.next_ip()
     self.assertEquals('10.1.0.4', str(ip))
Esempio n. 51
0
    def setUp(self):
        # ENVIRONMENT
        self.env = Environment.create(name='test')

        # ADRESS POOLS
        self.admin_ap = self.env.add_address_pool(
            name='fuelweb_admin-pool01', net='10.109.0.0/16:24', tag=0,
            ip_reserved=dict(gateway=1, l2_network_device=1),
            ip_ranges=dict(default=[2, -2]))
        self.pub_ap = self.env.add_address_pool(
            name='public-pool01', net='10.109.0.0/16:24', tag=0,
            ip_reserved=dict(gateway=1, l2_network_device=1),
            ip_ranges=dict(default=[2, -2]))
        self.stor_ap = self.env.add_address_pool(
            name='storage-pool01', net='10.109.0.0/16:24', tag=101,
            ip_reserved=dict(gateway=1, l2_network_device=1),
            ip_ranges=dict(default=[2, -2]))
        self.mng_ap = self.env.add_address_pool(
            name='management-pool01', net='10.109.0.0/16:24', tag=102,
            ip_reserved=dict(gateway=1, l2_network_device=1),
            ip_ranges=dict(default=[2, -2]))
        self.priv_ap = self.env.add_address_pool(
            name='private-pool01', net='10.109.0.0/16:24', tag=103,
            ip_reserved=dict(gateway=1, l2_network_device=1),
            ip_ranges=dict(default=[2, -2]))

        # GROUP
        self.group = self.env.add_group(group_name='test-group',
                                        driver_name='devops.driver.empty')

        # NETWORK POOLS
        self.group.add_network_pool(name='fuelweb_admin',
                                    address_pool_name='fuelweb_admin-pool01')
        self.group.add_network_pool(name='public',
                                    address_pool_name='public-pool01')
        self.group.add_network_pool(name='storage',
                                    address_pool_name='storage-pool01')
        self.group.add_network_pool(name='management',
                                    address_pool_name='management-pool01')
        self.group.add_network_pool(name='private',
                                    address_pool_name='private-pool01')

        # L2 NETWORK DEVICES
        self.group.add_l2_network_device(
            name='admin', address_pool='fuelweb_admin-pool01')
        self.group.add_l2_network_device(
            name='public', address_pool='public-pool01')
        self.group.add_l2_network_device(
            name='storage', address_pool='storage-pool01')
        self.group.add_l2_network_device(
            name='management', address_pool='management-pool01')
        self.group.add_l2_network_device(
            name='private', address_pool='private-pool01')
Esempio n. 52
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))
Esempio n. 53
0
    def test_external_snapshot_incorrect_libvirt_version(
            self, mock_has_snapshot, mock_libvirt_version,
            mock_create_snapshot):
        mock_has_snapshot.return_value = False
        mock_libvirt_version.return_value = 1002009

        environment = Environment.create('test_env_extsnap')
        node = Node.node_create(name='test_node', environment=environment)
        environment.define()

        node.snapshot(name='test_name', external=True)

        self.assertEqual(mock_create_snapshot.called, False)
Esempio n. 54
0
def one():
    environment = Environment.create('cdrom')
    internal_pool = Network.create_network_pool(
        networks=[IPNetwork('10.108.0.0/16')], prefix=24)
    private_pool = Network.create_network_pool(
        networks=[IPNetwork('10.108.0.0/16')], prefix=24)
    external_pool = Network.create_network_pool(
        networks=[IPNetwork('172.18.95.0/24')], prefix=27)
    internal = Network.network_create(environment=environment,
                                      name='internal',
                                      pool=internal_pool)
    external = Network.network_create(environment=environment,
                                      name='external',
                                      pool=external_pool,
                                      forward='nat')
    private = Network.network_create(environment=environment,
                                     name='private',
                                     pool=private_pool)
    for i in range(1, 2):
        node = Node.node_create(name='test_node' + str(i),
                                environment=environment)
        Interface.interface_create(node=node, network=internal)
        Interface.interface_create(node=node, network=external)
        Interface.interface_create(node=node, network=private)
        volume = Volume.volume_get_predefined(
            '/var/lib/libvirt/images/centos63-cobbler-base.qcow2')
        v3 = Volume.volume_create_child('test_vp895' + str(i),
                                        backing_store=volume,
                                        environment=environment)
        v4 = Volume.volume_create_child('test_vp896' + str(i),
                                        backing_store=volume,
                                        environment=environment)
        DiskDevice.node_attach_volume(node=node, volume=v3)
        DiskDevice.node_attach_volume(node, v4)
        DiskDevice.node_attach_volume(
            node,
            Volume.volume_get_predefined(
                '/var/lib/libvirt/images/fuel-centos-6.3-x86_64.iso'),
            device='cdrom',
            bus='sata')
    environment.define()
    environment.start()
    remotes = []
    for node in environment.get_nodes():
        node. await ('internal')
        node.remote('internal', 'root', 'r00tme').check_stderr('ls -la',
                                                               verbose=True)
        remotes.append(node.remote('internal', 'root', 'r00tme'))
    SSHClient.execute_together(remotes, 'ls -la')
Esempio n. 55
0
    def setUp(self):
        super(TestLibvirtDriverDeviceNames, self).setUp()

        self.env = Environment.create('test_env')
        self.group = self.env.add_group(group_name='test_group',
                                        driver_name='devops.driver.libvirt',
                                        connection_string='test:///default')

        self.ap = self.env.add_address_pool(
            name='test_ap',
            net='172.0.0.0/16:24',
            tag=0,
            ip_reserved=dict(l2_network_device=1),
        )

        self.net_pool = self.group.add_network_pool(
            name='fuelweb_admin',
            address_pool_name='test_ap',
        )

        self.l2_net_dev = self.group.add_l2_network_device(
            name='test_l2_net_dev',
            address_pool='test_ap',
            forward=dict(mode='nat'),
        )

        self.d = self.group.driver

        self.d._device_name_generators = dict()

        self.dev_mock = mock.Mock(spec=libvirt.virNodeDevice)
        self.dev_mock.listCaps.return_value = ['net']
        self.dev_mock.XMLDesc.return_value = """
<device>
  <name>net_virnet132_fe_70_74_90_bc_84</name>
  <path>/sys/devices/virtual/net/virnet132</path>
  <parent>computer</parent>
  <capability type='net'>
    <interface>virnet1</interface>
    <address>fe:70:74:90:bc:84</address>
    <link state='unknown'/>
    <capability type='80203'/>
  </capability>
</device>
"""
        self.dev2_mock = mock.Mock(spec=libvirt.virNodeDevice)
        self.dev2_mock.listCaps.return_value = ['usb_device']
        self.dev2_mock.XMLDesc.return_value = """
Esempio n. 56
0
    def setUp(self):
        super(TestIpmiNode, self).setUp()

        # Create Environment
        self.ipmiclient_mock = self.patch(
            'devops.driver.baremetal.ipmi_client.IpmiClient', autospec=True)
        self.ipmiclient = self.ipmiclient_mock.return_value
        self.wait_mock = self.patch('devops.helpers.helpers.wait')

        self.env = Environment.create('test_env')
        self.group = self.env.add_group(
            group_name='test_group',
            driver_name='devops.driver.baremetal',
        )

        self.ap = self.env.add_address_pool(
            name='test_ap',
            net='172.0.0.0/16:24',
            tag=0,
            ip_reserved=dict(l2_network_device=1),
        )

        self.net_pool = self.group.add_network_pool(
            name='fuelweb_admin',
            address_pool_name='test_ap',
        )

        self.l2_net_dev = self.group.add_l2_network_device(
            name='test_l2_net_dev',
            address_pool='test_ap',
        )

        self.node = self.group.add_node(
            name='test_node',
            role='default',
            boot='pxe',
            force_set_boot=True,
            ipmi_user='******',
            ipmi_password='******',
            ipmi_previlegies='OPERATOR',
            ipmi_host='ipmi-1.hostaddress.net',
            ipmi_lan_interface='lanplus',
            ipmi_port=623,
        )
Esempio n. 57
0
    def test_node_creation(self):
        environment = Environment.create('test_env3')
        pool = IpNetworksPool(networks=[IPNetwork('10.1.0.0/24')], prefix=24)
        address_pool = AddressPool.address_pool_create(environment=environment,
                                                       name='internal',
                                                       pool=pool)
        l2_net_dev = L2NetworkDevice.objects.create(group=None,
                                                    address_pool=address_pool,
                                                    name='test_l2_dev')

        node = Node.objects.create(
            group=None,
            name='test_node',
            role='default',
        )
        Interface.interface_create(l2_network_device=l2_net_dev,
                                   node=node,
                                   label='eth0')
        environment.define()
    def setUp(self):
        super(TestIPMITemplate, self).setUp()

        # Create Environment
        self.full_conf = yaml.load(ENV_TMPLT)
        self.env = Environment.create_environment(self.full_conf)
        self.ipmiclient_mock = self.patch(
            'devops.driver.baremetal.ipmi_client.IpmiClient')
        self.wait_mock = self.patch('devops.helpers.helpers.wait')
        self.ipmiclient1 = mock.Mock(spec=IpmiClient)
        self.ipmiclient2 = mock.Mock(spec=IpmiClient)

        def get_client(*args):
            """Tricky way to return necessary node """
            if args and args[6] == 'slave-01':
                return self.ipmiclient1
            elif args and args[6] == 'slave-02':
                return self.ipmiclient2

        self.ipmiclient_mock.side_effect = get_client