File: container.rb

package info (click to toggle)
ruby-gitlab-fog-azure-rm 2.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 1,416 kB
  • sloc: ruby: 10,132; sh: 9; makefile: 4
file content (129 lines) | stat: -rw-r--r-- 7,780 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
require 'fog/azurerm'
require 'yaml'

########################################################################################################################
######################                   Services object required by all actions                  ######################
######################                              Keep it Uncommented!                          ######################
########################################################################################################################

azure_credentials = YAML.load_file(File.expand_path('credentials/azure.yml', __dir__))

########################################################################################################################
######################                               Resource names                                #####################
########################################################################################################################

time = Time.now.to_i
container_name = "con#{time}"
test_container_name = "tcon#{time}"

########################################################################################################################
######################                                 Prerequisites                              ######################
########################################################################################################################

begin
  storage_data = Fog::AzureRM::Storage.new(
    azure_storage_account_name: azure_credentials['azure_storage_account_name'],
    azure_storage_access_key: azure_credentials['azure_storage_access_key'],
    azure_storage_endpoint: azure_credentials['azure_storage_endpoint'],
    environment: azure_credentials['environment']
  )

  ########################################################################################################################
  ######################                             Check Container Exists                         ######################
  ########################################################################################################################

  flag = storage_data.directories.check_container_exists(container_name)
  puts "Container doesn't exist." unless flag

  ########################################################################################################################
  ######################                                Create Container                            ######################
  ########################################################################################################################

  container = storage_data.directories.create(
    key: container_name
  )
  puts "Created container: #{container.key}"

  container2 = storage_data.directories.create(
    key: test_container_name,
    public: true
  )
  puts "Created second container: #{container.key}"

  ########################################################################################################################
  ######################                      List containers                                       ######################
  ########################################################################################################################

  containers = storage_data.directories.all
  puts 'List containers:'
  containers.each do |a_container|
    puts a_container.key
  end

  ########################################################################################################################
  ######################                      Get container acl                                     ######################
  ########################################################################################################################

  container = storage_data.directories.get(container_name, max_results: 1)
  puts "Get container: #{container.key}"
  puts "Get container access control list: #{container.acl}"

  ########################################################################################################################
  ######################                          Update Container                                  ######################
  ########################################################################################################################

  container.acl = 'container'
  container.metadata = { 'owner' => 'azure' }
  container.save(is_create: false)
  puts 'Updated container'

  ########################################################################################################################
  ######################                      Get container acl                                     ######################
  ########################################################################################################################

  puts "Get updated container access control list: #{container.acl}"

  ########################################################################################################################
  ######################                      Get container metadata                                ######################
  ########################################################################################################################

  puts "Get container metadata: #{container.metadata}"

  ########################################################################################################################
  ######################                      Get container public https url                        ######################
  ########################################################################################################################

  puts "Get container public url: #{container.public_url}"

  ########################################################################################################################
  ######################                      Get container public http url                         ######################
  ########################################################################################################################

  puts "Get container public url having scheme http: #{container.public_url(scheme: 'http')}"

  ########################################################################################################################
  ######################                            Lease Container                                 ######################
  ########################################################################################################################

  lease_id_container = storage_data.acquire_container_lease(container_name)
  Fog::Logger.debug lease_id_container
  puts 'Leased Container'

  ########################################################################################################################
  ######################                            Release Leased Container                        ######################
  ########################################################################################################################

  storage_data.release_container_lease(container_name, lease_id_container)
  puts 'Release Leased Container'

  ########################################################################################################################
  ######################                                Deleted Container                           ######################
  ########################################################################################################################

  puts "Deleted container: #{container.destroy}"
rescue => ex
  puts "Integration Test for container is failing: #{ex.inspect}\n#{ex.backtrace.join("\n")}"
  raise
ensure
  container2&.destroy
end