Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New GCP module: gcp_mlengine_model_facts #59223

Merged
merged 1 commit into from
Jul 18, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
165 changes: 165 additions & 0 deletions lib/ansible/modules/cloud/google/gcp_mlengine_model_facts.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Copyright (C) 2017 Google
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# ----------------------------------------------------------------------------
#
# *** AUTO GENERATED CODE *** AUTO GENERATED CODE ***
#
# ----------------------------------------------------------------------------
#
# This file is automatically generated by Magic Modules and manual
# changes will be clobbered when the file is regenerated.
#
# Please read more about how to change this file at
# https://www.github.com/GoogleCloudPlatform/magic-modules
#
# ----------------------------------------------------------------------------

from __future__ import absolute_import, division, print_function

__metaclass__ = type

################################################################################
# Documentation
################################################################################

ANSIBLE_METADATA = {'metadata_version': '1.1', 'status': ["preview"], 'supported_by': 'community'}

DOCUMENTATION = '''
---
module: gcp_mlengine_model_facts
description:
- Gather facts for GCP Model
short_description: Gather facts for GCP Model
version_added: 2.9
author: Google Inc. (@googlecloudplatform)
requirements:
- python >= 2.6
- requests >= 2.18.4
- google-auth >= 1.3.0
options: {}
extends_documentation_fragment: gcp
'''

EXAMPLES = '''
- name: " a model facts"
gcp_mlengine_model_facts:
project: test_project
auth_kind: serviceaccount
service_account_file: "/tmp/auth.pem"
state: facts
'''

RETURN = '''
resources:
description: List of resources
returned: always
type: complex
contains:
name:
description:
- The name specified for the model.
returned: success
type: str
description:
description:
- The description specified for the model when it was created.
returned: success
type: str
defaultVersion:
description:
- The default version of the model. This version will be used to handle prediction
requests that do not specify a version.
returned: success
type: complex
contains:
name:
description:
- The name specified for the version when it was created.
returned: success
type: str
regions:
description:
- The list of regions where the model is going to be deployed.
- Currently only one region per model is supported .
returned: success
type: list
onlinePredictionLogging:
description:
- If true, online prediction access logs are sent to StackDriver Logging.
returned: success
type: bool
onlinePredictionConsoleLogging:
description:
- If true, online prediction nodes send stderr and stdout streams to Stackdriver
Logging.
returned: success
type: bool
labels:
description:
- One or more labels that you can add, to organize your models.
returned: success
type: dict
'''

################################################################################
# Imports
################################################################################
from ansible.module_utils.gcp_utils import navigate_hash, GcpSession, GcpModule, GcpRequest
import json

################################################################################
# Main
################################################################################


def main():
module = GcpModule(argument_spec=dict())

if not module.params['scopes']:
module.params['scopes'] = ['https://www.googleapis.com/auth/cloud-platform']

items = fetch_list(module, collection(module))
if items.get('models'):
items = items.get('models')
else:
items = []
return_value = {'resources': items}
module.exit_json(**return_value)


def collection(module):
return "https://ml.googleapis.com/v1/projects/{project}/models".format(**module.params)


def fetch_list(module, link):
auth = GcpSession(module, 'mlengine')
response = auth.get(link)
return return_if_object(module, response)


def return_if_object(module, response):
# If not found, return nothing.
if response.status_code == 404:
return None

# If no content, return nothing.
if response.status_code == 204:
return None

try:
module.raise_for_status(response)
result = response.json()
except getattr(json.decoder, 'JSONDecodeError', ValueError) as inst:
module.fail_json(msg="Invalid JSON response with error: %s" % inst)

if navigate_hash(result, ['error', 'errors']):
module.fail_json(msg=navigate_hash(result, ['error', 'errors']))

return result


if __name__ == "__main__":
main()