예제 #1
0
 def test_request_zen_api_key_access(self):
     self.mock_client.make_request_for_json.return_value = {'token': '123'}
     response = self.authentication.request_zen_api_key_access('joe', 'secretkey', zen_auth_address='https://zen:80')
     self.assertEqual(response, {'token': '123'})
     self.mock_client.make_request_for_json.assert_called_with(TNCOClientRequest(
                                                                 method='POST', 
                                                                 inject_current_auth=False, 
                                                                 override_address='https://zen:80',
                                                                 headers={'Content-Type': 'application/json'},
                                                                 body=json.dumps({
                                                                         'username': '******', 
                                                                         'api_key': 'secretkey'
                                                                     })
                                                                 ))
     # Without zen_auth_address
     response = self.authentication.request_zen_api_key_access('joe', 'secretkey')
     self.assertEqual(response, {'token': '123'})
     self.mock_client.make_request_for_json.assert_called_with(TNCOClientRequest(
                                                                 method='POST', 
                                                                 inject_current_auth=False, 
                                                                 override_address=None,
                                                                 headers={'Content-Type': 'application/json'},
                                                                 body=json.dumps({
                                                                         'username': '******', 
                                                                         'api_key': 'secretkey'
                                                                     })
                                                                 ))
예제 #2
0
 def test_legacy_login_older_environments(self):
     def request_mock(request):
         if request.endpoint == 'ui/api/login':
             raise TNCOClientHttpError('Mock error', cause=MagicMock(response=MagicMock(status_code=404, headers={}, body=b'')))
         else:
             return {'accessToken': '123', 'expiresIn': 60}
     self.mock_client.make_request_for_json.side_effect = request_mock
     response = self.authentication.legacy_login('joe', 'secretpass')
     self.assertEqual(response, {'accessToken': '123', 'expiresIn': 60})
     self.mock_client.make_request_for_json.assert_has_calls([
         call(
             TNCOClientRequest(
                 method='POST',
                 endpoint='ui/api/login',
                 override_address=None,
                 inject_current_auth=False, 
                 headers={'Content-Type': 'application/json'}, 
                 body=json.dumps({'username': '******', 'password': '******'})
             )
         ),
         call(
             TNCOClientRequest(
                 method='POST',
                 endpoint='api/login',
                 override_address=None,
                 inject_current_auth=False,
                 headers={'Content-Type': 'application/json'}, 
                 body=json.dumps({'username': '******', 'password': '******'})
             )
         )
     ])
예제 #3
0
 def all(self) -> List:
     request = TNCOClientRequest(
                     method='GET',
                     endpoint=self.endpoint,
                 ).add_headers({'Accept': 'application/yaml,application/json'})
     request.override_address = getattr(self, 'override_address') if hasattr(self, 'override_address') else None
     return self._exec_request_and_parse_yaml(request)
예제 #4
0
 def render(self, template_name: str, render_request: Dict) -> Dict:
     if render_request is None:
         render_request = {}
     endpoint = self._render_endpoint(template_name)
     request = TNCOClientRequest(method='POST', endpoint=endpoint)\
                     .add_yaml_body(render_request)\
                     .add_headers({'Accept': 'application/yaml'})
     if self.override_address is not None:
         request.override_address = self.override_address
     return self._exec_request_and_parse_yaml(request)
예제 #5
0
 def render_raw(self, template_name: str, render_request: Dict) -> str:
     if render_request is None:
         render_request = {}
     endpoint = self._render_raw_endpoint(template_name)
     request = TNCOClientRequest(method='POST', endpoint=endpoint)\
                     .add_yaml_body(render_request)\
                     .add_headers({'Accept': 'text/plain'})
     if self.override_address is not None:
         request.override_address = self.override_address
     return self._exec_request_and_parse_plaintext(request)
예제 #6
0
 def get(self, name: str, effective: bool = None) -> Dict:
     query_params = {}
     if effective is not None:
         query_params['effective'] = effective
     request = TNCOClientRequest(
                     method='GET',
                     endpoint=build_relative_endpoint(base_endpoint=self.endpoint, id_value=name)
                 ).add_headers({'Accept': 'application/yaml,application/json'})\
                 .add_query_params(query_params)
     request.override_address = getattr(self, 'override_address') if hasattr(self, 'override_address') else None
     return self._exec_request_and_parse_yaml(request)
예제 #7
0
파일: auth.py 프로젝트: IBM/lmctl
 def request_zen_api_key_access(self,
                                username: str,
                                api_key: str,
                                zen_auth_address: str = None) -> Dict:
     body = {'username': username, 'api_key': api_key}
     request = TNCOClientRequest(method='POST', endpoint=None)\
                     .disable_auth_token()\
                     .add_json_body(body)
     request.override_address = zen_auth_address
     auth_response = self.base_client.make_request_for_json(request)
     return auth_response
예제 #8
0
 def test_intent_create_or_upgrade(self):
     mock_response = MagicMock(headers={'Location': '/api/processes/123'})
     self.mock_client.make_request.return_value = mock_response
     intent = CreateOrUpgradeAssemblyIntent(
         descriptor_name='assembly::Test::1.0',
         assembly_name='Test',
         intended_state='Active',
         tags={
             'tag1': 'value1',
             'tag2': 'value2'
         },
         properties={
             'prop1': 'val1',
             'prop2': 'val2'
         })
     response = self.assemblies.intent_create_or_upgrade(intent)
     self.assertEqual(response, '123')
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest(method='POST',
                           endpoint='api/intent/createOrUpgradeAssembly',
                           headers={'Content-Type': 'application/json'},
                           body=json.dumps({
                               'assemblyName': 'Test',
                               'descriptorName': 'assembly::Test::1.0',
                               'properties': {
                                   'prop1': 'val1',
                                   'prop2': 'val2'
                               },
                               'tags': {
                                   'tag1': 'value1',
                                   'tag2': 'value2'
                               },
                               'intendedState': 'Active',
                           })))
예제 #9
0
 def test_delete(self):
     response = self.resource_packages.delete('Test')
     self.assertIsNone(response)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest(
             method='DELETE',
             endpoint='api/resource-manager/resource-packages/Test'))
예제 #10
0
 def test_delete(self):
     response = self.resource_drivers.delete('123')
     self.assertIsNone(response)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest(
             method='DELETE',
             endpoint='api/resource-manager/lifecycle-drivers/123'))
예제 #11
0
 def test_render_raw(self):
     mock_response = 'name: assembly::Result::1.0'
     self.mock_client.make_request.return_value = MagicMock(text=mock_response)
     render_request = {'properties': {'propA': 'valueA'}}
     response = self.descriptor_templates.render_raw('assembly-template::Test::1.0', render_request)
     self.assertEqual(response, mock_response)
     self.mock_client.make_request.assert_called_with(TNCOClientRequest(method='POST', endpoint='api/catalog/descriptorTemplates/assembly-template::Test::1.0/render-raw', body=yaml.safe_dump(render_request), headers={'Accept': 'text/plain', 'Content-Type': 'application/yaml'}, override_address='http://kami.example.com'))
 def test_delete(self):
     response = self.behaviour_assembly_configurations.delete('123')
     self.assertIsNone(response)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest(
             method='DELETE',
             endpoint='api/behaviour/assemblyConfigurations/123'))
예제 #13
0
 def test_get_topN(self):
     mock_response = [{'id': '123', 'name': 'Test'}]
     self.mock_client.make_request.return_value.json.return_value = mock_response
     response = self.assemblies.get_topN()
     self.assertEqual(response, mock_response)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest.build_request_for_json(
             method='GET', endpoint='api/topology/assemblies'))
예제 #14
0
 def test_create(self):
     test_obj = {'name': 'Test'}
     body = json.dumps(test_obj)
     mock_response = MagicMock(headers={'Location': '/api/behaviour/projects/123'})
     self.mock_client.make_request.return_value = mock_response
     response = self.behaviour_projects.create(test_obj)
     self.assertEqual(response, {'id': '123', 'name': 'Test'})
     self.mock_client.make_request.assert_called_with(TNCOClientRequest(method='POST', endpoint='api/behaviour/projects', headers={'Content-Type': 'application/json'}, body=body))
예제 #15
0
 def test_get(self):
     mock_response = {'id': 'Test', 'name': 'Test'}
     self.mock_client.make_request.return_value.json.return_value = mock_response
     response = self.deployment_locations.get('Test')
     self.assertEqual(response, mock_response)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest.build_request_for_json(
             method='GET', endpoint='api/deploymentLocations/Test'))
예제 #16
0
 def test_all(self):
     all_locations = [{'id': 'Test', 'name': 'Test'}]
     self.mock_client.make_request.return_value.json.return_value = all_locations
     response = self.deployment_locations.all()
     self.assertEqual(response, all_locations)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest.build_request_for_json(
             method='GET', endpoint='api/deploymentLocations'))
예제 #17
0
 def test_get(self):
     mock_response = {'id': 'Test', 'name': 'Test'}
     self.mock_client.make_request.return_value.json.return_value = mock_response
     response = self.behaviour_scenarios.get('Test')
     self.assertEqual(response, mock_response)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest.build_request_for_json(
             method='GET', endpoint='api/behaviour/scenarios/Test'))
예제 #18
0
파일: test_processes.py 프로젝트: IBM/lmctl
 def test_get(self):
     mock_response = {'id': '123'}
     self.mock_client.make_request.return_value.json.return_value = mock_response
     response = self.processes.get('123')
     self.assertEqual(response, mock_response)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest.build_request_for_json(
             method='GET', endpoint='api/processes/123'))
예제 #19
0
 def test_delete(self):
     response = self.inf_keys.delete('Test')
     self.assertIsNone(response)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest(
             method='DELETE',
             endpoint='api/resource-manager/infrastructure-keys/shared/Test'
         ))
예제 #20
0
 def test_all(self):
     all_objects = [{'name': 'Test'}]
     self.mock_client.make_request.return_value.json.return_value = all_objects
     response = self.resource_managers.all()
     self.assertEqual(response, all_objects)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest.build_request_for_json(
             method='GET', endpoint='api/resource-managers'))
예제 #21
0
 def test_get(self):
     mock_response = {'name': 'Test'}
     self.mock_client.make_request.return_value.json.return_value = mock_response
     response = self.resource_managers.get('Test')
     self.assertEqual(response, mock_response)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest.build_request_for_json(
             method='GET', endpoint='api/resource-managers/Test'))
예제 #22
0
 def test_create(self):
     test_obj = {'type': 'Kubernetes'}
     body = json.dumps(test_obj)
     mock_response = MagicMock(headers={'Location': '/api/resource-manager/resource-drivers/123'})
     self.mock_client.make_request.return_value = mock_response
     response = self.resource_drivers.create(test_obj)
     self.assertEqual(response, {'id': '123', 'type': 'Kubernetes'})
     self.mock_client.make_request.assert_called_with(TNCOClientRequest(method='POST', endpoint='api/resource-manager/resource-drivers', headers={'Content-Type': 'application/json'}, body=body))
예제 #23
0
 def _delete(self, id_value: str, endpoint: str = None):
     if endpoint is None:
         endpoint = self.endpoint
     request = TNCOClientRequest(
         method='DELETE',
         endpoint=build_relative_endpoint(base_endpoint=endpoint, id_value=id_value)
     )
     self._exec_request(request)
 def test_get_metrics(self):
     mock_response = [{'id': 'Test', 'name': 'TestMetric'}]
     self.mock_client.make_request.return_value.json.return_value = mock_response
     response = self.behaviour_scenario_execs.get_metrics('Test')
     self.assertEqual(response, mock_response)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest.build_request_for_json(
             method='GET',
             endpoint='api/behaviour/executions/Test/metrics'))
예제 #25
0
 def test_update(self, mock_file):
     response = self.resource_packages.update('Test', '/some/test/file')
     self.assertIsNone(response)
     mock_file.assert_called_with('/some/test/file', 'rb')
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest(
             method='PUT',
             endpoint='api/resource-manager/resource-packages/Test',
             files={'file': mock_file.return_value}))
 def test_cancel(self):
     mock_response = {'success': True}
     self.mock_client.make_request.return_value.json.return_value = mock_response
     response = self.behaviour_scenario_execs.cancel('Test')
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest(method='POST',
                           endpoint='api/behaviour/executions/Test/cancel',
                           headers={'Accept': 'application/json'}))
     self.assertEqual(response, mock_response)
예제 #27
0
 def update(self, resource_name: str, resource_pkg_path: Union[str, Path]):
     with open(resource_pkg_path, 'rb') as resource_pkg:
         files = {'file': resource_pkg}
         request = TNCOClientRequest(
             method='PUT',
             endpoint=build_relative_endpoint(
                 base_endpoint=self.endpoint,
                 id_value=resource_name)).add_files(files)
         self._exec_request(request)
예제 #28
0
 def test_get(self):
     mock_response = {'id': 'Test', 'name': 'Test'}
     self.mock_client.make_request.return_value.json.return_value = mock_response
     response = self.inf_keys.get('Test')
     self.assertEqual(response, mock_response)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest.build_request_for_json(
             method='GET',
             endpoint='api/resource-manager/infrastructure-keys/shared/Test'
         ))
예제 #29
0
 def test_get_by_type(self):
     mock_response = {'id': 'Test', 'type': 'Openstack'}
     self.mock_client.make_request.return_value.json.return_value = mock_response
     response = self.resource_drivers.get_by_type('Openstack')
     self.assertEqual(response, mock_response)
     self.mock_client.make_request.assert_called_with(
         TNCOClientRequest.build_request_for_json(
             method='GET',
             endpoint='api/resource-manager/vim-drivers',
             query_params={'type': 'Openstack'}))
예제 #30
0
 def _update(self, obj: Dict, id_attr: str  = None, endpoint: str = None, response_handler: Callable = None):
     if id_attr is None:
         id_attr = self.id_attr
     if endpoint is None:
         endpoint = self.endpoint
     request = TNCOClientRequest(
                     method='PUT',
                     endpoint=build_relative_endpoint_from_data(data_dict=obj, id_attr=id_attr, base_endpoint=endpoint)
                 ).add_json_body(obj)
     return self._exec_request(request, response_handler=response_handler)