def test_create_fw_rule_sets(self):
        params = {
            u'project': u'PID',
            u'name': u'name',
            u'image': u'image',
            u'instance-type': u'flavor',
            u'fw-rule-sets': [u'3', u'8']
        }
        sgs = [
            doubles.make(self.mox, doubles.SecurityGroup, id=u'3', name='sg3'),
            doubles.make(self.mox, doubles.SecurityGroup, id=u'8', name='sg8')
        ]
        instances.client_set_for_tenant(u'PID').AndReturn(self.tcs)
        self.tcs.compute.security_groups.get(u'3').AndReturn(sgs[0])
        self.tcs.compute.security_groups.get(u'8').AndReturn(sgs[1])
        self.tcs.compute.servers.create(
            name=u'name',
            image=u'image',
            flavor=u'flavor',
            security_groups=['sg3', 'sg8'],
            key_name=None,
            admin_pass=None
        ).AndReturn('VM1')
        instances._instance_to_view('VM1').AndReturn('REPLY')

        self.mox.ReplayAll()
        data = self.interact(params)
        self.assertEquals(data, 'REPLY')
    def test_project_to_view_works(self):
        tenant = doubles.make(self.mox, doubles.Tenant,
            id=u'c4fc65e', name=u'Project X')
        net = doubles.make(self.mox, doubles.Network,
                           label=u'net22', id=u'2699a5')
        quotaset = doubles.make(self.mox, doubles.QuotaSet)

        gb = 1024 * 1024 * 1024
        expected = {
            u'id': u'c4fc65e',
            u'href': u'/v1/projects/c4fc65e',
            u'name': u'Project X',
            u'description': u'Rather long description.',
            u'cpus-limit': 33,
            u'ram-limit': 50 * gb,
            u'instances-limit': 10,
            u'links': {
                u'manage-users': '/v1/projects/c4fc65e/users/',
                u'stats': '/v1/stats/by-project/c4fc65e'
            },
            u'network': {
                u'id': u'2699a5',
                u'name': u'net22',
                u'href': u'/v1/networks/2699a5'
            }
        }

        with self.app.test_request_context():
            result = projects._project_to_view(tenant, net, quotaset)
        self.assertEquals(expected, result)
 def test_image_to_view_works(self):
     tenant = doubles.make(self.mox, doubles.Tenant, id=u"TENANT", name=u"TestTenant")
     image = doubles.make(
         self.mox,
         doubles.Image,
         id=u"IMAGE",
         name=u"TestImage",
         size=123456,
         owner=tenant.id,
         created_at="2012-10-15T01:43:00",
         disk_format=u"raw",
         container_format=u"bare",
         checksum="831a05f7bdeadbabe5l1k3133715e7ea",
         status="active",
     )
     expected = {
         u"id": u"IMAGE",
         u"href": "/v1/images/IMAGE",
         u"data-href": "/v1/images/IMAGE/data",
         u"name": u"TestImage",
         u"global": False,
         u"project": {u"id": u"TENANT", u"name": u"TestTenant", u"href": "/v1/projects/TENANT"},
         u"created": datetime(2012, 10, 15, 01, 43, 00),
         u"disk-format": u"raw",
         u"container-format": u"bare",
         u"md5sum": "831a05f7bdeadbabe5l1k3133715e7ea",
         u"size": 123456,
         u"status": u"active",
     }
    def test_net_to_dict_works(self):
        net = doubles.make(self.mox, doubles.Network,
                           id='271',
                           label='testnet',
                           vlan=42,
                           cidr='10.5.2.0/24',
                           netmask='255.255.255.0',
                           project_id='PID')
        tenant = doubles.make(self.mox, doubles.Tenant,
                              id='PID', name='ptest')
        expected = {
            'id': '271',
            'href': '/v1/networks/271',
            'name': 'testnet',
            'vlan': 42,
            'cidr': '10.5.2.0/24',
            'used': True,
            'project': {
                u'href': '/v1/projects/PID',
                u'id': 'PID',
                u'name': 'ptest'
            }
        }

        self.fake_client_set.identity_admin\
                .tenants.get(u'PID').AndReturn(tenant)

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            data = networks._net_to_dict(net)
        self.assertEquals(data, expected)
Exemple #5
0
    def test_remind_reminds(self):
        server_mgr = self.fake_client_set.compute.servers
        instances.admin_client_set().AndReturn(self.fake_client_set)
        user_mgr = self.fake_client_set.identity_admin.users
        server = doubles.make(self.mox, doubles.Server,
                              id='v2', name='instance-2', user_id='UID')
        user = doubles.make(self.mox, doubles.User,
                            id='UID', name='user', email='*****@*****.**',
                            fullname='The Test User Fullname')
        expires = datetime(2013, 1, 19, 11, 12, 13)

        instances.datetime.utcnow().AndReturn('UTCNOW')
        instances.InstanceDataDAO.remind_list('UTCNOW')\
                .AndReturn([InstanceData(instance_id='v2',
                                         expires_at=expires)])

        server_mgr.get('v2').AndReturn(server)
        user_mgr.get('UID').AndReturn(user)
        instances.send_instance_reminder(user.email, 'instance-2', 'v2',
                                         expires, greeting=user.fullname)
        instances.InstanceDataDAO.update('v2', remind_at=None)

        self.mox.ReplayAll()
        with self.app.test_request_context():
            instances.remind_about_instances()
    def test_get_all_projects(self):
        tenants = (
            doubles.make(self.mox, doubles.Tenant, name=u'tnt1', id=u't1'),
            doubles.make(self.mox, doubles.Tenant, name=u'tnt2', id=u't2'),
            doubles.make(self.mox, doubles.Tenant,
                         name=u'systenant', id=u'SYSTENANT_ID'))
        nets = (
            self.net(label=u'net2', id=u'netid2', project_id=u't2'),
            self.net(label=u'net_', id=u'netid_', project_id=None),  # unused
            self.net(label=u'net1', id=u'netid1', project_id=u't1'))

        self.tm_mock.list().AndReturn(tenants)
        self.nm_mock.list().AndReturn(nets)
        projects._quotaset_for_project(u't1').AndReturn('QUOTA1')
        projects._project_to_view(tenants[0], nets[2], 'QUOTA1')\
                .AndReturn('PROJECT1')

        projects._quotaset_for_project(u't2').AndReturn('QUOTA2')
        projects._project_to_view(tenants[1], nets[0], 'QUOTA2')\
                .AndReturn('PROJECT2')

        expected = {
            u'collection': {
                u'name': u'projects',
                u'size': 2
            },
            u'projects': [ 'PROJECT1', 'PROJECT2' ]
        }

        self.mox.ReplayAll()

        rv = self.client.get('/v1/projects/')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
    def test_project_creation_works(self):
        self.mox.StubOutWithMock(projects, '_project_to_view')
        self.mox.StubOutWithMock(projects, '_quotaset_for_project')

        networks = self.fake_client_set.compute.networks
        tenants = self.fake_client_set.identity_admin.tenants
        tenant = doubles.make(self.mox, doubles.Tenant,
                              name=self.name, id='PID',
                              description=self.description)

        networks.get(self.net_id).AndReturn(
            doubles.make(self.mox, doubles.Network,
                         label='NETLABEL', id=self.net_id, project_id=None))
        tenants.create(self.name, self.description).AndReturn(tenant)
        networks.associate(self.net_id, tenant.id)

        networks.get(self.net_id).AndReturn('UPDATED NETWORK')
        projects._quotaset_for_project(tenant.id).AndReturn('QUOTA')
        projects._project_to_view(tenant, 'UPDATED NETWORK', 'QUOTA')\
                .AndReturn('REPLY')

        self.mox.ReplayAll()

        data = self.interact()
        self.assertEquals(data, 'REPLY')
    def test_project_to_view_no_quota(self):
        tenant = doubles.make(self.mox, doubles.Tenant,
            id=u'c4fc65e', name=u'Project X')
        net = doubles.make(self.mox, doubles.Network,
                           label=u'net22', id=u'2699a5')

        expected = {
            u'id': u'c4fc65e',
            u'href': u'/v1/projects/c4fc65e',
            u'name': u'Project X',
            u'description': u'Rather long description.',
            u'links': {
                u'manage-users': '/v1/projects/c4fc65e/users/',
                u'stats': '/v1/stats/by-project/c4fc65e'
            },
            u'network': {
                u'id': u'2699a5',
                u'name': u'net22',
                u'href': u'/v1/networks/2699a5'
            }
        }

        with self.app.test_request_context():
            result = projects._project_to_view(tenant, net, None)
        self.assertEquals(expected, result)
    def test_sg_to_view_works(self):
        tenant = doubles.make(self.mox, doubles.Tenant,
                              id=u'PID', name=u'Tenant')
        sg = doubles.make(self.mox, doubles.SecurityGroup,
                          id=42, name=u'Test SG',
                          description=u'XXX', tenant_id=u'PID')

        expected = {
            u'id': u'42',
            u'name': u'Test SG',
            u'description': u'XXX',
            u'project': {
                u'id': u'PID',
                u'href': '/v1/projects/PID',
                u'name': u'Tenant'
            },
            u'rules-href': u'/v1/fw-rule-sets/42/rules/',
            u'href': u'/v1/fw-rule-sets/42'
        }

        self.mox.ReplayAll()

        with self.app.test_request_context():
            res = fw_rule_sets._sg_to_view(sg, tenant.name)
        self.assertEquals(expected, res)
    def test_list_works(self):
        tenants = (
            doubles.make(self.mox, doubles.Tenant, name='t1', id=u'PID1'),
            doubles.make(self.mox, doubles.Tenant, name='systenant', id=u'S'),
            doubles.make(self.mox, doubles.Tenant, name='t2', id=u'PID2'))

        self.fake_client_set.identity_admin.tenants.list().AndReturn(tenants)

        tcs1 = mock_client_set(self.mox)
        fw_rule_sets.client_set_for_tenant(u'PID1', fallback_to_api=True) \
                .AndReturn(tcs1)
        tcs1.compute.security_groups.list().AndReturn(['SG1', 'SG2'])
        fw_rule_sets._sg_to_view('SG1', tenants[0].name).AndReturn('REPLY1')
        fw_rule_sets._sg_to_view('SG2', tenants[0].name).AndReturn('REPLY2')

        tcs2 = mock_client_set(self.mox)
        fw_rule_sets.client_set_for_tenant(u'PID2', fallback_to_api=True) \
                .AndReturn(tcs2)
        tcs2.compute.security_groups.list().AndReturn(['SG3'])
        fw_rule_sets._sg_to_view('SG3', tenants[2].name).AndReturn('REPLY3')

        expected = {
            'collection': {
                'name': 'fw-rule-sets',
                'size': 3
            },
            'fw-rule-sets': ['REPLY1', 'REPLY2', 'REPLY3']
        }

        self.mox.ReplayAll()
        rv = self.client.get('/v1/fw-rule-sets/')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
 def setUp(self):
     super(AddProjectUserTestCase, self).setUp()
     self.project_id = u'PID'
     self.user_id = u'UID'
     self.tenant = doubles.make(self.mox, doubles.Tenant,
                                id=self.project_id)
     self.user = doubles.make(self.mox, doubles.User,
                              id=self.user_id, name='username')
 def setUp(self):
     super(RemoveProjectUserTestCase, self).setUp()
     self.project_id = u'PID'
     self.user_id = u'UID'
     self.tenant = doubles.make(self.mox, doubles.Tenant,
                                id=self.project_id)
     self.roles = [
         doubles.make(self.mox, doubles.Role, id=u'AR', name=u'admin'),
         doubles.make(self.mox, doubles.Role, id=u'MR', name=u'member')
     ]
Exemple #13
0
    def test_current_user_project_ids(self):
        tenants = [doubles.make(self.mox, doubles.Tenant, id='PID1'),
                   doubles.make(self.mox, doubles.Tenant, id='PID2')]
        self.fake_client_set.identity_public.tenants.list() \
                .AndReturn(tenants)

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            ids = auth.current_user_project_ids()
            self.assertEquals(ids, set(('PID1', 'PID2')))
 def setUp(self):
     super(InstanceRuleSetsTestCase, self).setUp()
     self.server = doubles.make(self.mox, doubles.Server,
                                id=u'VMID', name=u'ExampleVM')
     self.sg = doubles.make(self.mox, doubles.SecurityGroup,
                            id=2, name=u'ExampleSG', tenant_id='PID')
     self.sg2 = doubles.make(self.mox, doubles.SecurityGroup,
                            id=142, name=u'AnotherSG', tenant_id='PID')
     self.sg_id = unicode(self.sg.id)
     self.mox.StubOutWithMock(ifwrs, 'link_for_security_group')
     self.mox.StubOutWithMock(ifwrs, 'assert_admin_or_project_user')
 def setUp(self):
     super(AddFwRuleSetToVMTestCase, self).setUp()
     self.mox.StubOutWithMock(ifwrs, 'client_set_for_tenant')
     self.mox.StubOutWithMock(ifwrs, 'link_for_security_group')
     self.server = doubles.make(self.mox, doubles.Server,
                                tenant_id='FWPROJECT',
                                id=u'VMID', name=u'ExampleVM')
     self.sg = doubles.make(self.mox, doubles.SecurityGroup,
                            tenant_id='FWPROJECT',
                            id=2, name=u'ExampleSG')
     self.sg_id = unicode(self.sg.id)
 def setUp(self):
     super(UserFetchesUserTestCase, self).setUp()
     self.mox.StubOutWithMock(users.auth, 'admin_client_set')
     self.mox.StubOutWithMock(users.auth, 'current_user_id')
     self.mox.StubOutWithMock(users.auth, 'current_user_project_ids')
     self.user = doubles.make(self.mox, doubles.User,
                              id='UID', name='Test')
     self.role = doubles.make(self.mox, doubles.Role,
                              tenant={'id': 'PID'},
                              id='ROLE', name='Role')
     self.admin_cs = self._fake_client_set_factory()
 def setUp(self):
     super(ImagesAsUserTestCase, self).setUp()
     self.mox.StubOutWithMock(images.auth, "client_set_for_tenant")
     self.mox.StubOutWithMock(images.auth, "default_tenant_id")
     self.mox.StubOutWithMock(images.auth, "current_user_project_ids")
     self.mox.StubOutWithMock(images, "_image_to_view")
     self.tenant = doubles.make(self.mox, doubles.Tenant, id="PID", name="ptest")
     self.images = [
         doubles.make(self.mox, doubles.Image, id="IMAGE1", owner="SYS"),
         doubles.make(self.mox, doubles.Image, id="IMAGE2", owner="PID"),
         doubles.make(self.mox, doubles.Image, id="IMAGE3", owner="PID"),
     ]
 def test_servers_for_user_none(self):
     self.mox.StubOutWithMock(instances, 'client_set_for_tenant')
     tenants = [doubles.make(self.mox, doubles.Tenant, id='P2'),
                doubles.make(self.mox, doubles.Tenant, id='P3')]
     self.fake_client_set.identity_public.tenants.list() \
             .AndReturn(tenants)
     self.mox.ReplayAll()
     with self.app.test_request_context('/v1/instances?my-projects=true'
                                        '&project:eq=P1'):
         self.install_fake_auth()
         instances.parse_collection_request(instances._SCHEMA.sortby)
         result = instances._servers_for_user()
     self.assertEquals(result, [])
Exemple #19
0
    def test_bound_client_user(self):
        # pretend we have unbound client set:
        self.fake_client_set.http_client.access['user']['roles'] = []
        tenants = [doubles.make(self.mox, doubles.Tenant, id='PID1'),
                   doubles.make(self.mox, doubles.Tenant, id='PID2')]

        self.fake_client_set.identity_public.tenants.list() \
                .AndReturn(tenants)
        auth.client_set_for_tenant('PID1').AndReturn('FAKE_CS')

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            self.assertEquals(auth.bound_client_set(), 'FAKE_CS')
 def setUp(self):
     super(RemoveFwRuleSetFromVMTestCase, self).setUp()
     self.mox.StubOutWithMock(ifwrs, 'link_for_security_group')
     self.mox.StubOutWithMock(ifwrs, 'client_set_for_tenant')
     self.mox.StubOutWithMock(ifwrs,
                              'assert_admin_or_project_user')
     self.server = doubles.make(self.mox, doubles.Server,
                                id=u'VMID', name=u'ExampleVM',
                                tenant_id=u'FWPROJECT')
     self.sg = doubles.make(self.mox, doubles.SecurityGroup,
                            id=2, name=u'ExampleSG',
                            tenant_id=u'FWPROJECT')
     self.tcs = mock_client_set(self.mox)
     self.sg_id = unicode(self.sg.id)
 def setUp(self):
     super(UserFromNovaTestCase, self).setUp()
     self.mox.StubOutWithMock(users, 'InvitesDAO')
     self.roles = [
         doubles.make(self.mox, doubles.Role,
                      role={'id': u'42', 'name': u'admin'},
                      tenant={'id': 'SYS', 'name': 'systenant'}),
         doubles.make(self.mox, doubles.Role,
                      role={'id': u'43', 'name': u'member'},
                      tenant={'id': 'PID', 'name': 'ptest'}),
         doubles.make(self.mox, doubles.Role,
                      role={'id': u'44', 'name': u'member'},
                      tenant={'id': 'PID2', 'name': 'other'})
     ]
    def test_get_one(self):
        flavors = [
            doubles.make(self.mox, doubles.Flavor, id="42111"),
            doubles.make(self.mox, doubles.Flavor, id="42"),
            doubles.make(self.mox, doubles.Flavor, id="421"),
        ]
        self.fake_client_set.compute.flavors.list().AndReturn(flavors)
        instance_types._instance_type_to_view(flavors[1]).AndReturn('REPLY')

        self.mox.ReplayAll()

        rv = self.client.get('/v1/instance-types/42')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, 'REPLY')
    def test_delete_user_with_keys(self):
        keys = [doubles.make(self.mox, doubles.Keypair, id='kp1'),
                doubles.make(self.mox, doubles.Keypair, id='kp2')]

        user_keypairs = self.fake_client_set.compute_ext.user_keypairs
        user_keypairs.list('user-a') \
                .AndReturn(keys)
        user_keypairs.delete('user-a', 'kp1') \
                .AndRaise(osc_exc.NotFound('gone'))
        self.app.logger.exception(IsA(basestring), 'kp1', 'user-a')
        user_keypairs.delete('user-a', 'kp2')
        self.fake_client_set.identity_admin.users.delete('user-a')
        self.mox.ReplayAll()

        rv = self.client.delete('/v1/users/user-a')
        self.assertEquals(rv.status_code, 204)
    def test_user_to_view_send_invite_code(self):
        """What we got when resending invite without disabling user"""
        user = doubles.make(self.mox, doubles.User,
                            id=u'42', name=u'iv', email=u'*****@*****.**',
                            fullname=u'Example User', enabled=True)
        date = datetime(2012, 9, 15, 15, 03, 00)
        invite = Token(user_id=user.id, created_at=date,
                       complete=False, code='THE_CODE')

        user.list_roles().AndReturn([])
        expected = {
            u'id': u'42',
            u'name': u'iv',
            u'href': u'/v1/users/42',
            u'email': u'*****@*****.**',
            u'fullname': 'Example User',
            u'admin': False,
            u'projects': [],
            u'completed-registration': True,  # because user can work
            u'invited-at': date,
            u'invitation-code': 'THE_CODE',
            u'links': {
                u'send-invite': '/v1/users/42/send-invite',
                u'ssh-keys': '/v1/users/42/ssh-keys/',
            }
        }

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            data = users.user_to_view(user, invite, send_code=True)
        self.assertEquals(data, expected)
    def test_user_to_view_disabled_noadmin(self):
        user = doubles.make(self.mox, doubles.User,
                            id=u'42', name=u'iv', email=u'*****@*****.**',
                            fullname=u'Example User', enabled=False)

        user.list_roles().AndReturn([])
        users.InvitesDAO.get_for_user(user.id).AndReturn(None)

        expected = {
            u'id': u'42',
            u'name': u'iv',
            u'href': u'/v1/users/42',
            u'email': u'*****@*****.**',
            u'fullname': 'Example User',
            u'admin': False,
            u'projects': [],
            u'completed-registration': False,
            u'links': {
                u'send-invite': '/v1/users/42/send-invite',
                u'ssh-keys': '/v1/users/42/ssh-keys/',
            }
        }

        self.mox.ReplayAll()

        with self.app.test_request_context():
            self.install_fake_auth()
            data = users.user_to_view(user)
        self.assertEquals(data, expected)
    def test_stats_work(self):
        images = [doubles.make(self.mox, doubles.Image,
                               id=str(i), name='image%s' % i, is_public=p)
                  for i, p in enumerate((True, False, False, True, False))]

        expected = {
            'projects': 3,
            'instances': 14,
            'users': 9,
            'total-images': 5,
            'global-images': 2,
            'by-project-stats-href': u'/v1/stats/by-project/'
        }
        tenants = ['systenant', 'tenant1', 'tenant2', 'tenant3']

        cs = self.fake_client_set
        cs.identity_admin.tenants.list().AndReturn(tenants)
        cs.identity_admin.users.list()\
                .AndReturn(['user%s' % i for i in xrange(9)])
        cs.compute.servers.list(search_opts={'all_tenants': 1})\
                .AndReturn(['instance%s' % i for i in xrange(14)])
        stats.list_all_images(cs.image.images).AndReturn(images)

        self.mox.ReplayAll()
        rv = self.client.get('/v1/stats')
        data = self.check_and_parse_response(rv)
        self.assertEquals(expected, data)
 def setUp(self):
     super(ListImagesTestCase, self).setUp()
     self.mox.StubOutWithMock(images.auth, "client_set_for_tenant")
     self.mox.StubOutWithMock(images.auth, "default_tenant_id")
     self.mox.StubOutWithMock(images.auth, "assert_admin")
     self.mox.StubOutWithMock(images.auth, "api_client_set")
     self.mox.StubOutWithMock(images, "_image_to_view")
     self.tenants = [
         doubles.make(self.mox, doubles.Tenant, id="SYS", name="systenant"),
         doubles.make(self.mox, doubles.Tenant, id="PID", name="ptest"),
     ]
     self.images = [
         doubles.make(self.mox, doubles.Image, id="IMAGE1", owner="SYS"),
         doubles.make(self.mox, doubles.Image, id="IMAGE2", owner="PID"),
         doubles.make(self.mox, doubles.Image, id="IMAGE3", owner="PID"),
     ]
 def test_rule_object_to_view_works(self):
     rule = doubles.make(self.mox, doubles.SecurityGroupRule,
                         **self.to_view)
     self.mox.ReplayAll()
     with self.app.test_request_context():
         res = fw_rules._fw_rule_object_to_view(rule)
     self.assertEquals(res, self.expected)
 def test_global_image_to_view(self):
     image = doubles.make(
         self.mox,
         doubles.Image,
         id=u"IMAGE",
         name=u"TestImage",
         size=123456,
         owner=None,
         created_at="2012-10-15T01:43:00",
         disk_format=u"raw",
         container_format=u"bare",
         checksum="831a05f7bdeadbabe5l1k3133715e7ea",
         status=u"active",
     )
     expected = {
         u"id": u"IMAGE",
         u"href": "/v1/images/IMAGE",
         u"data-href": "/v1/images/IMAGE/data",
         u"name": u"TestImage",
         u"global": True,
         u"created": datetime(2012, 10, 15, 01, 43, 00),
         u"disk-format": u"raw",
         u"container-format": u"bare",
         u"md5sum": "831a05f7bdeadbabe5l1k3133715e7ea",
         u"size": 123456,
         u"status": u"active",
     }
 def setUp(self):
     super(DeleteProjectTestCase, self).setUp()
     self.tenant_id = u'PID'
     self.tenant = doubles.make(self.mox, doubles.Tenant,
                                id=self.tenant_id)
     self.mox.StubOutWithMock(projects, '_project_has_servers')
     self.mox.StubOutWithMock(projects, '_project_has_images')
 def test_global_image_to_view(self):
     image = doubles.make(self.mox, doubles.Image,
                          id=u'IMAGE', name=u'TestImage', size=123456,
                          owner=None, created_at='2012-10-15T01:43:00',
                          disk_format=u'raw', container_format=u'bare',
                          checksum='831a05f7bdeadbabe5l1k3133715e7ea',
                          status=u'active')
     expected = {
         u'id': u'IMAGE',
         u'href': '/v1/images/IMAGE',
         u'data-href': '/v1/images/IMAGE/data',
         u'name': u'TestImage',
         u'global': True,
         u'created': datetime(2012, 10, 15, 01, 43, 00),
         u'disk-format': u'raw',
         u'container-format': u'bare',
         u'md5sum': '831a05f7bdeadbabe5l1k3133715e7ea',
         u'size': 123456,
         u'status': u'active',
     }
Exemple #32
0
 def test_to_view(self):
     flavor = doubles.make(self.mox,
                           doubles.Flavor,
                           id=u'42',
                           name=u'my test',
                           vcpus=4,
                           ram=8192,
                           disk=10,
                           ephemeral=80)
     expected = {
         u'id': u'42',
         u'href': u'/v1/instance-types/42',
         u'name': u'my test',
         u'cpus': 4,
         u'ram': 8 * _GB,
         u'root-size': 10 * _GB,
         u'ephemeral-size': 80 * _GB
     }
     with self.app.test_request_context():
         res = instance_types._instance_type_to_view(flavor)
     self.assertEquals(expected, res)
    def test_user_to_view_send_invite_code(self):
        """What we got when resending invite without disabling user"""
        user = doubles.make(self.mox,
                            doubles.User,
                            id=u'42',
                            name=u'iv',
                            email=u'*****@*****.**',
                            fullname=u'Example User',
                            enabled=True)
        date = datetime(2012, 9, 15, 15, 03, 00)
        invite = Token(user_id=user.id,
                       created_at=date,
                       complete=False,
                       code='THE_CODE')

        user.list_roles().AndReturn([])
        expected = {
            u'id': u'42',
            u'name': u'iv',
            u'href': u'/v1/users/42',
            u'email': u'*****@*****.**',
            u'fullname': 'Example User',
            u'admin': False,
            u'projects': [],
            u'completed-registration': True,  # because user can work
            u'invited-at': date,
            u'invitation-code': 'THE_CODE',
            u'links': {
                u'send-invite': '/v1/users/42/send-invite',
                u'ssh-keys': '/v1/users/42/ssh-keys/',
            }
        }

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            data = users.user_to_view(user, invite, send_code=True)
        self.assertEquals(data, expected)
Exemple #34
0
    def test_list_works(self):
        sg = doubles.make(self.mox, doubles.SecurityGroup,
                          id=u'42', name='Test SG', tenant_id='TENANT',
                          rules=['RULE1', 'RULE2'])

        self.fake_client_set.compute.security_groups.get(sg.id).AndReturn(sg)
        fw_rules.auth.assert_admin_or_project_user('TENANT', eperm_status=404)
        fw_rules._fw_rule_dict_to_view('RULE1').AndReturn('REPLY1')
        fw_rules._fw_rule_dict_to_view('RULE2').AndReturn('REPLY2')

        expected = {
            'collection': {
                'name': 'rules',
                'size': 2,
                'parent-href': '/v1/fw-rule-sets/%s' % sg.id
            },
            'rules': [ 'REPLY1', 'REPLY2' ]
        }

        self.mox.ReplayAll()
        rv = self.client.get('/v1/fw-rule-sets/%s/rules/' % sg.id)
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
    def test_list_nodes_work(self):
        hm = self.fake_client_set.compute.hosts
        hm.list_all().AndReturn([
            doubles.make(self.mox, doubles.Host, _info=info)
            for info in _TEST_HOSTS
        ])
        hm.get('master').AndReturn('MASTER_DATA')
        nodes._node_to_view('master', 'MASTER_DATA').AndReturn('H1')
        hm.get('slave1').AndRaise(osc_exc.NotFound('gone'))
        hm.get('slave2').AndReturn('SLAVE_DATA')
        nodes._node_to_view('slave2', 'SLAVE_DATA').AndReturn('H3')

        expected = {
            'collection': {
                'name': 'nodes',
                'size': 2,
            },
            'nodes': ['H1', 'H3']
        }
        self.mox.ReplayAll()
        rv = self.client.get('/v1/nodes/')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data, expected)
    def test_net_to_dict_no_project(self):
        net = doubles.make(self.mox,
                           doubles.Network,
                           id='271',
                           label='testnet',
                           vlan=42,
                           cidr='10.5.2.0/24',
                           netmask='255.255.255.0',
                           project_id=None)
        expected = {
            'id': '271',
            'href': '/v1/networks/271',
            'name': 'testnet',
            'vlan': 42,
            'cidr': '10.5.2.0/24',
            'used': False,
        }

        self.mox.ReplayAll()
        with self.app.test_request_context():
            self.install_fake_auth()
            data = networks._net_to_dict(net)
        self.assertEquals(data, expected)
Exemple #37
0
    def test_remind_user_not_found(self):
        server_mgr = self.fake_client_set.compute.servers
        user_mgr = self.fake_client_set.identity_admin.users
        server = doubles.make(self.mox,
                              doubles.Server,
                              id='v2',
                              name='instance-2',
                              user_id='UID')
        expires = datetime(2013, 1, 19, 11, 12, 13)

        instances.admin_client_set().AndReturn(self.fake_client_set)
        instances.datetime.utcnow().AndReturn('UTCNOW')
        instances.InstanceDataDAO.remind_list('UTCNOW')\
                .AndReturn([InstanceData(instance_id='v2',
                                         expires_at=expires)])

        server_mgr.get('v2').AndReturn(server)
        user_mgr.get('UID').AndRaise(osc_exc.NotFound('deleted'))
        instances.InstanceDataDAO.update('v2', remind_at=None)

        self.mox.ReplayAll()
        with self.app.test_request_context():
            instances.remind_about_instances()
    def test_create_admin(self):
        client = self.fake_client_set
        new_user = doubles.make(self.mox, doubles.User, id='NUID')
        (name, email, passw) = ('user-a', '*****@*****.**', 'bananas')

        client.identity_admin.users.list().AndReturn([self.user])
        client.identity_admin.users.create(name=name,
                                           password=passw,
                                           email=email,
                                           enabled=True).AndReturn(new_user)

        # see doubles.py, near line 100 for role id and tenant id here
        client.identity_admin.roles.add_user_role('NUID', u'ADMIN_ROLE_ID',
                                                  u'SYSTENANT_ID')
        users.user_to_view(new_user).AndReturn('new-user-dict')

        self.mox.ReplayAll()
        data = self._interact({
            "name": name,
            "email": email,
            "password": passw,
            "admin": True
        })
        self.assertEquals(data, 'new-user-dict')
 def setUp(self):
     super(ImageDownloadTestCase, self).setUp()
     self.mox.StubOutWithMock(images, '_fetch_image')
     self.image = doubles.make(self.mox, doubles.Image,
                               id=u'IMG', owner=u'PID', name='test image',
                               status='active', size=42)
    def test_list_works(self):
        tenants = [
            doubles.make(self.mox, doubles.Tenant, **kwargs)
            for kwargs in (dict(id=u'p1', name=u'test1'),
                           dict(id=u'p2', name=u'test2'),
                           dict(id=u'SYS', name=u'systenant'))
        ]
        servers = [
            doubles.make(self.mox, doubles.Server, tenant_id='p2'),
            doubles.make(self.mox, doubles.Server, tenant_id='SYS'),
        ]
        images = [
            doubles.make(self.mox, doubles.Image, **kwargs)
            for kwargs in (dict(id='x', is_public=True),
                           dict(id='y', is_public=False, owner='p2'),
                           dict(id='z', is_public=True, owner='p1'))
        ]

        self.fake_client_set.identity_admin.tenants.list()\
                .AndReturn(tenants)
        auth.default_tenant_id().AndReturn('SYS')
        self.fake_client_set.identity_admin.tenants.list_users('p1')\
                .AndReturn([])
        auth.default_tenant_id().AndReturn('SYS')
        self.fake_client_set.identity_admin.tenants.list_users('p2')\
                .AndReturn([])
        auth.default_tenant_id().AndReturn('SYS')

        self.fake_client_set.compute.servers\
                .list(search_opts={'all_tenants': 1})\
                .AndReturn(servers)
        stats.list_all_images(self.fake_client_set.image.images)\
                .AndReturn(images)

        expected = [
            {
                'href': '/v1/stats/by-project/p1',
                'project': {
                    'href': '/v1/projects/p1',
                    'id': 'p1',
                    'name': 'test1'
                },
                'instances': 0,
                'members': 0,
                'local-images': 1,
                'total-images': 2
            },
            {
                'href': '/v1/stats/by-project/p2',
                'project': {
                    'href': '/v1/projects/p2',
                    'id': 'p2',
                    'name': 'test2'
                },
                'instances': 1,
                'members': 0,
                'local-images': 1,
                'total-images': 3
            },
        ]

        self.mox.ReplayAll()
        rv = self.client.get('/v1/stats/by-project/')
        data = self.check_and_parse_response(rv)
        self.assertEquals(data['stats'], expected)
 def _net(**kwargs):
     return doubles.make(self.mox, doubles.Network, **kwargs)
 def setUp(self):
     super(DeleteProjectTestCase, self).setUp()
     self.tenant_id = u'PID'
     self.tenant = doubles.make(self.mox, doubles.Tenant, id=self.tenant_id)
     self.mox.StubOutWithMock(projects, '_project_has_servers')
     self.mox.StubOutWithMock(projects, '_project_has_images')