mms-api 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +15 -2
- data/bin/mms-api +4 -4
- data/lib/mms/resource.rb +5 -0
- data/lib/mms/resource/cluster.rb +17 -9
- data/lib/mms/resource/group.rb +23 -5
- data/lib/mms/resource/host.rb +6 -0
- data/lib/mms/resource/restore_job.rb +36 -4
- data/lib/mms/resource/snapshot.rb +38 -8
- data/lib/mms/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcfd755e463ac666d8e74d34a431c3717b077740
|
4
|
+
data.tar.gz: 729f27cc6f767df07686fbaae459636e489c2561
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfe42349fbce3d933b355a92c173bbdde3cc6852fdcdac9141658eba1b05419f22e150dd9538b2ef4150ac06ecf55658f7f691ef512db1046cbca2d5752aae9e
|
7
|
+
data.tar.gz: 010ec281cb1a8251c3950b92d724208e0bcb1ad208a34ce6635102b8e17917a49c382460d1e618fc661d7a3787316d7e372e082790fbde7c05fcc2c3a0d397fd
|
data/README.md
CHANGED
@@ -32,8 +32,21 @@ Options:
|
|
32
32
|
-h, --help Show this help
|
33
33
|
```
|
34
34
|
|
35
|
-
|
36
|
-
|
35
|
+
API coverage
|
36
|
+
------------
|
37
|
+
The MMS Public API follows the principles of the REST architectural style to expose a number of internal resources which enable programmatic access to [MMS’s features](http://mms.mongodb.com/help/reference/api/). Current implementation support only a few of API features.
|
38
|
+
|
39
|
+
|Resource|Get All|Get One|Create|Update|Delete|
|
40
|
+
|:---|:---:|:---:|:---:|:---:|:---:|
|
41
|
+
|Groups| + | + | | | | |
|
42
|
+
|Hosts| + | + | | | | |
|
43
|
+
|Clusters| + | + | | | | |
|
44
|
+
|Snapshots| + | + | | | | |
|
45
|
+
|Restore Jobs| + | + | + | | | |
|
46
|
+
|
47
|
+
|
48
|
+
Example
|
49
|
+
-------
|
37
50
|
```ruby
|
38
51
|
require 'mms'
|
39
52
|
|
data/bin/mms-api
CHANGED
@@ -89,14 +89,14 @@ begin
|
|
89
89
|
rows << [group.name, group.active_agent_count, group.replicaset_count, group.shard_count, group.last_active_agent, group.id]
|
90
90
|
end
|
91
91
|
when 'hosts'
|
92
|
-
heading = ['Group', 'Type', 'Hostname', 'IP', 'Port', 'Last ping', 'Alerts enabled', 'HostId']
|
92
|
+
heading = ['Group', 'Type', 'Hostname', 'IP', 'Port', 'Last ping', 'Alerts enabled', 'HostId', 'Shard', 'Replica']
|
93
93
|
results.each do |host|
|
94
|
-
rows << [host.group.name, host.type_name, host.name, host.ip_address, host.port, host.last_ping, host.alerts_enabled, host.id]
|
94
|
+
rows << [host.group.name, host.type_name, host.name, host.ip_address, host.port, host.last_ping, host.alerts_enabled, host.id, host.shard_name, host.replicaset_name]
|
95
95
|
end
|
96
96
|
when 'clusters'
|
97
|
-
heading = ['Group', 'Cluster', 'Shard name', 'Replica name', 'Type', 'Last heartbeat']
|
97
|
+
heading = ['Group', 'Cluster', 'Shard name', 'Replica name', 'Type', 'Last heartbeat', 'Cluster Id']
|
98
98
|
results.each do |cluster|
|
99
|
-
rows << [cluster.group.name, cluster.name, cluster.shard_name, cluster.replicaset_name, cluster.type_name, cluster.last_heartbeat]
|
99
|
+
rows << [cluster.group.name, cluster.name, cluster.shard_name, cluster.replicaset_name, cluster.type_name, cluster.last_heartbeat, cluster.id]
|
100
100
|
end
|
101
101
|
when 'snapshots'
|
102
102
|
heading = ['Group', 'Cluster', 'SnapshotId', 'Complete', 'Created increment', 'Name (created date)', 'Expires']
|
data/lib/mms/resource.rb
CHANGED
data/lib/mms/resource/cluster.rb
CHANGED
@@ -9,30 +9,38 @@ module MMS
|
|
9
9
|
attr_accessor :type_name
|
10
10
|
attr_accessor :last_heartbeat
|
11
11
|
|
12
|
+
attr_accessor :snapshots
|
13
|
+
attr_accessor :restorejobs
|
14
|
+
|
12
15
|
def initialize(id, group_id, data = nil)
|
16
|
+
@snapshots = []
|
17
|
+
@restorejobs = []
|
18
|
+
|
13
19
|
@group = MMS::Resource::Group.new(group_id)
|
14
20
|
|
15
21
|
super id, data
|
16
22
|
end
|
17
23
|
|
18
24
|
def snapshot(id)
|
19
|
-
MMS::Resource::Snapshot.new id,
|
25
|
+
MMS::Resource::Snapshot.new id, @id, @group.id
|
20
26
|
end
|
21
27
|
|
22
28
|
def snapshots(page = 1, limit = 1000)
|
23
|
-
|
24
|
-
|
25
|
-
|
29
|
+
if @snapshots.empty?
|
30
|
+
MMS::Client.instance.get('/groups/' + @group.id + '/clusters/' + @id + '/snapshots?pageNum=' + page.to_s + '&itemsPerPage=' + limit.to_s).each do |snapshot|
|
31
|
+
@snapshots.push MMS::Resource::Snapshot.new(snapshot['id'], snapshot['clusterId'], snapshot['groupId'], snapshot)
|
32
|
+
end
|
26
33
|
end
|
27
|
-
|
34
|
+
@snapshots
|
28
35
|
end
|
29
36
|
|
30
37
|
def restorejobs(page = 1, limit = 1000)
|
31
|
-
|
32
|
-
|
33
|
-
|
38
|
+
if @restorejobs.empty?
|
39
|
+
MMS::Client.instance.get('/groups/' + @group.id + '/clusters/' + @id + '/restoreJobs?pageNum=' + page.to_s + '&itemsPerPage=' + limit.to_s).each do |job|
|
40
|
+
@restorejobs.push MMS::Resource::RestoreJob.new(job['id'], job['clusterId'], job['groupId'], job)
|
41
|
+
end
|
34
42
|
end
|
35
|
-
|
43
|
+
@restorejobs
|
36
44
|
end
|
37
45
|
|
38
46
|
def _load(id)
|
data/lib/mms/resource/group.rb
CHANGED
@@ -8,7 +8,11 @@ module MMS
|
|
8
8
|
attr_reader :shard_count
|
9
9
|
attr_reader :last_active_agent
|
10
10
|
|
11
|
+
attr_accessor :clusters
|
12
|
+
|
11
13
|
def initialize(id, data = nil)
|
14
|
+
@clusters = []
|
15
|
+
|
12
16
|
super id, data
|
13
17
|
end
|
14
18
|
|
@@ -21,15 +25,29 @@ module MMS
|
|
21
25
|
end
|
22
26
|
|
23
27
|
def clusters(page = 1, limit = 1000)
|
24
|
-
|
25
|
-
|
26
|
-
|
28
|
+
if @clusters.empty?
|
29
|
+
MMS::Client.instance.get('/groups/' + @id + '/clusters?pageNum=' + page.to_s + '&itemsPerPage=' + limit.to_s).each do |cluster|
|
30
|
+
@clusters.push MMS::Resource::Cluster.new(cluster['id'], cluster['groupId'], cluster)
|
31
|
+
end
|
27
32
|
end
|
28
|
-
|
33
|
+
@clusters
|
29
34
|
end
|
30
35
|
|
31
36
|
def cluster(id)
|
32
|
-
MMS::Resource::Cluster.new id,
|
37
|
+
MMS::Resource::Cluster.new id, @id
|
38
|
+
end
|
39
|
+
|
40
|
+
def findSnapshot(id)
|
41
|
+
snapshot = nil
|
42
|
+
clusters.each do |cluster|
|
43
|
+
begin
|
44
|
+
snapshot = cluster.snapshot(id)
|
45
|
+
rescue => e
|
46
|
+
# cannot load snapshotId for cluster if config-server is the source?
|
47
|
+
# not supported in current MMS API version
|
48
|
+
end
|
49
|
+
end
|
50
|
+
snapshot
|
33
51
|
end
|
34
52
|
|
35
53
|
def _load(id)
|
data/lib/mms/resource/host.rb
CHANGED
@@ -14,6 +14,9 @@ module MMS
|
|
14
14
|
attr_accessor :replicaset_name
|
15
15
|
attr_accessor :replica_state_name
|
16
16
|
attr_accessor :alerts_enabled
|
17
|
+
attr_accessor :host_enabled
|
18
|
+
attr_accessor :profiler_enabled
|
19
|
+
attr_accessor :logs_enabled
|
17
20
|
|
18
21
|
def initialize(id, group_id, data = nil)
|
19
22
|
@group = MMS::Resource::Group.new(group_id)
|
@@ -36,6 +39,9 @@ module MMS
|
|
36
39
|
@replicaset_name = data['replicaSetName']
|
37
40
|
@replica_state_name = data['replicaStateName']
|
38
41
|
@alerts_enabled = data['alertsEnabled']
|
42
|
+
@host_enabled = data['hostEnabled']
|
43
|
+
@profiler_enabled = data['profilerEnabled']
|
44
|
+
@logs_enabled = data['logsEnabled']
|
39
45
|
@name = @hostname
|
40
46
|
end
|
41
47
|
end
|
@@ -5,8 +5,15 @@ module MMS
|
|
5
5
|
class Resource::RestoreJob < Resource
|
6
6
|
|
7
7
|
attr_accessor :name
|
8
|
+
|
9
|
+
# this is restore point cluster e.g full cluster (configs, replicas)
|
8
10
|
attr_accessor :cluster
|
9
11
|
|
12
|
+
# this is source point from where RestoreJob was created
|
13
|
+
# RestoreJob.snapshot.cluster is e.g replica, config server
|
14
|
+
# RestoreJob.cluster is full cluster group (configs, replicas)
|
15
|
+
attr_accessor :snapshot
|
16
|
+
|
10
17
|
attr_accessor :snapshot_id
|
11
18
|
attr_accessor :created
|
12
19
|
attr_accessor :status_name
|
@@ -21,8 +28,33 @@ module MMS
|
|
21
28
|
super id, data
|
22
29
|
end
|
23
30
|
|
31
|
+
def has_cluster
|
32
|
+
# cluster definition for config-server cannot be loaded
|
33
|
+
# as there is no clusterId for this type of group.
|
34
|
+
# there is snapshotId for RestoreJob but seems to be stored
|
35
|
+
# internally in MMS API. Not accessible by public API.
|
36
|
+
snapshot != nil
|
37
|
+
end
|
38
|
+
|
39
|
+
def snapshot
|
40
|
+
# snapshot details for config-server cannot be loaded
|
41
|
+
# as there is no clusterId. See also has_cluster()
|
42
|
+
if @snapshot.nil?
|
43
|
+
@snapshot = @cluster.group.findSnapshot(@snapshot_id)
|
44
|
+
end
|
45
|
+
@snapshot
|
46
|
+
end
|
47
|
+
|
24
48
|
def _load(id)
|
25
|
-
|
49
|
+
if has_cluster
|
50
|
+
data = MMS::Client.instance.get '/groups/' + snapshot.cluster.group.id + '/clusters/' + snapshot.cluster.id + '/restoreJobs/' + id.to_s
|
51
|
+
else
|
52
|
+
# config server has no cluster but owns RestoreJob and Snapshot
|
53
|
+
restore_jobs = @cluster.restorejobs
|
54
|
+
job = restore_jobs.select {|restorejob| restorejob.id == id }
|
55
|
+
data = job.first.data unless job.nil? and job.empty?
|
56
|
+
end
|
57
|
+
data
|
26
58
|
end
|
27
59
|
|
28
60
|
def _from_hash(data)
|
@@ -30,9 +62,9 @@ module MMS
|
|
30
62
|
@created = data['created']
|
31
63
|
@status_name = data['statusName']
|
32
64
|
@point_in_time = data['pointInTime']
|
33
|
-
@delivery_method_name = data['delivery']['methodName']
|
34
|
-
@delivery_status_name = data['delivery']['statusName']
|
35
|
-
@delivery_url = data['delivery']['url']
|
65
|
+
@delivery_method_name = data['delivery']['methodName'] unless data['delivery'].nil?
|
66
|
+
@delivery_status_name = data['delivery']['statusName'] unless data['delivery'].nil?
|
67
|
+
@delivery_url = data['delivery']['url'] unless data['delivery'].nil?
|
36
68
|
@name = DateTime.parse(@created).strftime("%Y-%m-%d %H:%M:%S")
|
37
69
|
end
|
38
70
|
end
|
@@ -19,8 +19,36 @@ module MMS
|
|
19
19
|
super id, data
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
23
|
-
|
22
|
+
def is_cluster
|
23
|
+
@parts.length > 1
|
24
|
+
end
|
25
|
+
|
26
|
+
def is_config
|
27
|
+
@parts.length == 1 and @parts.first['typeName'] == 'CONFIG_SERVER'
|
28
|
+
end
|
29
|
+
|
30
|
+
def is_replica
|
31
|
+
@parts.length == 1 and @parts.first['typeName'] == 'REPLICA_SET'
|
32
|
+
end
|
33
|
+
|
34
|
+
def cluster_name
|
35
|
+
@cluster.name if is_cluster
|
36
|
+
end
|
37
|
+
|
38
|
+
def config_name
|
39
|
+
'config' if is_config
|
40
|
+
end
|
41
|
+
|
42
|
+
def replica_name
|
43
|
+
@parts.first['replicaSetName'] if is_replica
|
44
|
+
end
|
45
|
+
|
46
|
+
def source_name
|
47
|
+
name = nil
|
48
|
+
name = replica_name if is_replica
|
49
|
+
name = config_name if is_config
|
50
|
+
name = cluster_name if is_cluster
|
51
|
+
name
|
24
52
|
end
|
25
53
|
|
26
54
|
def create_restorejob
|
@@ -33,21 +61,21 @@ module MMS
|
|
33
61
|
|
34
62
|
job_list = []
|
35
63
|
# work around due to bug in MMS API; cannot read restoreJob using provided info.
|
64
|
+
# The config-server RestoreJob and Snapshot has no own ClusterId to be accessed.
|
36
65
|
restore_jobs = @cluster.restorejobs
|
37
|
-
|
38
66
|
jobs.each do |job|
|
39
67
|
_list = restore_jobs.select {|restorejob| restorejob.id == job['id'] }
|
40
68
|
_list.each do |restorejob|
|
41
|
-
|
42
|
-
job_list.push MMS::Resource::RestoreJob.new(restorejob.id, restorejob.cluster.id, restorejob.cluster.group.id)
|
43
|
-
rescue => e
|
44
|
-
puts "load error #{e.message}"
|
45
|
-
end
|
69
|
+
job_list.push restorejob
|
46
70
|
end
|
47
71
|
end
|
48
72
|
job_list
|
49
73
|
end
|
50
74
|
|
75
|
+
def _load(id)
|
76
|
+
MMS::Client.instance.get '/groups/' + @cluster.group.id + '/clusters/' + @cluster.id + '/snapshots/' + id.to_s
|
77
|
+
end
|
78
|
+
|
51
79
|
def _from_hash(data)
|
52
80
|
@complete = data['complete']
|
53
81
|
@created_date = data['created']['date']
|
@@ -55,6 +83,8 @@ module MMS
|
|
55
83
|
@expires = data['expires']
|
56
84
|
@parts = data['parts']
|
57
85
|
@name = DateTime.parse(@created_date).strftime("%Y-%m-%d %H:%M:%S")
|
86
|
+
|
87
|
+
@cluster = MMS::Resource::Cluster.new data['clusterId'], data['groupId']
|
58
88
|
end
|
59
89
|
end
|
60
90
|
end
|
data/lib/mms/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mms-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cargo Media
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-09-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: net-http-digest_auth
|