package Net::Amazon::EC2::Volume;
use Moose;

=head1 NAME

Net::Amazon::EC2::Volume

=head1 DESCRIPTION

A class representing a volume

=head1 ATTRIBUTES

=over

=item volume_id (required)

The ID of the volume.

=item size (required)

The size, in GiB (1GiB = 2^30 octects)

=item snapshot_id (optional)

The ID of the snapshot which this volume was created from (if any).

=item zone (required)

The availability zone the volume was creared in.

=item status (required)

The volume's status.

=item create_time (required)

The time the volume was created.

=item volume_type (optional)

The volume type.

=item iops (optional)

The number of I/O operations per second (IOPS) that the volume
supports (only applies to volumes with a volume_type of io1).

=item attachments (optional)

An array ref of Net:Amazon::EC2::Attachment objects.

=item tag_set (optional)

The associated tags (key:value) of the specified volume.

=back

=cut

has 'volume_id'		=> ( is => 'ro', isa => 'Str', required => 1 );
has 'size'			=> ( is => 'ro', isa => 'Str', required => 1 );
has 'snapshot_id'	=> ( is => 'ro', isa => 'Maybe[Str]', required => 0 );
has 'zone'			=> ( is => 'ro', isa => 'Str', required => 1 );
has 'status'		=> ( is => 'ro', isa => 'Str', required => 1 );
has 'create_time'	=> ( is => 'ro', isa => 'Str', required => 1 );
has 'volume_type'       => ( is => 'ro', isa => 'Str', default => 'standard');
has 'iops'              => ( is => 'ro', isa => 'Maybe[Int]');
has 'encrypted'         => ( is => 'ro', isa => 'Maybe[Str]', required => 0 );
has 'attachments'	=> ( is => 'ro', isa => 'Maybe[ArrayRef[Net::Amazon::EC2::Attachment]]', required => 0 );
has 'tag_set'              => ( is => 'ro', isa => 'Maybe[ArrayRef[Net::Amazon::EC2::TagSet]]', required => 0 );

__PACKAGE__->meta->make_immutable();

=head1 AUTHOR

Jeff Kim <cpan@chosec.com>

=head1 COPYRIGHT

Copyright (c) 2006-2010 Jeff Kim. This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

=cut

no Moose;
1;
