Coder Social home page Coder Social logo

newrelic / nr1-integrations-manager Goto Github PK

View Code? Open in Web Editor NEW
5.0 30.0 9.0 15.05 MB

NR1 Integrations Manager allows you to reduce the effort to create, manage and deploy new integrations.

Home Page: https://discuss.newrelic.com/t/flex-manager-nerdpack/83346

License: Apache License 2.0

JavaScript 78.98% CSS 11.95% Dockerfile 0.18% SCSS 8.89%
flex integrations nerdpack nr1 newrelic nr1-flex-manager flex-manager nrlabs oxp nrlabs-viz

nr1-integrations-manager's Introduction

New Relic One Catalog Project header

Integrations Manager (nr1-integrations-manager)

Formly Flex Manager

CI GitHub release (latest SemVer including pre-releases) Snyk

Usage

Use the Integrations Manager to simplify the work of deploying first class product integrations, and developing and deploying new integrations that are built using Flex.

Flex is an agnostic, all-in-one integration that makes sending data to New Relic from third party sources easier than ever.

Screenshot

Open Source License

This project is distributed under the Apache 2 license.

Dependencies

Requires New Relic Infrastructure.

Getting started

First, ensure that you have Git and NPM installed. If you're unsure whether you have one or both of them installed, run the following command(s) (If you have them installed these commands will return a version number, if not, the commands won't be recognized):

git --version
npm -v

Next, clone this repository and run the following scripts:

nr1 nerdpack:clone -r https://github.com/newrelic/nr1-integrations-manager.git
cd nr1-integrations-manager
nr1 nerdpack:uuid -gf
npm install
npm start

Visit https://one.newrelic.com/?nerdpacks=local, navigate to the Nerdpack, and โœจ

Deploying this Nerdpack

Open a command prompt in the nerdpack's directory and run the following commands.

# this is to create a new uuid for the nerdpack so that you can deploy it to your account
nr1 nerdpack:uuid -g [--profile=your_profile_name]
# to see a list of APIkeys / profiles available in your development environment, run nr1 credentials:list
nr1 nerdpack:publish [--profile=your_profile_name]
nr1 nerdpack:deploy [-c [DEV|BETA|STABLE]] [--profile=your_profile_name]
nr1 nerdpack:subscribe [-c [DEV|BETA|STABLE]] [--profile=your_profile_name]

Visit https://one.newrelic.com, navigate to the Nerdpack, and โœจ

Community Support

New Relic hosts and moderates an online forum where you can interact with New Relic employees as well as other customers to get help and share best practices. Like all New Relic open source community projects, there's a related topic in the New Relic Explorers Hub. You can find this project's topic/threads here:

https://discuss.newrelic.com/t/flex-manager-nerdpack/83346

Please do not report issues with the Integrations Manager to New Relic Global Technical Support. Instead, visit the Explorers Hub for troubleshooting and best-practices.

Issues / Enhancement Requests

Issues and enhancement requests can be submitted in the Issues tab of this repository. Please search for and review the existing open issues before submitting a new issue.

Security

As noted in our security policy, New Relic is committed to the privacy and security of our customers and their data. We believe that providing coordinated disclosure by security researchers and engaging with the security community are important means to achieve our security goals. If you believe you have found a security vulnerability in this project or any of New Relic's products or websites, we welcome and greatly appreciate you reporting it to New Relic through HackerOne.

Contributing

Contributions are welcome (and if you submit a Enhancement Request, expect to be invited to contribute it yourself ๐Ÿ˜). Please review our Contributors Guide.

Keep in mind that when you submit your pull request, you'll need to sign the CLA via the click-through using CLA-Assistant. If you'd like to execute our corporate CLA, or if you have any questions, please drop us an email at [email protected].

nr1-integrations-manager's People

Contributors

aswanson-nr avatar austin-schaefer avatar danielgolden avatar devfreddy avatar jaesius avatar jbeveland27 avatar kav91 avatar lizbaker avatar michellosier avatar moonlight-komorebi avatar nr-mlosier avatar nr-opensource-bot avatar prototypicalpro avatar rudouglas avatar semantic-release-bot avatar snyk-bot avatar tabathadelane avatar tyreer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nr1-integrations-manager's Issues

[Repolinter] Open Source Policy Issues

Repolinter Report

๐Ÿค–This issue was automatically generated by repolinter-action, developed by the Open Source and Developer Advocacy team at New Relic. This issue will be automatically updated or closed when changes are pushed. If you have any problems with this tool, please feel free to open a GitHub issue or give us a ping in #help-opensource.

This Repolinter run generated the following results:

โ— Error โŒ Fail โš ๏ธ Warn โœ… Pass Ignored Total
0 1 0 12 0 13

Fail #

โŒ code-of-conduct-file-does-not-exist #

New Relic has moved the CODE_OF_CONDUCT file to a centralized location where it is referenced automatically by every repository in the New Relic organization. Because of this change, any other CODE_OF_CONDUCT file in a repository is now redundant and should be removed. For more information please visit https://docs.google.com/document/d/1y644Pwi82kasNP5VPVjDV8rsmkBKclQVHFkz8pwRUtE/view. Found files. Below is a list of files or patterns that failed:

  • CODE_OF_CONDUCT.md
    • ๐Ÿ”จ Suggested Fix: Remove file

Passed #

Click to see rules

โœ… license-file-exists #

Found file (LICENSE). New Relic requires that all open source projects have an associated license contained within the project. This license must be permissive (e.g. non-viral or copyleft), and we recommend Apache 2.0 for most use cases. For more information please visit https://docs.google.com/document/d/1vML4aY_czsY0URu2yiP3xLAKYufNrKsc7o4kjuegpDw/edit.

โœ… readme-file-exists #

Found file (README.md). New Relic requires a README file in all projects. This README should give a general overview of the project, and should point to additional resources (security, contributing, etc.) where developers and users can learn further. For more information please visit https://github.com/newrelic/open-source-tools/tree/master/javascript/oss-template.

โœ… readme-starts-with-nr1-catalog-header #

The first 1 lines contain all of the requested patterns. (README.md). The README of a community plus project should have a NR1 Catalog header at the start of the README. If you already have a NR1 Catalog header and this rule is failing, your header may be out of date, and you should update your header with the suggested one below. For more information please visit https://opensource.newrelic.com/oss-category/.

โœ… readme-contains-security-section #

Contains a security section (README.md). New Relic recommends having a Security section in your README to address concerns such as vulnerability reporting. This security section should also contain a link to the security policy (found under the "Security" tab of the repository). For an example of this section, please see the NR1 Catalog Template. For more information please visit https://nerdlife.datanerd.us/new-relic/security-guidelines-for-publishing-source-code.

โœ… readme-contains-link-to-security-policy #

Contains a link to the security policy for this repository (README.md). New Relic recommends referencing the open source security policy (https://github.com/newrelic/<repo-name>/security/policy or ../../security/policy) in a Security section in the README. For an example of this, please see the NR1 Catalog Template. For more information please visit https://nerdlife.datanerd.us/new-relic/security-guidelines-for-publishing-source-code.

โœ… readme-contains-discuss-topic #

Contains a link to the appropriate discuss.newrelic.com topic (README.md). New Relic recommends directly linking the your appropriate discuss.newrelic.com topic in the README, allowing developer an alternate method of getting support. For more information please visit https://nerdlife.datanerd.us/new-relic/security-guidelines-for-publishing-source-code.

โœ… third-party-notices-file-exists #

Found file (THIRD_PARTY_NOTICES.md). A THIRD_PARTY_NOTICES.md file must be present to grant attribution to all dependencies being used by this project. For JavaScript projects, you can generate this file using the oss-cli. For more information please visit https://docs.google.com/document/d/1y644Pwi82kasNP5VPVjDV8rsmkBKclQVHFkz8pwRUtE/view.

โœ… github-actions-workflow-file-exists #

Found file (.github/workflows/catalog.yml). Any Community Plus project must integrate with GitHub actions. For more information please visit https://docs.google.com/document/d/1y644Pwi82kasNP5VPVjDV8rsmkBKclQVHFkz8pwRUtE/view.

โœ… nr1-catalog-config-file-exists #

Found file (catalog/config.json).

โœ… nr1-catalog-screenshots-directory-exists #

Found file (catalog/screenshots).

โœ… nr1-catalog-documentation-file-exists #

Found file (catalog/documentation.md).

โœ… package-scripts-present #

An eslint-check and eslint-fix npm script found in file (package.json). NPM scripts for ESLint (eslint-check and eslint-fix) are required to properly integrate with the nerdpack system.

Upgrade the project meta data to support new catalog commands

Add metadata to the repository that matches the example laid out here.

  • Add a config.json file to a catalog directory in the repo root, matching this format.
  • Move the /screenshots directory into catalog:
    • Update the screenshot file names (to match this format)
    • Update the screenshot links in the README.md.
  • Add the new header image to the top of README.md.
  • Add a documentation.md file to a catalog directory in the repo root, matching this format.
    • Update the relative paths in documentation.md to be absolute paths
  • N/A (Optional) If there's additional documentation referenced in the repo, add a additionalInfo.md file to a catalog directory in the repo root, matching this format.
  • Ensure the README.md commands section matches Justin's snippet.
  • Run npm start and let the CLI move the nr1.json
    • Edit that file to make sure the name and description make sense.

[Repolinter] Open Source Policy Issues

Repolinter Report

๐Ÿค–This issue was automatically generated by repolinter-action, developed by the Open Source and Developer Advocacy team at New Relic. This issue will be automatically updated or closed when changes are pushed. If you have any problems with this tool, please feel free to open a GitHub issue or give us a ping in #help-opensource.

This Repolinter run generated the following results:

โ— Error โŒ Fail โš ๏ธ Warn โœ… Pass Ignored Total
0 3 0 9 0 12

Fail #

โŒ readme-starts-with-nr1-catalog-header #

The README of a community plus project should have a NR1 Catalog header at the start of the README. If you already have a NR1 Catalog header and this rule is failing, your header may be out of date. For more information please visit https://opensource.newrelic.com/oss-category/. Below is a list of files or patterns that failed:

  • README.md: The first 1 lines do not contain the pattern(s): Open source NR1 Catalog header (see https://opensource.newrelic.com/oss-category).
    • ๐Ÿ”จ Suggested Fix: prepend [![New Relic One Catalog Project header](https://github.com/newrelic/opensource-website/raw/master/src/images/categories/New_Relic_One_Catalog_Project.png)](https://opensource.newrelic.com/oss-category/#new-relic-one-catalog-project) to file

โŒ readme-contains-security-section #

Doesn't contain a security section (README.md). New Relic recommends having a Security section in your README to address concerns such as vulnerability reporting. This security section should also contain a link to the security policy (found under the "Security" tab of the repository). For an example of this section, please see the NR1 Catalog Template. For more information please visit https://nerdlife.datanerd.us/new-relic/security-guidelines-for-publishing-source-code.

โŒ readme-contains-link-to-security-policy #

Doesn't contain a link to the security policy for this repository (README.md). New Relic recommends referencing the open source security policy (https://github.com/newrelic/<repo-name>/security/policy or ../../security/policy) in a Security section in the README. For an example of this, please see the NR1 Catalog Template. For more information please visit https://nerdlife.datanerd.us/new-relic/security-guidelines-for-publishing-source-code.

Passed #

Click to see rules

โœ… license-file-exists #

Found file (LICENSE). New Relic requires that all open source projects have an associated license contained within the project. This license must be permissive (e.g. non-viral or copyleft), and we recommend Apache 2.0 for most use cases. For more information please visit https://docs.google.com/document/d/1vML4aY_czsY0URu2yiP3xLAKYufNrKsc7o4kjuegpDw/edit.

โœ… readme-file-exists #

Found file (README.md). New Relic requires a README file in all projects. This README should give a general overview of the project, and should point to additional resources (security, contributing, etc.) where developers and users can learn further. For more information please visit https://github.com/newrelic/open-source-tools/tree/master/javascript/oss-template.

โœ… readme-contains-discuss-topic #

Contains a link to the appropriate discuss.newrelic.com topic (README.md). New Relic recommends directly linking the your appropriate discuss.newrelic.com topic in the README, allowing developer an alternate method of getting support. For more information please visit https://nerdlife.datanerd.us/new-relic/security-guidelines-for-publishing-source-code.

โœ… third-party-notices-file-exists #

Found file (THIRD_PARTY_NOTICES.md). A THIRD_PARTY_NOTICES.md file must be present to grant attribution to all dependencies being used by this project. For JavaScript projects, you can generate this file using the oss-cli. For more information please visit https://docs.google.com/document/d/1y644Pwi82kasNP5VPVjDV8rsmkBKclQVHFkz8pwRUtE/view.

โœ… github-actions-workflow-file-exists #

Found file (.github/workflows/pr.yml). Any Community Plus project must integrate with GitHub actions. For more information please visit https://docs.google.com/document/d/1y644Pwi82kasNP5VPVjDV8rsmkBKclQVHFkz8pwRUtE/view.

โœ… nr1-catalog-config-file-exists #

Found file (catalog/config.json).

โœ… nr1-catalog-screenshots-directory-exists #

Found file (catalog/screenshots).

โœ… nr1-catalog-documentation-file-exists #

Found file (catalog/documentation.md).

โœ… package-scripts-present #

An eslint-check and eslint-fix npm script found in file (package.json). NPM scripts for ESLint (eslint-check and eslint-fix) are required to properly integrate with the nerdpack system.

Default installation fails with "integration exited with error state" . . . "unable to deserialize successful nerdgraph response"

Followed setup instructions in the app.

When I first set up the sync integration everything seemed fine from the UI side. I was able to select Flex integrations in the UI and the app said that they were successfully deployed. However, no data was coming in. Investigating the Infrastructure agent logs revealed errors related to the sync integration. I also found that the integration configs of the flex integration I attempted to install had never been deployed to C:\Program Files\New Relic\newrelic-infra\newrelic-integrations.

REPO:

In app setup section
- download windows executable
- copy windows executable to C:\Program Files\New Relic\newrelic-infra\newrelic-integrations\nri-sync.exe
- Select account
- Select collection
- select api key
- paste auto-generated config file into C:\Program Files\New Relic\newrelic-infra\integrations.d\nri-sync-config.yml

Start the infrastructure agent
Agent log contains the following:

time="2022-02-09T11:36:11-08:00" level=warning msg="integration exited with error state" component=integrations.runner.Runner error="exit status 101" integration_name=nri-sync stderr="thread 'main' panicked at 'unable to deserialize successful nerdgraph response, err: {\"data\":{\"actor\":{\"account\":{\"id\":[id_redacted],\"nerdStorage\":{\"collection\":null}}}},\"errors\":[{\"extensions\":{\"errorClass\":\"INVALID_INPUT\"},\"locations\":[{\"column\":146,\"line\":1}],\"message\":\"Invalid document.\",\"path\":[\"actor\",\"account\",\"nerdStorage\",\"collection\"]}]}: Error(\"invalid type: null, expected a sequence\", line: 1, column: 74)', src/handler.rs:51:35\nnote: run with 'RUST_BACKTRACE=1' environment variable to display a backtrace"

Your Environment

  • Operating System and version: Windows 11 Home
  • Infrastructure agent version: 1.23.1 (but I also tested 1.18 with the same result.)
  • Infra agent is a fresh vanilla install with no custom configs of any kind.

Duplicate collections in UI drop down

Description

There is a bug in the UI that shows duplicate entries for collection names in the drop down list.
nr1_integrations_manager_ui_bug

Steps to Reproduce

  • Create a collection in the UI
  • Copy the nri-sync configuration from the UI to multiple servers to the integrations.d directory
  • Wait 2 minutes
  • Refresh the Integrations Manager UI
  • Select the Account and then click the drop down for the collections list

Expected Behaviour

The UI should only show Unique Collection names, not duplicates.

Example:
nr1_integrations_manager_ui_bug_fix

Your Environment

Integrations App Version (Public): 1.8.2

Operating System: CentOS 7

New Relic Infrastructure Agent version: 1.20.0

GoVersion: go1.14.4

Receiving AccessDenied on Nerdgraph request

Logs with redactions below, nri-sync seems to start well, but receives an AccessDenied Error on Nerdgraph requests

Startup for nri-sync

time="2020-09-16T18:13:56Z" level=debug msg="running task" component=integrations.Definition integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="running through all discovery matches" component=integrations.Definition integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="found a nil ConfigTemplate" component=integrations.Definition integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="executing task" component=integrations.Definition integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="waiting while the integration instances run" component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="running command" command=/var/db/newrelic-infra/newrelic-integrations/bin/nri-sync component=integrations.Executor env="[LANG=en_US.UTF-8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin DBUS_SYSTEM_BUS_ADDRESS=unix:path=/var/run/dbus/system_bus_socket NR_UUID=XXXXXXXX NR_ACCOUNT_ID=XXXXXX NR_COLLECTION=XXXXXX NR_API_KEY=<HIDDEN> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin VERBOSE=1]" path=/var/db/newrelic-infra/newrelic-integrations/bin/nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="[2020-09-16T18:13:56Z INFO  nri_sync::nrsync] starting nri-sync v:1.0.0" component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="[2020-09-16T18:13:56Z INFO  nri_sync::nrsync] collecting files on disk: /etc/newrelic-infra/integrations.d" component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="[2020-09-16T18:13:56Z INFO  nri_sync::nrsync] fetching collection: XXXXXXXXXX" component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="[2020-09-16T18:13:56Z DEBUG rustls::anchors] add_pem_file processed 140 valid and 0 invalid certs" component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="[2020-09-16T18:13:56Z DEBUG hyper::client::connect::dns] resolving host=\"api.newrelic.com\" " component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="[2020-09-16T18:13:56Z DEBUG hyper::client::connect::http] connecting to 162.247.242.11:443 " component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="[2020-09-16T18:13:56Z DEBUG hyper::client::connect::http] connected to 162.247.242.11:443 " component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="[2020-09-16T18:13:56Z DEBUG rustls::client::hs] No cached session for DNSNameRef(\"api.newrelic.com\")" component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="[2020-09-16T18:13:56Z DEBUG rustls::client::hs] Not resuming any session" component=integrations.runner.Group integration_name=nri-sync

Error

time="2020-09-16T18:13:56Z" level=debug msg="[2020-09-16T18:13:56Z ERROR rustls::session] TLS alert received: Message {" component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="        typ: Alert," component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="        version: TLSv1_0," component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="        payload: Alert(" component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="            AlertMessagePayload {" component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="                level: Fatal," component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="                description: AccessDenied," component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="            }," component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="        )," component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="    }" component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="thread 'main' panicked at 'nerdgraph request failed: hyper::Error(Connect, Custom { kind: Other, error: Custom { kind: InvalidData, error: AlertReceived(AccessDenied) } })', src/nrsync.rs:124:20" component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace" component=integrations.runner.Group integration_name=nri-sync
time="2020-09-16T18:13:56Z" level=debug msg="starting harvest" component=Plugins id=metadata/host_aliases
time="2020-09-16T18:13:56Z" level=debug msg="completed harvest, emitting" component=Plugins dataset="[{XXXXXXXXX hostname} {XXXXXXXXXX hostname_short}]" id=metadata/host_aliases
time="2020-09-16T18:13:56Z" level=debug msg="completed emitting" component=Plugins id=metadata/host_aliases
time="2020-09-16T18:13:56Z" level=debug msg="Updating identity" component=Agent new=XXXXXXXX old=XXXXXXXXX
time="2020-09-16T18:13:56Z" level=warning msg="integration exited with error state" component=integrations.runner.Group error="exit status 101" integration_name=nri-sync stderr="(last 10 lines out of 21):         version: TLSv1_0,\n        payload: Alert(\n            AlertMessagePayload {\n                level: Fatal,\n                description: AccessDenied,\n            },\n        ),\n    }\nthread 'main' panicked at 'nerdgraph request failed: hyper::Error(Connect, Custom { kind: Other, error: Custom { kind: InvalidData, error: AlertReceived(AccessDenied) } })', src/nrsync.rs:124:20\nnote: run with `RUST_BACKTRACE=1` environment variable to display a backtrace"

Could this be due to the agent trying to use TLS 1.0 for this communication?

Launcher Icon Attribute is Breaking [nr1 nerdpack:serve]

ref: https://github.com/newrelic/nr1-flex-manager/blob/master/launchers/flex-manager-launcher/nr1.json

current JSON has the icon attribute on line 6 that is breaking the npm start process:

Launchers:
x flex-manager-launcher launchers\flex-manager-launcher\nr1.json
โ”” Additional property icon is not allowed.

speaking with @Kav91 ; the fix is to remove this line and add an icon.png file to the flex-manager-launcher directory.

current work-around is to remove the icon attribute from JSON and use the default icon presented in NR1.

Deploying new Flex config breaks when trailing / is missing in git_repo

Hi,

I deployed the flex-manager nerdpack and I installed flex on a VM. I configured nri-flex-config.yml like so:

instances:
  - name: nri-flex
    command: metrics
    arguments:
      git_repo: https://github.com/danifitz/flex-configs

Then when I click to Deploy Integrations and click the deploy button I get a 404 and the URL is like below:
https://github.com/danifitz/flex-configsnew/master?filename=http-json-example.yml&value=%23%23%23%20basic%20http%20json%20example%0A---%0Aname%3A%20httpExample%0Aglobal%3A%20%23%23%23%20can%20set%20global%20parameters%20or%20nested%20beneath%20each%20API%20set%20under%20apis%2C%20nested%20will%20override%20the%20global%20setting%20for%20that%20api%20endpoint%2C%20%0A%20%20%20%20%20%20%20%20%23%23%23%20useful%20for%20different%20auth%20mechanisms%20per%20endpoint%0A%20%20%20%20%23%20base_url%3A%20http%3A%2F%2F127.0.0.1%2Fv1%2F%20%23%23%23%20if%20used%2C%20the%20URLs%20built%20under%20apis%20will%20be%2C%20base_url%20(from%20global)%20%2B%20url%20(from%20API)%0A%20%20%20%20%23%20headers%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%23%20%20%20myHeader%3A%20myValue%0A%20%20%20%20%23%20user%3A%20hi%0A%20%20%20%20%23%20pass%3A%20bye%0Acustom_attributes%3A%20%23%20applies%20to%20all%20apis%0A%20%20myCustAttr%3A%20myCustVal%0Aapis%3A%20%0A%20%20-%20event_type%3A%20httpSampleABC%0A%20%20%20%20url%3A%20https%3A%2F%2Fjsonplaceholder.typicode.com%2Ftodos%2F1%0A%20%20%20%20custom_attributes%3A%0A%20%20%20%20%20%20nestedCustAttr%3A%20nestedCustVal%20%23%20nested%20custom%20attributes%20specific%20to%20each%20api%0A%20%20%20%20%23%20headers%3A%0A%20%20%20%20%23%20%20%20myHeader%3A%20myValue%0A%20%20%20%20%23%20user%3A%20hi%0A%20%20%20%20%23%20pass%3A%20bye

So there is a missing / between the git_repo value and the query params to create a new file.

There could be some logic to check the value for git_repo to add a trailing slash if there is none.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.