示例#1
0
 def test_get_id_from_id_then_name_empty(self):
     _id = str(uuid.uuid4())
     reses = {
         'networks': [
             {
                 'id': _id,
             },
         ],
     }
     resstr = self.client.serialize(reses)
     resstr1 = self.client.serialize({'networks': []})
     self.mox.StubOutWithMock(self.client.httpclient, "request")
     path = getattr(self.client, "networks_path")
     self.client.httpclient.request(
         test_cli20.MyUrlComparator(
             test_cli20.end_url(path, "fields=id&id=" + _id), self.client),
         'GET',
         body=None,
         headers=mox.ContainsKeyValue('X-Auth-Token',
                                      test_cli20.TOKEN)).AndReturn(
                                          (test_cli20.MyResp(200), resstr1))
     self.client.httpclient.request(
         test_cli20.MyUrlComparator(
             test_cli20.end_url(path, "fields=id&name=" + _id),
             self.client),
         'GET',
         body=None,
         headers=mox.ContainsKeyValue('X-Auth-Token',
                                      test_cli20.TOKEN)).AndReturn(
                                          (test_cli20.MyResp(200), resstr))
     self.mox.ReplayAll()
     returned_id = neutronV20.find_resourceid_by_name_or_id(
         self.client, 'network', _id)
     self.assertEqual(_id, returned_id)
示例#2
0
    def _test_list_nets_extend_subnets(self, data, expected):
        cmd = network.ListNetwork(test_cli20.MyApp(sys.stdout), None)
        nets_path = getattr(self.client, 'networks_path')
        subnets_path = getattr(self.client, 'subnets_path')
        nets_query = ''
        filters = ''
        for n in data:
            for s in n['subnets']:
                filters = filters + "&id=%s" % s
        subnets_query = 'fields=id&fields=cidr' + filters
        with mock.patch.object(cmd, 'get_client',
                               return_value=self.client) as mock_get_client, \
                mock.patch.object(self.client.httpclient,
                                  "request") as mock_request:
            resp1 = (test_cli20.MyResp(200),
                     self.client.serialize({'networks': data}))
            resp2 = (test_cli20.MyResp(200),
                     self.client.serialize({
                         'subnets': [{
                             'id': 'mysubid1',
                             'cidr': '192.168.1.0/24'
                         }, {
                             'id': 'mysubid2',
                             'cidr': '172.16.0.0/24'
                         }, {
                             'id': 'mysubid3',
                             'cidr': '10.1.1.0/24'
                         }]
                     }))
            mock_request.side_effect = [resp1, resp2]
            args = []
            cmd_parser = cmd.get_parser('list_networks')
            parsed_args = cmd_parser.parse_args(args)
            result = cmd.take_action(parsed_args)

        mock_get_client.assert_called_with()
        self.assertEqual(2, mock_request.call_count)
        mock_request.assert_has_calls([
            mock.call(test_cli20.MyUrlComparator(
                test_cli20.end_url(nets_path, nets_query), self.client),
                      'GET',
                      body=None,
                      headers=test_cli20.ContainsKeyValue(
                          {'X-Auth-Token': test_cli20.TOKEN})),
            mock.call(test_cli20.MyUrlComparator(
                test_cli20.end_url(subnets_path, subnets_query), self.client),
                      'GET',
                      body=None,
                      headers=test_cli20.ContainsKeyValue(
                          {'X-Auth-Token': test_cli20.TOKEN}))
        ])
        _result = [x for x in result[1]]
        self.assertEqual(len(expected), len(_result))
        for res, exp in zip(_result, expected):
            self.assertEqual(len(exp), len(res))
            for obsrvd, expctd in zip(res, exp):
                self.assertEqual(expctd, obsrvd)
示例#3
0
 def _test_tag_operation(self,
                         cmd,
                         path,
                         method,
                         args,
                         prog_name,
                         body=None):
     self.mox.StubOutWithMock(cmd, "get_client")
     self.mox.StubOutWithMock(self.client.httpclient, "request")
     cmd.get_client().MultipleTimes().AndReturn(self.client)
     if body:
         body = test_cli20.MyComparator(body, self.client)
     self.client.httpclient.request(test_cli20.MyUrlComparator(
         test_cli20.end_url(path, format=self.format), self.client),
                                    method,
                                    body=body,
                                    headers=mox.ContainsKeyValue(
                                        'X-Auth-Token',
                                        test_cli20.TOKEN)).AndReturn(
                                            (test_cli20.MyResp(204), None))
     self.mox.ReplayAll()
     cmd_parser = cmd.get_parser(prog_name)
     shell.run_command(cmd, cmd_parser, args)
     self.mox.VerifyAll()
     self.mox.UnsetStubs()
示例#4
0
 def _test_get_resource_by_id(self, id_only=False):
     _id = str(uuid.uuid4())
     net = {'id': _id, 'name': 'test'}
     reses = {
         'networks': [net],
     }
     resstr = self.client.serialize(reses)
     self.mox.StubOutWithMock(self.client.httpclient, "request")
     path = getattr(self.client, "networks_path")
     if id_only:
         query_params = "fields=id&id=%s" % _id
     else:
         query_params = "id=%s" % _id
     self.client.httpclient.request(
         test_cli20.MyUrlComparator(test_cli20.end_url(path, query_params),
                                    self.client),
         'GET',
         body=None,
         headers=mox.ContainsKeyValue('X-Auth-Token',
                                      test_cli20.TOKEN)).AndReturn(
                                          (test_cli20.MyResp(200), resstr))
     self.mox.ReplayAll()
     if id_only:
         returned_id = neutronV20.find_resourceid_by_id(
             self.client, 'network', _id)
         self.assertEqual(_id, returned_id)
     else:
         result = neutronV20.find_resource_by_id(self.client, 'network',
                                                 _id)
         self.assertEqual(net, result)
示例#5
0
 def test_get_id_from_name_multiple(self):
     name = 'myname'
     reses = {
         'networks': [{
             'id': str(uuid.uuid4())
         }, {
             'id': str(uuid.uuid4())
         }]
     }
     resstr = self.client.serialize(reses)
     self.mox.StubOutWithMock(self.client.httpclient, "request")
     path = getattr(self.client, "networks_path")
     self.client.httpclient.request(
         test_cli20.MyUrlComparator(
             test_cli20.end_url(path, "fields=id&name=" + name),
             self.client),
         'GET',
         body=None,
         headers=mox.ContainsKeyValue('X-Auth-Token',
                                      test_cli20.TOKEN)).AndReturn(
                                          (test_cli20.MyResp(200), resstr))
     self.mox.ReplayAll()
     exception = self.assertRaises(exceptions.NeutronClientNoUniqueMatch,
                                   neutronV20.find_resourceid_by_name_or_id,
                                   self.client, 'network', name)
     self.assertIn('Multiple', exception.message)
    def test_insert_firewall_rule(self):
        # firewall-policy-insert-rule myid newruleid --insert-before ruleAid
        # --insert-after ruleBid
        resource = 'firewall_policy'
        cmd = firewallpolicy.FirewallPolicyInsertRule(
            test_cli20.MyApp(sys.stdout), None)
        myid = 'myid'
        args = [
            'myid', 'newrule', '--insert-before', 'rule2', '--insert-after',
            'rule1'
        ]
        extrafields = {
            'firewall_rule_id': 'newrule',
            'insert_before': 'rule2',
            'insert_after': 'rule1'
        }

        self.mox.StubOutWithMock(cmd, "get_client")
        self.mox.StubOutWithMock(self.client.httpclient, "request")
        cmd.get_client().MultipleTimes().AndReturn(self.client)
        body = extrafields
        path = getattr(self.client, resource + "_insert_path")
        self.client.httpclient.request(
            test_cli20.MyUrlComparator(test_cli20.end_url(path % myid),
                                       self.client),
            'PUT',
            body=test_cli20.MyComparator(body, self.client),
            headers=mox.ContainsKeyValue('X-Auth-Token',
                                         test_cli20.TOKEN)).AndReturn(
                                             (test_cli20.MyResp(204), None))
        self.mox.ReplayAll()
        cmd_parser = cmd.get_parser(resource + "_insert_rule")
        shell.run_command(cmd, cmd_parser, args)
        self.mox.VerifyAll()
        self.mox.UnsetStubs()
示例#7
0
    def test_get_id_from_name(self):
        name = 'myname'
        _id = uuidutils.generate_uuid()
        reses = {
            'networks': [
                {
                    'id': _id,
                },
            ],
        }
        resstr = self.client.serialize(reses)
        resp = (test_cli20.MyResp(200), resstr)
        path = getattr(self.client, "networks_path")
        with mock.patch.object(self.client.httpclient,
                               "request",
                               return_value=resp) as mock_request:
            returned_id = neutronV20.find_resourceid_by_name_or_id(
                self.client, 'network', name)

        mock_request.assert_called_once_with(
            test_cli20.MyUrlComparator(
                test_cli20.end_url(path, "fields=id&name=" + name),
                self.client),
            'GET',
            body=None,
            headers=test_cli20.ContainsKeyValue(
                {'X-Auth-Token': test_cli20.TOKEN}))
        self.assertEqual(_id, returned_id)
示例#8
0
    def test_remove_firewall_rule(self):
        # firewall-policy-remove-rule myid ruleid
        resource = 'firewall_policy'
        cmd = firewallpolicy.FirewallPolicyRemoveRule(
            test_cli20.MyApp(sys.stdout), None)
        myid = 'myid'
        args = ['myid', 'removerule']
        extrafields = {
            'firewall_rule_id': 'removerule',
        }

        body = extrafields
        path = getattr(self.client, resource + "_remove_path")
        cmd_parser = cmd.get_parser(resource + "_remove_rule")
        resp = (test_cli20.MyResp(204), None)

        with mock.patch.object(cmd, "get_client",
                               return_value=self.client) as mock_get_client, \
                mock.patch.object(self.client.httpclient, "request",
                                  return_value=resp) as mock_request:
            shell.run_command(cmd, cmd_parser, args)
        self.assert_mock_multiple_calls_with_same_arguments(
            mock_get_client, mock.call(), 2)
        mock_request.assert_called_once_with(
            test_cli20.MyUrlComparator(test_cli20.end_url(path % myid),
                                       self.client),
            'PUT',
            body=test_cli20.MyComparator(body, self.client),
            headers=test_cli20.ContainsKeyValue(
                {'X-Auth-Token': test_cli20.TOKEN}))
    def test_remove_firewall_rule(self):
        """firewall-policy-remove-rule myid ruleid
        """
        resource = 'firewall_policy'
        cmd = firewallpolicy.FirewallPolicyRemoveRule(
            test_cli20.MyApp(sys.stdout), None)
        myid = 'myid'
        args = ['myid', 'removerule']
        extrafields = {
            'firewall_rule_id': 'removerule',
        }

        self.mox.StubOutWithMock(cmd, "get_client")
        self.mox.StubOutWithMock(self.client.httpclient, "request")
        cmd.get_client().MultipleTimes().AndReturn(self.client)
        body = extrafields
        path = getattr(self.client, resource + "_remove_path")
        self.client.httpclient.request(
            test_cli20.MyUrlComparator(
                test_cli20.end_url(path % myid, format=self.format),
                self.client),
            'PUT',
            body=test_cli20.MyComparator(body, self.client),
            headers=mox.ContainsKeyValue('X-Auth-Token',
                                         test_cli20.TOKEN)).AndReturn(
                                             (test_cli20.MyResp(204), None))
        args.extend(['--request-format', self.format])
        self.mox.ReplayAll()
        cmd_parser = cmd.get_parser(resource + "_remove_rule")
        shell.run_command(cmd, cmd_parser, args)
        self.mox.VerifyAll()
        self.mox.UnsetStubs()
示例#10
0
    def _test_get_resource_by_id(self, id_only=False):
        _id = uuidutils.generate_uuid()
        net = {'id': _id, 'name': 'test'}
        reses = {
            'networks': [net],
        }
        resstr = self.client.serialize(reses)
        resp = (test_cli20.MyResp(200), resstr)
        path = getattr(self.client, "networks_path")
        if id_only:
            query_params = "fields=id&id=%s" % _id
        else:
            query_params = "id=%s" % _id
        with mock.patch.object(self.client.httpclient,
                               "request",
                               return_value=resp) as mock_request:
            if id_only:
                returned_id = neutronV20.find_resourceid_by_id(
                    self.client, 'network', _id)
                self.assertEqual(_id, returned_id)
            else:
                result = neutronV20.find_resource_by_id(
                    self.client, 'network', _id)
                self.assertEqual(net, result)

        mock_request.assert_called_once_with(
            test_cli20.MyUrlComparator(test_cli20.end_url(path, query_params),
                                       self.client),
            'GET',
            body=None,
            headers=test_cli20.ContainsKeyValue(
                {'X-Auth-Token': test_cli20.TOKEN}))
示例#11
0
    def test_extend_list(self):
        data = [{
            'id': 'netid%d' % i,
            'name': 'net%d' % i,
            'subnets': ['mysubid%d' % i]
        } for i in range(10)]
        filters, response = self._build_test_data(data)
        path = getattr(self.client, 'subnets_path')
        cmd = network.ListNetwork(test_cli20.MyApp(sys.stdout), None)
        with mock.patch.object(cmd, "get_client",
                               return_value=self.client) as mock_get_client, \
                mock.patch.object(self.client.httpclient, "request",
                                  return_value=response) as mock_request:
            known_args, _vs = cmd.get_parser('create_subnets')\
                .parse_known_args()
            cmd.extend_list(data, known_args)

        mock_get_client.assert_called_once_with()
        mock_request.assert_called_once_with(
            test_cli20.MyUrlComparator(
                test_cli20.end_url(path, 'fields=id&fields=cidr' + filters),
                self.client),
            'GET',
            body=None,
            headers=test_cli20.ContainsKeyValue(
                {'X-Auth-Token': test_cli20.TOKEN}))
示例#12
0
    def test_get_id_from_name_multiple(self):
        name = 'myname'
        reses = {
            'networks': [{
                'id': uuidutils.generate_uuid()
            }, {
                'id': uuidutils.generate_uuid()
            }]
        }
        resstr = self.client.serialize(reses)
        resp = (test_cli20.MyResp(200), resstr)
        path = getattr(self.client, "networks_path")
        with mock.patch.object(self.client.httpclient,
                               "request",
                               return_value=resp) as mock_request:
            exception = self.assertRaises(
                exceptions.NeutronClientNoUniqueMatch,
                neutronV20.find_resourceid_by_name_or_id, self.client,
                'network', name)

        mock_request.assert_called_once_with(
            test_cli20.MyUrlComparator(
                test_cli20.end_url(path, "fields=id&name=" + name),
                self.client),
            'GET',
            body=None,
            headers=test_cli20.ContainsKeyValue(
                {'X-Auth-Token': test_cli20.TOKEN}))
        self.assertIn('Multiple', exception.message)
示例#13
0
    def test_get_id_from_name_multiple_with_project_not_found(self):
        name = 'web_server'
        project = uuidutils.generate_uuid()
        resstr_notfound = self.client.serialize({'security_groups': []})
        resp = (test_cli20.MyResp(200), resstr_notfound)
        path = getattr(self.client, "security_groups_path")
        with mock.patch.object(self.client.httpclient,
                               "request",
                               return_value=resp) as mock_request:
            exc = self.assertRaises(exceptions.NotFound,
                                    neutronV20.find_resourceid_by_name_or_id,
                                    self.client, 'security_group', name,
                                    project)

        mock_request.assert_called_once_with(
            test_cli20.MyUrlComparator(
                test_cli20.end_url(
                    path, "fields=id&name=%s&tenant_id=%s" % (name, project)),
                self.client),
            'GET',
            body=None,
            headers=test_cli20.ContainsKeyValue(
                {'X-Auth-Token': test_cli20.TOKEN}))
        self.assertIn('Unable to find', exc.message)
        self.assertEqual(404, exc.status_code)
示例#14
0
    def test_list_external_nets_empty_with_column(self):
        resources = "networks"
        cmd = network.ListExternalNetwork(test_cli20.MyApp(sys.stdout), None)
        reses = {resources: []}
        resstr = self.client.serialize(reses)
        # url method body
        query = "router%3Aexternal=True&id=myfakeid"
        args = ['-c', 'id', '--', '--id', 'myfakeid']
        path = getattr(self.client, resources + "_path")
        resp = (test_cli20.MyResp(200), resstr)
        with mock.patch.object(cmd, "get_client",
                               return_value=self.client) as mock_get_client, \
                mock.patch.object(self.client.httpclient, "request",
                                  return_value=resp) as mock_request, \
                mock.patch.object(network.ListNetwork, "extend_list",
                                  return_value=None) as mock_extend_list:
            cmd_parser = cmd.get_parser("list_" + resources)
            shell.run_command(cmd, cmd_parser, args)

        mock_get_client.assert_called_once_with()
        mock_request.assert_called_once_with(
            test_cli20.MyUrlComparator(test_cli20.end_url(path, query),
                                       self.client),
            'GET',
            body=None,
            headers=test_cli20.ContainsKeyValue(
                {'X-Auth-Token': test_cli20.TOKEN}))
        mock_extend_list.assert_called_once_with(test_cli20.IsA(list),
                                                 mock.ANY)
        _str = self.fake_stdout.make_string()
        self.assertEqual('\n', _str)
    def test_extend_list(self):
        data = [{
            'name': 'default',
            'remote_group_id': 'remgroupid%02d' % i
        } for i in range(10)]
        data.append({'name': 'default', 'remote_group_id': None})
        resources = "security_groups"

        cmd = securitygroup.ListSecurityGroupRule(test_cli20.MyApp(sys.stdout),
                                                  None)

        path = getattr(self.client, resources + '_path')
        responses = self._build_test_data(data)
        known_args, _vs = cmd.get_parser('list' + resources).parse_known_args()
        resp = responses[0]['response']

        with mock.patch.object(cmd, "get_client",
                               return_value=self.client) as mock_get_client, \
                mock.patch.object(self.client.httpclient, "request",
                                  return_value=resp) as mock_request:
            cmd.extend_list(data, known_args)

        mock_get_client.assert_called_once_with()
        mock_request.assert_called_once_with(
            test_cli20.MyUrlComparator(
                test_cli20.end_url(path, responses[0]['filter']), self.client),
            'GET',
            body=None,
            headers=test_cli20.ContainsKeyValue(
                {'X-Auth-Token': test_cli20.TOKEN}))
 def test_list_external_nets_empty_with_column(self):
     resources = "networks"
     cmd = network.ListExternalNetwork(test_cli20.MyApp(sys.stdout), None)
     self.mox.StubOutWithMock(cmd, "get_client")
     self.mox.StubOutWithMock(self.client.httpclient, "request")
     self.mox.StubOutWithMock(network.ListNetwork, "extend_list")
     network.ListNetwork.extend_list(mox.IsA(list), mox.IgnoreArg())
     cmd.get_client().MultipleTimes().AndReturn(self.client)
     reses = {resources: []}
     resstr = self.client.serialize(reses)
     # url method body
     query = "router%3Aexternal=True&id=myfakeid"
     args = ['-c', 'id', '--', '--id', 'myfakeid']
     path = getattr(self.client, resources + "_path")
     self.client.httpclient.request(
         test_cli20.MyUrlComparator(test_cli20.end_url(path, query),
                                    self.client),
         'GET',
         body=None,
         headers=mox.ContainsKeyValue('X-Auth-Token',
                                      test_cli20.TOKEN)).AndReturn(
                                          (test_cli20.MyResp(200), resstr))
     self.mox.ReplayAll()
     cmd_parser = cmd.get_parser("list_" + resources)
     shell.run_command(cmd, cmd_parser, args)
     self.mox.VerifyAll()
     self.mox.UnsetStubs()
     _str = self.fake_stdout.make_string()
     self.assertEqual('\n', _str)
示例#17
0
    def test_get_id_from_name_multiple_with_project_not_found(self):
        name = 'web_server'
        project = str(uuid.uuid4())
        reses = {
            'security_groups': [{
                'id': str(uuid.uuid4()),
                'tenant_id': str(uuid.uuid4())
            }]
        }
        resstr = self.client.serialize(reses)
        self.mox.StubOutWithMock(self.client.httpclient, "request")
        path = getattr(self.client, "security_groups_path")
        self.client.httpclient.request(
            test_cli20.MyUrlComparator(
                test_cli20.end_url(
                    path, "fields=id&name=%s&tenant_id=%s" % (name, project)),
                self.client),
            'GET',
            body=None,
            headers=mox.ContainsKeyValue('X-Auth-Token',
                                         test_cli20.TOKEN)).AndReturn(
                                             (test_cli20.MyResp(200), resstr))
        self.mox.ReplayAll()

        try:
            neutronV20.find_resourceid_by_name_or_id(self.client,
                                                     'security_group', name,
                                                     project)
        except exceptions.NotFound as ex:
            self.assertIn('Unable to find', ex.message)
            self.assertEqual(404, ex.status_code)
示例#18
0
    def test_extend_list_exceed_max_uri_len(self):
        data = [{
            'id': 'netid%d' % i,
            'name': 'net%d' % i,
            'subnets': ['mysubid%d' % i]
        } for i in range(10)]
        # Since in pagination we add &marker=<uuid> (44 symbols), total change
        # is 45 symbols. Single subnet takes 40 symbols (id=<uuid>&).
        # Because of it marker will take more space than single subnet filter,
        # and we expect neutron to send last 2 subnets in separate response.
        filters1, response1 = self._build_test_data(data[:len(data) - 2])
        filters2, response2 = self._build_test_data(data[len(data) - 2:])
        path = getattr(self.client, 'subnets_path')
        cmd = network.ListNetwork(test_cli20.MyApp(sys.stdout), None)
        with mock.patch.object(cmd, "get_client",
                               return_value=self.client) as mock_get_client, \
                mock.patch.object(self.client.httpclient,
                                  "request") as mock_request, \
                mock.patch.object(self.client.httpclient, "_check_uri_length",
                                  return_value=None) as mock_check_uri_length:
            # 1 char of extra URI len will cause a split in 2 requests
            mock_check_uri_length.side_effect = [
                exceptions.RequestURITooLong(excess=1), None, None
            ]
            mock_request.side_effect = [response1, response2]
            known_args, _vs = cmd.get_parser('create_subnets')\
                .parse_known_args()
            cmd.extend_list(data, known_args)

        mock_get_client.assert_called_once_with()
        self.assertEqual(2, mock_request.call_count)
        mock_request.assert_has_calls([
            mock.call(test_cli20.MyUrlComparator(
                test_cli20.end_url(path, 'fields=id&fields=cidr%s' % filters1),
                self.client),
                      'GET',
                      body=None,
                      headers=test_cli20.ContainsKeyValue(
                          {'X-Auth-Token': test_cli20.TOKEN})),
            mock.call(test_cli20.MyUrlComparator(
                test_cli20.end_url(path, 'fields=id&fields=cidr%s' % filters2),
                self.client),
                      'GET',
                      body=None,
                      headers=test_cli20.ContainsKeyValue(
                          {'X-Auth-Token': test_cli20.TOKEN}))
        ])
示例#19
0
 def mox_calls(path, data):
     filters, response = self._build_test_data(data)
     self.client.httpclient.request(
         test_cli20.MyUrlComparator(test_cli20.end_url(
             path, 'fields=id&fields=cidr' + filters), self.client),
         'GET',
         body=None,
         headers=mox.ContainsKeyValue(
             'X-Auth-Token', test_cli20.TOKEN)).AndReturn(response)
示例#20
0
    def test_extend_list_exceed_max_uri_len(self):
        data = [{
            'id': 'netid%d' % i,
            'name': 'net%d' % i,
            'subnets': ['mysubid%d' % i]
        } for i in range(10)]
        filters1, response1 = self._build_test_data(data[:len(data) - 1])
        filters2, response2 = self._build_test_data(data[len(data) - 1:])
        path = getattr(self.client, 'subnets_path')
        cmd = network.ListNetwork(test_cli20.MyApp(sys.stdout), None)
        with mock.patch.object(cmd, "get_client",
                               return_value=self.client) as mock_get_client, \
                mock.patch.object(self.client.httpclient,
                                  "request") as mock_request, \
                mock.patch.object(self.client.httpclient, "_check_uri_length",
                                  return_value=None) as mock_check_uri_length:
            # 1 char of extra URI len will cause a split in 2 requests
            mock_check_uri_length.side_effect = [
                exceptions.RequestURITooLong(excess=1), None, None
            ]
            mock_request.side_effect = [response1, response2]
            known_args, _vs = cmd.get_parser('create_subnets')\
                .parse_known_args()
            cmd.extend_list(data, known_args)

        mock_get_client.assert_called_once_with()
        self.assertEqual(2, mock_request.call_count)
        mock_request.assert_has_calls([
            mock.call(test_cli20.MyUrlComparator(
                test_cli20.end_url(path, 'fields=id&fields=cidr%s' % filters1),
                self.client),
                      'GET',
                      body=None,
                      headers=test_cli20.ContainsKeyValue(
                          {'X-Auth-Token': test_cli20.TOKEN})),
            mock.call(test_cli20.MyUrlComparator(
                test_cli20.end_url(path, 'fields=id&fields=cidr%s' % filters2),
                self.client),
                      'GET',
                      body=None,
                      headers=test_cli20.ContainsKeyValue(
                          {'X-Auth-Token': test_cli20.TOKEN}))
        ])
 def mox_calls(path, data):
     responses = self._build_test_data(data)
     self.client.httpclient.request(test_cli20.MyUrlComparator(
         test_cli20.end_url(path, responses[0]['filter']), self.client),
                                    'GET',
                                    body=None,
                                    headers=mox.ContainsKeyValue(
                                        'X-Auth-Token',
                                        test_cli20.TOKEN)).AndReturn(
                                            responses[0]['response'])
 def setup_list_stub(resources, data, query):
     reses = {resources: data}
     resstr = self.client.serialize(reses)
     resp = (test_cli20.MyResp(200), resstr)
     path = getattr(self.client, resources + '_path')
     self.client.httpclient.request(
         test_cli20.MyUrlComparator(test_cli20.end_url(path, query),
                                    self.client),
         'GET',
         body=None,
         headers=mox.ContainsKeyValue('X-Auth-Token',
                                      test_cli20.TOKEN)).AndReturn(resp)
 def setup_list_stub(resources, data, query, mock_calls, mock_returns):
     reses = {resources: data}
     resstr = self.client.serialize(reses)
     resp = (test_cli20.MyResp(200), resstr)
     path = getattr(self.client, resources + '_path')
     mock_calls.append(
         mock.call(test_cli20.MyUrlComparator(
             test_cli20.end_url(path, query), self.client),
                   'GET',
                   body=None,
                   headers=test_cli20.ContainsKeyValue(
                       {'X-Auth-Token': test_cli20.TOKEN})))
     mock_returns.append(resp)
    def test_extend_list_exceed_max_uri_len(self):
        data = [{
            'name': 'default',
            'security_group_id': 'secgroupid%02d' % i,
            'remote_group_id': 'remgroupid%02d' % i
        } for i in range(10)]
        data.append({
            'name': 'default',
            'security_group_id': 'secgroupid10',
            'remote_group_id': None
        })
        resources = "security_groups"

        cmd = securitygroup.ListSecurityGroupRule(test_cli20.MyApp(sys.stdout),
                                                  None)
        path = getattr(self.client, resources + '_path')
        responses = self._build_test_data(data, excess=1)

        known_args, _vs = cmd.get_parser('list' + resources).parse_known_args()
        mock_request_side_effects = []
        mock_request_calls = []
        mock_check_uri_side_effects = [exceptions.RequestURITooLong(excess=1)]
        mock_check_uri_calls = [mock.call(mock.ANY)]
        for item in responses:
            mock_request_side_effects.append(item['response'])
            mock_request_calls.append(
                mock.call(test_cli20.MyUrlComparator(
                    test_cli20.end_url(path, item['filter']), self.client),
                          'GET',
                          body=None,
                          headers=test_cli20.ContainsKeyValue(
                              {'X-Auth-Token': test_cli20.TOKEN})))
            mock_check_uri_side_effects.append(None)
            mock_check_uri_calls.append(mock.call(mock.ANY))

        with mock.patch.object(cmd, "get_client",
                               return_value=self.client) as mock_get_client, \
                mock.patch.object(self.client.httpclient,
                                  "request") as mock_request, \
                mock.patch.object(self.client.httpclient,
                                  "_check_uri_length") as mock_check_uri:
            mock_request.side_effect = mock_request_side_effects
            mock_check_uri.side_effect = mock_check_uri_side_effects
            cmd.extend_list(data, known_args)

        mock_get_client.assert_called_once_with()
        mock_request.assert_has_calls(mock_request_calls)
        mock_check_uri.assert_has_calls(mock_check_uri_calls)
        self.assertEqual(len(mock_request_calls), mock_request.call_count)
        self.assertEqual(len(mock_check_uri_calls), mock_check_uri.call_count)
示例#25
0
    def test_get_id_from_id_then_name_empty(self):
        _id = uuidutils.generate_uuid()
        reses = {
            'networks': [
                {
                    'id': _id,
                },
            ],
        }
        resstr = self.client.serialize(reses)
        resstr1 = self.client.serialize({'networks': []})
        path = getattr(self.client, "networks_path")
        with mock.patch.object(self.client.httpclient,
                               "request") as mock_request:
            mock_request.side_effect = [(test_cli20.MyResp(200), resstr1),
                                        (test_cli20.MyResp(200), resstr)]
            returned_id = neutronV20.find_resourceid_by_name_or_id(
                self.client, 'network', _id)

        self.assertEqual(2, mock_request.call_count)
        mock_request.assert_has_calls([
            mock.call(test_cli20.MyUrlComparator(
                test_cli20.end_url(path, "fields=id&id=" + _id), self.client),
                      'GET',
                      body=None,
                      headers=test_cli20.ContainsKeyValue(
                          {'X-Auth-Token': test_cli20.TOKEN})),
            mock.call(test_cli20.MyUrlComparator(
                test_cli20.end_url(path, "fields=id&name=" + _id),
                self.client),
                      'GET',
                      body=None,
                      headers=test_cli20.ContainsKeyValue(
                          {'X-Auth-Token': test_cli20.TOKEN}))
        ])
        self.assertEqual(_id, returned_id)
示例#26
0
    def _test_tag_operation(self, cmd, path, method, args, prog_name,
                            body=None):
        with mock.patch.object(cmd, 'get_client',
                               return_value=self.client) as mock_get_client, \
                mock.patch.object(self.client.httpclient, 'request',
                                  return_value=(test_cli20.MyResp(204), None)
                                  ) as mock_request:
            if body:
                body = test_cli20.MyComparator(body, self.client)
            cmd_parser = cmd.get_parser(prog_name)
            shell.run_command(cmd, cmd_parser, args)

        mock_get_client.assert_called_once_with()
        mock_request.assert_called_once_with(
            test_cli20.MyUrlComparator(test_cli20.end_url(path), self.client),
            method, body=body,
            headers=test_cli20.ContainsKeyValue(
                {'X-Auth-Token': test_cli20.TOKEN}))
        def mox_calls(path, data):
            # 1 char of extra URI len will cause a split in 2 requests
            self.mox.StubOutWithMock(self.client.httpclient,
                                     '_check_uri_length')
            self.client.httpclient._check_uri_length(mox.IgnoreArg()).AndRaise(
                exceptions.RequestURITooLong(excess=1))
            responses = self._build_test_data(data, excess=1)

            for item in responses:
                self.client.httpclient._check_uri_length(
                    mox.IgnoreArg()).AndReturn(None)
                self.client.httpclient.request(
                    test_cli20.MyUrlComparator(
                        test_cli20.end_url(path, item['filter']), self.client),
                    'GET',
                    body=None,
                    headers=mox.ContainsKeyValue('X-Auth-Token',
                                                 test_cli20.TOKEN)).AndReturn(
                                                     item['response'])
示例#28
0
        def mox_calls(path, data):
            sub_data_lists = [data[:len(data) - 1], data[len(data) - 1:]]
            filters, response = self._build_test_data(data)

            # 1 char of extra URI len will cause a split in 2 requests
            self.mox.StubOutWithMock(self.client, "_check_uri_length")
            self.client._check_uri_length(mox.IgnoreArg()).AndRaise(
                exceptions.RequestURITooLong(excess=1))

            for data in sub_data_lists:
                filters, response = self._build_test_data(data)
                self.client._check_uri_length(mox.IgnoreArg()).AndReturn(None)
                self.client.httpclient.request(
                    test_cli20.MyUrlComparator(
                        test_cli20.end_url(path, 'fields=id&fields=cidr%s' %
                                           filters), self.client),
                    'GET',
                    body=None,
                    headers=mox.ContainsKeyValue(
                        'X-Auth-Token', test_cli20.TOKEN)).AndReturn(response)
示例#29
0
 def test_get_id_from_name_notfound(self):
     name = 'myname'
     reses = {'networks': []}
     resstr = self.client.serialize(reses)
     self.mox.StubOutWithMock(self.client.httpclient, "request")
     path = getattr(self.client, "networks_path")
     self.client.httpclient.request(
         test_cli20.MyUrlComparator(
             test_cli20.end_url(path, "fields=id&name=" + name),
             self.client),
         'GET',
         body=None,
         headers=mox.ContainsKeyValue('X-Auth-Token', test_cli20.TOKEN)
     ).AndReturn((test_cli20.MyResp(200), resstr))
     self.mox.ReplayAll()
     exception = self.assertRaises(exceptions.NotFound,
                                   neutronV20.find_resourceid_by_name_or_id,
                                   self.client, 'network', name)
     self.assertIn('Unable to find', exception.message)
     self.assertEqual(404, exception.status_code)
示例#30
0
 def _test_tags_query(self, cmd, resources, args, query):
     self.mox.StubOutWithMock(cmd, "get_client")
     self.mox.StubOutWithMock(self.client.httpclient, "request")
     cmd.get_client().MultipleTimes().AndReturn(self.client)
     path = getattr(self.client, resources + "_path")
     res = {resources: [{'id': 'myid'}]}
     resstr = self.client.serialize(res)
     self.client.httpclient.request(
         test_cli20.MyUrlComparator(test_cli20.end_url(path, query),
                                    self.client),
         'GET',
         body=None,
         headers=mox.ContainsKeyValue('X-Auth-Token',
                                      test_cli20.TOKEN)).AndReturn(
                                          (test_cli20.MyResp(200), resstr))
     self.mox.ReplayAll()
     cmd_parser = cmd.get_parser("list_networks")
     shell.run_command(cmd, cmd_parser, args)
     self.mox.VerifyAll()
     self.mox.UnsetStubs()
     _str = self.fake_stdout.make_string()
     self.assertIn('myid', _str)