The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

VM::HetznerCloud::API::PrimaryIps - PrimaryIps

VERSION

version 0.0.3

SYNOPSIS

    use VM::HetznerCloud;

    my $api_key = '1234abc';
    my $cloud   = VM::HetznerCloud->new(
        token => $api_key,
    );

    $cloud->records->create(
    );

ATTRIBUTES

  • endpoint

METHODS

list

Returns all Primary IP objects.

    $cloud->primary_ips->list(
        ip => 'test',
        label_selector => 'test',
        name => 'test',
        sort => 'test',
    );

create

Creates a new Primary IP, optionally assigned to a Server.

If you want to create a Primary IP that is not assigned to a Server, you need to provide the `datacenter` key instead of `assignee_id`. This can be either the ID or the name of the Datacenter this Primary IP shall be created in.

Note that a Primary IP can only be assigned to a Server in the same Datacenter later on.

#### Call specific error codes

| Code | Description | |------------------------------ |-------------------------------------------------------------- | | `server_not_stopped` | The specified server is running, but needs to be powered off | | `server_has_ipv4` | The server already has an ipv4 address | | `server_has_ipv6` | The server already has an ipv6 address |

    $cloud->primary_ips->create();

delete

Deletes a Primary IP.

The Primary IP may be assigned to a Server. In this case it is unassigned automatically. The Server must be powered off (status `off`) in order for this operation to succeed.

    $cloud->primary_ips->delete(
        id => 'test',
    );

get

Returns a specific Primary IP object.

    $cloud->primary_ips->get(
        id => 'test',
    );

put

Updates the Primary IP.

Note that when updating labels, the Primary IP's current set of labels will be replaced with the labels provided in the request body. So, for example, if you want to add a new label, you have to provide all existing labels plus the new label in the request body.

If the Primary IP object changes during the request, the response will be a “conflict” error.

    $cloud->primary_ips->put(
        id => 'test',
    );

assign

Assigns a Primary IP to a Server.

A Server can only have one Primary IP of type `ipv4` and one of type `ipv6` assigned. If you need more IPs use Floating IPs.

The Server must be powered off (status `off`) in order for this operation to succeed.

#### Call specific error codes

| Code | Description | |------------------------------ |-------------------------------------------------------------- | | `server_not_stopped` | The server is running, but needs to be powered off | | `primary_ip_already_assigned` | Primary ip is already assigned to a different server | | `server_has_ipv4` | The server already has an ipv4 address | | `server_has_ipv6` | The server already has an ipv6 address |

    $cloud->primary_ips->assign(
        id => 'test',
    );

change_dns_ptr

Changes the hostname that will appear when getting the hostname belonging to this Primary IP.

    $cloud->primary_ips->change_dns_ptr(
        id => 'test',
    );

change_protection

Changes the protection configuration of a Primary IP.

A Primary IP can only be delete protected if its `auto_delete` property is set to `false`.

    $cloud->primary_ips->change_protection(
        id => 'test',
    );

unassign

Unassigns a Primary IP from a Server.

The Server must be powered off (status `off`) in order for this operation to succeed.

Note that only Servers that have at least one network interface (public or private) attached can be powered on.

#### Call specific error codes

| Code | Description | |---------------------------------- |-------------------------------------------------------------- | | `server_not_stopped` | The server is running, but needs to be powered off | | `server_is_load_balancer_target` | The server ipv4 address is a loadbalancer target |

    $cloud->primary_ips->unassign(
        id => 'test',
    );

AUTHOR

Renee Baecker <reneeb@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2018 by Renee Baecker.

This is free software, licensed under:

  The Artistic License 2.0 (GPL Compatible)