Ejemplo n.º 1
0
    def __init__(self, platformburl=None, platformbresourceserverclientid=None,
                 platformbresourceserversecret=None,
                 platformbcorrugateclientcolonsecret=None,
                 platformbcorrugateclient=None,
                 platformbhypervisorid=None,
                 platformbcorrugatesecret=None):
        """
        :param platformburl: apiurl.
        :param platformbresourceserverclientid: resourceserverclientid.
        :param platformbresourceserversecret: resourceserversecret.
        :param platformbcorrugateclientcolonsecret: corrugateclientcolonsecret.
        :param platformbcorrugateclient: corrugateclient.
        :param platformbhypervisorid: hypervisorid.
        :param platformbcorrugatesecret: corrugatesecret.
        """
        try:
            self.url_base = platformburl
            self.resource_server_clientid = platformbresourceserverclientid
            self.resource_server_secret = platformbresourceserversecret
            self.corrugate_client = platformbcorrugateclient
            self.corrugate_secret = platformbcorrugatesecret
            self.hypervisor_id = platformbhypervisorid

            if not platformburl:
                self.url_base = '{}'.format(get_config(KEY_PLATFORMB, "platformburl"))

            self.servicea_url = 'https://kratos.{}'.format(self.url_base)

            if not platformbresourceserverclientid:
                rsc = get_config(KEY_PLATFORMB, "platformbresourceserverclientid")
                self.resource_server_clientid = '{}'.format(rsc)

            if not platformbresourceserversecret:
                rss = get_config(KEY_PLATFORMB, "platformbresourceserversecret")
                self.resource_server_secret = '{}'.format(rss)

            # resource_server_colon_secret_b64 as rscs
            rscs = Utils.get_b64_colon_secret(self.resource_server_clientid,
                                              self.resource_server_secret)

            self.resource_server_colon_secret_b64 = rscs
            if not platformbcorrugateclient:
                self.corrugate_client = '{}'.format(get_config(KEY_PLATFORMB, "platformbcorrugateclient"))
            if not platformbcorrugatesecret:
                self.corrugate_secret = '{}'.format(get_config(KEY_PLATFORMB, "platformbcorrugatesecret"))

            # corrugate_colon_secret_b64 as ccs.
            ccs = Utils.get_b64_colon_secret(self.corrugate_client,
                                             self.corrugate_secret)
            self.corrugate_colon_secret_b64 = ccs
            if not platformbhypervisorid:
                self.hypervisor_id = '{}'.format(get_config(KEY_PLATFORMB, "platformbhypervisorid"))
        except KeyError as e:
            message = 'Required  variable {} missing'.format(e)
            logger.critical(message)
            raise KeyError(message)
Ejemplo n.º 2
0
    def test_make_post_request(self, request_mock):
        response_instance = MagicMock()
        response_instance.status_code = 200
        request_mock.post.return_value = response_instance
        result = Utils.make_post_request("example.com", json_data={"name": "xyz"})

        self.assertEqual(result.status_code, 200)
Ejemplo n.º 3
0
    def test_make_get_request(self, request_mock):
        response_instance = MagicMock()
        response_instance.status_code = 200
        request_mock.get.return_value = response_instance

        result = Utils.make_get_request("example.com")
        self.assertEqual(result.status_code, 200)
Ejemplo n.º 4
0
    def authenticate(self, **kwargs):
        """
        Authenticate against PlatformA.

        Returns:
            integer: Status code

        """
        try:
            response = Utils.post_JSON(self.url("auth"),
                                       headers={},
                                       payload={
                                           "username": self.login,
                                           "password": self.password
                                       },
                                       doing="Authenticating on Platforma")

            self.XTM_TOKEN = response.json().get('Token', None)
            user_info = response.json().get('User', None)
            if user_info:
                self.tenant_id = user_info.get('TenantID', None)

            self.request_header["Authorization"] = 'Bearer %s' % self.XTM_TOKEN
            return response.status_code
        except Exception as e:
            message = "Some unknown exception occurs - {}".format(e)
            logging.debug(message)
            return status.HTTP_417_EXPECTATION_FAILED
Ejemplo n.º 5
0
    def get_task_status(self, **kwargs):
        """
        Gets the request status using TaskInfo API

        Args:
            message_id (string): Request message id for the task.

        Returns:
            string: Returns status "Success" or "Failure"

        """
        if kwargs is None or kwargs['parameters'] is None:
            message = "For 'get_task_status' method parameters are not parsed."
            logger.critical(message)
            raise ValueError(message)

        if "message_id" not in kwargs['parameters']:
            message = "Key 'message_id' not in kwargs."
            logger.critical(message)
            raise ValueError(message)

        message_id = kwargs['parameters']['message_id']

        return_data = {"state": "Error"}
        auth = self.authenticate()
        if auth == 200:
            task_completed = False
            state_message = "Queued"
            while not task_completed:
                sleep(WAIT_TIME_BETWEEN_REQUESTS)
                response = Utils.make_get_request(self.url("TaskInfo" + "/" +
                                                           str(message_id)),
                                                  headers=self.request_header,
                                                  verify=False)
                if 'StateMessage' in response.json():
                    state_message = response.json()['StateMessage']
                if state_message == "Success" or state_message == "Error":
                    task_completed = True
                    return_data["state"] = state_message
                    if state_message == "Success":
                        return_data["vm_id"] = response.json()['Result']
        else:
            message = "unable to authenticate to the PlatformA server," \
                      " got the below response from server {}".format(auth)
            logging.debug(message)
            raise Exception(message)

        return return_data
Ejemplo n.º 6
0
 def test_get_b64_colon_secret(self, b64):
     b64.b64encode.return_value = "encoded"
     result = Utils.get_b64_colon_secret("1", "we")
     self.assertEqual(result, "encoded")
Ejemplo n.º 7
0
 def test_post_form(self, make_post_request_mock):
     response_instance = MagicMock()
     response_instance.status_code = 200
     make_post_request_mock.return_value = response_instance
     result = Utils.post_form("example.com", {"name": "xyz"}, {"name": "abc"}, "task")
     self.assertEqual(result.status_code, 200)
Ejemplo n.º 8
0
    def test_result_redirect(self):
        result = Utils.result_redirect(300)
        self.assertEqual(result, True)

        result = Utils.result_redirect(401)
        self.assertEqual(result, False)
Ejemplo n.º 9
0
    def test_result_success(self):
        result = Utils.result_success(201)
        self.assertEqual(result, True)

        result = Utils.result_success(401)
        self.assertEqual(result, False)