vzcdn 0.0.4 → 0.0.5
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/lib/clui_config.rb +107 -0
- data/lib/command_proc.rb +58 -0
- data/lib/common.rb +59 -0
- data/lib/config_reader.rb +5 -0
- data/lib/mediaManagment.rb +136 -0
- data/lib/realTimeStats.rb +43 -0
- data/lib/reporting.rb +128 -0
- data/lib/route.rb +82 -0
- data/lib/t.rb +3 -0
- data/lib/upload.rb +18 -0
- data/lib/userInfo.rb +6 -0
- data/lib/vzcdn/version.rb +1 -1
- data/lib/vzcdn.rb +22 -7
- data/lib/zone.rb +19 -0
- data/pkg/vzcdn-0.0.1.gem +0 -0
- data/test/test_clui.rb +8 -0
- data/vzcdn.gemspec +3 -3
- metadata +20 -7
- data/.gitignore +0 -17
- data/version.rb +0 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e2965538e99c8d02405a519aac77f48643637eb5
|
|
4
|
+
data.tar.gz: f2f1ee848a5da8ee3130bd03f152bef9da8032bf
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5e731e1f4a076d55d16a450a9bca92cd0c69a1b85ed16d59640e4adf1c57db76702c9f42643f5d42fa01500de4ed7bc7f2db757bb2e0ecc423b88f9f45f04348
|
|
7
|
+
data.tar.gz: 938355fe326c2f9d33c4ab5040141c5adadf6e2a41b8bf0eca6f152f6d4a389defa62b0359ae778b59b0a8789c0c75f471fd0624466a21d129c21b02ded012e8
|
data/lib/clui_config.rb
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
require_relative 'command_proc'
|
|
3
|
+
|
|
4
|
+
class Configure
|
|
5
|
+
include CommandProc
|
|
6
|
+
|
|
7
|
+
def initialize(name)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
CONFIG_DIRECTORY = ".vdms.d"
|
|
11
|
+
CONFIG_FILENAME = "config"
|
|
12
|
+
|
|
13
|
+
def get_config_file
|
|
14
|
+
if (! File.directory?(CONFIG_DIRECTORY))
|
|
15
|
+
FileUtils.mkdir(CONFIG_DIRECTORY)
|
|
16
|
+
end
|
|
17
|
+
CONFIG_DIRECTORY + File::SEPARATOR + CONFIG_FILENAME
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def parse_line(line)
|
|
21
|
+
idx = line.index('=')
|
|
22
|
+
if (idx)
|
|
23
|
+
return line[0...idx], line[idx+1..-1]
|
|
24
|
+
else
|
|
25
|
+
line
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def replace_nv(name, value, new_file, old_file_contents)
|
|
30
|
+
new_config_line = name + '=' + value
|
|
31
|
+
wrote_line = false
|
|
32
|
+
old_file_contents.each { |line|
|
|
33
|
+
old_name, old_value = parse_line(line)
|
|
34
|
+
if (old_name == name)
|
|
35
|
+
new_file.puts(new_config_line)
|
|
36
|
+
wrote_line = true
|
|
37
|
+
else
|
|
38
|
+
new_file.puts(line)
|
|
39
|
+
end
|
|
40
|
+
}
|
|
41
|
+
if ( ! wrote_line)
|
|
42
|
+
new_file.puts(new_config_line)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def file_contents(filename)
|
|
47
|
+
if (File.file? filename)
|
|
48
|
+
File.open(filename, "r")
|
|
49
|
+
else
|
|
50
|
+
[]
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def init(args)
|
|
55
|
+
puts "init called with args: " + args.to_s
|
|
56
|
+
if (args.length != 2)
|
|
57
|
+
|
|
58
|
+
else
|
|
59
|
+
set(["acct-num", args[0]])
|
|
60
|
+
set(["token", args[1]])
|
|
61
|
+
set(["rest_base_url", "https://api.edgecast.com/v2/"])
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def load_config_values
|
|
66
|
+
if defined? @@config_values
|
|
67
|
+
return
|
|
68
|
+
else
|
|
69
|
+
@@config_values = {}
|
|
70
|
+
File.open(get_config_file).each { |line|
|
|
71
|
+
line = line.strip
|
|
72
|
+
if line[0] == '#'
|
|
73
|
+
continue
|
|
74
|
+
end
|
|
75
|
+
name, value = parse_line(line)
|
|
76
|
+
if value
|
|
77
|
+
@@config_values[name] = value
|
|
78
|
+
end
|
|
79
|
+
}
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def self.config_parameter(name)
|
|
84
|
+
instance = get_instance(nil)
|
|
85
|
+
instance.load_config_values
|
|
86
|
+
@@config_values[name]
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def get(args)
|
|
90
|
+
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def set(args)
|
|
94
|
+
if (args.length != 2)
|
|
95
|
+
puts "usage: set <name> <value>"
|
|
96
|
+
error
|
|
97
|
+
end
|
|
98
|
+
name = args[0]
|
|
99
|
+
value = args[1]
|
|
100
|
+
config_file = get_config_file
|
|
101
|
+
new_config_file = config_file + ".tmp"
|
|
102
|
+
updated_file = File.open(new_config_file, "w")
|
|
103
|
+
replace_nv(name, value, updated_file, file_contents(config_file))
|
|
104
|
+
updated_file.close
|
|
105
|
+
FileUtils.mv(new_config_file, config_file, :force => true)
|
|
106
|
+
end
|
|
107
|
+
end
|
data/lib/command_proc.rb
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
require_relative 'config_reader'
|
|
2
|
+
|
|
3
|
+
module CommandProc
|
|
4
|
+
include ConfigReader
|
|
5
|
+
|
|
6
|
+
def help(args)
|
|
7
|
+
puts "Avalable commands:"
|
|
8
|
+
self.class.instance_methods(false).each{|method|
|
|
9
|
+
puts " " + method.to_s
|
|
10
|
+
}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.included(base)
|
|
14
|
+
base.extend(ClassMethods)
|
|
15
|
+
base.init_instances
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
module ClassMethods
|
|
19
|
+
def init_instances
|
|
20
|
+
class_eval <<-CODE
|
|
21
|
+
def self.instances
|
|
22
|
+
@@instances ||= nil
|
|
23
|
+
end
|
|
24
|
+
def self.instances=(value)
|
|
25
|
+
@@instances = value
|
|
26
|
+
end
|
|
27
|
+
@@instances = {}
|
|
28
|
+
CODE
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def get_instance(name)
|
|
32
|
+
if self.instances[name]
|
|
33
|
+
self.instances[name]
|
|
34
|
+
else
|
|
35
|
+
self.instances[name] = self.new(name)
|
|
36
|
+
end
|
|
37
|
+
self.instances[name]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def invoke(args)
|
|
41
|
+
instance = get_instance(nil)
|
|
42
|
+
command = args.shift
|
|
43
|
+
if command == nil
|
|
44
|
+
command = "help"
|
|
45
|
+
end
|
|
46
|
+
if instance.respond_to?(command)
|
|
47
|
+
instance.send(command, args)
|
|
48
|
+
else
|
|
49
|
+
name = command
|
|
50
|
+
instance = get_instance(name)
|
|
51
|
+
puts "instance is " + instance.to_s
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
end
|
data/lib/common.rb
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'rest_client'
|
|
2
|
+
require 'json'
|
|
3
|
+
|
|
4
|
+
class CommonRestUtils
|
|
5
|
+
def callMethod(url_suffix, http_method, body=nil)
|
|
6
|
+
url = @uri_prefix + url_suffix
|
|
7
|
+
if (body)
|
|
8
|
+
json_body = JSON.pretty_generate body
|
|
9
|
+
end
|
|
10
|
+
begin
|
|
11
|
+
response =
|
|
12
|
+
case http_method
|
|
13
|
+
when :put
|
|
14
|
+
RestClient.put(url, json_body, Headers)
|
|
15
|
+
when :get
|
|
16
|
+
RestClient.get(url, Headers)
|
|
17
|
+
when :post
|
|
18
|
+
RestClient.post(url, json_body, Headers)
|
|
19
|
+
when :delete
|
|
20
|
+
RestClient.(url, Headers)
|
|
21
|
+
else
|
|
22
|
+
"unsupported http method:" + http_method
|
|
23
|
+
end
|
|
24
|
+
rescue RestClient::Exception => e
|
|
25
|
+
puts "URL is:" + url
|
|
26
|
+
if (body)
|
|
27
|
+
puts "body is: json_body"
|
|
28
|
+
end
|
|
29
|
+
raise("Exception occurred:" + e.message)
|
|
30
|
+
end
|
|
31
|
+
if (response.code != 200)
|
|
32
|
+
raise "Bad response code:" + response.code.to_s
|
|
33
|
+
end
|
|
34
|
+
if (response.length > 0)
|
|
35
|
+
JSON.parse response
|
|
36
|
+
else
|
|
37
|
+
response
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def initialize(uri_prefix)
|
|
42
|
+
@uri_prefix = uri_prefix
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
Headers = {:Content_type => "Application/json",
|
|
46
|
+
:Authorization => "TOK:" + Configure.config_parameter("token"),
|
|
47
|
+
:Accept => "Application/json"}
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
module MediaType
|
|
52
|
+
FLASH_MEDIA = 2
|
|
53
|
+
HTTP_LARGE = 3
|
|
54
|
+
HTTP_LARGE_SSL = 7
|
|
55
|
+
HTTP_SMALL = 8
|
|
56
|
+
HTTP_SMALL_SSL = 9
|
|
57
|
+
ADN = 14
|
|
58
|
+
ADN_SSL = 15
|
|
59
|
+
end
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require_relative 'common.rb'
|
|
3
|
+
URI_PREFIX="https://api.edgecast.com/v2/mcc/customers/" + ACCT_NUM + "/"
|
|
4
|
+
|
|
5
|
+
def getPurgeRequest(id)
|
|
6
|
+
callMethod("edge/purge/" + id, :get)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def getAllEdgeNodes()
|
|
10
|
+
callMethod("edgenodes", :get)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def loadContent(path, type)
|
|
14
|
+
body = {:MediaPath => path, :MediaType => type}
|
|
15
|
+
callMethod("edge/load", :put, body)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def purgeContent(path, type)
|
|
19
|
+
body = {:MediaPath => path, :MediaType => type}
|
|
20
|
+
callMethod("edge/purge", :put, body)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def get_all_compression_settings
|
|
24
|
+
callMethod("compression", :get)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def get_all_query_string_caching_settings
|
|
28
|
+
callMethod("querystringcaching", :get)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def get_all_query_string_logging_settings
|
|
32
|
+
callMethod("querystringlogging", :get)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def get_compression_setting (media_type)
|
|
36
|
+
callMethod("compression?mediatypeid=" + media_type.to_s, :get)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def get_query_string_caching_setting(media_type)
|
|
40
|
+
callMethod("querystringcaching?mediatypeid=" + media_type.to_s, :get)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def get_query_string_logging_setting(media_type)
|
|
44
|
+
callMethod("querystringlogging?mediatypeid=" + media_type.to_s, :get)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def update_compression_settings(media_type, enable, *content_types)
|
|
48
|
+
body = { :ContentTypes => content_types, :MediaTypeId => media_type, :Status => (enable ? 1 :0) }
|
|
49
|
+
callMethod("compression", :put, body)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def update_query_string_caching_setting (query_string_caching, media_type)
|
|
53
|
+
body = { :QueryStringCaching => query_string_caching, :MediaTypeId => media_type}
|
|
54
|
+
callMethod("querystringcaching", :put, body)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def update_query_string_logging_status(media_type, logging)
|
|
58
|
+
body = { :QueryStringLogging => logging, :MediaTypeId => media_type}
|
|
59
|
+
callMethod("querystringlogging", :put, body)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
##################
|
|
63
|
+
def get_all_customer_origins()
|
|
64
|
+
callMethod("origins/httplarge", :get)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def add_origin(media_type, directory, host_header, http_host_names, http_load_balancing, https_host_names, https_load_balancing, shield_pops)
|
|
68
|
+
|
|
69
|
+
body = { :DirectoryName => directory, :HostHeader => host_header, :HttpHostnames => http_host_names, :HttpLoadBalancing => http_load_balancing,
|
|
70
|
+
:HttpsHostnames => https_host_names, :HttpsLoadBalancing => https_load_balancing, :ShieldPOPs => shield_pops }
|
|
71
|
+
media_type_s = case when MediaType::HTTP_LARGE then "httplarge"
|
|
72
|
+
when MediaType::HTTP_SMALL then "httpsmall"
|
|
73
|
+
when MediaType::FLASH_MEDIA then "flash"
|
|
74
|
+
when MediaType::ADN then "adn" end
|
|
75
|
+
|
|
76
|
+
callMethod("origins/" + media_type_s, :post, body)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def delete_customer_origin(origin_id)
|
|
80
|
+
callMethod("origins/" + origin_id.to_s, :delete)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
p delete_customer_origin("171695")
|
|
84
|
+
|
|
85
|
+
http_host_names = []
|
|
86
|
+
http_host_names.push({ :Name => "http://nitintest1.vdmstest.com:80" })
|
|
87
|
+
http_host_names.push({ :Name => "http://nitintest2.vdmstest.com:80" })
|
|
88
|
+
https_host_names = nil
|
|
89
|
+
#https_host_names.push({ :Name => "https://img.xyz.com:443" })
|
|
90
|
+
shieldPops = nil
|
|
91
|
+
#shieldPops.push({ :POPCode => "lax" })
|
|
92
|
+
#new_origin = add_origin(MediaType::HTTP_LARGE, "MyCustomDirectory6", "nitintest.vdmstest.com:80", http_host_names, "RR", https_host_names, "PF", shieldPops)
|
|
93
|
+
#p new_origin
|
|
94
|
+
|
|
95
|
+
origin_list = get_all_customer_origins()
|
|
96
|
+
origin_list.each { |origin|
|
|
97
|
+
puts origin["Id"].to_s + "\t" + origin["DirectoryName"] +"\t" + origin["HttpFullUrl"] + "\t" + origin["HostHeader"]
|
|
98
|
+
}
|
|
99
|
+
exit
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
exit
|
|
103
|
+
p get_query_string_logging_setting(MediaType::HTTP_LARGE)
|
|
104
|
+
p get_query_string_caching_setting(MediaType::HTTP_LARGE)
|
|
105
|
+
|
|
106
|
+
update_query_string_logging_status( MediaType::HTTP_SMALL, "log")
|
|
107
|
+
update_query_string_logging_status( MediaType::HTTP_LARGE, "log")
|
|
108
|
+
puts get_all_query_string_logging_settings
|
|
109
|
+
|
|
110
|
+
update_query_string_caching_setting("unique-cache", MediaType::HTTP_SMALL)
|
|
111
|
+
puts get_all_query_string_caching_settings
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
update_compression_settings(MediaType::HTTP_LARGE, true, "text/plain", "text/css")
|
|
115
|
+
puts "for http large: " + get_compression_setting(MediaType::HTTP_LARGE).to_s
|
|
116
|
+
|
|
117
|
+
puts "for http small: " + get_compression_setting(MediaType::HTTP_SMALL).to_s
|
|
118
|
+
puts "for adn: " + get_compression_setting(MediaType::ADN).to_s
|
|
119
|
+
|
|
120
|
+
response = loadContent("http://wac.BED3.edgecastcdn.net/00BED3/marketing/content/images/banner_rightArrow.png", 8)
|
|
121
|
+
puts response
|
|
122
|
+
|
|
123
|
+
purgeReq = getPurgeRequest("5329fefd951d41012e33d403")
|
|
124
|
+
puts "Complete Date: " + purgeReq["CompleteDate"]
|
|
125
|
+
puts "In Date: " + purgeReq["InDate"]
|
|
126
|
+
|
|
127
|
+
purge = purgeContent("http://wac.BED3.edgecastcdn.net/00BED3/marketing/content/images/banner_rightArrow.png", 8)
|
|
128
|
+
puts "purge Id = " + purge["Id"]
|
|
129
|
+
|
|
130
|
+
nodeList = getAllEdgeNodes
|
|
131
|
+
nodeList.each { |node|
|
|
132
|
+
puts "node in " + node["City"] + ", " + node["Continent"]
|
|
133
|
+
}
|
|
134
|
+
puts "there are " + nodeList.count.to_s + " nodes:"
|
|
135
|
+
|
|
136
|
+
exit
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require_relative 'common.rb'
|
|
3
|
+
|
|
4
|
+
URI_PREFIX="https://api.edgecast.com/v2/realtimestats/customers/" + ACCT_NUM + "/media/"
|
|
5
|
+
def get_current_bandwidth(media_type)
|
|
6
|
+
callMethod(media_type.to_s + "/bandwidth", :get)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def get_current_cache_status_statistics(media_type)
|
|
10
|
+
callMethod(media_type.to_s + "/cachestatus", :get)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def get_current_status_code_statistics(media_type)
|
|
14
|
+
callMethod(media_type.to_s + "/statuscode", :get)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def get_current_streams
|
|
18
|
+
callMethod("2/streams", :get)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def get_current_total_connections(media_type)
|
|
22
|
+
callMethod(media_type.to_s + "/connections", :get)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
puts "flash media bandwidth:" + get_current_bandwidth(MediaType::FLASH_MEDIA).to_s
|
|
26
|
+
puts "http small bandwidth:" + get_current_bandwidth(MediaType::HTTP_SMALL).to_s
|
|
27
|
+
puts "http large bandwidth:" + get_current_bandwidth(MediaType::HTTP_LARGE).to_s
|
|
28
|
+
puts "adn bandwidth:" + get_current_bandwidth(MediaType::ADN).to_s
|
|
29
|
+
|
|
30
|
+
puts "http small cache status:" + get_current_cache_status_statistics(MediaType::HTTP_SMALL).to_s
|
|
31
|
+
puts "http large cache status:" + get_current_cache_status_statistics(MediaType::HTTP_LARGE).to_s
|
|
32
|
+
puts "adn cache status:" + get_current_cache_status_statistics(MediaType::ADN).to_s
|
|
33
|
+
|
|
34
|
+
puts "http small status codes:" + get_current_status_code_statistics(MediaType::HTTP_SMALL).to_s
|
|
35
|
+
puts "http large status codes:" + get_current_status_code_statistics(MediaType::HTTP_LARGE).to_s
|
|
36
|
+
puts "adn status codes:" + get_current_status_code_statistics(MediaType::ADN).to_s
|
|
37
|
+
|
|
38
|
+
puts "current streams:" + get_current_streams.to_s
|
|
39
|
+
|
|
40
|
+
puts "flash media total connections:" + get_current_total_connections(MediaType::FLASH_MEDIA).to_s
|
|
41
|
+
puts "http small total connections:" + get_current_total_connections(MediaType::HTTP_SMALL).to_s
|
|
42
|
+
puts "http large total connections:" + get_current_total_connections(MediaType::HTTP_LARGE).to_s
|
|
43
|
+
puts "adn total connections:" + get_current_total_connections(MediaType::ADN).to_s
|
data/lib/reporting.rb
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require_relative 'common.rb'
|
|
3
|
+
require 'cgi'
|
|
4
|
+
|
|
5
|
+
URI_PREFIX="https://api.edgecast.com/v2/reporting/"
|
|
6
|
+
URI_CUSTOMERS_SEGMENT = "customers/" + ACCT_NUM + "/"
|
|
7
|
+
|
|
8
|
+
module Interval
|
|
9
|
+
FIVE_MINUTE = 1
|
|
10
|
+
HOURLY = 2
|
|
11
|
+
DAILY = 3
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
module TrafficUnits
|
|
15
|
+
MBPS = 1
|
|
16
|
+
GB = 2
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def to_csv(prefix, pops_list)
|
|
20
|
+
result = ""
|
|
21
|
+
if (pops_list.count > 0)
|
|
22
|
+
result = prefix + pops_list[0]
|
|
23
|
+
pops_list.shift
|
|
24
|
+
pops_list.each { |pop|
|
|
25
|
+
result = result + "," + pop
|
|
26
|
+
}
|
|
27
|
+
end
|
|
28
|
+
result
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def time_to_q(time)
|
|
32
|
+
time.strftime("%Y-%m-%dT%H:%M:%S")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def interval(begin_time, end_time)
|
|
36
|
+
"?begindate=" + time_to_q(begin_time) + "&enddate=" + time_to_q(end_time)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def customer_suffix(word)
|
|
40
|
+
URI_CUSTOMERS_SEGMENT + word
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def interval_suffix(word, begin_time, end_time)
|
|
44
|
+
URI_CUSTOMERS_SEGMENT + word + interval(begin_time, end_time)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def media_suffix(media_type, word, begin_time, end_time)
|
|
48
|
+
URI_CUSTOMERS_SEGMENT + "media/" + media_type.to_s + "/" + word + interval(begin_time, end_time)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def get_all_data_transferred(begin_time, end_time, *pops)
|
|
52
|
+
callMethod(interval_suffix("bytestransferred", begin_time, end_time) + to_csv("&pops=", pops), :get)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def get_asset_activity(media_type, begin_time, end_time)
|
|
56
|
+
callMethod(media_suffix(media_type, "filestats", begin_time, end_time), :get)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def get_billing_regions
|
|
60
|
+
callMethod("billing/regions", :get)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def get_cache_status_activity(media_type, begin_time, end_time)
|
|
64
|
+
callMethod(media_suffix(media_type, "cachestats", begin_time, end_time), :get)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def get_current_storage_usage
|
|
68
|
+
callMethod(customer_suffix("lateststorageusage"), :get)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def get_customer_account_number(custom_id)
|
|
72
|
+
callMethod("customers/accountnumber?customercustomid=" + CGI.escape(custom_id), :get)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def get_customer_name
|
|
76
|
+
callMethod(customer_suffix("customername"), :get)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def get_data_transferred_and_hits_by_custom_report_codes(media_type, begin_time, end_time)
|
|
80
|
+
callMethod(media_suffix(media_type, "cnamereportcodes", begin_time, end_time), :get)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def get_data_transferred_by_platform(media_type, begin_time, end_time, *pops)
|
|
84
|
+
callMethod(media_suffix(media_type, "bytestransferred", begin_time, end_time) + to_csv("&pops=", pops), :get)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def get_data_transferred_by_platform_and_interval(media_type, begin_time, end_time, region_id, interval_id, *pops)
|
|
88
|
+
suffix = interval_suffix("bytestransferred/interval", begin_time, end_time);
|
|
89
|
+
if (media_type)
|
|
90
|
+
suffix = suffix + "&mediatypeid=" + media_type.to_s
|
|
91
|
+
end
|
|
92
|
+
if (interval_id)
|
|
93
|
+
suffix = suffix + "&intervalid=" + interval_id.to_s
|
|
94
|
+
end
|
|
95
|
+
suffix = suffix + to_csv("&pops=", pops)
|
|
96
|
+
if (region_id)
|
|
97
|
+
suffix = suffix + "®ionid=" + region_id.to_s
|
|
98
|
+
end
|
|
99
|
+
puts "suffix: " + suffix
|
|
100
|
+
callMethod(suffix, :get)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def get_directory_activity(media_type, begin_time, end_time)
|
|
104
|
+
callMethod(media_suffix(media_type, "directorystats", begin_time, end_time), :get)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def get_download_activity(media_type, begin_time, end_time)
|
|
108
|
+
callMethod(media_suffix(media_type, "completedownloads", begin_time, end_time), :get)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def get_maximum_storage_usage(begin_time, end_time)
|
|
112
|
+
callMethod(interval_suffix("maxstorageusage", begin_time, end_time), :get)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def get_report_codes(media_type)
|
|
116
|
+
suffix = customer_suffix("reportcodes")
|
|
117
|
+
if (media_type)
|
|
118
|
+
suffix = suffix + "?mediatypeid=" + media_type.to_s
|
|
119
|
+
end
|
|
120
|
+
callMethod(suffix, :get)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def get_traffic_usage(media_type, region_id, units, billing_month)
|
|
124
|
+
suffix = URI_CUSTOMERS_SEGMENT +
|
|
125
|
+
"media/" + media_type.to_s + "/region/" + region_id.to_s + "/units/" + units.to_s + "/trafficusage" +
|
|
126
|
+
"?begindate=" + billing_month.strftime("%Y-%m-01")
|
|
127
|
+
callMethod(suffix, :get)
|
|
128
|
+
end
|
data/lib/route.rb
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require_relative 'common.rb'
|
|
3
|
+
require 'pp'
|
|
4
|
+
|
|
5
|
+
class Route
|
|
6
|
+
include ConfigReader
|
|
7
|
+
|
|
8
|
+
def initialize
|
|
9
|
+
@common = CommonRestUtils.new(param("rest_base_url") + "mcc/")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def customer_suffix(suffix)
|
|
13
|
+
"customers/" + param("acct-num") + "/" + suffix
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def non_customer_suffix(suffix)
|
|
17
|
+
"/dns/" + suffix
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def get_all_zones(status=nil, zone_type=nil)
|
|
21
|
+
suffix = "dns/routezones"
|
|
22
|
+
if status != nil && zone_type != nil
|
|
23
|
+
suffix = suffix + "?status=" + status + "&zonetype=" + zone_type
|
|
24
|
+
elsif status != nil
|
|
25
|
+
suffix = suffix + "?status=" + status
|
|
26
|
+
elsif zone_type != nil
|
|
27
|
+
suffix = suffix + "?zonetype=" + zone_type
|
|
28
|
+
end
|
|
29
|
+
@common.callMethod(customer_suffix(suffix), :get)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def get_zone(id, name)
|
|
33
|
+
suffix = "dns/routezone?id=" + id + "&name=" + name
|
|
34
|
+
callMethod(customer_suffix(suffix), :get)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def copy_zone(from, to)
|
|
38
|
+
suffix = customer_suffix("dns/routezone/copy")
|
|
39
|
+
body = {:FromDomainName => from, :ToDomainName => to}
|
|
40
|
+
callMethod(suffix, :post, body)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def delete_zone(id)
|
|
44
|
+
suffix = customer_suffix("dns/routezone/" + id)
|
|
45
|
+
callMethod(suffix, :delete)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def add_zone()
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def get_available_zone_types()
|
|
52
|
+
callMethod(non_customer_suffix("routezonetypes"), :get)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def get_available_record_types()
|
|
56
|
+
callMethod(non_customer_suffix("routezonerecordtypes"), :get)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def get_available_zone_statuses()
|
|
60
|
+
callMethod(non_customer_suffix("routezonestatus"), :get)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def get_available_route_groups()
|
|
64
|
+
callMethod(non_customer_suffix("routegrouptypes"), :get)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def get_available_http_methods()
|
|
68
|
+
callMethod(non_customer_suffix("routehttpmethodtypes"), :get)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def get_available_ip_versions()
|
|
72
|
+
callMethod(non_customer_suffix("routehealthcheckipversion"), :get)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def get_available_health_check_types()
|
|
76
|
+
callMethod(non_customer_suffix("routehealthchecktypes"), :get)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def get_available_health_check_reintegration_methods()
|
|
80
|
+
callMethod(non_customer_suffix("routereintegrationmethodtypes"), :get)
|
|
81
|
+
end
|
|
82
|
+
end
|
data/lib/t.rb
ADDED
data/lib/upload.rb
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require 'net/ftp'
|
|
3
|
+
require_relative 'common.rb'
|
|
4
|
+
|
|
5
|
+
remoteDir = ARGV[0]
|
|
6
|
+
ARGV.shift
|
|
7
|
+
|
|
8
|
+
ftp=Net::FTP.new
|
|
9
|
+
ftp.connect(HOST,21)
|
|
10
|
+
ftp.login(USER,PWD)
|
|
11
|
+
ftp.chdir(remoteDir)
|
|
12
|
+
ARGV.each do |file|
|
|
13
|
+
puts("uploading " + file)
|
|
14
|
+
ftp.putbinaryfile(file)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
ftp.close
|
|
18
|
+
|
data/lib/userInfo.rb
ADDED
data/lib/vzcdn/version.rb
CHANGED
data/lib/vzcdn.rb
CHANGED
|
@@ -1,11 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require_relative 'command_proc'
|
|
3
|
+
require_relative 'clui_config'
|
|
4
|
+
require_relative 'zone'
|
|
2
5
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
class Vzcdn
|
|
7
|
+
include CommandProc
|
|
8
|
+
|
|
9
|
+
def initialize(name)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def zone(args)
|
|
13
|
+
Zone.invoke(args)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def config(args)
|
|
17
|
+
Configure.invoke(args)
|
|
7
18
|
end
|
|
8
19
|
end
|
|
9
|
-
end
|
|
10
20
|
|
|
11
|
-
|
|
21
|
+
args = []
|
|
22
|
+
ARGV.each { |arg|
|
|
23
|
+
args << arg
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
Vzcdn.invoke(args)
|
data/lib/zone.rb
ADDED
data/pkg/vzcdn-0.0.1.gem
ADDED
|
Binary file
|
data/test/test_clui.rb
ADDED
data/vzcdn.gemspec
CHANGED
|
@@ -5,11 +5,11 @@ require 'vzcdn/version'
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |spec|
|
|
7
7
|
spec.name = "vzcdn"
|
|
8
|
-
spec.version =
|
|
8
|
+
spec.version = Vzcdn::VERSION
|
|
9
9
|
spec.authors = ["Steve Preston", "Thomas Goes", "Nitin Khanna"]
|
|
10
10
|
spec.email = ["steven.c.preston@verizon.com", "thomas.goes@verizon.com", "nitin.khanna@verizon.com"]
|
|
11
|
-
spec.summary = %q{
|
|
12
|
-
spec.description = %q{
|
|
11
|
+
spec.summary = %q{Command line UI for Edgecast api.}
|
|
12
|
+
spec.description = %q{Command line UI for Edgecast api.}
|
|
13
13
|
spec.homepage = ""
|
|
14
14
|
spec.license = "MIT"
|
|
15
15
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: vzcdn
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Steve Preston
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2014-03-
|
|
13
|
+
date: 2014-03-28 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: bundler
|
|
@@ -40,7 +40,7 @@ dependencies:
|
|
|
40
40
|
- - ">="
|
|
41
41
|
- !ruby/object:Gem::Version
|
|
42
42
|
version: '0'
|
|
43
|
-
description:
|
|
43
|
+
description: Command line UI for Edgecast api.
|
|
44
44
|
email:
|
|
45
45
|
- steven.c.preston@verizon.com
|
|
46
46
|
- thomas.goes@verizon.com
|
|
@@ -49,14 +49,26 @@ executables: []
|
|
|
49
49
|
extensions: []
|
|
50
50
|
extra_rdoc_files: []
|
|
51
51
|
files:
|
|
52
|
-
- ".gitignore"
|
|
53
52
|
- Gemfile
|
|
54
53
|
- LICENSE.txt
|
|
55
54
|
- README.md
|
|
56
55
|
- Rakefile
|
|
56
|
+
- lib/clui_config.rb
|
|
57
|
+
- lib/command_proc.rb
|
|
58
|
+
- lib/common.rb
|
|
59
|
+
- lib/config_reader.rb
|
|
60
|
+
- lib/mediaManagment.rb
|
|
61
|
+
- lib/realTimeStats.rb
|
|
62
|
+
- lib/reporting.rb
|
|
63
|
+
- lib/route.rb
|
|
64
|
+
- lib/t.rb
|
|
65
|
+
- lib/upload.rb
|
|
66
|
+
- lib/userInfo.rb
|
|
57
67
|
- lib/vzcdn.rb
|
|
58
68
|
- lib/vzcdn/version.rb
|
|
59
|
-
-
|
|
69
|
+
- lib/zone.rb
|
|
70
|
+
- pkg/vzcdn-0.0.1.gem
|
|
71
|
+
- test/test_clui.rb
|
|
60
72
|
- vzcdn.gemspec
|
|
61
73
|
homepage: ''
|
|
62
74
|
licenses:
|
|
@@ -81,5 +93,6 @@ rubyforge_project:
|
|
|
81
93
|
rubygems_version: 2.2.2
|
|
82
94
|
signing_key:
|
|
83
95
|
specification_version: 4
|
|
84
|
-
summary:
|
|
85
|
-
test_files:
|
|
96
|
+
summary: Command line UI for Edgecast api.
|
|
97
|
+
test_files:
|
|
98
|
+
- test/test_clui.rb
|
data/.gitignore
DELETED
data/version.rb
DELETED