Infoblox::DNS::Record::SRV - DNS SRV record object


NAME

Infoblox::DNS::Record::SRV - DNS SRV record object


DESCRIPTION

A DNS SRV object represents an SRV resource record, which is also known as a service record. An SRV record provides information on available services.

Note that you must specify only one view for the attribute "views".


CONSTRUCTOR

 my $srv = Infoblox::DNS::Record::SRV->new(
     name                  => $fqdn,                                                             # Required
     port                  => $num,                                                              # Required
     priority              => $num,                                                              # Required
     target                => $fqdn,                                                             # Required
     weight                => $num,                                                              # Required
     comment               => $string,                                                           # Optional / Default is empty
     disable               => "true" | "false"                                                   # Optional / Default "false"
     extattrs              => { $string => $extattr, ... },                                      # Optional / Default is undefined
     extensible_attributes => { $string => $string|$num, $string => [ $string|$num, ...], ... }, # Optional / Default is undefined
     ttl                   => $num | undef,                                                      # Optional / Default is undefined
     views                 => [$View1],                                                          # Optional / Default is "default" view
     creator               => "DYNAMIC" | "STATIC",                                              # Optional / Default is "STATIC"
     ddns_protected        => "true" | "false",                                                  # Optional / Default is "false"
     ddns_principal        => $string,                                                           # Optional / Default is undefined
     forbid_reclamation    => "true" | "false",                                                  # Optional / Default is "false"
 );

You cannot set both extattrs and extensible_attributes attributes at the same time.


SESSION METHODS

This section describes all the methods in Infoblox::Session that you can apply to a DNS SRV record object.

Infoblox::Session->add( )

Use this method to add an object to the Infoblox appliance. See Infoblox::Session->add() for parameters and return values.

Example
 #Construct object
 my $bind_srv = Infoblox::DNS::Record::SRV->new(
     name     => "bind_srv.domain.com",
     comment  => "add bind srv bind_srv.domain.com",
     priority => 1,
     port     => 1,
     weight   => 1,
     target   => "old.target.test.org",
 );
 # Submit for addition
 my $response = $session->add( $bind_srv );

Infoblox::Session->get( )

Use this method to retrieve the existing objects from the Infoblox appliance. See Infoblox::Session->get() for parameters and return values.

Key Reference
 Apply the following attributes to get a specified DNS SRV object:
  name                  - Optional. A name in string format.
  view                  - Optional. The DNS view in which the SRV record is located. By default, all DNS views are searched. But if you omit this attribute and specify a zone, the appliance searches the 'default' view only.
  zone                  - Optional. A zone name in FQDN format.
  weight                - Optional. The weight of the SRV record.
  port                  - Optional. The port of the SRV record.
  priority              - Optional. The priority of the SRV record.
  target                - Optional. The target of the SRV record.
  creator               - Optional. Record creator.
  ddns_principal        - Optional. GSS-TSIG principal that owns the record.
  reclaimable           - Optional. The flag that indicates whether the record is reclaimable or not.
  extattrs              - Optional. A hash reference containing extensible attributes.
  extensible_attributes - Optional. A hash reference containing extensible attributes.
Example
 my @retrieved_objs = $session->get(
     object => "Infoblox::DNS::Record::SRV",
     name     => "bind_srv.domain.com",
     view   => "default" );
 # get all DNS SRV record in zone "domain.com" of default view
 my @retrieved_objs = $session->get(
     object => "Infoblox::DNS::Record::SRV",
     zone     => "domain.com",
     view   => "default" );
 # get all DNS SRV records with a given extensible attribute
 my @retrieved_objs = $session->get(
     object => "Infoblox::DNS::Record::SRV",
     extensible_attributes => { 'Site' => 'Santa Clara' });

Infoblox::Session->modify( )

Use this method to modify objects in the Infoblox appliance. See Infoblox::Session->modify() for parameters and return values.

Example
 # Use method to modify the comment.
 $bind_srv->comment("this is a modified comment");
 # Submit modification
 my $response = $session->modify( $bind_srv);

Infoblox::Session->remove( )

Use this method to remove an object from the Infoblox appliance. See Infoblox::Session->remove() for parameters and return values.

To remove a specific object, first use get() or search() to retrieve the specific object, and then submit this object for removal.

Example
 # Get the object under the same name
 my @retrieved_objs = $session->get(
     object => "Infoblox::DNS::Record::SRV",
     name     => "bind_srv.domain.com",
     view   => "default" );
 my $desired_srv= $retrieved_objs[0];
 # Submit for removal
 my $response = $session->remove( $desired_srv );

Infoblox::Session->search( )

Use this method to search for existing DNS SRV record objects in the Infoblox appliance. See Infoblox::Session->search() for parameters and return values.

Key Reference
 Apply the following attributes to search for a DNS SRV record object:
   name                  - Required. A name in FQDN (Fully Qualified Domain Name) format (regular expression).
   view                  - Optional. The DNS view in which the SRV record is located. By default, all DNS views are searched. But if you omit this attribute and specify a zone, the appliance searches the 'default' view only.
   zone                  - Optional. A zone name in FQDN format.
   comment               - Optional . A comment in string format (regular expression).
   weight                - Optional. The weight of the SRV record (regular expression).
   port                  - Optional. The port of the SRV record (regular expression).
   priority              - Optional. The priority of the SRV record (regular expression).
   target                - Optional. The target of the SRV record (regular expression).
   creator               - Optional. Record creator.
   ddns_principal        - Optional. GSS-TSIG principal that owns the record.
   reclaimable           - Optional. The flag that indicates whether the record is reclaimable or not.
   extattrs              - Optional. A hash reference containing extensible attributes.
   extensible_attributes - Optional. A hash reference containing extensible attributes.

For more information about searching extensible attributes, see Infoblox::Grid::ExtensibleAttributeDef/Searching Extensible Attributes.

Example
 # search for all DNS SRV objects in the default DNS view that match "domain.com" and that contain "bind" in the comment field
 my @retrieved_objs = $session->search(
     object => "Infoblox::DNS::Record::SRV",
     name     => 'domain\.com',
     comment  => "bind",
     view     => "default" );
 # search for all DNS SRV records in the "domain.com" zone of the default view
 my @retrieved_objs = $session->search(
     object => "Infoblox::DNS::Record::SRV",
     zone     => "domain.com",
     view   => "default" );
 # search all DNS SRV records with the extensible attribute 'Site'
 my @retrieved_objs = $session->search(
    object => "Infoblox::DNS::Record::SRV",
    extensible_attributes => { 'Site' => 'Santa Clara' });


METHODS

This section describes all the methods that you can use to configure and retrieve the attribute values of an SRV record.

comment( )

Use this method to add or retrieve a descriptive comment.

Include the specified parameter to set the attribute value. Omit the parameter to retrieve the attribute value.

Parameter

Desired comment in string format with a maximum of 256 bytes.

Returns

If you specified a parameter,the method returns true when the modification succeeds,and returns false when the operation fails.

Example
 #Get comment
 my $comment = $bindsrv->comment();
 #Modify comment
 $bindsrv->comment("Modifying the DNS SRV comment");

cloud_info( )

Use this method to retrieve cloud API related information for the Infoblox::DNS::Record::SRV object.

Parameter

None

Returns

The method returns the attribute value.

Example
 # Get cloud_info
 my $cloud_info = $object->cloud_info();

creator( )

Use this method to set or retrieve the record creator.

Note that changing creator from or to 'SYSTEM' value is not allowed.

Include the specified parameter to set the attribute value. Omit the parameter to retrieve the attribute value.

Paramter

The valid values are 'STATIC' and 'DYNAMIC'. The default value is 'STATIC'.

Returns

If you specified a parameter, the method returns true when the modification succeeds, and returns false when the operation fails.

If you did not specify a parameter, the method returns the attribute value.

Example
 #Get creator value
 my $creator = $object->creator();
 #Modify creator value
 $object->creator("DYNAMIC");

creation_time( )

Use this method to retrieve the creation time for the record. This is a read-only attribute.

Parameter

None

Returns

The valid return value is a number of seconds that have elapsed since January 1st, 1970 UTC.

Example
 #Get creation_time value
 my $creation_time = $object->creation_time();

ddns_principal( )

Use this method to set or retrive the GSS-TSIG principal that owns this record.

Note that you cannot set ddns_principal for 'STATIC' and 'SYSTEM' records.

Include the specified parameter to set the attribute value. Omit the parameter to retrieve the attribute value.

Paramter

The GSS-TSIG principal FQDN (Fully Qualified Domain Name) format. The FQDN consists of the hostname followed by the domain name (example: abc.com). A hostname can have a maximum of 256 characters.

Returns

If you specified a parameter, the method returns true when the modification succeeds, and returns false when the operation fails.

If you did not specify a parameter, the method returns the attribute value.

Example
 #Get ddns_principal value
 my $ddns_principal = $object->ddns_principal();
 #Modify ddns_principal value
 $object->ddns_principal('foo.com');

ddns_protected( )

Use this method to set or retrieve the flag that indicates whether DDNS updates for this record are allowed or not.

Include the specified parameter to set the attribute value. Omit the parameter to retrieve the attribute value.

Parameter

Specify 'true' to protect record from DDNS updates and 'false' to allow DDNS updates for the specified record.

Returns

If you specified a parameter, the method returns true when the modification succeeds, and returns false when the operation fails.

If you did not specify a parameter, the method returns the attribute value.

Example
 #Get ddns_protected value
 my $ddns_protected = $object->ddns_protected();
 #Modify ddns_protected value
 $object->ddns_protected('true');

disable( )

Use this method to set or retrieve the disable flag.

Include the specified parameter to set the attribute value. Omit the parameter to retrieve the attribute value.

The default value for this field is false, therefore the DNS record is enabled.

Parameter

Specify "true" to set the disable flag or "false" to deactivate/unset it.

Returns

If you specified a parameter,the method returns true when the modification succeeds,and returns false when the operation fails.

Example
 #Get disable
 my $disable = $bindsrv->disable();
 #Modify disable
 $bindsrv->disable("true");

dns_name( )

Use this method to retrieve the name in punycode format. This is a read-only attribute.

Parameter

None

Returns

The method returns the attribute value.

Example
 # Get attribute value
 my $value = $bindsrv->dns_name();

dns_target( )

Use this method to retrieve the target in punycode format. This is a read-only attribute.

Parameter

None

Returns

The method returns the attribute value.

Example
 # Get attribute value
 my $value = $bindsrv->dns_target();

extattrs( )

Use this method to set or retrieve the extensible attributes associated with a DNS SRV record object.

Parameter

Valid value is a hash reference containing the names of extensible attributes and their associated values ( Infoblox::Grid::Extattr objects ).

Returns

If you specified a parameter, the method returns true when the modification succeeds, and returns false when the operation fails.

If you did not specify a parameter, the method returns the attribute value.

Example
 #Get extattrs
 my $ref_extattrs = $bindsrv->extattrs();
 #Modify extattrs
 $bindsrv->extattrs({ 'Site' => $extattr1, 'Administrator' => $extattr2 });

extensible_attributes( )

Use this method to set or retrieve the extensible attributes associated with a DNS SRV record.

Include the specified parameter to set the attribute value. Omit the parameter to retrieve the attribute value.

Parameter

For valid values for extensible attributes, see Infoblox::Grid::ExtensibleAttributeDef/Extensible Attribute Values.

Returns

If you specified a parameter, the method returns true when the modification succeeds, and returns false when the operation fails.

If you did not specify a parameter, the method returns the attribute value.

Example
 #Get extensible attributes
 my $ref_extensible_attributes = $bindsrv->extensible_attributes();
 #Modify extensible attributes
 $bindsrv->extensible_attributes({ 'Site' => 'Santa Clara', 'Administrator' => [ 'Peter', 'Tom' ] });

forbid_reclamation( )

Use this method to set or retrieve the flag that indicates whether the reclamation is allowed for the record or not.

Include the specified parameter to set the attribute value. Omit the parameter to retrieve the attribute value.

Parameter

Specify 'true' to forbid reclamation for the record and 'false' to allow it. The default value is 'false'.

Returns

If you specified a parameter, the method returns true when the modification succeeds, and returns false when the operation fails.

If you did not specify a parameter, the method returns the attribute value.

Example
 #Get forbid_reclamation
 my $forbid_reclamation = $object->forbid_reclamation();
 #Modify forbid_reclamation
 $object->forbid_reclamation('true');

last_queried( )

Use this method to retrieve the time when the associated record was last queried. This is a read-only attribute.

Parameter

None

Returns

The method returns the attribute value. The number of seconds that have elapsed since January 1st, 1970 UTC.

Example
 #Get last_queried
 my $last_queried = $bindsrv->last_queried();

name( )

Use this method to set or retrieve the name.

Include the specified parameter to set the attribute value. Omit the parameter to retrieve the attribute value.

The attribute value can be in unicode format.

Parameter

The name of the DNS SRV record.

Returns

If you specified a parameter,the method returns true when the modification succeeds,and returns false when the operation fails.

Example
 #Get name
 my $name = $bindsrv->name();
 #Modify name
 $bindsrv->name("modified_bind_srv.domain.com");

port( )

Use this method to add or retrieve a port.

Parameter

The port number for the DNS SRV record (range from 0 to 65535).

Returns

If you specified a parameter,the method returns true when the modification succeeds,and returns false when the operation fails.

Example
 #Get port
 my $port = $bindsrv->port();
 #Modify port
 $bindport->port("2");

priority( )

Use this method to add or retrieve the priority.

Parameter

Number with the priority for the DNS SRV record (range from 0 to 65535).

Returns

If you specified a parameter,the method returns true when the modification succeeds,and returns false when the operation fails.

Example
 #Get priority
 my $priority = $bindsrv->priority();
 #Modify priority
 $bindsrv->priority("2");

reclaimable( )

Use this method to retrieve the flag that indicates whether the record is reclaimable or not.

Parameter

None

Returns

The method returns the attribute value.

Example
 #Get reclaimable
 my $reclaimable = $object->reclaimable();

target( )

Use this method to set or retrieve the target. The target must be in Fully Qualified Domain Name (FQDN) format.

The attribute value can be in unicode format.

Parameter

Text with the target for the DNS SRV record.

Returns

If you specified a parameter,the method returns true when the modification succeeds,and returns false when the operation fails.

Example
 #Get target
 my $target = $bindsrv->target();
 #Modify target
 $bindsrv->target ("new.target.test.org");

ttl( )

Use this method to configure or retrieve the Time to Live (TTL) value.

Include the specified parameter to set the attribute value. Omit the parameter to retrieve the attribute value.

The default value is undefined; therefore the record inherits the TTL value from the zone level.

With a specified TTL value, the method overrides the zone values with the specified TTL value.

Parameter

A 32-bit integer (range from 0 to 4294967295) that represents the duration in seconds that the record is cached. Zero indicates that the record should not be cached.

Returns

If you specified a parameter,the method returns true when the modification succeeds,and returns false when the operation fails.

Example
 #Get ttl
 my $ttl = $bindsrv->ttl();
 #Modify ttl
 $bindsrv->ttl(1800);
 #Un-override ttl
 $bindsrv->ttl(undef);

views( )

Use this method to specify or retrieve the views in which the SRV record is located.

Include the specified parameter to set the attribute value. Omit the parameter to retrieve the attribute value.

The default value is the default view, therefore the SRV record is located under the default view.

Parameter

Array reference of defined Infoblox::DNS::View objects.

Note that the array size must be 1.

Returns

If you specified a parameter,the method returns true when the modification succeeds,and returns false when the operation fails.

Example
 #Get views
 my $ref_views = $bindsrv->views();
 #Modify views, list of Infoblox::DNS::View objects
 $bindsrv->views([$view1]);

weight( )

Use this method to set or retrieve the weight.

Parameter

The weight of the DNS SRV record.

Returns

If you specified a parameter,the method returns true when the modification succeeds,and returns false when the operation fails.

Example
 #Get weight
 my $weight = $bindsrv->weight ();
 #Modify weight
 $bindsrv->weight ("3");

zone( )

Use this method to retrieve the zone name of the DNS SRV record. This method is read-only and cannot be set.

Parameter

None

Returns

Returns the attribute value.

Example
 # Get zone
 my $zone = $bindsrv->zone();


SAMPLE CODE

The following sample code demonstrates different operations that can be applied to an object, such as create, search, modify, and remove an object. This sample code also includes error handling for the operations.

#Preparation prior to a DNS SRV record insertion

 #PROGRAM STARTS: Include all the modules that will be used
 use strict;
 use Infoblox;
 #Create a session to the Infoblox appliance
 my $session = Infoblox::Session->new(
     master   => "192.168.1.2",
     username => "admin",
     password => "infoblox"
 );
 unless ($session) {
    die("Construct session failed: ",
        $session->status_code() . ":" . $session->status_detail());
 }
 print "Session created successfully\n";
 #Create the zone prior to a SRV record insertion
 my $zone = Infoblox::DNS::Zone->new(name => "domain.com");
 unless ($zone) {
    die("Construct zone failed: ",
        Infoblox::status_code() . ":" . Infoblox::status_detail());
 }
 print "Zone object created successfully\n";
 #Verify if the zone exists
 my $object = $session->get(object => "Infoblox::DNS::Zone", name => "domain.com");
 unless ($object) {
    print "Zone does not exist on server, safe to add the zone\n";
    $session->add($zone)
       or die("Add zone failed: ",
              $session->status_code() . ":" . $session->status_detail());
 }
 print "Zone added successfully\n";

#Create a DNS SRV record

 my $bind_srv = Infoblox::DNS::Record::SRV->new(
    name     => "bind_srv.domain.com",
    comment  => "add bind bind_srv.domain.com",
    priority => 1,
    port     => 1,
    weight   => 1,
    target   => "old.target.test.org",
  );
  unless ($bind_srv) {
     die("Construct DNS record SRV failed: ",
         Infoblox::status_code() . ":" . Infoblox::status_detail());
  }
 print "DNS SRV object created successfully\n";
 #Add the DNS SRV record object to Infoblox  appliance through a session
 $session->add($bind_srv)
     or die("Add record SRV failed: ",
            $session->status_code() . ":" . $session->status_detail());
 print "DNS SRV object added to server successfully\n";

#Search for a specific DNS SRV record

 #Search for SRV records that match bind_srv.domain.com
 my @retrieved_objs = $session->search(
     "object" => "Infoblox::DNS::Record::SRV",
     "name" => 'bind_srv\.domain\.com',
 );
 my $object = $retrieved_objs[0];
 unless ($object) {
     die("Search record SRV failed: ",
         $session->status_code() . ":" . $session->status_detail());
 }
 print "Search DNS SRV object found at least 1 matching entry\n";
 #Search all SRV records that match "domain.com" and that contain "bind" in the comment field
 my @retrieved_objs = $session->search(
     object => "Infoblox::DNS::Record::SRV",
     name   => 'domain\.com',
     comment => "bind"
 );
 my $object = $retrieved_objs[0];
 unless ($object) {
     die("Search record SRV failed: ",
        $session->status_code() . ":" . $session->status_detail());
 }
 print "Search DNS SRV object using regexp found at least 1 matching entry\n";

#Get and modify a DNS SRV record

 #Get a SRV record through the session
 my @retrieved_objs = $session->get(
     object => "Infoblox::DNS::Record::SRV",
     name   => "bind_srv.domain.com",
 );
 my $object = $retrieved_objs[0];
 unless ($object) {
     die("Get record SRV failed: ",
         $session->status_code() . ":" . $session->status_detail());
 }
 print "Get DNS SRV object found at least 1 matching entry\n";
 #Modify one of the attributes of the specified SRV record
 $object->comment ("modified comment for SRV rec");
 #Apply the changes
 $session->modify($object)
     or die("Modify record SRV failed: ",
            $session->status_code() . ":" . $session->status_detail());
 print "DNS SRV object modified successfully \n";

#Remove a DNS SRV record

 #Get a SRV record through the session
 my @retrieved_objs = $session->get(
     object => "Infoblox::DNS::Record::SRV",
     name   => "bind_srv.domain.com",
 );
 my $object = $retrieved_objs[0];
 unless ($object) {
     die("Get record SRV failed: ",
         $session->status_code() . ":" . $session->status_detail());
 }
 print "Get DNS SRV object found at least 1 matching entry\n";
 #submit the object for removal
 $session->remove($object)
     or die("Remove record SRV failed: ",
            $session->status_code() . ":" . $session->status_detail());
 print "DNS SRV object removed successfully \n";
 ####PROGRAM ENDS####


AUTHOR

Infoblox Inc. http://www.infoblox.com/


SEE ALSO

Infoblox::DNS::View, Infoblox::DNS::Zone, Infoblox::Session, Infoblox::Session->get(), Infoblox::Session->search(), Infoblox::Session->add(), Infoblox::Session->remove(), Infoblox::Session->modify()


COPYRIGHT

Copyright (c) 2017 Infoblox Inc.