unimatrix-cli 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/README.md +12 -0
- data/Rakefile +6 -0
- data/VERSION +1 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/exe/unimatrix +11 -0
- data/lib/unimatrix_cli.rb +74 -0
- data/lib/unimatrix_cli/alchemist/rendition/list_command.rb +72 -0
- data/lib/unimatrix_cli/alchemist/rendition_profile/assign_command.rb +59 -0
- data/lib/unimatrix_cli/alchemist/rendition_profile/list_command.rb +36 -0
- data/lib/unimatrix_cli/alchemist/video/create_command.rb +40 -0
- data/lib/unimatrix_cli/alchemist/video/describe_command.rb +40 -0
- data/lib/unimatrix_cli/alchemist/video_encoder/create_command.rb +37 -0
- data/lib/unimatrix_cli/alchemist/video_encoder/describe_command.rb +39 -0
- data/lib/unimatrix_cli/alchemist/video_encoder/encode_command.rb +102 -0
- data/lib/unimatrix_cli/alchemist/video_encoder/list_command.rb +35 -0
- data/lib/unimatrix_cli/archivist/blueprint/create_command.rb +94 -0
- data/lib/unimatrix_cli/citadel/app/build_command.rb +28 -0
- data/lib/unimatrix_cli/citadel/app/console_command.rb +17 -0
- data/lib/unimatrix_cli/citadel/app/db_setup_command.rb +17 -0
- data/lib/unimatrix_cli/citadel/app/environment_command.rb +30 -0
- data/lib/unimatrix_cli/citadel/app/logs_command.rb +17 -0
- data/lib/unimatrix_cli/citadel/app/migrate_command.rb +17 -0
- data/lib/unimatrix_cli/citadel/app/migrate_status_command.rb +17 -0
- data/lib/unimatrix_cli/citadel/app/rake_command.rb +18 -0
- data/lib/unimatrix_cli/citadel/app/routes_command.rb +17 -0
- data/lib/unimatrix_cli/citadel/citadel_command.rb +285 -0
- data/lib/unimatrix_cli/citadel/instance/details_command.rb +18 -0
- data/lib/unimatrix_cli/citadel/instance/scp_command.rb +48 -0
- data/lib/unimatrix_cli/citadel/instance/ssh_command.rb +29 -0
- data/lib/unimatrix_cli/citadel/instance/status_command.rb +17 -0
- data/lib/unimatrix_cli/citadel/instance/user_data_command.rb +17 -0
- data/lib/unimatrix_cli/citadel/instance/user_data_logs_command.rb +17 -0
- data/lib/unimatrix_cli/cli.rb +30 -0
- data/lib/unimatrix_cli/command.rb +138 -0
- data/lib/unimatrix_cli/config/acceptance.yml +23 -0
- data/lib/unimatrix_cli/config/configuration.rb +66 -0
- data/lib/unimatrix_cli/config/production.yml +15 -0
- data/lib/unimatrix_cli/config/staging.yml +15 -0
- data/lib/unimatrix_cli/config/unimatrix.rb +4 -0
- data/lib/unimatrix_cli/iris/stream/create_command.rb +43 -0
- data/lib/unimatrix_cli/iris/stream/describe_command.rb +35 -0
- data/lib/unimatrix_cli/iris/stream_encoder/create_command.rb +43 -0
- data/lib/unimatrix_cli/iris/stream_encoder/describe_command.rb +37 -0
- data/lib/unimatrix_cli/iris/stream_input/create_command.rb +43 -0
- data/lib/unimatrix_cli/iris/stream_input/describe_command.rb +37 -0
- data/lib/unimatrix_cli/iris/stream_output/create_command.rb +55 -0
- data/lib/unimatrix_cli/iris/stream_output/describe_command.rb +37 -0
- data/lib/unimatrix_cli/iris/stream_recorder/create_command.rb +49 -0
- data/lib/unimatrix_cli/iris/stream_recorder/describe_command.rb +37 -0
- data/lib/unimatrix_cli/iris/stream_transcriber/create_command.rb +54 -0
- data/lib/unimatrix_cli/iris/stream_transcriber/describe_command.rb +37 -0
- data/lib/unimatrix_cli/iris/stream_transmutator/create_command.rb +65 -0
- data/lib/unimatrix_cli/iris/stream_transmutator/describe_command.rb +38 -0
- data/lib/unimatrix_cli/login_command.rb +91 -0
- data/lib/unimatrix_cli/logout_command.rb +21 -0
- data/lib/unimatrix_cli/version.rb +3 -0
- data/lib/unimatrix_cli/zephyrus/input/create_command.rb +40 -0
- data/lib/unimatrix_cli/zephyrus/input/describe_command.rb +35 -0
- data/lib/unimatrix_cli/zephyrus/input/list_command.rb +38 -0
- data/lib/unimatrix_cli/zephyrus/output/list_command.rb +44 -0
- data/lib/unimatrix_cli/zephyrus/recording/configuration_command.rb +43 -0
- data/lib/unimatrix_cli/zephyrus/rendition/list_command.rb +40 -0
- data/lib/unimatrix_cli/zephyrus/routing/configuration_command.rb +43 -0
- data/lib/unimatrix_cli/zephyrus/transcoding/configuration_command.rb +55 -0
- data/lib/unimatrix_cli/zephyrus/transcribing/configuration_command.rb +55 -0
- data/lib/unimatrix_cli/zephyrus/transmutation/configuration_command.rb +55 -0
- data/lib/unimatrix_parser.rb +796 -0
- data/unimatrix-cli.gemspec +30 -0
- metadata +247 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
module UnimatrixCLI
|
2
|
+
module Alchemist
|
3
|
+
module VideoEncoder
|
4
|
+
class DescribeCommand < Command
|
5
|
+
|
6
|
+
option :realm, "The realm uuid", type: :string, required: true
|
7
|
+
option :video_encoder, "The video_encoder uuid", type: :string, required: true, short: :e
|
8
|
+
|
9
|
+
synopsis "Describe a video_encoder"
|
10
|
+
|
11
|
+
def execute
|
12
|
+
video_encoder = find_video_encoder
|
13
|
+
|
14
|
+
if validate( video_encoder, 'Alchemist::VideoEncoder' )
|
15
|
+
parse_object( video_encoder ).each do | response |
|
16
|
+
write( message: response )
|
17
|
+
end
|
18
|
+
else
|
19
|
+
write(
|
20
|
+
message: "Video Encoder could not be found: #{ video_encoder.inspect }",
|
21
|
+
error: true
|
22
|
+
)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
#----------------------------------------------------------------------------
|
27
|
+
|
28
|
+
private; def find_video_encoder
|
29
|
+
endpoint = "/realms/#{ @options[ :realm ] }/video_encoders"
|
30
|
+
options = {
|
31
|
+
uuid: @options[ :video_encoder ]
|
32
|
+
}
|
33
|
+
|
34
|
+
operation( endpoint, options ).read.first
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
module UnimatrixCLI
|
2
|
+
module Alchemist
|
3
|
+
module VideoEncoder
|
4
|
+
class EncodeCommand < Command
|
5
|
+
|
6
|
+
option :realm, "The realm uuid", type: :string, required: true
|
7
|
+
option :video_encoder, "The video_encoder uuid", type: :string, required: true, short: :e
|
8
|
+
option :video, "The video uuid", type: :string, required: true
|
9
|
+
|
10
|
+
synopsis "Start a video_encoder for a video. The video_encoder will use default " +
|
11
|
+
"rendition_profiles if none are already assigned to it. A list of the " +
|
12
|
+
"rendition_profiles being used to create renditions will be returned."
|
13
|
+
|
14
|
+
def execute
|
15
|
+
video_encoder = query_encoder_for_rendition_profiles
|
16
|
+
if validate( video_encoder, 'Alchemist::VideoEncoder' )
|
17
|
+
rendition_profiles = video_encoder.rendition_profiles
|
18
|
+
|
19
|
+
unless validate_collection( rendition_profiles, 'Alchemist::RenditionProfile' )
|
20
|
+
rendition_profiles = assign_default_rendition_profiles_to_encoder
|
21
|
+
end
|
22
|
+
|
23
|
+
if validate_collection( rendition_profiles, 'Alchemist::RenditionProfile' )
|
24
|
+
video_encoder = assign_video_to_encoder
|
25
|
+
|
26
|
+
if validate( video_encoder, 'Alchemist::VideoEncoder' )
|
27
|
+
video = video_encoder.videos.first
|
28
|
+
|
29
|
+
if validate( video, 'Alchemist::Video' )
|
30
|
+
|
31
|
+
rendition_profiles.map do | rendition_profile |
|
32
|
+
write( message: rendition_profile.uuid )
|
33
|
+
end
|
34
|
+
else
|
35
|
+
write(
|
36
|
+
message: "Error assigning video to video_encoder: #{ video.inspect }",
|
37
|
+
error: true
|
38
|
+
)
|
39
|
+
end
|
40
|
+
else
|
41
|
+
write(
|
42
|
+
message: "Error assigning video to " +
|
43
|
+
"video_encoder: #{ video_encoder.inspect }",
|
44
|
+
error: true
|
45
|
+
)
|
46
|
+
end
|
47
|
+
else
|
48
|
+
write(
|
49
|
+
message: "Error assigning rendition_profiles " +
|
50
|
+
"to video_encoder: #{ rendition_profiles.inspect }",
|
51
|
+
error: true
|
52
|
+
)
|
53
|
+
end
|
54
|
+
else
|
55
|
+
write(
|
56
|
+
message: "Error querying for rendition_profiles. " +
|
57
|
+
"Video Encoder not found: #{ video_encoder.inspect }",
|
58
|
+
error: true
|
59
|
+
)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
#----------------------------------------------------------------------------
|
64
|
+
|
65
|
+
private; def query_encoder_for_rendition_profiles
|
66
|
+
endpoint = "/realms/#{ @options[ :realm ] }/video_encoders"
|
67
|
+
options = {
|
68
|
+
uuid: @options[ :video_encoder ]
|
69
|
+
}
|
70
|
+
|
71
|
+
operation( endpoint, options ).include(
|
72
|
+
'rendition_profiles'
|
73
|
+
).read.first rescue nil
|
74
|
+
end
|
75
|
+
|
76
|
+
private; def assign_default_rendition_profiles_to_encoder
|
77
|
+
endpoint = "/realms/#{ @options[ :realm ] }/video_encoders/" +
|
78
|
+
"#{ @options[ :video_encoder ] }/rendition_profiles"
|
79
|
+
|
80
|
+
uuids = Configuration.default_config[ 'rendition_profile_uuids' ]
|
81
|
+
|
82
|
+
rendition_profiles = uuids.map do | uuid |
|
83
|
+
Unimatrix::Alchemist::RenditionProfile.new( uuid: uuid )
|
84
|
+
end
|
85
|
+
|
86
|
+
operation( endpoint ).write(
|
87
|
+
'rendition_profiles', rendition_profiles
|
88
|
+
).first rescue nil
|
89
|
+
end
|
90
|
+
|
91
|
+
private; def assign_video_to_encoder
|
92
|
+
endpoint = "/realms/#{ @options[ :realm ] }/video_encoders/" +
|
93
|
+
"#{ @options[ :video_encoder ] }/videos"
|
94
|
+
|
95
|
+
video = Unimatrix::Alchemist::Video.new( uuid: @options[ :video ] )
|
96
|
+
|
97
|
+
operation( endpoint ).write( 'videos', video ).first rescue nil
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module UnimatrixCLI
|
2
|
+
module Alchemist
|
3
|
+
module VideoEncoder
|
4
|
+
class ListCommand < Command
|
5
|
+
|
6
|
+
option :realm, "The realm uuid", type: :string, required: true
|
7
|
+
|
8
|
+
synopsis "List all the video_encoders for the specified realm"
|
9
|
+
|
10
|
+
def execute
|
11
|
+
video_encoders = find_video_encoders
|
12
|
+
|
13
|
+
if validate_collection( video_encoders, 'Alchemist::VideoEncoder' )
|
14
|
+
video_encoders.each do | video_encoder |
|
15
|
+
write( message: video_encoder.uuid )
|
16
|
+
end
|
17
|
+
else
|
18
|
+
write(
|
19
|
+
message: "No video_encoders found: #{ video_encoders.inspect }",
|
20
|
+
error: true
|
21
|
+
)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
#----------------------------------------------------------------------------
|
26
|
+
|
27
|
+
private; def find_video_encoders
|
28
|
+
endpoint = "/realms/#{ @options[ :realm ] }/video_encoders"
|
29
|
+
|
30
|
+
operation( endpoint ).read
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
module UnimatrixCLI
|
2
|
+
module Archivist
|
3
|
+
module Blueprint
|
4
|
+
class CreateCommand < Command
|
5
|
+
|
6
|
+
option :realm, "Realm uuid where the blueprint belongs", type: :string, required: true
|
7
|
+
option :file, "Path to file describing blueprints", type: :string, required: true
|
8
|
+
|
9
|
+
synopsis "Create a new blueprint"
|
10
|
+
|
11
|
+
def execute
|
12
|
+
contents = read_file( @options[ :file ] )
|
13
|
+
|
14
|
+
if contents.respond_to?( :each )
|
15
|
+
|
16
|
+
requests = build_requests( contents )
|
17
|
+
|
18
|
+
blueprint_response = make_resource_request( requests[ :blueprints ], 'blueprints' )
|
19
|
+
|
20
|
+
if blueprint_response[ 'errors' ].nil?
|
21
|
+
|
22
|
+
requests[ :blueprint_attributes ] = attach_blueprint_ids_to_attributes(
|
23
|
+
blueprint_response[ 'blueprints' ],
|
24
|
+
requests[ :blueprint_attributes ]
|
25
|
+
)
|
26
|
+
|
27
|
+
blueprint_attribute_response =
|
28
|
+
make_resource_request( requests[ :blueprint_attributes ], 'blueprint_attributes' )
|
29
|
+
|
30
|
+
if blueprint_attribute_response[ 'errors' ].nil?
|
31
|
+
|
32
|
+
write( message: "Success! To verify, in your browser, visit:\n" +
|
33
|
+
"#{ Configuration.default_config[ 'archivist_url' ] }/realms" +
|
34
|
+
"/#{ @options[ :realm ] }/blueprints/" +
|
35
|
+
"?access_token=#{ Configuration.access_token }&" +
|
36
|
+
"include[blueprint_attributes]=true" )
|
37
|
+
|
38
|
+
else
|
39
|
+
write( message: "Error creating blueprint_attributes: " +
|
40
|
+
"#{ blueprint_attribute_response[ 'errors' ].inspect }", error: true )
|
41
|
+
end
|
42
|
+
else
|
43
|
+
write( message: "Error creating blueprint: " +
|
44
|
+
"#{ blueprint_response[ 'errors' ].inspect }", error: true )
|
45
|
+
end
|
46
|
+
else
|
47
|
+
write( message: "File empty or not correctly formatted", error: true )
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
#----------------------------------------------------------------------------
|
52
|
+
|
53
|
+
private; def build_requests( file_contents )
|
54
|
+
requests = { blueprints: [], blueprint_attributes: {} }
|
55
|
+
|
56
|
+
file_contents.each do | blueprint |
|
57
|
+
requests[ :blueprints ].push( blueprint.reject{ | key | key == 'attributes' } )
|
58
|
+
|
59
|
+
if requests[ :blueprint_attributes ][ blueprint[ 'name' ] ].nil?
|
60
|
+
requests[ :blueprint_attributes ][ blueprint[ 'name' ] ] = []
|
61
|
+
end
|
62
|
+
|
63
|
+
blueprint[ 'attributes' ].each do | attribute_set |
|
64
|
+
requests[ :blueprint_attributes ][ blueprint[ 'name' ] ].push( attribute_set )
|
65
|
+
end
|
66
|
+
end
|
67
|
+
requests
|
68
|
+
end
|
69
|
+
|
70
|
+
private; def make_resource_request( request_body, resource )
|
71
|
+
endpoint = "#{ Configuration.default_config[ 'archivist_url' ] }/" +
|
72
|
+
"realms/#{ @options[ :realm ] }/#{ resource }/" +
|
73
|
+
"?access_token=#{ Configuration.access_token }"
|
74
|
+
|
75
|
+
body = { "#{ resource }": request_body }
|
76
|
+
|
77
|
+
make_request( endpoint, 'Post', body )
|
78
|
+
end
|
79
|
+
|
80
|
+
private; def attach_blueprint_ids_to_attributes ( blueprints, attributes )
|
81
|
+
blueprint_attribute_requests = []
|
82
|
+
|
83
|
+
blueprints.each do | blueprint |
|
84
|
+
attributes[ blueprint[ 'name' ] ].each do | attribute |
|
85
|
+
attribute[ 'blueprint_uuid' ] = blueprint[ 'uuid' ]
|
86
|
+
blueprint_attribute_requests.push( attribute )
|
87
|
+
end
|
88
|
+
end
|
89
|
+
blueprint_attribute_requests
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module UnimatrixCLI
|
2
|
+
module Citadel
|
3
|
+
module App
|
4
|
+
class BuildCommand < CitadelCommand
|
5
|
+
|
6
|
+
option :builder, "Keyword for the name of the build server", type: :string, required: true
|
7
|
+
option :app, "Keyword for the name of the app to build", type: :string, required: true
|
8
|
+
option :branch, "The recipe or branch to build from (optional)", type: :string
|
9
|
+
|
10
|
+
synopsis "Build a package of the specified app"
|
11
|
+
|
12
|
+
def execute
|
13
|
+
if load_environment
|
14
|
+
execute_build
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
#----------------------------------------------------------------------------
|
19
|
+
|
20
|
+
def execute_build
|
21
|
+
command = base_command + " -t do_it #{ @options[ :builder ] } " +
|
22
|
+
"#{ @options[ :app ] } #{ @options[ :branch ] }"
|
23
|
+
system( command )
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module UnimatrixCLI
|
2
|
+
module Citadel
|
3
|
+
module App
|
4
|
+
class ConsoleCommand < CitadelCommand
|
5
|
+
|
6
|
+
option :app, "Keyword for the name of the app", type: :string, required: true
|
7
|
+
|
8
|
+
synopsis "Enter the console on a Rails-based API instance"
|
9
|
+
|
10
|
+
def execute
|
11
|
+
super
|
12
|
+
execute_command( 'console' )
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module UnimatrixCLI
|
2
|
+
module Citadel
|
3
|
+
module App
|
4
|
+
class DbSetupCommand < CitadelCommand
|
5
|
+
|
6
|
+
option :app, "Keyword for the name of the app", type: :string, required: true
|
7
|
+
|
8
|
+
synopsis "Set up the database on a Rails-based API instance"
|
9
|
+
|
10
|
+
def execute
|
11
|
+
super
|
12
|
+
execute_command( 'db:setup' )
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module UnimatrixCLI
|
2
|
+
module Citadel
|
3
|
+
module App
|
4
|
+
class EnvironmentCommand < CitadelCommand
|
5
|
+
|
6
|
+
option :app, "Keyword for the name of the app", type: :string, required: true
|
7
|
+
option :set, "Set env variables in the format KEY=value", type: :string
|
8
|
+
option :unset, "Remove env variables in the format KEY=value", type: :string
|
9
|
+
|
10
|
+
synopsis "Display or change environment variables"
|
11
|
+
|
12
|
+
def execute
|
13
|
+
super
|
14
|
+
|
15
|
+
if @options[ :set ]
|
16
|
+
@options[ :commands ] = "set '#{ @options[ :set ] }'"
|
17
|
+
elsif @options[ :unset ]
|
18
|
+
@options[ :commands ] = "unset '#{ @options[ :unset ] }'"
|
19
|
+
end
|
20
|
+
|
21
|
+
if @options[ :commands ]
|
22
|
+
execute_command( 'environment' )
|
23
|
+
else
|
24
|
+
execute_tunnel( 'cat /etc/environment' )
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module UnimatrixCLI
|
2
|
+
module Citadel
|
3
|
+
module App
|
4
|
+
class LogsCommand < CitadelCommand
|
5
|
+
|
6
|
+
option :app, "Keyword for the name of the app", type: :string, required: true
|
7
|
+
|
8
|
+
synopsis "Tail logs on the specified app"
|
9
|
+
|
10
|
+
def execute
|
11
|
+
super
|
12
|
+
execute_command( 'logs' )
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module UnimatrixCLI
|
2
|
+
module Citadel
|
3
|
+
module App
|
4
|
+
class MigrateCommand < CitadelCommand
|
5
|
+
|
6
|
+
option :app, "Keyword for the name of the app", type: :string, required: true
|
7
|
+
|
8
|
+
synopsis "Migrate the database on a Rails-based API instance"
|
9
|
+
|
10
|
+
def execute
|
11
|
+
super
|
12
|
+
execute_command( 'migrate' )
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module UnimatrixCLI
|
2
|
+
module Citadel
|
3
|
+
module App
|
4
|
+
class MigrateStatusCommand < CitadelCommand
|
5
|
+
|
6
|
+
option :app, "Keyword for the name of the app", type: :string, required: true
|
7
|
+
|
8
|
+
synopsis "Check database migration status on a Rails-based API instance"
|
9
|
+
|
10
|
+
def execute
|
11
|
+
super
|
12
|
+
execute_command( 'migrate:status' )
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module UnimatrixCLI
|
2
|
+
module Citadel
|
3
|
+
module App
|
4
|
+
class RakeCommand < CitadelCommand
|
5
|
+
|
6
|
+
option :app, "Keyword for the name of the app", type: :string, required: true
|
7
|
+
option :commands, "The rake task commands", type: :string
|
8
|
+
|
9
|
+
synopsis "Run a rake task on a Rails-based API instance"
|
10
|
+
|
11
|
+
def execute
|
12
|
+
super
|
13
|
+
execute_command( 'rake' )
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|