|
22 | 22 | ### |
23 | 23 |
|
24 | 24 | from pprint import pprint |
25 | | -import re |
26 | | -from hpOneView.oneview_client import OneViewClient |
27 | 25 | from hpOneView.exceptions import HPOneViewException |
| 26 | +from hpOneView.oneview_client import OneViewClient |
28 | 27 | from config_loader import try_load_from_file |
29 | 28 |
|
30 | 29 | config = { |
|
39 | 38 | config = try_load_from_file(config) |
40 | 39 |
|
41 | 40 | options = { |
42 | | - "ip_hostname": config['storage_system_hostname'], |
| 41 | + "hostname": config['storage_system_hostname'], |
43 | 42 | "username": config['storage_system_username'], |
44 | | - "password": config['storage_system_password'] |
| 43 | + "password": config['storage_system_password'], |
| 44 | + "family": config['storage_system_family'] |
45 | 45 | } |
46 | 46 |
|
47 | 47 | oneview_client = OneViewClient(config) |
48 | 48 |
|
49 | 49 | # Add and update storage system for management |
50 | | -storage_system = oneview_client.storage_systems.add(options) |
51 | | -print("\nAdded storage system '%s'.\n uri = '%s'" % |
52 | | - (storage_system['name'], storage_system['uri'])) |
53 | | -storage_system['managedDomain'] = storage_system['unmanagedDomains'][0] |
54 | | -storage_system = oneview_client.storage_systems.update(storage_system) |
55 | | -print("\nUpdated 'managedDomain' to '{}' so storage system can be managed".format( |
56 | | - storage_system['managedDomain'])) |
57 | | - |
58 | | - |
59 | | -# Add storage pool to be managed |
60 | 50 | try: |
61 | | - print("\nAdd first storage pool from unmanaged storage pools to be managed") |
62 | | - for pool in storage_system['unmanagedPools']: |
63 | | - if pool['domain'] == storage_system['managedDomain']: |
| 51 | + storage_system = oneview_client.storage_systems.add(options) |
| 52 | + print("\nAdded storage system '%s'.\n uri = '%s'" % |
| 53 | + (storage_system['name'], storage_system['uri'])) |
| 54 | +except HPOneViewException as e: |
| 55 | + storage_system = oneview_client.storage_systems.get_by_hostname(options['hostname']) |
| 56 | + if storage_system: |
| 57 | + print("\nStorage system '%s' was already added.\n uri = '%s'" % |
| 58 | + (storage_system['name'], storage_system['uri'])) |
| 59 | + else: |
| 60 | + print(e.msg) |
| 61 | + |
| 62 | +# Adds managed domains and managed pools to StoreServ storage systems |
| 63 | +# This is a one-time only action, after this you cannot change the managed values |
| 64 | +if not storage_system['deviceSpecificAttributes']['managedDomain']: |
| 65 | + storage_system['deviceSpecificAttributes']['managedDomain'] = storage_system[ |
| 66 | + 'deviceSpecificAttributes']['discoveredDomains'][0] |
| 67 | + for pool in storage_system['deviceSpecificAttributes']['discoveredPools']: |
| 68 | + if pool['domain'] == storage_system['deviceSpecificAttributes']['managedDomain']: |
64 | 69 | pool_to_manage = pool |
| 70 | + storage_system['deviceSpecificAttributes']['discoveredPools'].remove(pool) |
| 71 | + pprint(pool_to_manage) |
65 | 72 | break |
66 | | - storage_system['managedPools'] = [{ |
67 | | - "type": pool_to_manage['type'], |
68 | | - "domain": pool_to_manage['type'], |
69 | | - "name": pool_to_manage['name'], |
70 | | - "deviceType": pool_to_manage['deviceType'] |
71 | | - }] |
72 | | - storage_system = oneview_client.storage_systems.update( |
73 | | - storage_system) |
74 | | - print("\nManaged storage pool '{}' at uri: '{}'".format(storage_system[ |
75 | | - 'managedPools'][0]['name'], storage_system['managedPools'][0]['uri'])) |
76 | | -except HPOneViewException as e: |
77 | | - print(e.msg) |
| 73 | + storage_system['deviceSpecificAttributes']['managedPools'] = [pool_to_manage] |
| 74 | + oneview_client.storage_systems.update(storage_system) |
| 75 | + print("\nUpdated 'managedDomain' to '{}' so storage system can be managed".format( |
| 76 | + storage_system['deviceSpecificAttributes']['managedDomain'])) |
| 77 | + print("\nManaged storage pool '{}' at uri: '{}'".format(storage_system['deviceSpecificAttributes'][ |
| 78 | + 'managedPools'][0]['name'], storage_system['deviceSpecificAttributes']['managedPools'][0]['uuid'])) |
78 | 79 |
|
79 | 80 | # Get all managed storage systems |
80 | 81 | print("\nGet all managed storage systems") |
81 | 82 | storage_systems_all = oneview_client.storage_systems.get_all() |
82 | 83 | for ss in storage_systems_all: |
83 | 84 | print(" '{}' at uri: '{}'".format(ss['name'], ss['uri'])) |
84 | 85 |
|
85 | | -# Get maximum of 5 storage systems which belong to model of type 'HP_3PAR |
86 | | -# 7200', sorted by freeCapacity in descending order. |
| 86 | +# Get maximum of 5 storage systems which belong to family of type 'StoreServ', |
| 87 | +# sorted by freeCapacity in descending order. |
87 | 88 | print( |
88 | | - "Get maximum of 5 storage systems which belong to model of type 'HP_3PAR 7200,' sorted by freeCapacity in " |
| 89 | + "Get maximum of 5 storage systems which belong to family of type StoreServ, sorted by freeCapacity in " |
89 | 90 | "descending order.") |
90 | | -filter = 'model=HP_3PAR 7200' |
| 91 | +filter = 'family=StoreServ' |
91 | 92 | storage_systems_filtered = oneview_client.storage_systems.get_all( |
92 | | - 0, 5, filter="\"'name'='ThreePAR7200-5718'\"", sort='freeCapacity:desc') |
| 93 | + 0, 5, filter="\"'family'='StoreServ'\"", sort='freeCapacity:desc') |
93 | 94 | for ss in storage_systems_filtered: |
94 | 95 | print(" '{}' at uri: '{}'".format(ss['name'], ss['uri'])) |
95 | 96 | if not storage_systems_filtered: |
|
114 | 115 | except HPOneViewException as e: |
115 | 116 | print(e.msg) |
116 | 117 |
|
117 | | -# Add managed ports |
118 | | -ports_to_manage = [] |
119 | | -for port in storage_system['unmanagedPorts']: |
120 | | - if port['actualNetworkSanUri'] != "unknown": |
121 | | - port_to_manage = { |
122 | | - "type": port['type'], |
123 | | - "name": port['name'], |
124 | | - "portName": port['portName'], |
125 | | - "portWwn": port['portWwn'], |
126 | | - "expectedNetworkUri": port['actualNetworkSanUri'], |
127 | | - "actualNetworkUri": port['actualNetworkUri'], |
128 | | - "actualNetworkSanUri": port['actualNetworkUri'], |
129 | | - "groupName": port['groupName'], |
130 | | - "protocolType": port['protocolType'], |
131 | | - "label": port['label'] |
132 | | - } |
133 | | - ports_to_manage.append(port_to_manage) |
134 | | -storage_system['managedPorts'] = ports_to_manage |
135 | | -storage_system = oneview_client.storage_systems.update(storage_system) |
136 | | -print("\nSuccessfully added ports to be managed") |
| 118 | +print("\nGet all reachable storage ports which are managed by the storage system") |
| 119 | +reachable_ports = oneview_client.storage_systems.get_reachable_ports(storage_system['uri']) |
| 120 | +pprint(reachable_ports) |
137 | 121 |
|
138 | | -# Get managed ports for specified storage system |
139 | | -print("\nGet all managed ports for storage system at uri '{}'".format( |
140 | | - storage_system['uri'])) |
141 | | -managed_ports = oneview_client.storage_systems.get_managed_ports( |
142 | | - storage_system['uri']) |
143 | | -for port in managed_ports['members']: |
144 | | - print(" '{}' at uri: {}".format(port['name'], port['uri'])) |
145 | | - |
146 | | -# Get managed target port for specified storage system |
147 | | -print("\nGet managed port by uri") |
148 | | -managed_port_by_uri = oneview_client.storage_systems.get_managed_ports( |
149 | | - storage_system['uri'], storage_system['managedPorts'][0]['uri']) |
150 | | -print(" '{}' at uri: {}".format( |
151 | | - managed_port_by_uri['name'], managed_port_by_uri['uri'])) |
152 | | - |
153 | | -# Get managed target port for specified storage system by id |
154 | | -try: |
155 | | - port_id = re.sub("/rest/storage-systems/TXQ1010307/managedPorts/", |
156 | | - '', storage_system['managedPorts'][0]['uri']) |
157 | | - print("\nGet managed port by id: '{}'".format(port_id)) |
158 | | - managed_port_by_id = oneview_client.storage_systems.get_managed_ports( |
159 | | - 'TXQ1010307', port_id) |
160 | | - print(" '{}' at uri: {}".format( |
161 | | - managed_port_by_id['name'], managed_port_by_id['uri'])) |
162 | | -except HPOneViewException as e: |
163 | | - print(e.msg) |
| 122 | +print("\nGet templates related to a storage system") |
| 123 | +templates = oneview_client.storage_systems.get_templates(storage_system['uri']) |
| 124 | +pprint(templates) |
164 | 125 |
|
165 | 126 | # Remove storage system |
166 | 127 | print("\nRemove storage system") |
|
0 commit comments