def notify(self, app_name, version, description=None, changelog=None): if not self._token: logging.debug('No New Relic api key configured for %s', app_name) return if not app_name: logging.debug('No New Relic app name configured, app is most likely not on NewRelic') return logging.debug("Sending deployment notification to New Relic: %s %s %s %s", app_name, version, description, changelog) try: headers = { 'x-api-key': self._token } data = { 'deployment[app_name]': app_name, 'deployment[revision]': version, 'deployment[description]': description, 'deployment[changelog]': changelog, 'deployment[user]': 'Lighter' } return util.xmlRequest(self._url, method='POST', data=data, headers=headers, contentType='application/x-www-form-urlencoded') except urllib2.URLError as e: logging.warn(str(e)) print traceback.format_exc() return {}
def resolve(self, expression): # If it's not a valid version range expression, assume it's a specific version if not VersionRange.isExpression(expression): return expression # Fetch the available versions for this artifact metadata = util.xmlRequest('{0}/{1}/{2}/maven-metadata.xml'.format(self._url, self._groupid.replace('.', '/'), self._artifactid)) versions = util.toList(util.rget(metadata, 'versioning', 'versions', 'version')) logging.debug('%s:%s candidate versions %s', self._groupid, self._artifactid, versions) # Select the version that best matches the version range expression return self.selectVersion(expression, versions)
def fetch(self, version): if not version.endswith('-SNAPSHOT'): return self._fetch(version) # Try to resolve unique/timestamped snapshot versions from maven-metadata.xml logging.debug('Trying to resolve %s to a unique timestamp-buildnumber version', version) url = '{0}/{1}/{2}/{3}/maven-metadata.xml'.format(self._url, self._groupid.replace('.', '/'), self._artifactid, version) metadata = {} try: metadata = util.xmlRequest(url) except urllib2.URLError, e: logging.debug('Failed to fetch %s', url)
def testGetXml(self): url = 'file:./src/resources/repository/com/meltwater/myservice-snapshot/1.1.1-SNAPSHOT/maven-metadata.xml' actual = util.xmlRequest(url) expected = { 'versioning': { 'snapshot': { 'timestamp': '20151102.035053', 'buildNumber': '8' }, 'lastUpdated': '20151102035120' } } self.assertEquals(actual, expected)
def fetch(self, version): trailer = '-SNAPSHOT' if not version.endswith(trailer): return self._fetch(version) # Try to resolve unique/timestamped snapshot versions from maven-metadata.xml logging.debug('Trying to resolve %s to a unique timestamp-buildnumber version', version) url = '{0}/{1}/{2}/{3}/maven-metadata.xml'.format(self._url, self._groupid.replace('.', '/'), self._artifactid, version) metadata = {} try: metadata = util.xmlRequest(url) except urllib2.URLError: logging.debug('Failed to fetch %s', url) # Find a matching snapshot version (Gradle doesn't create <snapshotVersions> but Maven does) timestamp = util.rget(metadata, 'versioning', 'snapshot', 'timestamp') buildNumber = util.rget(metadata, 'versioning', 'snapshot', 'buildNumber') snapshot = '-'.join(filter(bool, [version[0:len(version) - len(trailer)], timestamp, buildNumber]) ) if (timestamp is not None and buildNumber is not None) else None return self._fetch(version, snapshot, metadata)
def resolve(self, expression): metadata = util.xmlRequest('{0}/{1}/{2}/maven-metadata.xml'.format(self._url, self._groupid.replace('.', '/'), self._artifactid)) versions = util.toList(util.rget(metadata,'versioning','versions','version')) logging.debug('%s:%s candidate versions %s', self._groupid, self._artifactid, versions) return self.selectVersion(expression, versions)