def _execute_connect_command_on_connected_resource(access_mode,
                                                       connected_resource,
                                                       reservation_id, session,
                                                       virtual_network,
                                                       vlan_service_name):

        _logger.debug('Executing Connect command on: ' + connected_resource)

        command_result = session.ExecuteCommand(
            reservation_id, connected_resource, 'Resource', 'Connect', [
                InputNameValue('VLAN_ID', virtual_network),
                InputNameValue('VLAN_SPEC_TYPE', access_mode)
            ], True)

        connect_results = get_result_from_command_output(command_result.Output)

        if not connect_results:
            _logger.debug('Connect command did not return any results')
            return

        for connect_result in connect_results:
            mac_address = connect_result['mac_address']
            _logger.debug('Setting Target Interface to: ' + mac_address)
            session.SetConnectorAttributes(
                reservation_id, connected_resource, vlan_service_name,
                [AttributeNameValue('Target Interface', mac_address)])
            break
    def connect_all(self):
        """
        Connects all the VLAN Auto services to all the Deployed Apps in the same Environment
        :return:
        """
        session = helpers.get_api_session()
        reservation_id = helpers.get_reservation_context_details().id

        # GetReservationDetails is performance heavy operation
        reservation_details = session.GetReservationDetails(reservation_id)
        vlan_services = self._get_vlan_auto_services(reservation_details)

        connectors = self._get_connectors(reservation_details)

        if not vlan_services or not connectors:
            return

        for vlan_service in vlan_services:

            _logger.debug('Connecting \'{0}\' '.format(
                vlan_service.ServiceName))

            access_mode = self._get_attribute(vlan_service.Attributes,
                                              ACCESS_MODE_ATTRIBUTE)
            virtual_network = self._get_attribute(vlan_service.Attributes,
                                                  VIRTUAL_NETWORK_ATTRIBUTE)

            # Get Deployed App connected to VLAN Auto service
            connected_resources = self._get_connected_resources(
                connectors, vlan_service)

            if not connected_resources:
                continue

            if not virtual_network or virtual_network == '':

                _logger.debug('Executing Auto Resolve Vlan on \'{0}\''.format(
                    vlan_service.ServiceName))

                command_result = session.ExecuteCommand(
                    reservation_id, vlan_service.ServiceName, 'Service',
                    'Auto Resolve Vlan', [], True)

                virtual_network = get_result_from_command_output(
                    command_result.Output)

                _logger.debug(
                    'Auto Resolve Vlan returned Virtual Network \'{0}\''.
                    format(virtual_network))

                if not virtual_network or virtual_network == '':
                    raise ValueError(
                        'Auto Resolve Vlan command did not return Virtual Network'
                    )

            for connected_resource in connected_resources:
                self._execute_connect_command_on_connected_resource(
                    access_mode, connected_resource, reservation_id, session,
                    virtual_network, vlan_service.ServiceName)
Esempio n. 3
0
    def test_get_result_from_command_output_with_result_unpickable_false(self):

        output_result = 'command_json_result=[{"vm_uuid": "422258c6-15d0-0646-d5e7-f2cb411eee94", "network_name": "QualiSB/anetwork", "mac_address": "00:50:56:a2:6c:04"}]=command_json_result_end'
        results = get_result_from_command_output(output_result)

        for result in results:
            v = dict(result)
            self.assertEqual(result['mac_address'], '00:50:56:a2:6c:04')
    def test_get_result_from_command_output_with_result_unpickable_false(self):

        output_result = 'command_json_result=[{"vm_uuid": "422258c6-15d0-0646-d5e7-f2cb411eee94", "network_name": "QualiSB/anetwork", "mac_address": "00:50:56:a2:6c:04"}]=command_json_result_end'
        results = get_result_from_command_output(output_result)

        for result in results:
            v = dict(result)
            self.assertEqual(result['mac_address'], '00:50:56:a2:6c:04')
    def test_get_result_from_command_output_with_result_unpickable_false(self):

        connection_result = ConnectionResult(mac_address='AA', vm_uuid='BB', network_name='CC')
        output_result = set_command_result(result=[connection_result], unpicklable=False)
        results = get_result_from_command_output(output_result)

        self.assertEqual(results[0]['mac_address'], 'AA')
        self.assertEqual(results[0]['vm_uuid'], 'BB')
        self.assertEqual(results[0]['network_name'], 'CC')
    def test_get_result_from_command_output_with_result_unpickable_true(self):

        connection_result = ConnectionResult(mac_address='AA', vm_uuid='BB', network_name='CC')
        output_result = set_command_result(result=connection_result, unpicklable=True)
        result = get_result_from_command_output(output_result)

        self.assertEqual(result.mac_address, 'AA')
        self.assertEqual(result.vm_uuid, 'BB')
        self.assertEqual(result.network_name, 'CC')
Esempio n. 7
0
    def test_get_result_from_command_output_with_result_unpickable_false(self):

        connection_result = ConnectionResult(mac_address='AA',
                                             vm_uuid='BB',
                                             network_name='CC')
        output_result = set_command_result(result=[connection_result],
                                           unpicklable=False)
        results = get_result_from_command_output(output_result)

        self.assertEqual(results[0]['mac_address'], 'AA')
        self.assertEqual(results[0]['vm_uuid'], 'BB')
        self.assertEqual(results[0]['network_name'], 'CC')
Esempio n. 8
0
    def test_get_result_from_command_output_with_result_unpickable_true(self):

        connection_result = ConnectionResult(mac_address='AA',
                                             vm_uuid='BB',
                                             network_name='CC')
        output_result = set_command_result(result=connection_result,
                                           unpicklable=True)
        result = get_result_from_command_output(output_result)

        self.assertEqual(result.mac_address, 'AA')
        self.assertEqual(result.vm_uuid, 'BB')
        self.assertEqual(result.network_name, 'CC')
    def connect_all(self):
        """
        Connects all the VLAN Auto services to all the Deployed Apps in the same Environment
        :return:
        """
        session = helpers.get_api_session()
        reservation_id = helpers.get_reservation_context_details().id

        # GetReservationDetails is performance heavy operation
        reservation_details = session.GetReservationDetails(reservation_id)
        vlan_services = self._get_vlan_auto_services(reservation_details)

        connectors = self._get_connectors(reservation_details)

        if not vlan_services or not connectors:
            return

        for vlan_service in vlan_services:

            _logger.debug('Connecting \'{0}\' '.format(vlan_service.ServiceName))

            access_mode = self._get_attribute(vlan_service.Attributes, ACCESS_MODE_ATTRIBUTE)
            virtual_network = self._get_attribute(vlan_service.Attributes, VIRTUAL_NETWORK_ATTRIBUTE)

            # Get Deployed App connected to VLAN Auto service
            connected_resources = self._get_connected_resources(connectors, vlan_service)

            if not connected_resources:
                continue

            if not virtual_network or virtual_network == '':

                _logger.debug('Executing Auto Resolve Vlan on \'{0}\''.format(vlan_service.ServiceName))

                command_result = session.ExecuteCommand(reservation_id, vlan_service.ServiceName, 'Service',
                                                        'Auto Resolve Vlan', [], True)

                virtual_network = get_result_from_command_output(command_result.Output)

                _logger.debug('Auto Resolve Vlan returned Virtual Network \'{0}\''.format(virtual_network))

                if not virtual_network or virtual_network == '':
                    raise ValueError('Auto Resolve Vlan command did not return Virtual Network')

            for connected_resource in connected_resources:
                self._execute_connect_command_on_connected_resource(access_mode, connected_resource, reservation_id,
                                                                    session, virtual_network, vlan_service.ServiceName)
Esempio n. 10
0
    def _execute_connect_command_on_connected_resource(access_mode, connected_resource, reservation_id, session,
                                                       virtual_network, vlan_service_name):

        _logger.debug('Executing Connect command on: ' + connected_resource)

        command_result = session.ExecuteCommand(reservation_id, connected_resource, 'Resource', 'Connect',
                                                [InputNameValue('VLAN_ID', virtual_network),
                                                 InputNameValue('VLAN_SPEC_TYPE', access_mode)], True)

        connect_results = get_result_from_command_output(command_result.Output)

        if not connect_results:
            _logger.debug('Connect command did not return any results')
            return

        for connect_result in connect_results:
            mac_address = connect_result['mac_address']
            _logger.debug('Setting Target Interface to: ' + mac_address)
            session.SetConnectorAttributes(reservation_id,
                                           connected_resource,
                                           vlan_service_name,
                                           [AttributeNameValue('Target Interface', mac_address)])
            break
 def test_get_result_from_command_output_with_result(self):
     result = get_result_from_command_output('command_json_result={"result":"MY RESULT"}=command_json_result_end')
     self.assertEqual(result["result"], 'MY RESULT')
    def test_get_result_from_command_output_with_result(self):
        
        output_result = 'command_json_result=[{"py/object": "models.ConnectionResult.ConnectionResult", "vm_uuid": "422258ab-47e9-d57c-3741-6832a432bc3a", "network_name": "QualiSB/anetwork", "mac_address": "00:50:56:a2:23:76"}]=command_json_result_end'
        results = get_result_from_command_output(output_result)

        self.assertEqual(results[0].mac_address, '00:50:56:a2:23:76')
 def test_command_result_empty(self):
     result = get_result_from_command_output('')
     self.assertEqual(result, None)
Esempio n. 14
0
 def test_get_result_from_command_output_with_result(self):
     result = get_result_from_command_output(
         'command_json_result={"result":"MY RESULT"}=command_json_result_end'
     )
     self.assertEqual(result["result"], 'MY RESULT')
Esempio n. 15
0
    def test_get_result_from_command_output_with_result(self):

        output_result = 'command_json_result=[{"py/object": "models.ConnectionResult.ConnectionResult", "vm_uuid": "422258ab-47e9-d57c-3741-6832a432bc3a", "network_name": "QualiSB/anetwork", "mac_address": "00:50:56:a2:23:76"}]=command_json_result_end'
        results = get_result_from_command_output(output_result)

        self.assertEqual(results[0].mac_address, '00:50:56:a2:23:76')
Esempio n. 16
0
 def test_command_result_empty(self):
     result = get_result_from_command_output('')
     self.assertEqual(result, None)