def execute(self): sfdc_client = config.sfdc_client empty_package_xml = util.get_empty_package_xml_contents() tmp, tmp_unpackaged = util.put_tmp_directory_on_disk(True) util.put_empty_package_xml_in_directory(tmp_unpackaged, empty_package_xml) zip_file = util.zip_directory(tmp, tmp) deploy_params = { "zip_file" : zip_file, "rollback_on_error" : True, "ret_xml" : True, "classes" : self.params.get('classes', []), "debug_categories" : self.params.get('debug_categories', []) } deploy_result = sfdc_client.deploy(deploy_params,is_test=True) #debug(deploy_result) d = xmltodict.parse(deploy_result,postprocessor=util.xmltodict_postprocessor) if int(float(util.SFDC_API_VERSION)) >= 29: result = d["soapenv:Envelope"]["soapenv:Body"]['checkDeployStatusResponse']['result']['details']['runTestResult'] else: result = d["soapenv:Envelope"]["soapenv:Body"]['checkDeployStatusResponse']['result']['runTestResult'] try: result['log'] = d["soapenv:Envelope"]["soapenv:Header"]["DebuggingInfo"]["debugLog"] except: result['log'] = 'Log not available.' shutil.rmtree(tmp) if self.args.respond_with_html: html = util.generate_html_response(self.args.operation, result, self.params) return util.generate_success_response(html, "html") else: return result
def execute(self): sfdc_client = config.sfdc_client empty_package_xml = util.get_empty_package_xml_contents() tmp, tmp_unpackaged = util.put_tmp_directory_on_disk(True) util.put_empty_package_xml_in_directory(tmp_unpackaged, empty_package_xml) zip_file = util.zip_directory(tmp, tmp) deploy_params = { "zip_file": zip_file, "rollback_on_error": True, "ret_xml": True, "classes": self.params.get('classes', []), "debug_categories": self.params.get('debug_categories', []) } deploy_result = sfdc_client.deploy(deploy_params, is_test=True) #debug(deploy_result) d = xmltodict.parse(deploy_result, postprocessor=util.xmltodict_postprocessor) if int(float(util.SFDC_API_VERSION)) >= 29: result = d["soapenv:Envelope"]["soapenv:Body"][ 'checkDeployStatusResponse']['result']['details'][ 'runTestResult'] else: result = d["soapenv:Envelope"]["soapenv:Body"][ 'checkDeployStatusResponse']['result']['runTestResult'] try: result['log'] = d["soapenv:Envelope"]["soapenv:Header"][ "DebuggingInfo"]["debugLog"] except: result['log'] = 'Log not available.' shutil.rmtree(tmp) if self.args.respond_with_html: html = util.generate_html_response(self.args.operation, result, self.params) return util.generate_success_response(html, "html") else: return result
def execute(self): project = config.project sfdc_client = config.sfdc_client files = self.params.get('files', None) for f in files: if '-meta.xml' in f: corresponding_file = f.split('-meta.xml')[0] if corresponding_file not in files: files.append(corresponding_file) for f in files: if '-meta.xml' in f: continue file_ext = f.split('.')[-1] metadata_type = util.get_meta_type_by_suffix(file_ext) if metadata_type['metaFile'] == True: corresponding_file = f + '-meta.xml' if corresponding_file not in files: files.append(corresponding_file) metadata_package_dict = util.get_metadata_hash(files) tmp, tmp_unpackaged = util.put_tmp_directory_on_disk(True) package_xml = util.get_package_xml_contents(metadata_package_dict) util.put_package_xml_in_directory(tmp_unpackaged, package_xml, True) empty_package_xml = util.get_empty_package_xml_contents() util.put_empty_package_xml_in_directory(tmp_unpackaged, empty_package_xml) zip_file = util.zip_directory(tmp, tmp) purge_on_delete_setting = config.connection.get_plugin_client_setting("mm_purge_on_delete", False); if purge_on_delete_setting: describe_result = config.sfdc_client.describeMetadata(retXml=False) if describe_result.testRequired == True: purge_on_delete_setting = False deploy_params = { "zip_file" : zip_file, "rollback_on_error" : True, "ret_xml" : True, "purge_on_delete" : purge_on_delete_setting } delete_result = sfdc_client.delete(deploy_params) d = xmltodict.parse(delete_result,postprocessor=util.xmltodict_postprocessor) shutil.rmtree(tmp) result = d["soapenv:Envelope"]["soapenv:Body"]['checkDeployStatusResponse']['result'] if result['success'] == True: removed = [] for f in files: try: file_ext = f.split('.')[-1] metadata_type = util.get_meta_type_by_suffix(file_ext) if metadata_type == None or not 'directoryName' in metadata_type: continue; directory = metadata_type['directoryName'] filepath = os.path.join(project.location, "src", directory, f) metapath = os.path.join(project.location, "src", directory, f + '-meta.xml') os.remove(filepath) os.remove(metapath) # remove the entry in file properties project.conflict_manager.remove_from_local_store(f) removed.append(f) except Exception, e: print e.message return util.generate_success_response("Removed metadata files: " + (",".join(removed)))