zenoss_client 0.0.2 → 0.0.3
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.
- data/README.rdoc +4 -0
- data/VERSION +1 -1
- data/lib/model/{device.rb → devices/device.rb} +16 -5
- data/lib/model/{device_class.rb → devices/device_class.rb} +24 -7
- data/lib/model/{device_hw.rb → devices/device_hw.rb} +0 -0
- data/lib/model/{operating_system.rb → devices/operating_system.rb} +0 -0
- data/lib/model/devices.rb +53 -0
- data/lib/model/events/event_class.rb +19 -0
- data/lib/model/manufacturers/manufacturers.rb +19 -0
- data/lib/model/model.rb +32 -14
- data/lib/model/processes/os_process_organizer.rb +19 -0
- data/lib/model/services/ip_service.rb +19 -0
- data/lib/model/services/service.rb +19 -0
- data/lib/model/services/service_class.rb +19 -0
- data/lib/model/services/service_organizer.rb +44 -0
- data/lib/model/services/win_service.rb +19 -0
- data/lib/model/services.rb +24 -0
- data/lib/model/systems/system.rb +83 -0
- data/lib/model/systems.rb +20 -0
- data/lib/model/z_device_loader.rb +65 -0
- data/lib/model/zenpack/zenpack_manager.rb +34 -0
- data/lib/zenoss.rb +15 -4
- data/preamble +4 -4
- metadata +38 -13
data/README.rdoc
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
@@ -1,27 +1,28 @@
|
|
1
1
|
#############################################################################
|
2
|
-
# Copyright ©
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
3
|
#
|
4
4
|
#
|
5
|
-
# This file is part of
|
5
|
+
# This file is part of zenoss_client.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
8
|
# modify it under the terms of the GNU General Public License as published
|
9
9
|
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
10
|
# your option) any later version.
|
11
11
|
#
|
12
|
-
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
13
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
14
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
15
|
# Public License for more details.
|
16
16
|
#
|
17
17
|
# You should have received a copy of the GNU General Public License along
|
18
|
-
# with
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
19
|
#############################################################################
|
20
20
|
module Zenoss
|
21
21
|
module Model
|
22
22
|
class Device
|
23
23
|
include Zenoss::Model
|
24
24
|
include Zenoss::Model::EventView
|
25
|
+
include Zenoss::Model::DeviceResultInt
|
25
26
|
|
26
27
|
attr_reader :path, :device, :os, :hw
|
27
28
|
|
@@ -33,10 +34,20 @@ module Zenoss
|
|
33
34
|
|
34
35
|
@os = OperatingSystem.new(self)
|
35
36
|
@hw = DeviceHW.new(self)
|
37
|
+
|
38
|
+
# Initialize common things from Model
|
39
|
+
model_init
|
36
40
|
end
|
37
41
|
|
38
42
|
# ------------------ REST Calls ------------------ #
|
39
43
|
|
44
|
+
# Move this Device to the given DeviceClass.
|
45
|
+
def change_device_class(device_class)
|
46
|
+
reset_cache_vars
|
47
|
+
rest("changeDeviceClass?deviceClassPath=#{device_class.organizer_name}")
|
48
|
+
end
|
49
|
+
|
50
|
+
|
40
51
|
# Instead of calling the /getId REST method, this method simply returns
|
41
52
|
# the @device value since it is the same anyway.
|
42
53
|
def get_id()
|
@@ -1,21 +1,21 @@
|
|
1
1
|
#############################################################################
|
2
|
-
# Copyright ©
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
3
|
#
|
4
4
|
#
|
5
|
-
# This file is part of
|
5
|
+
# This file is part of zenoss_client.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
8
|
# modify it under the terms of the GNU General Public License as published
|
9
9
|
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
10
|
# your option) any later version.
|
11
11
|
#
|
12
|
-
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
13
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
14
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
15
|
# Public License for more details.
|
16
16
|
#
|
17
17
|
# You should have received a copy of the GNU General Public License along
|
18
|
-
# with
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
19
|
#############################################################################
|
20
20
|
module Zenoss
|
21
21
|
module Model
|
@@ -32,10 +32,27 @@ module Zenoss
|
|
32
32
|
# Like, '/zport/dmd/Devices/Server/Linux'
|
33
33
|
# or, '/Devices/Server/Linux'
|
34
34
|
# or, '/Server/Linux'
|
35
|
-
path = devclass.sub(/^(\/zport\/dmd\/)?(@base_id\/)?([^\/]+)\/?$/,'\2')
|
35
|
+
path = devclass.sub(/^(\/zport\/dmd\/)?(#{@base_id}\/)?([^\/]+)\/?$/,'\2')
|
36
36
|
@organizer_name = rest('getOrganizerName', "#{@base_id}/#{path}")
|
37
37
|
end
|
38
38
|
|
39
|
+
# ------------------------- Utility Methods ------------------------- #
|
40
|
+
# These are methods that do not exist as part of the official Zenoss
|
41
|
+
# API, but from an object model they seem to make sense to me.
|
42
|
+
# ------------------------------------------------------------------- #
|
43
|
+
|
44
|
+
# Add a device beneath this Device Class. It is also typically best
|
45
|
+
# to use the fully qualified version of the device name.
|
46
|
+
# It returns true if the device is added, false otherwise.
|
47
|
+
def add_device(fully_qualified_device)
|
48
|
+
loader = ZDeviceLoader.instance
|
49
|
+
loader.load_device(fully_qualified_device, @organizer_name)
|
50
|
+
end
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
# --------------------------- REST Methods -------------------------- #
|
55
|
+
|
39
56
|
# Name of the device in Zenoss. This method will return the first
|
40
57
|
# match if the device_name is not fully qualified.
|
41
58
|
def find_device_path(device_name)
|
@@ -48,7 +65,7 @@ module Zenoss
|
|
48
65
|
end
|
49
66
|
|
50
67
|
|
51
|
-
|
68
|
+
private
|
52
69
|
|
53
70
|
def rest(method, path = "#{@base_id}#{@organizer_name}")
|
54
71
|
super("#{path}/#{method}")
|
File without changes
|
File without changes
|
@@ -0,0 +1,53 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
20
|
+
|
21
|
+
# This file contains helper modules for minor classes that have to deal
|
22
|
+
# with Devices and DeviceClasses.
|
23
|
+
|
24
|
+
module Zenoss
|
25
|
+
module Model
|
26
|
+
|
27
|
+
module DeviceResultInt
|
28
|
+
|
29
|
+
# Return the path of the device_class; everything after '/zport/dmd/Devices'
|
30
|
+
def get_device_class_name
|
31
|
+
@cache_vars[:device_class_name] ||= rest('getDeviceClassName')
|
32
|
+
end
|
33
|
+
|
34
|
+
# Return the path of the device_class; everything after '/zport/dmd/Devices'
|
35
|
+
def get_device_class_path
|
36
|
+
get_device_class_name
|
37
|
+
end
|
38
|
+
|
39
|
+
# Return the DeviceClass object of this object
|
40
|
+
def device_class
|
41
|
+
@cache_vars[:device_class] ||= DeviceClass.new(get_device_class_name)
|
42
|
+
end
|
43
|
+
end # DeviceResultInt
|
44
|
+
|
45
|
+
end # Model
|
46
|
+
end # Zenoss
|
47
|
+
|
48
|
+
|
49
|
+
# Load the main Device related files
|
50
|
+
require 'model/devices/device_class'
|
51
|
+
require 'model/devices/device'
|
52
|
+
require 'model/devices/device_hw'
|
53
|
+
require 'model/devices/operating_system'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
data/lib/model/model.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
#############################################################################
|
2
|
-
# Copyright ©
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
3
|
#
|
4
4
|
#
|
5
|
-
# This file is part of
|
5
|
+
# This file is part of zenoss_client.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
8
|
# modify it under the terms of the GNU General Public License as published
|
9
9
|
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
10
|
# your option) any later version.
|
11
11
|
#
|
12
|
-
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
13
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
14
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
15
|
# Public License for more details.
|
16
16
|
#
|
17
17
|
# You should have received a copy of the GNU General Public License along
|
18
|
-
# with
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
19
|
#############################################################################
|
20
20
|
require 'uri'
|
21
21
|
require 'net/http'
|
@@ -24,21 +24,39 @@ module Zenoss
|
|
24
24
|
module Model
|
25
25
|
include Zenoss
|
26
26
|
|
27
|
+
# Common initialization for all Model components
|
28
|
+
def model_init
|
27
29
|
|
28
|
-
|
30
|
+
# A place to maintain cached vars to prevent unnecessary REST calls
|
31
|
+
@cache_vars = {}
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
private
|
29
36
|
|
30
|
-
|
31
|
-
|
37
|
+
# Reset the cache variables so the REST calls return the appropriate
|
38
|
+
# values after a change has taken place.
|
39
|
+
def reset_cache_vars
|
40
|
+
@cache_vars.each_key do |key|
|
41
|
+
@cache_vars[key] = nil
|
42
|
+
end
|
32
43
|
end
|
33
44
|
|
34
45
|
end # Model
|
35
46
|
end # Zenoss
|
36
47
|
|
37
|
-
# Modules
|
38
48
|
require 'model/event_view'
|
39
49
|
|
40
|
-
#
|
41
|
-
|
42
|
-
|
43
|
-
require 'model/
|
44
|
-
|
50
|
+
# Device Loader interface. You can use it directly or use the
|
51
|
+
# utility methods in DeviceClass to create devices beneath
|
52
|
+
# that class
|
53
|
+
require 'model/z_device_loader'
|
54
|
+
|
55
|
+
# Device Related ( /zport/dmd/Devices )
|
56
|
+
require 'model/devices'
|
57
|
+
|
58
|
+
# Service Related ( /zport/dmd/Services )
|
59
|
+
require 'model/services'
|
60
|
+
|
61
|
+
# Systems Related ( /zport/dmd/Systems )
|
62
|
+
require 'model/systems'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
20
|
+
module Zenoss
|
21
|
+
module Model
|
22
|
+
class ServiceOrganizer
|
23
|
+
include Zenoss
|
24
|
+
include Zenoss::Model
|
25
|
+
|
26
|
+
attr_reader :organizer_name
|
27
|
+
|
28
|
+
def initialize(service_organizer)
|
29
|
+
@base_id = 'Services'
|
30
|
+
|
31
|
+
path = service_organizer.sub(/^(\/zport\/dmd\/)?(@base_id\/)?([^\/]+)\/?$/,'\2')
|
32
|
+
@organizer_name = rest('getOrganizerName', "#{@base_id}/#{path}")
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
protected
|
37
|
+
|
38
|
+
def rest(method, path = "#{@base_id}#{@organizer_name}")
|
39
|
+
super("#{path}/#{method}")
|
40
|
+
end
|
41
|
+
|
42
|
+
end # ServiceOrganizer
|
43
|
+
end # Model
|
44
|
+
end # Zenoss
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
20
|
+
require 'model/services/service_organizer'
|
21
|
+
require 'model/services/service_class'
|
22
|
+
require 'model/services/service'
|
23
|
+
require 'model/services/ip_service'
|
24
|
+
require 'model/services/win_service'
|
@@ -0,0 +1,83 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
20
|
+
module Zenoss
|
21
|
+
module Model
|
22
|
+
class System
|
23
|
+
include Zenoss
|
24
|
+
include Zenoss::Model
|
25
|
+
|
26
|
+
attr_reader :organizer_name
|
27
|
+
|
28
|
+
def initialize(devclass)
|
29
|
+
@base_id = 'Systems'
|
30
|
+
|
31
|
+
# This confusing little ditty lets us accept a System in a number of ways:
|
32
|
+
# Like, '/zport/dmd/Systems/MyService'
|
33
|
+
# or, '/Systems/MyService'
|
34
|
+
# or, '/MyService'
|
35
|
+
path = devclass.sub(/^(\/zport\/dmd\/)?(#{@base_id}\/)?([\w\/]+)\/?$/,'\3')
|
36
|
+
|
37
|
+
@id = path.split('/').last
|
38
|
+
@organizer_name = rest('getOrganizerName', "#{@base_id}/#{path}")
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
# ------------------------- Utility Methods ------------------------- #
|
43
|
+
# These are methods that do not exist as part of the official Zenoss
|
44
|
+
# API, but from an object model they seem to make sense to me.
|
45
|
+
# ------------------------------------------------------------------- #
|
46
|
+
|
47
|
+
# Add a device beneath this Device Class. It is also typically best
|
48
|
+
# to use the fully qualified version of the device name.
|
49
|
+
# It returns true if the device is added, false otherwise.
|
50
|
+
def add_subsystem(sys_name)
|
51
|
+
loader = ZDeviceLoader.instance
|
52
|
+
loader.add_system("#{@organizer_name}/#{sys_name}")
|
53
|
+
end
|
54
|
+
|
55
|
+
# TODO: Need to add some error checking. For now we are just returning true
|
56
|
+
def delete_subsystem(sys_name)
|
57
|
+
rest("manage_deleteOrganizer?orgname=#{sys_name}")
|
58
|
+
true
|
59
|
+
end
|
60
|
+
|
61
|
+
# Delete this System
|
62
|
+
def delete!
|
63
|
+
Zenoss.systems.delete_subsystem(@organizer_name)
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
# --------------------------- REST Methods -------------------------- #
|
68
|
+
|
69
|
+
# Instead of calling the /getId REST method, this method simply returns
|
70
|
+
# the @id value since it is the same anyway.
|
71
|
+
def get_id
|
72
|
+
@id
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def rest(method, path = "#{@base_id}#{@organizer_name}")
|
78
|
+
super("#{path}/#{method}")
|
79
|
+
end
|
80
|
+
|
81
|
+
end # System
|
82
|
+
end # Model
|
83
|
+
end # Zenoss
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
20
|
+
require 'model/systems/system'
|
@@ -0,0 +1,65 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
20
|
+
require 'singleton'
|
21
|
+
module Zenoss
|
22
|
+
module Model
|
23
|
+
class ZDeviceLoader
|
24
|
+
include Model
|
25
|
+
include Singleton
|
26
|
+
|
27
|
+
def initialize
|
28
|
+
@path = "DeviceLoader"
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
# Load a device into the database connecting its major relations and collecting its configuration.
|
33
|
+
# loadDevice(self, deviceName, devicePath="/Discovered", tag="", serialNumber="", zSnmpCommunity="",
|
34
|
+
# zSnmpPort=161, zSnmpVer=None, rackSlot=0, productionState=1000, comments="", hwManufacturer="",
|
35
|
+
# hwProductName="", osManufacturer="", osProductName="", locationPath="", groupPaths=[], systemPaths=[],
|
36
|
+
# performanceMonitor="localhost", discoverProto="snmp", priority=3, REQUEST=None)
|
37
|
+
#
|
38
|
+
# TODO: Enhance this functionality
|
39
|
+
# Return: true if the device is added, false if it is not
|
40
|
+
def load_device(device_name, device_path)
|
41
|
+
method = "loadDevice?deviceName=#{device_name}&devicePath=#{device_path}"
|
42
|
+
body = rest(method)
|
43
|
+
(body =~ /Navigate to device/) ? true : false
|
44
|
+
end
|
45
|
+
|
46
|
+
#add a system to the database
|
47
|
+
# addSystem(self, newSystemPath, REQUEST=None)
|
48
|
+
def add_system(system_path)
|
49
|
+
method = "addSystem?newSystemPath=#{system_path}"
|
50
|
+
rest(method)
|
51
|
+
sys = System.new("/Systems/#{system_path}")
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def rest(method)
|
58
|
+
super("#{@path}/#{method}")
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
end # ZDeviceLoader
|
64
|
+
end # Model
|
65
|
+
end # Zenoss
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#############################################################################
|
2
|
+
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
|
+
#
|
4
|
+
#
|
5
|
+
# This file is part of zenoss_client.
|
6
|
+
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU General Public License as published
|
9
|
+
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
|
+
# your option) any later version.
|
11
|
+
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
|
+
# Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU General Public License along
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
#############################################################################
|
20
|
+
module Zenoss
|
21
|
+
module Model
|
22
|
+
class ZenPackManager
|
23
|
+
include Model
|
24
|
+
|
25
|
+
def initialize
|
26
|
+
model_init
|
27
|
+
end
|
28
|
+
|
29
|
+
def manage_add_zenpack(zenpack_id)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end # Model
|
34
|
+
end # Zenoss
|
data/lib/zenoss.rb
CHANGED
@@ -2,20 +2,20 @@
|
|
2
2
|
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
3
|
#
|
4
4
|
#
|
5
|
-
# This file is part of
|
5
|
+
# This file is part of zenoss_client.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
8
|
# modify it under the terms of the GNU General Public License as published
|
9
9
|
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
10
|
# your option) any later version.
|
11
11
|
#
|
12
|
-
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
13
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
14
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
15
|
# Public License for more details.
|
16
16
|
#
|
17
17
|
# You should have received a copy of the GNU General Public License along
|
18
|
-
# with
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
19
|
#############################################################################
|
20
20
|
require 'rubygems'
|
21
21
|
require 'date'
|
@@ -46,6 +46,17 @@ module Zenoss
|
|
46
46
|
Model::DeviceClass.new('/zport/dmd/Devices')
|
47
47
|
end
|
48
48
|
|
49
|
+
# Return the base ServiceOrganizer /zport/dmd/Services
|
50
|
+
def Zenoss.services
|
51
|
+
Model::ServiceOrganizer.new('/zport/dmd/Services')
|
52
|
+
end
|
53
|
+
|
54
|
+
# Return the base System /zport/dmd/Systems
|
55
|
+
def Zenoss.systems
|
56
|
+
Model::System.new('/zport/dmd/Systems')
|
57
|
+
end
|
58
|
+
|
59
|
+
|
49
60
|
|
50
61
|
private
|
51
62
|
|
data/preamble
CHANGED
@@ -2,18 +2,18 @@
|
|
2
2
|
# Copyright © 2010 Dan Wanek <dwanek@nd.gov>
|
3
3
|
#
|
4
4
|
#
|
5
|
-
# This file is part of
|
5
|
+
# This file is part of zenoss_client.
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# zenoss_client is free software: you can redistribute it and/or
|
8
8
|
# modify it under the terms of the GNU General Public License as published
|
9
9
|
# by the Free Software Foundation, either version 3 of the License, or (at
|
10
10
|
# your option) any later version.
|
11
11
|
#
|
12
|
-
#
|
12
|
+
# zenoss_client is distributed in the hope that it will be useful,
|
13
13
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
14
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
15
15
|
# Public License for more details.
|
16
16
|
#
|
17
17
|
# You should have received a copy of the GNU General Public License along
|
18
|
-
# with
|
18
|
+
# with zenoss_client. If not, see <http://www.gnu.org/licenses/>.
|
19
19
|
#############################################################################
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zenoss_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
version: 0.0.3
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Dan Wanek
|
@@ -9,19 +14,21 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-03-
|
17
|
+
date: 2010-03-29 00:00:00 -05:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: tzinfo
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
23
29
|
version: "0"
|
24
|
-
|
30
|
+
type: :runtime
|
31
|
+
version_requirements: *id001
|
25
32
|
description: " \tThis is a Ruby library for accessing Zenoss through its REST interface. It is a work in progress and as functionality is testing\n\
|
26
33
|
\tit will be added. For documentation on what the method calls do see the official Zenoss API docs.\n"
|
27
34
|
email: dan.wanek@gmail.com
|
@@ -37,12 +44,26 @@ files:
|
|
37
44
|
- README.rdoc
|
38
45
|
- Rakefile
|
39
46
|
- VERSION
|
40
|
-
- lib/model/
|
41
|
-
- lib/model/
|
42
|
-
- lib/model/
|
47
|
+
- lib/model/devices.rb
|
48
|
+
- lib/model/devices/device.rb
|
49
|
+
- lib/model/devices/device_class.rb
|
50
|
+
- lib/model/devices/device_hw.rb
|
51
|
+
- lib/model/devices/operating_system.rb
|
43
52
|
- lib/model/event_view.rb
|
53
|
+
- lib/model/events/event_class.rb
|
54
|
+
- lib/model/manufacturers/manufacturers.rb
|
44
55
|
- lib/model/model.rb
|
45
|
-
- lib/model/
|
56
|
+
- lib/model/processes/os_process_organizer.rb
|
57
|
+
- lib/model/services.rb
|
58
|
+
- lib/model/services/ip_service.rb
|
59
|
+
- lib/model/services/service.rb
|
60
|
+
- lib/model/services/service_class.rb
|
61
|
+
- lib/model/services/service_organizer.rb
|
62
|
+
- lib/model/services/win_service.rb
|
63
|
+
- lib/model/systems.rb
|
64
|
+
- lib/model/systems/system.rb
|
65
|
+
- lib/model/z_device_loader.rb
|
66
|
+
- lib/model/zenpack/zenpack_manager.rb
|
46
67
|
- lib/zenoss.rb
|
47
68
|
- preamble
|
48
69
|
has_rdoc: true
|
@@ -63,18 +84,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
63
84
|
requirements:
|
64
85
|
- - ">="
|
65
86
|
- !ruby/object:Gem::Version
|
87
|
+
segments:
|
88
|
+
- 1
|
89
|
+
- 8
|
90
|
+
- 7
|
66
91
|
version: 1.8.7
|
67
|
-
version:
|
68
92
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
93
|
requirements:
|
70
94
|
- - ">="
|
71
95
|
- !ruby/object:Gem::Version
|
96
|
+
segments:
|
97
|
+
- 0
|
72
98
|
version: "0"
|
73
|
-
version:
|
74
99
|
requirements: []
|
75
100
|
|
76
101
|
rubyforge_project:
|
77
|
-
rubygems_version: 1.3.
|
102
|
+
rubygems_version: 1.3.6
|
78
103
|
signing_key:
|
79
104
|
specification_version: 3
|
80
105
|
summary: A Ruby API for accessing Zenoss via REST
|