Exemple #1
0
    def test_port_delete(self):
        self.mox.StubOutWithMock(api, 'quantum_network_details')
        self.mox.StubOutWithMock(api, 'quantum_list_ports')
        self.mox.StubOutWithMock(api, 'quantum_port_attachment')
        self.mox.StubOutWithMock(api, 'quantum_port_details')
        self.mox.StubOutWithMock(api, 'get_vif_ids')
        self.mox.StubOutWithMock(api, "quantum_delete_port")
        network_details = {'network': {'id': 'n1', 'name': 'network1'}}
        api.quantum_network_details(IsA(http.HttpRequest),
                                    'n1').AndReturn(network_details)

        api.quantum_list_ports(IsA(http.HttpRequest),
                               'n1').AndReturn(self.ports)

        api.quantum_port_attachment(IsA(http.HttpRequest),
                                    'n1', 'p1').AndReturn(self.port_attachment)

        api.quantum_port_details(IsA(http.HttpRequest),
                                 'n1', 'p1').AndReturn(self.port_details)

        api.get_vif_ids(IsA(http.HttpRequest)).AndReturn(self.vifs)

        api.quantum_delete_port(IsA(http.HttpRequest),
                                'n1', 'p1').AndReturn(True)

        formData = {'action': 'network_details__delete__p1'}

        self.mox.StubOutWithMock(messages, 'success')
        messages.success(IgnoreArg(), IsA(basestring))

        self.mox.ReplayAll()

        detail_url = reverse('horizon:nova:networks:detail', args=["n1"])
        self.client.post(detail_url, formData)
Exemple #2
0
    def test_port_attach(self):
        self.mox.StubOutWithMock(api, "quantum_network_details")
        self.mox.StubOutWithMock(api, "quantum_attach_port")
        self.mox.StubOutWithMock(api, "get_vif_ids")
        network_details = {'network': {'id': 'n1'}}
        api.quantum_network_details(IsA(http.HttpRequest),
                                    'n1').AndReturn(network_details)
        api.quantum_attach_port(IsA(http.HttpRequest),
                                'n1', 'p1', IsA(dict)).AndReturn(True)
        api.get_vif_ids(IsA(http.HttpRequest)).AndReturn([{
                'id': 'v1',
                'instance_name': 'instance1',
                'available': True}])

        formData = {'port': 'p1',
                    'network': 'n1',
                    'vif_id': 'v1',
                    'method': 'AttachPort'}

        self.mox.ReplayAll()

        res = self.client.post(reverse('horizon:nova:networks:port_attach',
                                       args=["n1", "p1"]),
                               formData)

        self.assertRedirectsNoFollow(res,
                                     reverse('horizon:nova:networks:detail',
                                             args=["n1"]))
Exemple #3
0
    def test_port_detach(self):
        self.mox.StubOutWithMock(api, 'quantum_network_details')
        self.mox.StubOutWithMock(api, 'quantum_list_ports')
        self.mox.StubOutWithMock(api, 'quantum_port_attachment')
        self.mox.StubOutWithMock(api, 'quantum_port_details')
        self.mox.StubOutWithMock(api, 'get_vif_ids')
        self.mox.StubOutWithMock(api, "quantum_set_port_state")
        network_details = {'network': {'id': 'n1', 'name': 'network1'}}
        api.quantum_network_details(IsA(http.HttpRequest),
                                    'n1').AndReturn(network_details)

        api.quantum_list_ports(IsA(http.HttpRequest),
                               'n1').AndReturn(self.ports)

        api.quantum_port_attachment(IsA(http.HttpRequest),
                                    'n1', 'p1').AndReturn(self.port_attachment)

        api.quantum_port_details(IsA(http.HttpRequest),
                                 'n1', 'p1').AndReturn(self.port_details)

        api.get_vif_ids(IsA(http.HttpRequest)).AndReturn(self.vifs)

        api.quantum_set_port_state(IsA(http.HttpRequest),
                                   'n1',
                                   'p1',
                                   {'port': {'state': 'DOWN'}}).AndReturn(True)

        formData = {'action': "network_details__detach_port__p1"}

        self.mox.ReplayAll()

        detail_url = reverse('horizon:nova:networks:detail', args=["n1"])
        res = self.client.post(detail_url, formData)

        self.assertRedirectsNoFollow(res, detail_url)
Exemple #4
0
    def test_network_details(self):
        self.mox.StubOutWithMock(api, 'quantum_network_details')
        api.quantum_network_details(IsA(http.HttpRequest),
                                    'n1').AndReturn(self.network_details)

        self.mox.StubOutWithMock(api, 'quantum_list_ports')
        api.quantum_list_ports(IsA(http.HttpRequest),
                               'n1').AndReturn(self.ports)

        self.mox.StubOutWithMock(api, 'quantum_port_attachment')
        api.quantum_port_attachment(IsA(http.HttpRequest),
                                    'n1', 'p1').AndReturn(self.port_attachment)

        self.mox.StubOutWithMock(api, 'quantum_port_details')
        api.quantum_port_details(IsA(http.HttpRequest),
                                 'n1', 'p1').AndReturn(self.port_details)

        self.mox.StubOutWithMock(api, 'get_vif_ids')
        api.get_vif_ids(IsA(http.HttpRequest)).AndReturn(self.vifs)

        self.mox.ReplayAll()

        res = self.client.get(reverse('horizon:nova:networks:detail',
                                      args=['n1']))

        self.assertTemplateUsed(res, 'nova/networks/detail.html')
        self.assertIn('network', res.context)

        network = res.context['network']

        self.assertEqual(network['name'], 'test_network')
        self.assertEqual(network['id'], 'n1')
Exemple #5
0
    def test_network_details(self):
        self.mox.StubOutWithMock(api, 'quantum_network_details')
        api.quantum_network_details(IsA(http.HttpRequest),
                                    'n1').AndReturn(self.network_details)

        self.mox.StubOutWithMock(api, 'quantum_list_ports')
        api.quantum_list_ports(IsA(http.HttpRequest),
                               'n1').AndReturn(self.ports)

        self.mox.StubOutWithMock(api, 'quantum_port_attachment')
        api.quantum_port_attachment(IsA(http.HttpRequest),
                                    'n1', 'p1').AndReturn(self.port_attachment)

        self.mox.StubOutWithMock(api, 'quantum_port_details')
        api.quantum_port_details(IsA(http.HttpRequest),
                                 'n1', 'p1').AndReturn(self.port_details)

        self.mox.StubOutWithMock(api, 'get_vif_ids')
        api.get_vif_ids(IsA(http.HttpRequest)).AndReturn(self.vifs)

        self.mox.ReplayAll()

        res = self.client.get(reverse('horizon:nova:networks:detail',
                                      args=['n1']))

        self.assertTemplateUsed(res, 'nova/networks/detail.html')
        self.assertIn('network', res.context)

        network = res.context['network']

        self.assertEqual(network['name'], 'test_network')
        self.assertEqual(network['id'], 'n1')
Exemple #6
0
    def test_port_attach(self):
        self.mox.StubOutWithMock(api, "quantum_network_details")
        self.mox.StubOutWithMock(api, "quantum_attach_port")
        self.mox.StubOutWithMock(api, "get_vif_ids")
        network_details = {'network': {'id': 'n1'}}
        api.quantum_network_details(IsA(http.HttpRequest),
                                    'n1').AndReturn(network_details)
        api.quantum_attach_port(IsA(http.HttpRequest), 'n1', 'p1',
                                IsA(dict)).AndReturn(True)
        api.get_vif_ids(IsA(http.HttpRequest)).AndReturn([{
            'id': 'v1',
            'instance_name': 'instance1',
            'available': True
        }])

        formData = {
            'port': 'p1',
            'network': 'n1',
            'vif_id': 'v1',
            'method': 'AttachPort'
        }

        self.mox.ReplayAll()

        res = self.client.post(
            reverse('horizon:nova:networks:port_attach', args=["n1", "p1"]),
            formData)

        self.assertRedirectsNoFollow(
            res, reverse('horizon:nova:networks:detail', args=["n1"]))
Exemple #7
0
    def test_port_delete(self):
        self.mox.StubOutWithMock(api, 'quantum_network_details')
        self.mox.StubOutWithMock(api, 'quantum_list_ports')
        self.mox.StubOutWithMock(api, 'quantum_port_attachment')
        self.mox.StubOutWithMock(api, 'quantum_port_details')
        self.mox.StubOutWithMock(api, 'get_vif_ids')
        self.mox.StubOutWithMock(api, "quantum_delete_port")
        network_details = {'network': {'id': 'n1', 'name': 'network1'}}
        api.quantum_network_details(IsA(http.HttpRequest),
                                    'n1').AndReturn(network_details)

        api.quantum_list_ports(IsA(http.HttpRequest),
                               'n1').AndReturn(self.ports)

        api.quantum_port_attachment(IsA(http.HttpRequest), 'n1',
                                    'p1').AndReturn(self.port_attachment)

        api.quantum_port_details(IsA(http.HttpRequest), 'n1',
                                 'p1').AndReturn(self.port_details)

        api.get_vif_ids(IsA(http.HttpRequest)).AndReturn(self.vifs)

        api.quantum_delete_port(IsA(http.HttpRequest), 'n1',
                                'p1').AndReturn(True)

        formData = {'action': 'network_details__delete__p1'}

        self.mox.StubOutWithMock(messages, 'success')
        messages.success(IgnoreArg(), IsA(basestring))

        self.mox.ReplayAll()

        detail_url = reverse('horizon:nova:networks:detail', args=["n1"])
        self.client.post(detail_url, formData)
Exemple #8
0
def _get_port_states(request, network_id):
    """
    Helper method to find port states for a network
    """
    network_ports = []
    # Get all vifs for comparison with port attachments
    vifs = api.get_vif_ids(request)

    # Get all ports on this network
    ports = api.quantum_list_ports(request, network_id)
    for port in ports['ports']:
        port_details = api.quantum_port_details(request,
                                                network_id, port['id'])
        # Get port attachments
        port_attachment = api.quantum_port_attachment(request,
                                                      network_id, port['id'])
        # Find instance the attachment belongs to
        connected_instance = None
        if port_attachment['attachment']:
            for vif in vifs:
                if str(vif['id']) == str(port_attachment['attachment']['id']):
                    connected_instance = vif['instance_name']
                    break
        network_ports.append({
            'id': port_details['port']['id'],
            'state': port_details['port']['state'],
            'attachment': port_attachment['attachment'],
            'instance': connected_instance})
    return network_ports
Exemple #9
0
def _get_port_states(request, network_id):
    """
    Helper method to find port states for a network
    """
    network_ports = []
    # Get all vifs for comparison with port attachments
    vifs = api.get_vif_ids(request)

    # Get all ports on this network
    ports = api.quantum_list_ports(request, network_id)
    for port in ports['ports']:
        port_details = api.quantum_port_details(request, network_id,
                                                port['id'])
        # Get port attachments
        port_attachment = api.quantum_port_attachment(request, network_id,
                                                      port['id'])
        # Find instance the attachment belongs to
        connected_instance = None
        if port_attachment['attachment']:
            for vif in vifs:
                if str(vif['id']) == str(port_attachment['attachment']['id']):
                    connected_instance = vif['id']
                    break
        network_ports.append({
            'id': port_details['port']['id'],
            'state': port_details['port']['state'],
            'attachment': port_attachment['attachment'],
            'instance': connected_instance
        })
    return network_ports
Exemple #10
0
def _get_port_states(request, network_id):
    """
    Helper method to find port states for a network
    """
    network_ports = []
    # Get all vifs for comparison with port attachments
    vifs = api.get_vif_ids(request)

    # Get all ports on this network
    ports = api.quantum_list_ports(request, network_id)
    for port in ports["ports"]:
        port_details = api.quantum_port_details(request, network_id, port["id"])
        # Get port attachments
        port_attachment = api.quantum_port_attachment(request, network_id, port["id"])
        # Find instance the attachment belongs to
        connected_instance = None
        if port_attachment["attachment"]:
            for vif in vifs:
                if str(vif["id"]) == str(port_attachment["attachment"]["id"]):
                    connected_instance = vif["id"]
                    break
        network_ports.append(
            {
                "id": port_details["port"]["id"],
                "state": port_details["port"]["state"],
                "attachment": port_attachment["attachment"],
                "instance": connected_instance,
            }
        )
    return network_ports
Exemple #11
0
 def __init__(self, request, *args, **kwargs):
     super(AttachPort, self).__init__(*args, **kwargs)
     # Populate VIF choices
     vif_choices = [('', "Select a VIF")]
     for vif in api.get_vif_ids(request):
         if vif['available']:
             name = "Instance %s VIF %s" % (vif['instance_name'], vif['id'])
             vif_choices.append((vif['id'], name,))
     self.fields['vif_id'].choices = vif_choices
Exemple #12
0
 def __init__(self, request, *args, **kwargs):
     super(AttachPort, self).__init__(*args, **kwargs)
     # Populate VIF choices
     vif_choices = [('', "Select a VIF")]
     for vif in api.get_vif_ids(request):
         if vif['available']:
             name = "Instance %s VIF %s" % (vif['instance_name'], vif['id'])
             vif_choices.append((vif['id'], name,))
     self.fields['vif_id'].choices = vif_choices
Exemple #13
0
def _get_available_vifs(request):
    """
    Method to get a list of available virtual interfaces
    """
    vif_choices = []
    vifs = api.get_vif_ids(request)

    for vif in vifs:
        if vif['available']:
            name = "Instance %s VIF %s" % \
                   (str(vif['instance_name']), str(vif['id']))
            vif_choices.append({
                'name': str(name),
                'id': str(vif['id'])})

    return vif_choices