Class: MMS::Resource::Snapshot

Inherits:
MMS::Resource show all
Defined in:
lib/mms/resource/snapshot.rb

Instance Attribute Summary collapse

Attributes inherited from MMS::Resource

#client, #data, #id

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from MMS::Resource

#_load, find, #from_hash, #set_client, #set_data, #to_hash

Instance Attribute Details

#complete ⇒ Object

Returns the value of attribute complete.



9
10
11
# File 'lib/mms/resource/snapshot.rb', line 9

def complete
  @complete
end

#created_date ⇒ Object

Returns the value of attribute created_date.



10
11
12
# File 'lib/mms/resource/snapshot.rb', line 10

def created_date
  @created_date
end

#created_increment ⇒ Object

Returns the value of attribute created_increment.



11
12
13
# File 'lib/mms/resource/snapshot.rb', line 11

def created_increment
  @created_increment
end

#expires ⇒ Object

Returns the value of attribute expires.



12
13
14
# File 'lib/mms/resource/snapshot.rb', line 12

def expires
  @expires
end

#name ⇒ Object

Returns the value of attribute name.



7
8
9
# File 'lib/mms/resource/snapshot.rb', line 7

def name
  @name
end

#parts ⇒ Object

Returns the value of attribute parts.



13
14
15
# File 'lib/mms/resource/snapshot.rb', line 13

def parts
  @parts
end

Class Method Details

._find(client, group_id, cluster_id, id) ⇒ MMS::Resource::Snapshot

Parameters:

  • client (MMS::Client)
  • group_id (String)
  • cluster_id (String)
  • id (String)

Returns:



108
109
110
# File 'lib/mms/resource/snapshot.rb', line 108

def self._find(client, group_id, cluster_id, id)
  client.get('/groups/' + group_id + '/clusters/' + cluster_id + '/snapshots/' + id.to_s)
end

.table_header ⇒ Object



99
100
101
# File 'lib/mms/resource/snapshot.rb', line 99

def self.table_header
  ['Group', 'Cluster', 'SnapshotId', 'Complete', 'Created increment', 'Name (created date)', 'Expires']
end

Instance Method Details

#cluster ⇒ MMS::Resource::Cluster



55
56
57
# File 'lib/mms/resource/snapshot.rb', line 55

def cluster
  MMS::Resource::Cluster.find(@client, @data['groupId'], @data['clusterId'])
end

#cluster_name ⇒ String, NilClass

Returns:

  • (String, NilClass)


31
32
33
# File 'lib/mms/resource/snapshot.rb', line 31

def cluster_name
  cluster.name if is_cluster
end

#config_name ⇒ String, NilClass

Returns:

  • (String, NilClass)


36
37
38
# File 'lib/mms/resource/snapshot.rb', line 36

def config_name
  'config' if is_config
end

#create_restorejob ⇒ Array<MMS::Resource::RestoreJob>

Returns:



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/mms/resource/snapshot.rb', line 60

def create_restorejob
  data = {:snapshotId => @id}
  jobs = @client.post '/groups/' + cluster.group.id + '/clusters/' + cluster.id + '/restoreJobs', data

  if jobs.nil?
    raise MMS::ResourceError.new("Cannot create job from snapshot `#{self.id}`", self)
  end

  job_list = []
  # work around due to bug in MMS API; cannot read restoreJob using provided info.
  # The config-server RestoreJob and Snapshot has no own ClusterId to be accessed.
  restore_jobs = cluster.restorejobs
  jobs.each do |job|
    _list = restore_jobs.select { |restorejob| restorejob.id == job['id'] }
    _list.each do |restorejob|
      job_list.push restorejob
    end
  end
  job_list
end

#is_cluster ⇒ TrueClass, FalseClass

Returns:

  • (TrueClass, FalseClass)


16
17
18
# File 'lib/mms/resource/snapshot.rb', line 16

def is_cluster
  @parts.length > 1
end

#is_config ⇒ TrueClass, FalseClass

Returns:

  • (TrueClass, FalseClass)


21
22
23
# File 'lib/mms/resource/snapshot.rb', line 21

def is_config
  @parts.length == 1 and @parts.first['typeName'] == 'CONFIG_SERVER'
end

#is_replica ⇒ TrueClass, FalseClass

Returns:

  • (TrueClass, FalseClass)


26
27
28
# File 'lib/mms/resource/snapshot.rb', line 26

def is_replica
  @parts.length == 1 and @parts.first['typeName'] == 'REPLICA_SET'
end

#replica_name ⇒ String, NilClass

Returns:

  • (String, NilClass)


41
42
43
# File 'lib/mms/resource/snapshot.rb', line 41

def replica_name
  @parts.first['replicaSetName'] if is_replica
end

#source_name ⇒ String, NilClass

Returns:

  • (String, NilClass)


46
47
48
49
50
51
52
# File 'lib/mms/resource/snapshot.rb', line 46

def source_name
  name = nil
  name = replica_name if is_replica
  name = config_name if is_config
  name = cluster_name if is_cluster
  name
end

#table_row ⇒ Object



81
82
83
# File 'lib/mms/resource/snapshot.rb', line 81

def table_row
  [cluster.group.name, cluster.name, @id, @complete, @created_increment, @name, @expires]
end

#table_section ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/mms/resource/snapshot.rb', line 85

def table_section
  rows = []
  rows << table_row
  rows << :separator
  part_count = 0
  @parts.each do |part|
    file_size_mb = part['fileSizeBytes'].to_i / (1024*1024)
    rows << [{:value => "part #{part_count}", :colspan => 4, :alignment => :right}, part['typeName'], part['replicaSetName'], "#{file_size_mb} MB"]
    part_count += 1
  end
  rows << :separator
  rows
end