コード例 #1
0
ファイル: test_openstack.py プロジェクト: p-p-m/nodeconductor
    def setUp(self):
        self.keystone_client = mock.Mock()
        self.nova_client = mock.Mock()
        self.neutron_client = mock.Mock()
        self.cloud_account = mock.Mock()
        self.membership = factories.CloudProjectMembershipFactory()
        self.tenant = mock.Mock()

        # Mock low level non-AbstractCloudBackend api methods
        self.backend = OpenStackBackend()
        self.backend.create_session = mock.Mock()
        self.backend.create_keystone_client = mock.Mock(return_value=self.keystone_client)
        self.backend.create_nova_client = mock.Mock(return_value=self.nova_client)
        self.backend.create_neutron_client = mock.Mock(return_value=self.neutron_client)
        self.backend.get_or_create_tenant = mock.Mock(return_value=self.tenant)
        self.backend.get_or_create_user = mock.Mock(return_value=('john', 'doe'))
        self.backend.get_or_create_internal_network = mock.Mock()
        self.backend.ensure_user_is_tenant_admin = mock.Mock()
        self.floating_ips = [
            {'status': 'ACTIVE', 'floating_ip_address': '10.7.201.163',
             'id': '063795b7-23ac-4a0d-82f0-4326e73ee1bc',
             'port_id': 'fakeport',
             'floating_network_id': 'd5e27df4-6754-46ac-903c-5b3fa25e21dd'},
            {'status': 'DOWN', 'floating_ip_address': '10.7.201.114',
             'id': '063795b7-23ac-4a0d-82f0-432as73asdas', 'port_id': 'fakeport',
             'floating_network_id': '83353d4a-a2d2-4f24-a472-57578699a6b1'},
            {'status': 'ACTIVE', 'floating_ip_address': '10.7.201.107',
             'id': '063795b7-asds-aq34-3df4-23asdasddssc', 'port_id': 'fakeport',
             'floating_network_id': '34918c99-de9f-4cd3-b56c-fc982429f481'},
        ]
        self.backend.get_floating_ips = mock.Mock(return_value=self.floating_ips)
コード例 #2
0
    def setUp(self):
        self.keystone_client = mock.Mock()
        self.nova_client = mock.Mock()
        self.neutron_client = mock.Mock()
        self.cloud_account = mock.Mock()
        self.membership = factories.CloudProjectMembershipFactory()
        self.tenant = mock.Mock()

        # Mock low level non-AbstractCloudBackend api methods
        self.backend = OpenStackBackend()
        self.backend.create_session = mock.Mock()
        self.backend.create_keystone_client = mock.Mock(
            return_value=self.keystone_client)
        self.backend.create_nova_client = mock.Mock(
            return_value=self.nova_client)
        self.backend.create_neutron_client = mock.Mock(
            return_value=self.neutron_client)
        self.backend.get_or_create_tenant = mock.Mock(return_value=self.tenant)
        self.backend.get_or_create_user = mock.Mock(return_value=('john',
                                                                  'doe'))
        self.backend.get_or_create_network = mock.Mock()
        self.backend.ensure_user_is_tenant_admin = mock.Mock()
        self.backend.push_security_group = mock.Mock()
        self.backend.create_security_group = mock.Mock()
        self.backend.update_security_group = mock.Mock()
        self.backend.delete_security_group = mock.Mock()
        self.backend.push_security_group_rules = mock.Mock()
def populate_internal_network(apps, schema_editor):
    # check if such a network already exists, if so -- use it instead
    CloudProjectMembership = apps.get_model("iaas", "CloudProjectMembership")
    db_alias = schema_editor.connection.alias

    def get_tenant_name(membership):
        return '{0}-{1}'.format(membership.project.uuid.hex,
                                membership.project.name)

    openstack = OpenStackBackend()
    for cpm in CloudProjectMembership.objects.using(db_alias).filter(
            internal_network_id='').iterator():
        network_name = get_tenant_name(cpm)
        network_lookup = {
            'name': network_name,
            'tenant_id': cpm.tenant_id,
        }
        try:
            session = openstack.create_tenant_session(cpm)
            neutron = openstack.create_neutron_client(session)

            networks_by_name = neutron.list_networks(
                **network_lookup)['networks']
            network_id = networks_by_name[0]['id']
        except (ClientException, NeutronClientException, KeyError):
            network_id = 'ERROR-API'
        except IndexError:
            network_id = 'ERROR-NOT-FOUND'
        else:
            if len(networks_by_name) > 1:
                network_id = 'ERROR-TOO-MANY'

        cpm.internal_network_id = network_id
        cpm.save()
コード例 #4
0
ファイル: test_openstack.py プロジェクト: p-p-m/nodeconductor
    def setUp(self):
        self.keystone_client = mock.Mock()
        self.nova_client = mock.Mock()
        self.cloud_account = mock.Mock()
        self.backend = OpenStackBackend()

        self.backend.create_keystone_client = mock.Mock(return_value=self.keystone_client)
        self.backend.create_nova_client = mock.Mock(return_value=self.nova_client)
コード例 #5
0
ファイル: test_openstack.py プロジェクト: p-p-m/nodeconductor
    def setUp(self):
        self.membership = mock.Mock()
        self.session = mock.Mock()
        self.session.auth.auth_url = 'http://keystone.example.com:5000/v2.0'
        self.session.auth.username = '******'
        self.session.auth.password = '******'

        self.backend = OpenStackBackend(dummy=True)
        self.backend.create_session = mock.Mock(return_value=self.session)
コード例 #6
0
    def setUp(self):
        self.keystone_client = mock.Mock()
        self.nova_client = mock.Mock()

        self.membership = mock.Mock()
        self.membership.project.uuid.hex = 'project_uuid'
        self.membership.project.name = 'project_name'
        self.membership.project.description = 'project_description'

        self.backend = OpenStackBackend()
コード例 #7
0
ファイル: test_openstack.py プロジェクト: p-p-m/nodeconductor
    def test_do_not_push_ssh_public_key_dublicate(self):
        public_key = self._get_dummy_ssh_key()
        nova_client = mock.Mock()
        backend = OpenStackBackend(dummy=True)
        backend.create_session = mock.Mock(return_value=self.session)
        backend.create_nova_client = mock.Mock(return_value=nova_client)

        backend.push_ssh_public_key(self.membership, public_key)
        nova_client.keypairs.find.assert_called_once_with(fingerprint=public_key.fingerprint)
        assert not nova_client.keypairs.create.called
コード例 #8
0
ファイル: test_openstack.py プロジェクト: p-p-m/nodeconductor
    def setUp(self):
        self.nova_client = mock.Mock()
        self.nova_client.servers.list.return_value = []
        self.nova_client.servers.findall.return_value = []

        self.membership = factories.CloudProjectMembershipFactory()

        # Mock low level non-AbstractCloudBackend api methods
        self.backend = OpenStackBackend()
        self.backend.create_session = mock.Mock(return_value=mock.Mock(dummy=False))
        self.backend.create_nova_client = mock.Mock(return_value=self.nova_client)
コード例 #9
0
ファイル: test_openstack.py プロジェクト: p-p-m/nodeconductor
    def setUp(self):
        self.nova_client = mock.Mock()
        self.nova_client.flavors.findall.return_value = []

        self.cloud_account = factories.CloudFactory()
        self.flavors = factories.FlavorFactory.create_batch(2, cloud=self.cloud_account)

        # Mock low level non-AbstractCloudBackend api methods
        self.backend = OpenStackBackend()
        self.backend.create_session = mock.Mock()
        self.backend.create_nova_client = mock.Mock(return_value=self.nova_client)
コード例 #10
0
    def setUp(self):
        self.keystone_client = mock.Mock()
        self.nova_client = mock.Mock()
        self.neutron_client = mock.Mock()
        self.cloud_account = mock.Mock()
        self.cinder_client = mock.Mock()
        self.membership = mock.Mock(
        )  # TODO: use real membership, not mocked and unite with test class below
        self.tenant = mock.Mock()

        # client methods:
        self.nova_quota = mock.Mock(cores=20, instances=10, ram=51200)
        self.nova_client.quotas.get = mock.Mock(return_value=self.nova_quota)
        self.cinder_quota = mock.Mock(gigabytes=1000)
        self.cinder_client.quotas.get = mock.Mock(
            return_value=self.cinder_quota)
        self.volumes = [mock.Mock(size=10 * i, id=i) for i in range(5)]
        self.snapshots = [mock.Mock(size=10 * i, id=i) for i in range(5)]
        self.flavors = [mock.Mock(ram=i, id=i, vcpus=i) for i in range(4)]
        self.instances = [mock.Mock(flavor={'id': i}) for i in range(2)]
        self.cinder_client.volume_snapshots.list = mock.Mock(
            return_value=self.snapshots)
        self.cinder_client.volumes.list = mock.Mock(return_value=self.volumes)
        self.nova_client.servers.list = mock.Mock(return_value=self.instances)
        self.nova_client.flavors.list = mock.Mock(return_value=self.flavors)

        # Mock low level non-AbstractCloudBackend api methods
        self.backend = OpenStackBackend()
        self.backend.create_session = mock.Mock()
        self.backend.create_keystone_client = mock.Mock(
            return_value=self.keystone_client)
        self.backend.create_nova_client = mock.Mock(
            return_value=self.nova_client)
        self.backend.create_neutron_client = mock.Mock(
            return_value=self.neutron_client)
        self.backend.create_cinder_client = mock.Mock(
            return_value=self.cinder_client)
        self.backend.get_or_create_tenant = mock.Mock(return_value=self.tenant)
        self.backend.get_or_create_user = mock.Mock(return_value=('john',
                                                                  'doe'))
        self.backend.get_or_create_network = mock.Mock()
        self.backend.ensure_user_is_tenant_admin = mock.Mock()
        self.backend.push_security_group = mock.Mock()
        self.backend.create_security_group = mock.Mock()
        self.backend.update_security_group = mock.Mock()
        self.backend.delete_security_group = mock.Mock()
        self.backend.push_security_group_rules = mock.Mock()
        self.backend.get_hypervisors_statistics = mock.Mock(return_value=[])
コード例 #11
0
ファイル: test_dummy.py プロジェクト: p-p-m/nodeconductor
 def setUp(self):
     settings, _ = OpenStackSettings.objects.update_or_create(
         auth_url='http://keystone.example.com:5000/v2.0',
         defaults={
             'username': '******',
             'password': '******',
             'tenant_name': 'test_tenant',
         })
     self.auth_url = settings.auth_url
     self.tenant_id = '593af1f7b67b4d63b691fcabd2dad126'
     self.credentials = {
         'auth_url': self.auth_url,
         'username': '******',
         'password': '******',
         'tenant_id': uuid.uuid4().hex,
     }
     self.backend = OpenStackBackend(dummy=True)
コード例 #12
0
    def setUp(self):
        self.keystone_client = mock.Mock()
        self.nova_client = mock.Mock()
        self.neutron_client = mock.Mock()
        self.cloud_account = mock.Mock()
        self.membership = factories.CloudProjectMembershipFactory()
        self.tenant = mock.Mock()

        # Mock low level non-AbstractCloudBackend api methods
        self.backend = OpenStackBackend()
        self.backend.create_session = mock.Mock()
        self.backend.create_keystone_client = mock.Mock(
            return_value=self.keystone_client)
        self.backend.create_nova_client = mock.Mock(
            return_value=self.nova_client)
        self.backend.create_neutron_client = mock.Mock(
            return_value=self.neutron_client)
        self.backend.get_or_create_tenant = mock.Mock(return_value=self.tenant)
        self.backend.get_or_create_user = mock.Mock(return_value=('john',
                                                                  'doe'))
        self.backend.get_or_create_network = mock.Mock()
        self.backend.ensure_user_is_tenant_admin = mock.Mock()
        self.floating_ips = [
            {
                'status': 'ACTIVE',
                'floating_ip_address': '10.7.201.163',
                'id': '063795b7-23ac-4a0d-82f0-4326e73ee1bc',
                'port_id': 'fakeport'
            },
            {
                'status': 'DOWN',
                'floating_ip_address': '10.7.201.114',
                'id': '063795b7-23ac-4a0d-82f0-432as73asdas',
                'port_id': 'fakeport'
            },
            {
                'status': 'ACTIVE',
                'floating_ip_address': '10.7.201.107',
                'id': '063795b7-asds-aq34-3df4-23asdasddssc',
                'port_id': 'fakeport'
            },
        ]
        self.backend.get_floating_ips = mock.Mock(
            return_value=self.floating_ips)
コード例 #13
0
    def setUp(self):
        self.glance_client = mock.Mock()

        #  C
        #  ^
        #  |
        # (I0)
        #  |
        #  v
        #  T0          T1        T2
        #  ^           ^         ^
        #  | \         | \       |
        #  |  \        |  \      |
        #  |   \       |   \     |
        #  v    v      v    v    v
        #  TM0  TM1    TM2  TM3  TM4
        #

        self.cloud_account = factories.CloudFactory()
        self.templates = factories.TemplateFactory.create_batch(3)

        self.template_mappings = (
            factories.TemplateMappingFactory.create_batch(
                2, template=self.templates[0]) +
            factories.TemplateMappingFactory.create_batch(
                2, template=self.templates[1]) +
            factories.TemplateMappingFactory.create_batch(
                1, template=self.templates[2]))

        self.image = factories.ImageFactory(
            cloud=self.cloud_account,
            template=self.template_mappings[0].template,
            backend_id=self.template_mappings[0].backend_image_id,
        )

        # Mock low level non-AbstractCloudBackend api methods
        self.backend = OpenStackBackend()
        self.backend.create_session = mock.Mock()
        self.backend.create_glance_client = mock.Mock(
            return_value=self.glance_client)
コード例 #14
0
    def get_backend(self):
        # TODO: Support different clouds instead of hard-coding
        # Importing here to avoid circular imports hell
        from nodeconductor.iaas.backend.openstack import OpenStackBackend

        return OpenStackBackend(dummy=self.dummy)
コード例 #15
0
 def setUp(self):
     self.backend = OpenStackBackend()