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)
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')
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')
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)
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)
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)