Ejemplo n.º 1
0
    def plug(self, instance, network, mapping):
        """Create a vlan and bridge unless they already exist."""
        vlan_num = network['vlan']
        bridge = network['bridge']
        bridge_interface = network['bridge_interface']

        # Open vmwareapi session
        host_ip = FLAGS.vmwareapi_host_ip
        host_username = FLAGS.vmwareapi_host_username
        host_password = FLAGS.vmwareapi_host_password
        if not host_ip or host_username is None or host_password is None:
            raise Exception(
                _('Must specify vmwareapi_host_ip, '
                  'vmwareapi_host_username '
                  'and vmwareapi_host_password to use '
                  'connection_type=vmwareapi'))
        session = VMWareAPISession(host_ip, host_username, host_password,
                                   FLAGS.vmwareapi_api_retry_count)
        vlan_interface = bridge_interface
        # Check if the vlan_interface physical network adapter exists on the
        # host.
        if not network_utils.check_if_vlan_interface_exists(
                session, vlan_interface):
            raise exception.NetworkAdapterNotFound(adapter=vlan_interface)

        # Get the vSwitch associated with the Physical Adapter
        vswitch_associated = network_utils.get_vswitch_for_vlan_interface(
            session, vlan_interface)
        if vswitch_associated is None:
            raise exception.SwicthNotFoundForNetworkAdapter(
                adapter=vlan_interface)
        # Check whether bridge already exists and retrieve the the ref of the
        # network whose name_label is "bridge"
        network_ref = network_utils.get_network_with_the_name(session, bridge)
        if network_ref is None:
            # Create a port group on the vSwitch associated with the
            # vlan_interface corresponding physical network adapter on the ESX
            # host.
            network_utils.create_port_group(session, bridge,
                                            vswitch_associated, vlan_num)
        else:
            # Get the vlan id and vswitch corresponding to the port group
            pg_vlanid, pg_vswitch = \
                network_utils.get_vlanid_and_vswitch_for_portgroup(session,
                                                                   bridge)

            # Check if the vswitch associated is proper
            if pg_vswitch != vswitch_associated:
                raise exception.InvalidVLANPortGroup(
                    bridge=bridge,
                    expected=vswitch_associated,
                    actual=pg_vswitch)

            # Check if the vlan id is proper for the port group
            if pg_vlanid != vlan_num:
                raise exception.InvalidVLANTag(bridge=bridge,
                                               tag=vlan_num,
                                               pgroup=pg_vlanid)
Ejemplo n.º 2
0
    def plug(self, instance, network, mapping):
        """Create a vlan and bridge unless they already exist."""
        vlan_num = network['vlan']
        bridge = network['bridge']
        bridge_interface = network['bridge_interface']

        # Open vmwareapi session
        host_ip = FLAGS.vmwareapi_host_ip
        host_username = FLAGS.vmwareapi_host_username
        host_password = FLAGS.vmwareapi_host_password
        if not host_ip or host_username is None or host_password is None:
            raise Exception(_('Must specify vmwareapi_host_ip, '
                              'vmwareapi_host_username '
                              'and vmwareapi_host_password to use '
                              'connection_type=vmwareapi'))
        session = VMWareAPISession(host_ip, host_username, host_password,
                                   FLAGS.vmwareapi_api_retry_count)
        vlan_interface = bridge_interface
        # Check if the vlan_interface physical network adapter exists on the
        # host.
        if not network_utils.check_if_vlan_interface_exists(session,
                                                            vlan_interface):
            raise exception.NetworkAdapterNotFound(adapter=vlan_interface)

        # Get the vSwitch associated with the Physical Adapter
        vswitch_associated = network_utils.get_vswitch_for_vlan_interface(
                                            session, vlan_interface)
        if vswitch_associated is None:
            raise exception.SwicthNotFoundForNetworkAdapter(
                adapter=vlan_interface)
        # Check whether bridge already exists and retrieve the the ref of the
        # network whose name_label is "bridge"
        network_ref = network_utils.get_network_with_the_name(session, bridge)
        if network_ref is None:
            # Create a port group on the vSwitch associated with the
            # vlan_interface corresponding physical network adapter on the ESX
            # host.
            network_utils.create_port_group(session, bridge,
                                            vswitch_associated, vlan_num)
        else:
            # Get the vlan id and vswitch corresponding to the port group
            pg_vlanid, pg_vswitch = \
                network_utils.get_vlanid_and_vswitch_for_portgroup(session,
                                                                   bridge)

            # Check if the vswitch associated is proper
            if pg_vswitch != vswitch_associated:
                raise exception.InvalidVLANPortGroup(
                    bridge=bridge, expected=vswitch_associated,
                    actual=pg_vswitch)

            # Check if the vlan id is proper for the port group
            if pg_vlanid != vlan_num:
                raise exception.InvalidVLANTag(bridge=bridge, tag=vlan_num,
                                               pgroup=pg_vlanid)
Ejemplo n.º 3
0
    def ensure_vlan_bridge(self, session, network):
        """Create a vlan and bridge unless they already exist."""
        vlan_num = network['vlan']
        bridge = network['bridge']
        vlan_interface = FLAGS.vmwareapi_vlan_interface

        # Check if the vlan_interface physical network adapter exists on the
        # host.
        if not network_utils.check_if_vlan_interface_exists(
                session, vlan_interface):
            raise exception.NetworkAdapterNotFound(adapter=vlan_interface)

        # Get the vSwitch associated with the Physical Adapter
        vswitch_associated = network_utils.get_vswitch_for_vlan_interface(
            session, vlan_interface)
        if vswitch_associated is None:
            raise exception.SwitchNotFoundForNetworkAdapter(
                adapter=vlan_interface)
        # Check whether bridge already exists and retrieve the the ref of the
        # network whose name_label is "bridge"
        network_ref = network_utils.get_network_with_the_name(session, bridge)
        if network_ref is None:
            # Create a port group on the vSwitch associated with the
            # vlan_interface corresponding physical network adapter on the ESX
            # host.
            network_utils.create_port_group(session, bridge,
                                            vswitch_associated, vlan_num)
        else:
            # Get the vlan id and vswitch corresponding to the port group
            pg_vlanid, pg_vswitch = \
                network_utils.get_vlanid_and_vswitch_for_portgroup(session,
                                                                   bridge)

            # Check if the vswitch associated is proper
            if pg_vswitch != vswitch_associated:
                raise exception.InvalidVLANPortGroup(
                    bridge=bridge,
                    expected=vswitch_associated,
                    actual=pg_vswitch)

            # Check if the vlan id is proper for the port group
            if pg_vlanid != vlan_num:
                raise exception.InvalidVLANTag(bridge=bridge,
                                               tag=vlan_num,
                                               pgroup=pg_vlanid)
Ejemplo n.º 4
0
    def ensure_vlan_bridge(self, session, network):
        """Create a vlan and bridge unless they already exist."""
        vlan_num = network['vlan']
        bridge = network['bridge']
        vlan_interface = FLAGS.vmwareapi_vlan_interface

        # Check if the vlan_interface physical network adapter exists on the
        # host.
        if not network_utils.check_if_vlan_interface_exists(session,
                                                            vlan_interface):
            raise exception.NetworkAdapterNotFound(adapter=vlan_interface)

        # Get the vSwitch associated with the Physical Adapter
        vswitch_associated = network_utils.get_vswitch_for_vlan_interface(
                                            session, vlan_interface)
        if vswitch_associated is None:
            raise exception.SwitchNotFoundForNetworkAdapter(
                adapter=vlan_interface)
        # Check whether bridge already exists and retrieve the the ref of the
        # network whose name_label is "bridge"
        network_ref = network_utils.get_network_with_the_name(session, bridge)
        if network_ref is None:
            # Create a port group on the vSwitch associated with the
            # vlan_interface corresponding physical network adapter on the ESX
            # host.
            network_utils.create_port_group(session, bridge,
                                            vswitch_associated, vlan_num)
        else:
            # Get the vlan id and vswitch corresponding to the port group
            pg_vlanid, pg_vswitch = \
                network_utils.get_vlanid_and_vswitch_for_portgroup(session,
                                                                   bridge)

            # Check if the vswitch associated is proper
            if pg_vswitch != vswitch_associated:
                raise exception.InvalidVLANPortGroup(
                    bridge=bridge, expected=vswitch_associated,
                    actual=pg_vswitch)

            # Check if the vlan id is proper for the port group
            if pg_vlanid != vlan_num:
                raise exception.InvalidVLANTag(bridge=bridge, tag=vlan_num,
                                               pgroup=pg_vlanid)