def main(): module = ForemanAnsibleModule(argument_spec=dict( organization=dict(required=True), product=dict(required=True), repository=dict(), synchronous=dict(type='bool', default=True), ), ) params = module.parse_params() module.connect() try: organization = find_organization(module, params['organization']) product = find_product(module, params['product'], organization) if 'repository' in params: repository = find_repository(module, params['repository'], product) else: repository = None except Exception as e: module.fail_json(msg='Failed to find entity: %s ' % e) try: if repository is None: changed = product.sync(params['synchronous']) else: changed = repository.sync(params['synchronous']) module.exit_json(changed=changed) except Exception as e: module.fail_json(msg=e)
def main(): module = ForemanAnsibleModule( argument_spec=dict( src=dict(required=True, type='path', aliases=['file']), repository=dict(required=True), product=dict(required=True), organization=dict(required=True), ), supports_check_mode=True, ) entity_dict = module.parse_params() module.connect() entity_dict['organization'] = find_organization( module, name=entity_dict['organization']) entity_dict['product'] = find_product( module, name=entity_dict['product'], organization=entity_dict['organization']) entity_dict['repository'] = find_repository(module, name=entity_dict['repository'], product=entity_dict['product']) content_unit = None if entity_dict['repository'].content_type == "yum": name, version, release, arch = check_output( "rpm --queryformat '%%{NAME} %%{VERSION} %%{RELEASE} %%{ARCH}' -qp %s" % entity_dict['src'], shell=True).decode('ascii').split() query = "name = \"{}\" and version = \"{}\" and release = \"{}\" and arch = \"{}\"".format( name, version, release, arch) content_unit = find_package(module, query, repository=entity_dict['repository'], failsafe=True) elif entity_dict['repository'].content_type == "file": h = hashlib.sha256() with open(entity_dict['src'], "rb") as f: for chunk in iter(lambda: f.read(4096), b""): h.update(chunk) checksum = h.hexdigest() name = os.path.basename(entity_dict['src']) query = "name = \"{}\" and checksum = \"{}\"".format(name, checksum) content_unit = find_file(module, query, repository=entity_dict['repository'], failsafe=True) changed = False if not content_unit: try: changed = upload(module, entity_dict['src'], entity_dict['repository']) except Exception as e: module.fail_json(msg=to_native(e)) module.exit_json(changed=changed)
def main(): module = KatelloEntityAnsibleModule( argument_spec=dict( product=dict(required=True), label=dict(), name=dict(required=True), content_type=dict( required=True, choices=['docker', 'ostree', 'yum', 'puppet', 'file', 'deb']), url=dict(), gpg_key=dict(), docker_upstream_name=dict(), download_policy=dict( choices=['background', 'immediate', 'on_demand']), mirror_on_sync=dict(type='bool', default=True), state=dict(default='present', choices=['present_with_defaults', 'present', 'absent']), ), supports_check_mode=True, ) (entity_dict, state) = module.parse_params() if entity_dict[ 'content_type'] != 'docker' and 'docker_upstream_name' in entity_dict: module.fail_json( msg= "docker_upstream_name should not be set unless content_type: docker" ) module.connect() entity_dict['organization'] = find_organization( module, name=entity_dict['organization']) entity_dict['product'] = find_product( module, name=entity_dict['product'], organization=entity_dict['organization']) if 'gpg_key' in entity_dict: entity_dict['gpg_key'] = find_content_credential( module, name=entity_dict['gpg_key'], organization=entity_dict['organization']) entity = find_repository(module, name=entity_dict['name'], product=entity_dict['product'], failsafe=True) entity_dict = sanitize_entity_dict(entity_dict, name_map) changed = naildown_entity_state(Repository, entity_dict, entity, state, module) module.exit_json(changed=changed)
def main(): module = AnsibleModule( argument_spec=dict( server_url=dict(required=True), username=dict(required=True, no_log=True), password=dict(required=True, no_log=True), verify_ssl=dict(type='bool', default=True), product=dict(required=True), organization=dict(required=True), name=dict(required=True), content_type=dict(required=True), url=dict(), download_policy=dict( choices=['background', 'immediate', 'on_demand']), state=dict(default='present', choices=['present_with_defaults', 'present', 'absent']), ), supports_check_mode=True, ) handle_no_nailgun(module, HAS_NAILGUN_PACKAGE) entity_dict = dict([(k, v) for (k, v) in module.params.items() if v is not None]) server_url = entity_dict.pop('server_url') verify_ssl = entity_dict.pop('verify_ssl') username = entity_dict.pop('username') password = entity_dict.pop('password') state = entity_dict.pop('state') try: create_server(server_url, (username, password), verify_ssl) except Exception as e: module.fail_json(msg="Failed to connect to Foreman server: %s " % e) ping_server(module) entity_dict['organization'] = find_organization( module, name=entity_dict['organization']) entity_dict['product'] = find_product( module, name=entity_dict['product'], organization=entity_dict['organization']) entity = find_repository(module, name=entity_dict['name'], product=entity_dict['product'], failsafe=True) entity_dict = sanitize_entity_dict(entity_dict, name_map) changed = naildown_entity_state(Repository, entity_dict, entity, state, module) module.exit_json(changed=changed)
def main(): module = AnsibleModule( argument_spec=dict( server_url=dict(required=True), username=dict(required=True, no_log=True), password=dict(required=True, no_log=True), verify_ssl=dict(type='bool', default=True), src=dict(required=True, type='path', aliases=['file']), repository=dict(required=True), product=dict(required=True), organization=dict(required=True), ), supports_check_mode=True, ) if has_import_error: module.fail_json(msg=import_error_msg) entity_dict = dict( [(k, v) for (k, v) in module.params.items() if v is not None]) server_url = entity_dict.pop('server_url') username = entity_dict.pop('username') password = entity_dict.pop('password') verify_ssl = entity_dict.pop('verify_ssl') try: create_server(server_url, (username, password), verify_ssl) except Exception as e: module.fail_json(msg="Failed to connect to Foreman server: %s " % e) ping_server(module) name, version, release, arch = check_output("rpm --queryformat '%%{NAME} %%{VERSION} %%{RELEASE} %%{ARCH}' -qp %s" % entity_dict['src'], shell=True).split() entity_dict['organization'] = find_organization(module, name=entity_dict['organization']) entity_dict['product'] = find_product(module, name=entity_dict['product'], organization=entity_dict['organization']) entity_dict['repository'] = find_repository(module, name=entity_dict['repository'], product=entity_dict['product']) package = False if entity_dict['repository'].content_type == "yum": query = "name = \"{}\" and version = \"{}\" and release = \"{}\" and arch = \"{}\"".format(name, version, release, arch) package = find_package(module, query, repository=entity_dict['repository'], failsafe=True) changed = False if package is None or package is False: try: changed = upload(module, entity_dict['src'], entity_dict['repository']) except Exception as e: module.fail_json(msg=to_native(e)) module.exit_json(changed=changed)
def main(): module = AnsibleModule( argument_spec=dict( server_url=dict(required=True), username=dict(required=True, no_log=True), password=dict(required=True, no_log=True), verify_ssl=dict(type='bool', default=True), product=dict(required=True), organization=dict(required=True), name=dict(required=True), content_type=dict(required=True, choices=['docker', 'ostree', 'yum', 'puppet', 'file', 'deb']), url=dict(), docker_upstream_name=dict(), download_policy=dict(choices=['background', 'immediate', 'on_demand']), state=dict(default='present', choices=['present_with_defaults', 'present', 'absent']), ), supports_check_mode=True, ) if has_import_error: module.fail_json(msg=import_error_msg) entity_dict = dict( [(k, v) for (k, v) in module.params.items() if v is not None]) server_url = entity_dict.pop('server_url') verify_ssl = entity_dict.pop('verify_ssl') username = entity_dict.pop('username') password = entity_dict.pop('password') state = entity_dict.pop('state') if entity_dict['content_type'] != 'docker' and 'docker_upstream_name' in entity_dict: module.fail_json(msg="docker_upstream_name should not be set unless content_type: docker") try: create_server(server_url, (username, password), verify_ssl) except Exception as e: module.fail_json(msg="Failed to connect to Foreman server: %s " % e) ping_server(module) entity_dict['organization'] = find_organization(module, name=entity_dict['organization']) entity_dict['product'] = find_product(module, name=entity_dict['product'], organization=entity_dict['organization']) entity = find_repository(module, name=entity_dict['name'], product=entity_dict['product'], failsafe=True) entity_dict = sanitize_entity_dict(entity_dict, name_map) changed = naildown_entity_state(Repository, entity_dict, entity, state, module) module.exit_json(changed=changed)
def main(): module = AnsibleModule( argument_spec=dict( server_url=dict(required=True), username=dict(required=True, no_log=True), password=dict(required=True, no_log=True), verify_ssl=dict(type='bool', default=True), src=dict(required=True, type='path', aliases=['file']), repository=dict(required=True), product=dict(required=True), organization=dict(required=True), ), supports_check_mode=True, ) if has_import_error: module.fail_json(msg=import_error_msg) entity_dict = dict( [(k, v) for (k, v) in module.params.items() if v is not None]) server_url = entity_dict.pop('server_url') username = entity_dict.pop('username') password = entity_dict.pop('password') verify_ssl = entity_dict.pop('verify_ssl') try: create_server(server_url, (username, password), verify_ssl) except Exception as e: module.fail_json(msg="Failed to connect to Foreman server: %s " % e) ping_server(module) entity_dict['organization'] = find_organization(module, name=entity_dict['organization']) entity_dict['product'] = find_product(module, name=entity_dict['product'], organization=entity_dict['organization']) entity_dict['repository'] = find_repository(module, name=entity_dict['repository'], product=entity_dict['product']) content_unit = None if entity_dict['repository'].content_type == "yum": name, version, release, arch = check_output("rpm --queryformat '%%{NAME} %%{VERSION} %%{RELEASE} %%{ARCH}' -qp %s" % entity_dict['src'], shell=True).decode('ascii').split() query = "name = \"{}\" and version = \"{}\" and release = \"{}\" and arch = \"{}\"".format(name, version, release, arch) content_unit = find_package(module, query, repository=entity_dict['repository'], failsafe=True) elif entity_dict['repository'].content_type == "file": h = hashlib.sha256() with open(entity_dict['src'], "rb") as f: for chunk in iter(lambda: f.read(4096), b""): h.update(chunk) checksum = h.hexdigest() name = os.path.basename(entity_dict['src']) query = "name = \"{}\" and checksum = \"{}\"".format(name, checksum) content_unit = find_file(module, query, repository=entity_dict['repository'], failsafe=True) changed = False if not content_unit: try: changed = upload(module, entity_dict['src'], entity_dict['repository']) except Exception as e: module.fail_json(msg=to_native(e)) module.exit_json(changed=changed)
def main(): module = KatelloEntityAnsibleModule( argument_spec=dict( product=dict(required=True), label=dict(), name=dict(required=True), content_type=dict( required=True, choices=['docker', 'ostree', 'yum', 'puppet', 'file', 'deb']), url=dict(), gpg_key=dict(), docker_upstream_name=dict(), download_policy=dict( choices=['background', 'immediate', 'on_demand']), state=dict(default='present', choices=['present_with_defaults', 'present', 'absent']), ), supports_check_mode=True, ) (server_params, entity_dict, state) = module.parse_params() if entity_dict[ 'content_type'] != 'docker' and 'docker_upstream_name' in entity_dict: module.fail_json( msg= "docker_upstream_name should not be set unless content_type: docker" ) try: (server_url, username, password, verify_ssl) = server_params create_server(server_url, (username, password), verify_ssl) except Exception as e: module.fail_json(msg="Failed to connect to Foreman server: %s " % e) ping_server(module) entity_dict['organization'] = find_organization( module, name=entity_dict['organization']) entity_dict['product'] = find_product( module, name=entity_dict['product'], organization=entity_dict['organization']) if 'gpg_key' in entity_dict: entity_dict['gpg_key'] = find_content_credential( module, name=entity_dict['gpg_key'], organization=entity_dict['organization']) entity = find_repository(module, name=entity_dict['name'], product=entity_dict['product'], failsafe=True) entity_dict = sanitize_entity_dict(entity_dict, name_map) changed = naildown_entity_state(Repository, entity_dict, entity, state, module) module.exit_json(changed=changed)