create
******


Description
===========

Creates a public IP. Use the *lifetime* property to specify whether
it's an ephemeral or reserved public IP. For information about limits
on how many you can create, see Public IP Addresses.

* **For an ephemeral public IP:** You must also specify a
  *privateIpId* with the OCID of the primary private IP you want to
  assign the public IP to. The public IP is created in the same
  Availability Domain as the private IP. An ephemeral public IP must
  always be assigned to a private IP, and only to the *primary*
  private IP on a VNIC, not a secondary private IP.

* **For a reserved public IP:** You may also optionally assign the
  public IP to a private IP by specifying *privateIpId*. Or you can
  later assign the public IP with UpdatePublicIp.

**Note:** When assigning a public IP to a private IP, the private IP
must not already have a public IP with *lifecycleState* = ASSIGNING or
ASSIGNED. If it does, an error is returned.

Also, for reserved public IPs, the optional assignment part of this
operation is asynchronous. Poll the public IP's *lifecycleState* to
determine if the assignment succeeded.


Usage
=====

   oci network public-ip create [OPTIONS]


Options
=======


--compartment-id, -c [text]
---------------------------

The OCID of the compartment to contain the public IP. For ephemeral
public IPs, you must set this to the private IP's compartment OCID.
[required]


--lifetime [EPHEMERAL|RESERVED]
-------------------------------

Defines when the public IP is deleted and released back to the Oracle
Cloud Infrastructure public IP pool. For more information, see Public
IP Addresses. [required]


--defined-tags [complex type]
-----------------------------

Defined tags for this resource. Each key is predefined and scoped to a
namespace. For more information, see Resource Tags.

Example: *{"Operations": {"CostCenter": "42"}}* This is a complex type
whose value must be valid JSON. The value can be provided as a string
on the command line or passed in as a file using the
file://path/to/file syntax.

The --generate-param-json-input option can be used to generate an
example of the JSON which must be provided. We recommend storing this
example in a file, modifying it as needed and then passing it back in
via the file:// syntax.


--display-name [text]
---------------------

A user-friendly name. Does not have to be unique, and it's changeable.
Avoid entering confidential information.


--freeform-tags [complex type]
------------------------------

Free-form tags for this resource. Each tag is a simple key-value pair
with no predefined name, type, or namespace. For more information, see
Resource Tags.

Example: *{"Department": "Finance"}* This is a complex type whose
value must be valid JSON. The value can be provided as a string on the
command line or passed in as a file using the file://path/to/file
syntax.

The --generate-param-json-input option can be used to generate an
example of the JSON which must be provided. We recommend storing this
example in a file, modifying it as needed and then passing it back in
via the file:// syntax.


--private-ip-id [text]
----------------------

The OCID of the private IP to assign the public IP to.

Required for an ephemeral public IP because it must always be assigned
to a private IP (specifically a *primary* private IP).

Optional for a reserved public IP. If you don't provide it, the public
IP is created but not assigned to a private IP. You can later assign
the public IP with UpdatePublicIp.


--wait-for-state [PROVISIONING|AVAILABLE|ASSIGNING|ASSIGNED|UNASSIGNING|UNASSIGNED|TERMINATING|TERMINATED]
----------------------------------------------------------------------------------------------------------

This operation creates, modifies or deletes a resource that has a
defined lifecycle state. Specify this option to perform the action and
then wait until the resource reaches a given lifecycle state.


--max-wait-seconds [integer]
----------------------------

The maximum time to wait for the resource to reach the lifecycle state
defined by --wait-for-state. Defaults to 1200 seconds.


--wait-interval-seconds [integer]
---------------------------------

Check every --wait-interval-seconds to see whether the resource to see
if it has reached the lifecycle state defined by --wait-for-state.
Defaults to 30 seconds.


--from-json [text]
------------------

Provide input to this command as a JSON document from a file.

Options can still be provided on the command line. If an option exists
in both the JSON document and the command line then the command line
specified value will be used


-?, -h, --help
--------------

Show this message and exit.
