def createComputeTemplateAdvance(novaUrl, token, flavorProps, computeID): address = openstackUtils.parseAddress(novaUrl) url = openstackUtils.parseBaseURL( novaUrl, address) + '/flavors/' + computeID + '/os-extra_specs' putBody = json.dumps({'extra_specs': flavorProps}) headers = {'X-Auth-Token': token} print url print putBody return restUtils.postJSON(address, url, putBody, headers)
def exportImage(cinderUrl, token, image_id, image_name): address = openstackUtils.parseAddress(cinderUrl) url = openstackUtils.parseBaseURL(cinderUrl, address) + '/image-backups/export_image' headers = {'X-Auth-Token': token} print({ 'image-backup': { 'src_image_id': image_id, 'name': 'export_svt_' + image_name, 'description': 'SVT image export' } }) postBody = json.dumps({ 'image-backup': { 'src_image_id': image_id, 'name': 'export_svt_' + image_name, 'description': 'SVT image export' } }) restUtils.postJSON(address, url, postBody, headers)
def unmanage_vol(cinderUrl, token, volume_id, host_name): address = openstackUtils.parseAddress(cinderUrl) url = openstackUtils.parseBaseURL( cinderUrl, address) + '/os-hosts/' + host_name + '/unmanage' print(url) headers = {'X-Auth-Token': token} volProps = {"volumes": [volume_id]} postbody = json.dumps(volProps) print(postbody) registrnRespns, registrnRespnsBodyJSON = restUtils.postJSON( address, url, postbody, headers)
def bulkCreateAttachVolume(novaUrl, token, volumeProps, vm_id): address = openstackUtils.parseAddress(novaUrl) url = SVR_ACT % (openstackUtils.parseBaseURL(novaUrl, address), vm_id) postBody = json.dumps( {'bulkVolumeAttach': { 'volumeAttachment': [volumeProps] }}) headers = {'X-Auth-Token': token} print "Attach Request Details" print address + url print postBody return restUtils.postJSON(address, url, postBody, headers)
def createHost(novaUrl, token, hostProps): reg_key = 'registration' print(reg_key) address = openstackUtils.parseAddress(novaUrl) url = openstackUtils.parseBaseURL(novaUrl, address) + '/os-hosts' postBody = json.dumps({'host': {'registration': hostProps}}) headers = {'X-Auth-Token': token} print(("post body", postBody)) print(url) print(headers) return restUtils.postJSON(address, url, postBody, headers)
def registerHmc(novaUrl, token, hmcProps): ''' This method handles REST POST request register an HMC with PowerVC. Body should contain access_ip, user_id, password, and optionally the hmc_display_name. :param novaUrl: Url for nova :param token: authentication token id :returns: dictionary containing the registration info ''' address = openstackUtils.parseAddress(novaUrl) url = openstackUtils.parseBaseURL(novaUrl, address) + '/ibm-hmcs' putBody = json.dumps({'hmc': {'registration': hmcProps}}) headers = {'X-Auth-Token': token} return restUtils.postJSON(address, url, putBody, headers)
def create_port(token, quantumUrl, network_id, ipaddr, subnet_id): print "Creating port for IP address" address = openstackUtils.parseAddress(quantumUrl) url = openstackUtils.parseBaseURL(quantumUrl, address) + '/v2.0/ports' postBody = json.dumps({ "port": { "network_id": network_id, "fixed_ips": [{ "subnet_id": subnet_id, "ip_address": ipaddr }] } }) headers = {'X-Auth-Token': token} return restUtils.postJSON(address, url, postBody, headers)
def createHost(novaUrl, token, hostProps): #print 'ENTER createHost' """Originally, this did not provide the 'registration' level for 'hostProps', which is inconsistent with both 'registerHmc' and 'updateHmcRegistration'. So, now we provide it if needed. The reason for not just providing it in all cases was concern for legacy code that is already providing the 'registration' level. """ reg_key = 'registration' if reg_key not in hostProps: hostProps = {reg_key: hostProps} address = openstackUtils.parseAddress(novaUrl) url = openstackUtils.parseBaseURL(novaUrl, address) + '/os-hosts' postBody = json.dumps({'host': hostProps}) headers = {'X-Auth-Token': token} return restUtils.postJSON(address, url, postBody, headers)
def svc_reg(cinderUrl, token, svc_host_type, svc_disp_name, svc_access_ip, svc_pool_name, svc_userid, svc_pwd): hostProps = { "host_type": svc_host_type, "access_ip": svc_access_ip, "user_id": svc_userid, "password": svc_pwd, "volume_pool_name": svc_pool_name, "auto_add_host_key": "true", "host_display_name": svc_disp_name, } reg_key = 'Registration' address = openstackUtils.parseAddress(cinderUrl) url = openstackUtils.parseBaseURL(cinderUrl, address) + '/os-hosts' postbody = json.dumps({'host': {'registration': hostProps}}) headers = {'X-Auth-Token': token} registrnRespns, registrnRespnsBodyJSON = restUtils.postJSON( address, url, postbody, headers)
def addSRIOVvNIC(novaUrl, quantumUrl, token, serverid, network_id, ipaddr, subnet_id, sriov_vnic_required_vfs, sriov_capacity): address = openstackUtils.parseAddress(novaUrl) #print "address : ", address port_resp, body_json = get_port(token, quantumUrl) print ipaddr #print len(body_json['ports']) #print body_json['ports'][93]['fixed_ips'][0]['ip_address'] temp = [] port_id = 0 for i in range(len(body_json['ports'])): print i if body_json['ports'][i]['fixed_ips']: ip = body_json['ports'][i]['fixed_ips'][0]['ip_address'] #print ip if ip == ipaddr: port_id = body_json['ports'][i]['id'] print "ip is found" break else: print "port not present" print port_id if port_id == 0: port_resp, bdy_json = create_SRIOV_port(token, quantumUrl, network_id, ipaddr, subnet_id, sriov_vnic_required_vfs, sriov_capacity) port_id = bdy_json['port']['id'] print "Port response", port_resp print "portId", port_id url = openstackUtils.parseBaseURL(novaUrl, address) + \ '/servers/' + serverid + '/os-interface' print "url : ", url postBody = json.dumps({"interfaceAttachment": \ {"port_id": port_id}}) print "postbody:", postBody headers = {'X-Auth-Token': token} return restUtils.postJSON(address, url, postBody, headers)
def create_SRIOV_port(token, quantumUrl, network_id, ipaddr, subnet_id, sriov_vnic_required_vfs, sriov_capacity): print "Creating port for IP address" address = openstackUtils.parseAddress(quantumUrl) url = openstackUtils.parseBaseURL(quantumUrl, address) + '/v2.0/ports' sriov_port_Props = { "name": "powervc_attached", "network_id": network_id, "fixed_ips": [{ "subnet_id": subnet_id, "ip_address": ipaddr }], "binding:vnic_type": "direct", "binding:profile": { "delete_with_instance": 1, "vnic_required_vfs": sriov_vnic_required_vfs, "capacity": sriov_capacity } } postBody = json.dumps({'port': sriov_port_Props}) headers = {'X-Auth-Token': token} return restUtils.postJSON(address, url, postBody, headers)
def virt_fab_reg(cinderUrl, token, fab_access_ip, fabric_disp_name, fabric_type, zoning_policy, fab_userid, fab_passwd, virtual_fabric_id): fabProps = { "access_ip": fab_access_ip, "auto_add_host_key": "true", "fabric_display_name": fabric_disp_name, "fabric_type": fabric_type, "zoning_policy": zoning_policy, "auto_add_certificate": "false", "password": fab_passwd, "user_id": fab_userid, "port": "22", "virtual_fabric_id": virtual_fabric_id, "vsan": virtual_fabric_id } address = openstackUtils.parseAddress(cinderUrl) url = openstackUtils.parseBaseURL(cinderUrl, address) + '/san-fabrics' postbody = json.dumps({'fabric': {'registration': fabProps}}) headers = {'X-Auth-Token': token} registrnRespns, registrnRespnsBodyJSON = restUtils.postJSON( address, url, postbody, headers)
def register_hmc(novaUrl, token, hmc_ip_list, hmc_userid_list, hmc_password_list, hmc_disp_name): hmcProps = { 'access_ip': hmc_ip_list, 'user_id': hmc_userid_list, 'password': hmc_password_list, 'hmc_display_name': hmc_disp_name } print "Registering HMC:", str(hmcProps) print token address = openstackUtils.parseAddress(novaUrl) url = openstackUtils.parseBaseURL(novaUrl, address) + '/ibm-hmcs' putBody = json.dumps({'hmc': {'registration': hmcProps}}) print putBody headers = {'X-Auth-Token': token} registrnRespns, registrnRespnsBodyJSON = restUtils.postJSON( address, url, putBody, headers) print "Registration of HMC response:" return str(registrnRespnsBodyJSON)
def create_scg(token, novaUrl, scg_name, vios1_id, vios2_id): address = openstackUtils.parseAddress(novaUrl) url = openstackUtils.parseBaseURL(novaUrl, address) + '/storage-connectivity-groups' scg_props = { "display_name": scg_name, "fc_storage_access": 'true', "auto_add_vios": 'false', "include_untagged": 'false', "enabled": 'true', "vios_ids": [vios1_id, vios2_id], "exact_redundancy": 'false', "vios_redundancy": "1", "fabric_set_req": "per_vios", "fabric_set_npiv": ["*"], "ports_per_fabric_npiv": "1", "boot_connectivity": ["npiv"], "data_connectivity": ["npiv"], } postBody = json.dumps({'storage_connectivity_group': scg_props}) print(postBody) headers = {'X-Auth-Token': token} return restUtils.postJSON(address, url, postBody, headers)
def unpauseServer(novaUrl, token, server_id, actionProps): address = openstackUtils.parseAddress(novaUrl) url = SVR_ACT % (openstackUtils.parseBaseURL(novaUrl, address), server_id) postBody = json.dumps(actionProps) headers = {'X-Auth-Token': token} return restUtils.postJSON(address, url, postBody, headers)
def SnapshotGenericGroup(cinderUrl, token, connectionProps): address = openstackUtils.parseAddress(cinderUrl) url = openstackUtils.parseBaseURL(cinderUrl, address) + '/group_snapshots' postBody = json.dumps({'group_snapshot': connectionProps}) headers = {'X-Auth-Token': token, 'OpenStack-API-Version': 'volume latest'} return restUtils.postJSON(address, url, postBody, headers)
def registerStorageProvider(cinderUrl, token, volsProps): address = openstackUtils.parseAddress(cinderUrl) url = HOSTS % openstackUtils.parseBaseURL(cinderUrl, address) postBody = json.dumps(volsProps) headers = {'X-Auth-Token': token} return restUtils.postJSON(address, url, postBody, headers)
def attachVolume(novaUrl, token, volumeProps, vm_id): address = openstackUtils.parseAddress(novaUrl) url = ATTCH_VOL % (openstackUtils.parseBaseURL(novaUrl, address), vm_id) postBody = json.dumps({'volumeAttachment': volumeProps}) headers = {'X-Auth-Token': token} return restUtils.postJSON(address, url, postBody, headers)
def createConsistencySnapshots(cinderUrl, token, connectionProps): address = openstackUtils.parseAddress(cinderUrl) url = openstackUtils.parseBaseURL(cinderUrl, address) + '/cgsnapshots' postBody = json.dumps({'cgsnapshot': connectionProps}) headers = {'X-Auth-Token': token} return restUtils.postJSON(address, url, postBody, headers)