Exemplo n.º 1
0
def get_password_data(url, verb, headers, version, args):
    params = {}
    params['Action'] = utils.dash_to_camelcase(args[0])
    params['Version'] = version
    args = args[1:]
    parser = utils.get_argument_parser()
    parser.add_argument('--instance-id', required=True)
    processed, remaining = parser.parse_known_args(args)
    utils.populate_params_from_cli_args(params, processed)
    response = requestify.make_request(url, verb, headers, params)
    parser = utils.get_argument_parser()
    parser.add_argument('--private-key-file', required=False, default=None)
    parser.add_argument('--key-passphrase', required=False, default=None)
    processed = parser.parse_args(remaining)
    processed = vars(processed)
    private_key_file = processed.get('private_key_file')
    passphrase = processed.get('key_passphrase')
    if response.status_code != 200:
        return response
    response_json = utils.web_response_to_json(response)
    try:
        response_body = response_json['GetPasswordDataResponse']
        encrypted_password = response_body['passwordData']
        if not private_key_file or not encrypted_password:
            return response
        decrypted_password = decrypt_instance_password(encrypted_password,
                                                       private_key_file,
                                                       passphrase)
        response_json['GetPasswordDataResponse']['passwordData'] = \
                                                  decrypted_password
        return response_json
    except KeyError as ke:
        raise exception.UnknownOutputFormat()
Exemplo n.º 2
0
def web_response_to_json(response):
    """
    Modify the web response output to json format

    param response: response object from requests library

    return: json object representing the response content
    """
    try:
        if response:
            resp_dict = json.loads(response.content)
    except:
        try:
            resp_ordereddict = xmltodict.parse(response.content)
            resp_json = json.dumps(resp_ordereddict, indent=4, sort_keys=True)
            resp_dict = json.loads(resp_json)
        except:
            raise exception.UnknownOutputFormat()
    return resp_dict
Exemplo n.º 3
0
 def display(self, response, headers, webobject=True):
     resp_json = ""
     request_id = None
     try:
         if headers and headers.get('x-jcs-request-id'):
             request_id = headers.get('x-jcs-request-id')
         elif headers and headers.get('request-id'):
             request_id = headers.get('request-id')
         if response:
             if webobject:
                 resp_dict = json.loads(response)
             else:
                 resp_dict = response
             if not request_id:
                 request_id = utils.requestid_in_response(resp_dict)
             resp_json = json.dumps(resp_dict, indent=4, sort_keys=True)
     except:
         try:
             resp_ordereddict = xmltodict.parse(response)
             resp_json = json.dumps(resp_ordereddict, indent=4,
                                    sort_keys=True)
             resp_dict = json.loads(resp_json)
             if not request_id:
                 request_id = utils.requestid_in_response(resp_dict)
             resp_json = json.dumps(resp_dict, indent=4, sort_keys=True)
             resp_json = resp_json.replace("\\n", "\n")
             resp_json = resp_json.replace("\\", "")
         except Exception as e:
             raise e
             #raise exception.UnknownOutputFormat()
     # Handle request-id displaying
     if not request_id:
         raise exception.UnknownOutputFormat()
     output_msg = resp_json
     output_msg += "\nRequest-Id: " + request_id
     print(output_msg)