#!/usr/bin/env python from ansible.module_utils.k8s_common import OpenShiftAnsibleModule, OpenShiftAnsibleException DOCUMENTATION = ''' module: k8s_v1_build short_description: Kubernetes Build description: - Manage the lifecycle of a build object. Supports check mode, and attempts to to be idempotent. version_added: 2.3.0 author: OpenShift (@openshift) options: annotations: description: - Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. type: dict api_key: description: - Token used to connect to the API. cert_file: description: - Path to a certificate used to authenticate with the API. type: path context: description: - The name of a context found in the Kubernetes config file. debug: description: - Enable debug output from the OpenShift helper. Logging info is written to KubeObjHelper.log default: false type: bool host: description: - Provide a URL for acessing the Kubernetes API. key_file: description: - Path to a key file used to authenticate with the API. type: path kubeconfig: description: - Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the openshift client will attempt to load the default configuration file from I(~/.kube/config.json). type: path labels: description: - Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. type: dict name: description: - Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. required: true namespace: description: - Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. Must be a DNS_LABEL. Cannot be updated. password: description: - Provide a password for connecting to the API. Use in conjunction with I(username). spec_completion_deadline_seconds: description: - completionDeadlineSeconds is an optional duration in seconds, counted from the time when a build pod gets scheduled in the system, that the build may be active on a node before the system actively tries to terminate the build; value must be positive integer aliases: - completion_deadline_seconds type: int spec_node_selector: description: - nodeSelector is a selector which must be true for the build pod to fit on a node If nil, it can be overridden by default build nodeselector values for the cluster. If set to an empty map or a map with any values, default build nodeselector values are ignored. aliases: - node_selector type: dict spec_output_image_labels: description: - imageLabels define a list of labels that are applied to the resulting image. If there are multiple labels with the same name then the last one in the list is used. aliases: - output_image_labels type: list spec_output_push_secret_name: description: - Name of the referent. aliases: - output_push_secret_name spec_output_to_api_version: description: - API version of the referent. aliases: - output_to_api_version spec_output_to_field_path: description: - 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.' aliases: - output_to_field_path spec_output_to_kind: description: - Kind of the referent. aliases: - output_to_kind spec_output_to_name: description: - Name of the referent. aliases: - output_to_name spec_output_to_namespace: description: - Namespace of the referent. aliases: - output_to_namespace spec_output_to_resource_version: description: - Specific resourceVersion to which this reference is made, if any. aliases: - output_to_resource_version spec_output_to_uid: description: - UID of the referent. aliases: - output_to_uid spec_post_commit_args: description: - args is a list of arguments that are provided to either Command, Script or the Docker image's default entrypoint. The arguments are placed immediately after the command to be run. aliases: - post_commit_args type: list spec_post_commit_command: description: - command is the command to run. It may not be specified with Script. This might be needed if the image doesn't have `/bin/sh`, or if you do not want to use a shell. In all other cases, using Script might be more convenient. aliases: - post_commit_command type: list spec_post_commit_script: description: - script is a shell script to be run with `/bin/sh -ic`. It may not be specified with Command. Use Script when a shell script is appropriate to execute the post build hook, for example for running unit tests with `rake test`. If you need control over the image entrypoint, or if the image does not have `/bin/sh`, use Command and/or Args. The `-i` flag is needed to support CentOS and RHEL images that use Software Collections (SCL), in order to have the appropriate collections enabled in the shell. E.g., in the Ruby image, this is necessary to make `ruby`, `bundle` and other binaries available in the PATH. aliases: - post_commit_script spec_resources_limits: description: - Limits describes the maximum amount of compute resources allowed. aliases: - resources_limits type: dict spec_resources_requests: description: - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. aliases: - resources_requests type: dict spec_revision_git_author_email: description: - email of the source control user aliases: - revision_git_author_email spec_revision_git_author_name: description: - name of the source control user aliases: - revision_git_author_name spec_revision_git_commit: description: - commit is the commit hash identifying a specific commit aliases: - revision_git_commit spec_revision_git_committer_email: description: - email of the source control user aliases: - revision_git_committer_email spec_revision_git_committer_name: description: - name of the source control user aliases: - revision_git_committer_name spec_revision_git_message: description: - message is the description of a specific commit aliases: - revision_git_message spec_revision_type: description: - type of the build source, may be one of 'Source', 'Dockerfile', 'Binary', or 'Images' aliases: - revision_type spec_service_account: description: - serviceAccount is the name of the ServiceAccount to use to run the pod created by this build. The pod will be allowed to use secrets referenced by the ServiceAccount aliases: - service_account spec_source_binary_as_file: description: - asFile indicates that the provided binary input should be considered a single file within the build input. For example, specifying "webapp.war" would place the provided binary as `/webapp.war` for the builder. If left empty, the Docker and Source build strategies assume this file is a zip, tar, or tar.gz file and extract it as the source. The custom strategy receives this binary as standard input. This filename may not contain slashes or be '..' or '.'. aliases: - source_binary_as_file spec_source_context_dir: description: - contextDir specifies the sub-directory where the source code for the application exists. This allows to have buildable sources in directory other than root of repository. aliases: - source_context_dir spec_source_dockerfile: description: - dockerfile is the raw contents of a Dockerfile which should be built. When this option is specified, the FROM may be modified based on your strategy base image and additional ENV stanzas from your strategy environment will be added after the FROM, but before the rest of your Dockerfile stanzas. The Dockerfile source type may be used with other options like git - in those cases the Git repo will have any innate Dockerfile replaced in the context dir. aliases: - source_dockerfile spec_source_git_http_proxy: description: - httpProxy is a proxy used to reach the git repository over http aliases: - source_git_http_proxy spec_source_git_https_proxy: description: - httpsProxy is a proxy used to reach the git repository over https aliases: - source_git_https_proxy spec_source_git_no_proxy: description: - noProxy is the list of domains for which the proxy should not be used aliases: - source_git_no_proxy spec_source_git_ref: description: - ref is the branch/tag/ref to build. aliases: - source_git_ref spec_source_git_uri: description: - uri points to the source that will be built. The structure of the source will depend on the type of build to run aliases: - source_git_uri spec_source_images: description: - images describes a set of images to be used to provide source for the build aliases: - source_images type: list spec_source_secrets: description: - secrets represents a list of secrets and their destinations that will be used only for the build. aliases: - source_secrets type: list spec_source_source_secret_name: description: - Name of the referent. aliases: - source_secret_name spec_source_type: description: - type of build input to accept aliases: - source_type spec_strategy_custom_strategy__from_api_version: description: - API version of the referent. aliases: - strategy_custom_strategy__from_api_version spec_strategy_custom_strategy__from_field_path: description: - 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.' aliases: - strategy_custom_strategy__from_field_path spec_strategy_custom_strategy__from_kind: description: - Kind of the referent. aliases: - strategy_custom_strategy__from_kind spec_strategy_custom_strategy__from_name: description: - Name of the referent. aliases: - strategy_custom_strategy__from_name spec_strategy_custom_strategy__from_namespace: description: - Namespace of the referent. aliases: - strategy_custom_strategy__from_namespace spec_strategy_custom_strategy__from_resource_version: description: - Specific resourceVersion to which this reference is made, if any. aliases: - strategy_custom_strategy__from_resource_version spec_strategy_custom_strategy__from_uid: description: - UID of the referent. aliases: - strategy_custom_strategy__from_uid spec_strategy_custom_strategy_build_api_version: description: - buildAPIVersion is the requested API version for the Build object serialized and passed to the custom builder aliases: - strategy_custom_strategy_build_api_version spec_strategy_custom_strategy_env: description: - env contains additional environment variables you want to pass into a builder container aliases: - strategy_custom_strategy_env type: list spec_strategy_custom_strategy_expose_docker_socket: description: - exposeDockerSocket will allow running Docker commands (and build Docker images) from inside the Docker container. aliases: - strategy_custom_strategy_expose_docker_socket type: bool spec_strategy_custom_strategy_force_pull: description: - forcePull describes if the controller should configure the build pod to always pull the images for the builder or only pull if it is not present locally aliases: - strategy_custom_strategy_force_pull type: bool spec_strategy_custom_strategy_pull_secret_name: description: - Name of the referent. aliases: - strategy_custom_strategy_pull_secret_name spec_strategy_custom_strategy_secrets: description: - secrets is a list of additional secrets that will be included in the build pod aliases: - strategy_custom_strategy_secrets type: list spec_strategy_docker_strategy__from_api_version: description: - API version of the referent. aliases: - strategy_docker_strategy__from_api_version spec_strategy_docker_strategy__from_field_path: description: - 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.' aliases: - strategy_docker_strategy__from_field_path spec_strategy_docker_strategy__from_kind: description: - Kind of the referent. aliases: - strategy_docker_strategy__from_kind spec_strategy_docker_strategy__from_name: description: - Name of the referent. aliases: - strategy_docker_strategy__from_name spec_strategy_docker_strategy__from_namespace: description: - Namespace of the referent. aliases: - strategy_docker_strategy__from_namespace spec_strategy_docker_strategy__from_resource_version: description: - Specific resourceVersion to which this reference is made, if any. aliases: - strategy_docker_strategy__from_resource_version spec_strategy_docker_strategy__from_uid: description: - UID of the referent. aliases: - strategy_docker_strategy__from_uid spec_strategy_docker_strategy_dockerfile_path: description: - dockerfilePath is the path of the Dockerfile that will be used to build the Docker image, relative to the root of the context (contextDir). aliases: - strategy_docker_strategy_dockerfile_path spec_strategy_docker_strategy_env: description: - env contains additional environment variables you want to pass into a builder container aliases: - strategy_docker_strategy_env type: list spec_strategy_docker_strategy_force_pull: description: - forcePull describes if the builder should pull the images from registry prior to building. aliases: - strategy_docker_strategy_force_pull type: bool spec_strategy_docker_strategy_no_cache: description: - noCache if set to true indicates that the docker build must be executed with the --no-cache=true flag aliases: - strategy_docker_strategy_no_cache type: bool spec_strategy_docker_strategy_pull_secret_name: description: - Name of the referent. aliases: - strategy_docker_strategy_pull_secret_name spec_strategy_jenkins_pipeline_strategy_jenkinsfile: description: - Jenkinsfile defines the optional raw contents of a Jenkinsfile which defines a Jenkins pipeline build. aliases: - strategy_jenkins_pipeline_strategy_jenkinsfile spec_strategy_jenkins_pipeline_strategy_jenkinsfile_path: description: - JenkinsfilePath is the optional path of the Jenkinsfile that will be used to configure the pipeline relative to the root of the context (contextDir). If both JenkinsfilePath & Jenkinsfile are both not specified, this defaults to Jenkinsfile in the root of the specified contextDir. aliases: - strategy_jenkins_pipeline_strategy_jenkinsfile_path spec_strategy_source_strategy__from_api_version: description: - API version of the referent. aliases: - strategy_source_strategy__from_api_version spec_strategy_source_strategy__from_field_path: description: - 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.' aliases: - strategy_source_strategy__from_field_path spec_strategy_source_strategy__from_kind: description: - Kind of the referent. aliases: - strategy_source_strategy__from_kind spec_strategy_source_strategy__from_name: description: - Name of the referent. aliases: - strategy_source_strategy__from_name spec_strategy_source_strategy__from_namespace: description: - Namespace of the referent. aliases: - strategy_source_strategy__from_namespace spec_strategy_source_strategy__from_resource_version: description: - Specific resourceVersion to which this reference is made, if any. aliases: - strategy_source_strategy__from_resource_version spec_strategy_source_strategy__from_uid: description: - UID of the referent. aliases: - strategy_source_strategy__from_uid spec_strategy_source_strategy_env: description: - env contains additional environment variables you want to pass into a builder container aliases: - strategy_source_strategy_env type: list spec_strategy_source_strategy_force_pull: description: - forcePull describes if the builder should pull the images from registry prior to building. aliases: - strategy_source_strategy_force_pull type: bool spec_strategy_source_strategy_incremental: description: - incremental flag forces the Source build to do incremental builds if true. aliases: - strategy_source_strategy_incremental type: bool spec_strategy_source_strategy_pull_secret_name: description: - Name of the referent. aliases: - strategy_source_strategy_pull_secret_name spec_strategy_source_strategy_runtime_artifacts: description: - runtimeArtifacts specifies a list of source/destination pairs that will be copied from the builder to the runtime image. sourcePath can be a file or directory. destinationDir must be a directory. destinationDir can also be empty or equal to ".", in this case it just refers to the root of WORKDIR. This field and the feature it enables are in tech preview. aliases: - strategy_source_strategy_runtime_artifacts type: list spec_strategy_source_strategy_runtime_image_api_version: description: - API version of the referent. aliases: - strategy_source_strategy_runtime_image_api_version spec_strategy_source_strategy_runtime_image_field_path: description: - 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.' aliases: - strategy_source_strategy_runtime_image_field_path spec_strategy_source_strategy_runtime_image_kind: description: - Kind of the referent. aliases: - strategy_source_strategy_runtime_image_kind spec_strategy_source_strategy_runtime_image_name: description: - Name of the referent. aliases: - strategy_source_strategy_runtime_image_name spec_strategy_source_strategy_runtime_image_namespace: description: - Namespace of the referent. aliases: - strategy_source_strategy_runtime_image_namespace spec_strategy_source_strategy_runtime_image_resource_version: description: - Specific resourceVersion to which this reference is made, if any. aliases: - strategy_source_strategy_runtime_image_resource_version spec_strategy_source_strategy_runtime_image_uid: description: - UID of the referent. aliases: - strategy_source_strategy_runtime_image_uid spec_strategy_source_strategy_scripts: description: - scripts is the location of Source scripts aliases: - strategy_source_strategy_scripts spec_strategy_type: description: - type is the kind of build strategy. aliases: - strategy_type spec_triggered_by: description: - triggeredBy describes which triggers started the most recent update to the build configuration and contains information about those triggers. aliases: - triggered_by type: list ssl_ca_cert: description: - Path to a CA certificate used to authenticate with the API. type: path state: description: - Determines if the object should be created, patched, deleted or replaced. When set to C(present), the object will be created, if it does not exist, or patched, if requested parameters differ from existing object attributes. If set to C(absent), an existing object will be deleted, and if set to C(replaced), an existing object will be completely replaced with a new object created from the supplied parameters. default: present choices: - present - absent - replaced username: description: - Provide a username for connecting to the API. verify_ssl: description: - Whether or not to verify the API server's SSL certificates. type: bool requirements: - openshift == 1.0.0-snapshot ''' EXAMPLES = ''' ''' RETURN = ''' api_version: type: string description: Requested API version build: type: complex returned: when I(state) = C(present) contains: api_version: description: - APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. type: str kind: description: - Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. type: str metadata: description: - Standard object's metadata. type: complex contains: annotations: description: - Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. type: complex contains: str, str cluster_name: description: - The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request. type: str creation_timestamp: description: - CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. type: complex contains: {} deletion_grace_period_seconds: description: - Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only. type: int deletion_timestamp: description: - DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field. Once set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. Populated by the system when a graceful deletion is requested. Read-only. type: complex contains: {} finalizers: description: - Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. type: list contains: str generate_name: description: - GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). Applied only if Name is not specified. type: str generation: description: - A sequence number representing a specific generation of the desired state. Populated by the system. Read-only. type: int labels: description: - Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. type: complex contains: str, str name: description: - Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. type: str namespace: description: - Namespace defines the space within each name must be unique. An empty namespace is equivalent to the "default" namespace, but "default" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty. Must be a DNS_LABEL. Cannot be updated. type: str owner_references: description: - List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller. type: list contains: api_version: description: - API version of the referent. type: str controller: description: - If true, this reference points to the managing controller. type: bool kind: description: - Kind of the referent. type: str name: description: - Name of the referent. type: str uid: description: - UID of the referent. type: str resource_version: description: - An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources. Populated by the system. Read-only. Value must be treated as opaque by clients and . type: str self_link: description: - SelfLink is a URL representing this object. Populated by the system. Read-only. type: str uid: description: - UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. type: str spec: description: - spec is all the inputs used to execute the build. type: complex contains: completion_deadline_seconds: description: - completionDeadlineSeconds is an optional duration in seconds, counted from the time when a build pod gets scheduled in the system, that the build may be active on a node before the system actively tries to terminate the build; value must be positive integer type: int node_selector: description: - nodeSelector is a selector which must be true for the build pod to fit on a node If nil, it can be overridden by default build nodeselector values for the cluster. If set to an empty map or a map with any values, default build nodeselector values are ignored. type: complex contains: str, str output: description: - output describes the Docker image the Strategy should produce. type: complex contains: image_labels: description: - imageLabels define a list of labels that are applied to the resulting image. If there are multiple labels with the same name then the last one in the list is used. type: list contains: name: description: - name defines the name of the label. It must have non-zero length. type: str value: description: - value defines the literal value of the label. type: str push_secret: description: - PushSecret is the name of a Secret that would be used for setting up the authentication for executing the Docker push to authentication enabled Docker Registry (or Docker Hub). type: complex contains: name: description: - Name of the referent. type: str to: description: - to defines an optional location to push the output of this build to. Kind must be one of 'ImageStreamTag' or 'DockerImage'. This value will be used to look up a Docker image repository to push to. In the case of an ImageStreamTag, the ImageStreamTag will be looked for in the namespace of the build unless Namespace is specified. type: complex contains: api_version: description: - API version of the referent. type: str field_path: description: - 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.' type: str kind: description: - Kind of the referent. type: str name: description: - Name of the referent. type: str namespace: description: - Namespace of the referent. type: str resource_version: description: - Specific resourceVersion to which this reference is made, if any. type: str uid: description: - UID of the referent. type: str post_commit: description: - postCommit is a build hook executed after the build output image is committed, before it is pushed to a registry. type: complex contains: args: description: - args is a list of arguments that are provided to either Command, Script or the Docker image's default entrypoint. The arguments are placed immediately after the command to be run. type: list contains: str command: description: - command is the command to run. It may not be specified with Script. This might be needed if the image doesn't have `/bin/sh`, or if you do not want to use a shell. In all other cases, using Script might be more convenient. type: list contains: str script: description: - script is a shell script to be run with `/bin/sh -ic`. It may not be specified with Command. Use Script when a shell script is appropriate to execute the post build hook, for example for running unit tests with `rake test`. If you need control over the image entrypoint, or if the image does not have `/bin/sh`, use Command and/or Args. The `-i` flag is needed to support CentOS and RHEL images that use Software Collections (SCL), in order to have the appropriate collections enabled in the shell. E.g., in the Ruby image, this is necessary to make `ruby`, `bundle` and other binaries available in the PATH. type: str resources: description: - resources computes resource requirements to execute the build. type: complex contains: limits: description: - Limits describes the maximum amount of compute resources allowed. type: complex contains: str, ResourceQuantity requests: description: - Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. type: complex contains: str, ResourceQuantity revision: description: - revision is the information from the source for a specific repo snapshot. This is optional. type: complex contains: git: description: - Git contains information about git-based build source type: complex contains: author: description: - author is the author of a specific commit type: complex contains: email: description: - email of the source control user type: str name: description: - name of the source control user type: str commit: description: - commit is the commit hash identifying a specific commit type: str committer: description: - committer is the committer of a specific commit type: complex contains: email: description: - email of the source control user type: str name: description: - name of the source control user type: str message: description: - message is the description of a specific commit type: str type: description: - type of the build source, may be one of 'Source', 'Dockerfile', 'Binary', or 'Images' type: str service_account: description: - serviceAccount is the name of the ServiceAccount to use to run the pod created by this build. The pod will be allowed to use secrets referenced by the ServiceAccount type: str source: description: - source describes the SCM in use. type: complex contains: binary: description: - binary builds accept a binary as their input. The binary is generally assumed to be a tar, gzipped tar, or zip file depending on the strategy. For Docker builds, this is the build context and an optional Dockerfile may be specified to override any Dockerfile in the build context. For Source builds, this is assumed to be an archive as described above. For Source and Docker builds, if binary.asFile is set the build will receive a directory with a single file. contextDir may be used when an archive is provided. Custom builds will receive this binary as input on STDIN. type: complex contains: as_file: description: - asFile indicates that the provided binary input should be considered a single file within the build input. For example, specifying "webapp.war" would place the provided binary as `/webapp.war` for the builder. If left empty, the Docker and Source build strategies assume this file is a zip, tar, or tar.gz file and extract it as the source. The custom strategy receives this binary as standard input. This filename may not contain slashes or be '..' or '.'. type: str context_dir: description: - contextDir specifies the sub-directory where the source code for the application exists. This allows to have buildable sources in directory other than root of repository. type: str dockerfile: description: - dockerfile is the raw contents of a Dockerfile which should be built. When this option is specified, the FROM may be modified based on your strategy base image and additional ENV stanzas from your strategy environment will be added after the FROM, but before the rest of your Dockerfile stanzas. The Dockerfile source type may be used with other options like git - in those cases the Git repo will have any innate Dockerfile replaced in the context dir. type: str git: description: - git contains optional information about git build source type: complex contains: http_proxy: description: - httpProxy is a proxy used to reach the git repository over http type: str https_proxy: description: - httpsProxy is a proxy used to reach the git repository over https type: str no_proxy: description: - noProxy is the list of domains for which the proxy should not be used type: str ref: description: - ref is the branch/tag/ref to build. type: str uri: description: - uri points to the source that will be built. The structure of the source will depend on the type of build to run type: str images: description: - images describes a set of images to be used to provide source for the build type: list contains: _from: description: - from is a reference to an ImageStreamTag, ImageStreamImage, or DockerImage to copy source from. type: complex contains: api_version: description: - API version of the referent. type: str field_path: description: - 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.' type: str kind: description: - Kind of the referent. type: str name: description: - Name of the referent. type: str namespace: description: - Namespace of the referent. type: str resource_version: description: - Specific resourceVersion to which this reference is made, if any. type: str uid: description: - UID of the referent. type: str paths: description: - paths is a list of source and destination paths to copy from the image. type: list contains: destination_dir: description: - destinationDir is the relative directory within the build directory where files copied from the image are placed. type: str source_path: description: - sourcePath is the absolute path of the file or directory inside the image to copy to the build directory. type: str pull_secret: description: - pullSecret is a reference to a secret to be used to pull the image from a registry If the image is pulled from the OpenShift registry, this field does not need to be set. type: complex contains: name: description: - Name of the referent. type: str secrets: description: - secrets represents a list of secrets and their destinations that will be used only for the build. type: list contains: destination_dir: description: - destinationDir is the directory where the files from the secret should be available for the build time. For the Source build strategy, these will be injected into a container where the assemble script runs. Later, when the script finishes, all files injected will be truncated to zero length. For the Docker build strategy, these will be copied into the build directory, where the Dockerfile is located, so users can ADD or COPY them during docker build. type: str secret: description: - secret is a reference to an existing secret that you want to use in your build. type: complex contains: name: description: - Name of the referent. type: str source_secret: description: - "sourceSecret is the name of a Secret that would be used for setting\ \ up the authentication for cloning private repository. The secret\ \ contains valid credentials for remote repository, where the data's\ \ key represent the authentication method to be used and value is\ \ the base64 encoded credentials. Supported auth methods are: ssh-privatekey." type: complex contains: name: description: - Name of the referent. type: str type: description: - type of build input to accept type: str strategy: description: - strategy defines how to perform a build. type: complex contains: custom_strategy: description: - customStrategy holds the parameters to the Custom build strategy type: complex contains: _from: description: - from is reference to an DockerImage, ImageStreamTag, or ImageStreamImage from which the docker image should be pulled type: complex contains: api_version: description: - API version of the referent. type: str field_path: description: - 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.' type: str kind: description: - Kind of the referent. type: str name: description: - Name of the referent. type: str namespace: description: - Namespace of the referent. type: str resource_version: description: - Specific resourceVersion to which this reference is made, if any. type: str uid: description: - UID of the referent. type: str build_api_version: description: - buildAPIVersion is the requested API version for the Build object serialized and passed to the custom builder type: str env: description: - env contains additional environment variables you want to pass into a builder container type: list contains: name: description: - Name of the environment variable. Must be a C_IDENTIFIER. type: str value: description: - 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' type: str value_from: description: - Source for the environment variable's value. Cannot be used if value is not empty. type: complex contains: config_map_key_ref: description: - Selects a key of a ConfigMap. type: complex contains: key: description: - The key to select. type: str name: description: - Name of the referent. type: str field_ref: description: - 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.podIP.' type: complex contains: api_version: description: - Version of the schema the FieldPath is written in terms of, defaults to "v1". type: str field_path: description: - Path of the field to select in the specified API version. type: str resource_field_ref: description: - 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' type: complex contains: container_name: description: - 'Container name: required for volumes, optional for env vars' type: str divisor: description: - Specifies the output format of the exposed resources, defaults to "1" type: complex contains: {} resource: description: - 'Required: resource to select' type: str secret_key_ref: description: - Selects a key of a secret in the pod's namespace type: complex contains: key: description: - The key of the secret to select from. Must be a valid secret key. type: str name: description: - Name of the referent. type: str expose_docker_socket: description: - exposeDockerSocket will allow running Docker commands (and build Docker images) from inside the Docker container. type: bool force_pull: description: - forcePull describes if the controller should configure the build pod to always pull the images for the builder or only pull if it is not present locally type: bool pull_secret: description: - pullSecret is the name of a Secret that would be used for setting up the authentication for pulling the Docker images from the private Docker registries type: complex contains: name: description: - Name of the referent. type: str secrets: description: - secrets is a list of additional secrets that will be included in the build pod type: list contains: mount_path: description: - mountPath is the path at which to mount the secret type: str secret_source: description: - secretSource is a reference to the secret type: complex contains: name: description: - Name of the referent. type: str docker_strategy: description: - dockerStrategy holds the parameters to the Docker build strategy. type: complex contains: _from: description: - from is reference to an DockerImage, ImageStreamTag, or ImageStreamImage from which the docker image should be pulled the resulting image will be used in the FROM line of the Dockerfile for this build. type: complex contains: api_version: description: - API version of the referent. type: str field_path: description: - 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.' type: str kind: description: - Kind of the referent. type: str name: description: - Name of the referent. type: str namespace: description: - Namespace of the referent. type: str resource_version: description: - Specific resourceVersion to which this reference is made, if any. type: str uid: description: - UID of the referent. type: str dockerfile_path: description: - dockerfilePath is the path of the Dockerfile that will be used to build the Docker image, relative to the root of the context (contextDir). type: str env: description: - env contains additional environment variables you want to pass into a builder container type: list contains: name: description: - Name of the environment variable. Must be a C_IDENTIFIER. type: str value: description: - 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' type: str value_from: description: - Source for the environment variable's value. Cannot be used if value is not empty. type: complex contains: config_map_key_ref: description: - Selects a key of a ConfigMap. type: complex contains: key: description: - The key to select. type: str name: description: - Name of the referent. type: str field_ref: description: - 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.podIP.' type: complex contains: api_version: description: - Version of the schema the FieldPath is written in terms of, defaults to "v1". type: str field_path: description: - Path of the field to select in the specified API version. type: str resource_field_ref: description: - 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' type: complex contains: container_name: description: - 'Container name: required for volumes, optional for env vars' type: str divisor: description: - Specifies the output format of the exposed resources, defaults to "1" type: complex contains: {} resource: description: - 'Required: resource to select' type: str secret_key_ref: description: - Selects a key of a secret in the pod's namespace type: complex contains: key: description: - The key of the secret to select from. Must be a valid secret key. type: str name: description: - Name of the referent. type: str force_pull: description: - forcePull describes if the builder should pull the images from registry prior to building. type: bool no_cache: description: - noCache if set to true indicates that the docker build must be executed with the --no-cache=true flag type: bool pull_secret: description: - pullSecret is the name of a Secret that would be used for setting up the authentication for pulling the Docker images from the private Docker registries type: complex contains: name: description: - Name of the referent. type: str jenkins_pipeline_strategy: description: - JenkinsPipelineStrategy holds the parameters to the Jenkins Pipeline build strategy. This strategy is in tech preview. type: complex contains: jenkinsfile: description: - Jenkinsfile defines the optional raw contents of a Jenkinsfile which defines a Jenkins pipeline build. type: str jenkinsfile_path: description: - JenkinsfilePath is the optional path of the Jenkinsfile that will be used to configure the pipeline relative to the root of the context (contextDir). If both JenkinsfilePath & Jenkinsfile are both not specified, this defaults to Jenkinsfile in the root of the specified contextDir. type: str source_strategy: description: - sourceStrategy holds the parameters to the Source build strategy. type: complex contains: _from: description: - from is reference to an DockerImage, ImageStreamTag, or ImageStreamImage from which the docker image should be pulled type: complex contains: api_version: description: - API version of the referent. type: str field_path: description: - 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.' type: str kind: description: - Kind of the referent. type: str name: description: - Name of the referent. type: str namespace: description: - Namespace of the referent. type: str resource_version: description: - Specific resourceVersion to which this reference is made, if any. type: str uid: description: - UID of the referent. type: str env: description: - env contains additional environment variables you want to pass into a builder container type: list contains: name: description: - Name of the environment variable. Must be a C_IDENTIFIER. type: str value: description: - 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' type: str value_from: description: - Source for the environment variable's value. Cannot be used if value is not empty. type: complex contains: config_map_key_ref: description: - Selects a key of a ConfigMap. type: complex contains: key: description: - The key to select. type: str name: description: - Name of the referent. type: str field_ref: description: - 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.podIP.' type: complex contains: api_version: description: - Version of the schema the FieldPath is written in terms of, defaults to "v1". type: str field_path: description: - Path of the field to select in the specified API version. type: str resource_field_ref: description: - 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' type: complex contains: container_name: description: - 'Container name: required for volumes, optional for env vars' type: str divisor: description: - Specifies the output format of the exposed resources, defaults to "1" type: complex contains: {} resource: description: - 'Required: resource to select' type: str secret_key_ref: description: - Selects a key of a secret in the pod's namespace type: complex contains: key: description: - The key of the secret to select from. Must be a valid secret key. type: str name: description: - Name of the referent. type: str force_pull: description: - forcePull describes if the builder should pull the images from registry prior to building. type: bool incremental: description: - incremental flag forces the Source build to do incremental builds if true. type: bool pull_secret: description: - pullSecret is the name of a Secret that would be used for setting up the authentication for pulling the Docker images from the private Docker registries type: complex contains: name: description: - Name of the referent. type: str runtime_artifacts: description: - runtimeArtifacts specifies a list of source/destination pairs that will be copied from the builder to the runtime image. sourcePath can be a file or directory. destinationDir must be a directory. destinationDir can also be empty or equal to ".", in this case it just refers to the root of WORKDIR. This field and the feature it enables are in tech preview. type: list contains: destination_dir: description: - destinationDir is the relative directory within the build directory where files copied from the image are placed. type: str source_path: description: - sourcePath is the absolute path of the file or directory inside the image to copy to the build directory. type: str runtime_image: description: - runtimeImage is an optional image that is used to run an application without unneeded dependencies installed. The building of the application is still done in the builder image but, post build, you can copy the needed artifacts in the runtime image for use. This field and the feature it enables are in tech preview. type: complex contains: api_version: description: - API version of the referent. type: str field_path: description: - 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.' type: str kind: description: - Kind of the referent. type: str name: description: - Name of the referent. type: str namespace: description: - Namespace of the referent. type: str resource_version: description: - Specific resourceVersion to which this reference is made, if any. type: str uid: description: - UID of the referent. type: str scripts: description: - scripts is the location of Source scripts type: str type: description: - type is the kind of build strategy. type: str triggered_by: description: - triggeredBy describes which triggers started the most recent update to the build configuration and contains information about those triggers. type: list contains: generic_web_hook: description: - genericWebHook holds data about a builds generic webhook trigger. type: complex contains: revision: description: - revision is an optional field that stores the git source revision information of the generic webhook trigger when it is available. type: complex contains: git: description: - Git contains information about git-based build source type: complex contains: author: description: - author is the author of a specific commit type: complex contains: email: description: - email of the source control user type: str name: description: - name of the source control user type: str commit: description: - commit is the commit hash identifying a specific commit type: str committer: description: - committer is the committer of a specific commit type: complex contains: email: description: - email of the source control user type: str name: description: - name of the source control user type: str message: description: - message is the description of a specific commit type: str type: description: - type of the build source, may be one of 'Source', 'Dockerfile', 'Binary', or 'Images' type: str secret: description: - secret is the obfuscated webhook secret that triggered a build. type: str github_web_hook: description: - gitHubWebHook represents data for a GitHub webhook that fired a specific build. type: complex contains: revision: description: - revision is the git revision information of the trigger. type: complex contains: git: description: - Git contains information about git-based build source type: complex contains: author: description: - author is the author of a specific commit type: complex contains: email: description: - email of the source control user type: str name: description: - name of the source control user type: str commit: description: - commit is the commit hash identifying a specific commit type: str committer: description: - committer is the committer of a specific commit type: complex contains: email: description: - email of the source control user type: str name: description: - name of the source control user type: str message: description: - message is the description of a specific commit type: str type: description: - type of the build source, may be one of 'Source', 'Dockerfile', 'Binary', or 'Images' type: str secret: description: - secret is the obfuscated webhook secret that triggered a build. type: str image_change_build: description: - imageChangeBuild stores information about an imagechange event that triggered a new build. type: complex contains: from_ref: description: - fromRef contains detailed information about an image that triggered a build. type: complex contains: api_version: description: - API version of the referent. type: str field_path: description: - 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.' type: str kind: description: - Kind of the referent. type: str name: description: - Name of the referent. type: str namespace: description: - Namespace of the referent. type: str resource_version: description: - Specific resourceVersion to which this reference is made, if any. type: str uid: description: - UID of the referent. type: str image_id: description: - imageID is the ID of the image that triggered a a new build. type: str message: description: - 'message is used to store a human readable message for why the build was triggered. E.g.: "Manually triggered by user", "Configuration change",etc.' type: str status: description: - status is the current status of the build. type: complex contains: cancelled: description: - cancelled describes if a cancel event was triggered for the build. type: bool completion_timestamp: description: - completionTimestamp is a timestamp representing the server time when this Build was finished, whether that build failed or succeeded. It reflects the time at which the Pod running the Build terminated. It is represented in RFC3339 form and is in UTC. type: complex contains: {} config: description: - config is an ObjectReference to the BuildConfig this Build is based on. type: complex contains: api_version: description: - API version of the referent. type: str field_path: description: - 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.' type: str kind: description: - Kind of the referent. type: str name: description: - Name of the referent. type: str namespace: description: - Namespace of the referent. type: str resource_version: description: - Specific resourceVersion to which this reference is made, if any. type: str uid: description: - UID of the referent. type: str duration: description: - duration contains time.Duration object describing build time. type: int message: description: - message is a human-readable message indicating details about why the build has this status. type: str output: description: - output describes the Docker image the build has produced. type: complex contains: to: description: - to describes the status of the built image being pushed to a registry. type: complex contains: image_digest: description: - imageDigest is the digest of the built Docker image. The digest uniquely identifies the image in the registry to which it was pushed. Please note that this field may not always be set even if the push completes successfully - e.g. when the registry returns no digest or returns it in a format that the builder doesn't understand. type: str output_docker_image_reference: description: - outputDockerImageReference contains a reference to the Docker image that will be built by this build. Its value is computed from Build.Spec.Output.To, and should include the registry address, so that it can be used to push and pull the image. type: str phase: description: - phase is the point in the build lifecycle. type: str reason: description: - reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI. type: str start_timestamp: description: - startTimestamp is a timestamp representing the server time when this Build started running in a Pod. It is represented in RFC3339 form and is in UTC. type: complex contains: {} ''' def main(): try: module = OpenShiftAnsibleModule('build', 'V1') except OpenShiftAnsibleException as exc: # The helper failed to init, so there is no module object. All we can do is raise the error. raise Exception(exc.message) try: module.execute_module() except OpenShiftAnsibleException as exc: module.fail_json(msg="Module failed!", error=str(exc)) if __name__ == '__main__': main()